forked from prisma/prisma
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.ts
52 lines (39 loc) · 1.65 KB
/
test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import { getBinaryTargetForCurrentPlatform, getNodeAPIName } from '@prisma/get-platform'
import { ClientEngineType, getClientEngineType } from '@prisma/internals'
import fs from 'fs'
import path from 'path'
import { generateTestClient } from '../../../../utils/getTestClient'
const testIf = (condition: boolean) => (condition ? test : test.skip)
testIf(!process.env.PRISMA_QUERY_ENGINE_LIBRARY && !process.env.PRISMA_QUERY_ENGINE_BINARY)(
'custom engine binary path (internal API)',
async () => {
await generateTestClient()
const binaryTarget = await getBinaryTargetForCurrentPlatform()
let binaryFileName =
getClientEngineType() === ClientEngineType.Library
? getNodeAPIName(binaryTarget, 'fs')
: `query-engine-${binaryTarget}`
if (process.platform === 'win32' && getClientEngineType() === ClientEngineType.Binary) {
binaryFileName += '.exe'
}
const defaultBinaryPath = path.join(__dirname, 'node_modules/.prisma/client', binaryFileName)
const customBinaryPath = path.join(__dirname, binaryFileName)
fs.copyFileSync(defaultBinaryPath, customBinaryPath)
fs.unlinkSync(defaultBinaryPath)
const { PrismaClient } = require('./node_modules/@prisma/client')
const prisma = new PrismaClient({
__internal: {
engine: {
binaryPath: customBinaryPath,
},
},
})
expect(prisma._engineConfig.prismaPath).toBe(customBinaryPath)
if (getClientEngineType() === ClientEngineType.Binary) {
expect(prisma._engine.config.prismaPath).toBe(customBinaryPath)
}
const users = await prisma.user.findMany()
expect(users).toEqual([])
prisma.$disconnect()
},
)