diff options
author | Julius de Bruijn <julius+github@nauk.io> | 2022-05-11 14:21:27 +0200 |
---|---|---|
committer | Julius de Bruijn <julius+github@nauk.io> | 2022-05-13 16:49:47 +0200 |
commit | 03651228c4bc8aa860f64cda233fab722a06d9ee (patch) | |
tree | 61fe0cbc34f20abc641cc749c3595a73d69a4d6e | |
parent | c5dbc6d16165577428f03a50fad798088c5a7c58 (diff) | |
download | nixpkgs-03651228c4bc8aa860f64cda233fab722a06d9ee.tar nixpkgs-03651228c4bc8aa860f64cda233fab722a06d9ee.tar.gz nixpkgs-03651228c4bc8aa860f64cda233fab722a06d9ee.tar.bz2 nixpkgs-03651228c4bc8aa860f64cda233fab722a06d9ee.tar.lz nixpkgs-03651228c4bc8aa860f64cda233fab722a06d9ee.tar.xz nixpkgs-03651228c4bc8aa860f64cda233fab722a06d9ee.tar.zst nixpkgs-03651228c4bc8aa860f64cda233fab722a06d9ee.zip |
nodePackages.prisma: package tests to validate binary interop
-rw-r--r-- | pkgs/development/node-packages/default.nix | 6 | ||||
-rw-r--r-- | pkgs/development/node-packages/package-tests/prisma.nix | 56 |
2 files changed, 62 insertions, 0 deletions
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 + '' |