From 03651228c4bc8aa860f64cda233fab722a06d9ee Mon Sep 17 00:00:00 2001 From: Julius de Bruijn Date: Wed, 11 May 2022 14:21:27 +0200 Subject: nodePackages.prisma: package tests to validate binary interop --- .../node-packages/package-tests/prisma.nix | 56 ++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 pkgs/development/node-packages/package-tests/prisma.nix (limited to 'pkgs/development/node-packages/package-tests') 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 + '' -- cgit 1.4.1