about summary refs log tree commit diff
path: root/pkgs/development/node-packages/package-tests
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 /pkgs/development/node-packages/package-tests
parentc5dbc6d16165577428f03a50fad798088c5a7c58 (diff)
nodePackages.prisma: package tests to validate binary interop
Diffstat (limited to 'pkgs/development/node-packages/package-tests')
-rw-r--r--pkgs/development/node-packages/package-tests/prisma.nix56
1 files changed, 56 insertions, 0 deletions
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 0000000000000..35a5516a3b5b0
--- /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
+  ''