diff --git a/pkgs/development/node-packages/default.nix b/pkgs/development/node-packages/default.nix index b2da0f16eb5..d9b6626e72b 100644 --- a/pkgs/development/node-packages/default.nix +++ b/pkgs/development/node-packages/default.nix @@ -339,6 +339,12 @@ let --set PRISMA_INTROSPECTION_ENGINE_BINARY ${prisma-engines}/bin/introspection-engine \ --set PRISMA_FMT_BINARY ${prisma-engines}/bin/prisma-fmt ''; + + passthru.tests = { + simple-execution = pkgs.callPackage ./package-tests/prisma.nix { + inherit (self) prisma; + }; + }; }; pulp = super.pulp.override { diff --git a/pkgs/development/node-packages/package-tests/prisma.nix b/pkgs/development/node-packages/package-tests/prisma.nix new file mode 100644 index 00000000000..35a5516a3b5 --- /dev/null +++ b/pkgs/development/node-packages/package-tests/prisma.nix @@ -0,0 +1,56 @@ +{ lib, pkgs, runCommand, prisma }: + +let + inherit (prisma) packageName; + prismaMajorVersion = lib.versions.majorMinor prisma.version; + enginesMajorVersion = lib.versions.majorMinor pkgs.prisma-engines.version; +in + +runCommand "${packageName}-tests" { + nativeBuildInputs = with pkgs; [ prisma sqlite-interactive ]; + meta.timeout = 60; +} + '' + mkdir $out + cd $out + + if [ "${prismaMajorVersion}" != "${enginesMajorVersion}" ]; then + echo "nodePackages.prisma in version ${prismaMajorVersion} and prisma-engines in ${enginesMajorVersion}. Major versions must match." + exit 1 + fi + + # Ensure CLI runs + prisma --help > /dev/null + + # Init a new project + prisma init > /dev/null + + # Create a simple data model + cat << EOF > prisma/schema.prisma + datasource db { + provider = "sqlite" + url = "file:test.db" + } + + generator js { + provider = "prisma-client-js" + } + + model A { + id Int @id @default(autoincrement()) + b String @default("foo") + } + EOF + + # Format + prisma format > /dev/null + + # Create the database + prisma db push --skip-generate > /dev/null + + # The database file should exist and be a SQLite database + sqlite3 prisma/test.db "SELECT id, b FROM A" > /dev/null + + # Introspect the database + prisma db pull > /dev/null + ''