summary refs log tree commit diff
diff options
context:
space:
mode:
authorJulius de Bruijn <julius+github@nauk.io>2022-05-11 14:21:27 +0200
committerJulius de Bruijn <julius+github@nauk.io>2022-05-13 16:49:47 +0200
commit03651228c4bc8aa860f64cda233fab722a06d9ee (patch)
tree61fe0cbc34f20abc641cc749c3595a73d69a4d6e
parentc5dbc6d16165577428f03a50fad798088c5a7c58 (diff)
downloadnixpkgs-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.nix6
-rw-r--r--pkgs/development/node-packages/package-tests/prisma.nix56
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
+  ''