Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ lib, pkgs, runCommand, prisma }:
2
3let
4 inherit (prisma) packageName;
5 prismaMajorVersion = lib.versions.majorMinor prisma.version;
6 enginesMajorVersion = lib.versions.majorMinor pkgs.prisma-engines.version;
7in
8
9runCommand "${packageName}-tests" {
10 nativeBuildInputs = with pkgs; [ prisma sqlite-interactive ];
11 meta.timeout = 60;
12}
13 ''
14 mkdir $out
15 cd $out
16
17 if [ "${prismaMajorVersion}" != "${enginesMajorVersion}" ]; then
18 echo "nodePackages.prisma in version ${prismaMajorVersion} and prisma-engines in ${enginesMajorVersion}. Major versions must match."
19 exit 1
20 fi
21
22 # Ensure CLI runs
23 prisma --help > /dev/null
24
25 # Init a new project
26 prisma init > /dev/null
27
28 # Create a simple data model
29 cat << EOF > prisma/schema.prisma
30 datasource db {
31 provider = "sqlite"
32 url = "file:test.db"
33 }
34
35 generator js {
36 provider = "prisma-client-js"
37 }
38
39 model A {
40 id Int @id @default(autoincrement())
41 b String @default("foo")
42 }
43 EOF
44
45 # Format
46 prisma format > /dev/null
47
48 # Create the database
49 prisma db push --skip-generate > /dev/null
50
51 # The database file should exist and be a SQLite database
52 sqlite3 prisma/test.db "SELECT id, b FROM A" > /dev/null
53
54 # Introspect the database
55 prisma db pull > /dev/null
56 ''