Skip to content

Commit

Permalink
test(version): Replace blanket sanitization of all version output val…
Browse files Browse the repository at this point in the history
…ue with more nuanced sanitization (#12307)
  • Loading branch information
janpio committed Mar 14, 2022
1 parent 2bf91d8 commit 7b2b6c7
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 43 deletions.
9 changes: 3 additions & 6 deletions .github/workflows/test.yml
Expand Up @@ -572,8 +572,8 @@ jobs:
no-docker:
timeout-minutes: 40
runs-on: ${{ matrix.os }}
needs: detect_jobs_to_run

needs: detect_jobs_to_run
if: |
${{
contains(needs.detect_jobs_to_run.outputs.jobs, '-all-') ||
Expand Down Expand Up @@ -749,12 +749,9 @@ jobs:
no-docker-client:
timeout-minutes: 40
runs-on: ${{ matrix.os }}
needs: detect_jobs_to_run

if: |
${{
contains(needs.detect_jobs_to_run.outputs.jobs, '-client-')
}}
needs: detect_jobs_to_run
if: ${{ contains(needs.detect_jobs_to_run.outputs.jobs, '-all-') || contains(needs.detect_jobs_to_run.outputs.jobs, '-client-') }}

strategy:
fail-fast: false
Expand Down
26 changes: 25 additions & 1 deletion packages/cli/src/__tests__/commands/Version.test.ts
Expand Up @@ -5,6 +5,8 @@ import { engineEnvVarMap, jestConsoleContext, jestContext } from '@prisma/sdk'
import makeDir from 'make-dir'
import path from 'path'

const packageJson = require('../../../package.json') // eslint-disable-line @typescript-eslint/no-var-requires

const ctx = jestContext.new().add(jestConsoleContext()).assemble()
const testIf = (condition: boolean) => (condition ? test : test.skip)
const useNodeAPI = getCliQueryEngineBinaryType() === BinaryType.libqueryEngine
Expand Down Expand Up @@ -101,5 +103,27 @@ describe('version', () => {
})

function cleanSnapshot(str: string): string {
return str.replace(/:(.*)/g, ': placeholder')

// sanitize engine path
// Query Engine (Node-API) : libquery-engine e996df5d66a2314d1da15d31047f9777fc2fbdd9 (at ../../home/runner/work/prisma/prisma/node_modules/.pnpm/@prisma+engines@3.11.0-41.e996df5d66a2314d1da15d31047f9777fc2fbdd9/node_modules/@prisma/engines/libquery_engine-TEST_PLATFORM.LIBRARY_TYPE.node)
// + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// Query Engine (Node-API) : libquery-engine 5a2e5869b69a983e279380ec68596b71beae9eff (at ../../cli/src/__tests__/commands/version-test-engines/libquery_engine-TEST_PLATFORM.LIBRARY_TYPE.node, resolved by PRISMA_QUERY_ENGINE_LIBRARY)
// => ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// Query Engine (Node-API) : libquery-engine e996df5d66a2314d1da15d31047f9777fc2fbdd9 (at sanitized_path/libquery_engine-TEST_PLATFORM.LIBRARY_TYPE.node)
// ^^^^^^^^^^^^^^^^^^^
str = str.replace(/\(at (.*engines)(\/|\\)/g, '(at sanitized_path/')

// replace engine version hash
const search1 = new RegExp(version, 'g')
str = str.replace(search1, 'STATICENGINEVERSION')
const search2 = new RegExp(packageJson.dependencies['@prisma/engines'].split('.').pop(), 'g')
str = str.replace(search2, 'DYNAMICENGINEVERSION')

// replace studio version
str = str.replace(packageJson.devDependencies['@prisma/studio-server'], 'STUDIOVERSION')

// sanitize windows specific engine names
str = str.replace(/\.exe/g, '')

return str
}
@@ -1,49 +1,49 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`version basic version (Node-API) 1`] = `
prisma : placeholder
@prisma/client : placeholder
Current platform : placeholder
Query Engine (Node-API) : placeholder
Migration Engine : placeholder
Introspection Engine : placeholder
Format Binary : placeholder
Default Engines Hash : placeholder
Studio : placeholder
prisma : 0.0.0
@prisma/client : 0.0.0
Current platform : TEST_PLATFORM
Query Engine (Node-API) : libquery-engine DYNAMICENGINEVERSION (at sanitized_path/libquery_engine-TEST_PLATFORM.LIBRARY_TYPE.node)
Migration Engine : migration-engine-cli DYNAMICENGINEVERSION (at sanitized_path/migration-engine-TEST_PLATFORM)
Introspection Engine : introspection-core DYNAMICENGINEVERSION (at sanitized_path/introspection-engine-TEST_PLATFORM)
Format Binary : prisma-fmt DYNAMICENGINEVERSION (at sanitized_path/prisma-fmt-TEST_PLATFORM)
Default Engines Hash : DYNAMICENGINEVERSION
Studio : STUDIOVERSION
`;

exports[`version basic version 1`] = `
prisma : placeholder
@prisma/client : placeholder
Current platform : placeholder
Query Engine (Binary) : placeholder
Migration Engine : placeholder
Introspection Engine : placeholder
Format Binary : placeholder
Default Engines Hash : placeholder
Studio : placeholder
prisma : 0.0.0
@prisma/client : 0.0.0
Current platform : TEST_PLATFORM
Query Engine (Binary) : query-engine DYNAMICENGINEVERSION (at sanitized_path/query-engine-TEST_PLATFORM)
Migration Engine : migration-engine-cli DYNAMICENGINEVERSION (at sanitized_path/migration-engine-TEST_PLATFORM)
Introspection Engine : introspection-core DYNAMICENGINEVERSION (at sanitized_path/introspection-engine-TEST_PLATFORM)
Format Binary : prisma-fmt DYNAMICENGINEVERSION (at sanitized_path/prisma-fmt-TEST_PLATFORM)
Default Engines Hash : DYNAMICENGINEVERSION
Studio : STUDIOVERSION
`;

exports[`version version with custom binaries (Node-API) 1`] = `
prisma : placeholder
@prisma/client : placeholder
Current platform : placeholder
Query Engine (Node-API) : placeholder
Migration Engine : placeholder
Introspection Engine : placeholder
Format Binary : placeholder
Default Engines Hash : placeholder
Studio : placeholder
prisma : 0.0.0
@prisma/client : 0.0.0
Current platform : TEST_PLATFORM
Query Engine (Node-API) : libquery-engine STATICENGINEVERSION (at sanitized_path/libquery_engine-TEST_PLATFORM.LIBRARY_TYPE.node, resolved by PRISMA_QUERY_ENGINE_LIBRARY)
Migration Engine : migration-engine-cli STATICENGINEVERSION (at sanitized_path/migration-engine-TEST_PLATFORM, resolved by PRISMA_MIGRATION_ENGINE_BINARY)
Introspection Engine : introspection-core STATICENGINEVERSION (at sanitized_path/introspection-engine-TEST_PLATFORM, resolved by PRISMA_INTROSPECTION_ENGINE_BINARY)
Format Binary : prisma-fmt STATICENGINEVERSION (at sanitized_path/prisma-fmt-TEST_PLATFORM, resolved by PRISMA_FMT_BINARY)
Default Engines Hash : DYNAMICENGINEVERSION
Studio : STUDIOVERSION
`;

exports[`version version with custom binaries 1`] = `
prisma : placeholder
@prisma/client : placeholder
Current platform : placeholder
Query Engine (Binary) : placeholder
Migration Engine : placeholder
Introspection Engine : placeholder
Format Binary : placeholder
Default Engines Hash : placeholder
Studio : placeholder
prisma : 0.0.0
@prisma/client : 0.0.0
Current platform : TEST_PLATFORM
Query Engine (Binary) : query-engine STATICENGINEVERSION (at sanitized_path/query-engine-TEST_PLATFORM, resolved by PRISMA_QUERY_ENGINE_BINARY)
Migration Engine : migration-engine-cli STATICENGINEVERSION (at sanitized_path/migration-engine-TEST_PLATFORM, resolved by PRISMA_MIGRATION_ENGINE_BINARY)
Introspection Engine : introspection-core STATICENGINEVERSION (at sanitized_path/introspection-engine-TEST_PLATFORM, resolved by PRISMA_INTROSPECTION_ENGINE_BINARY)
Format Binary : prisma-fmt STATICENGINEVERSION (at sanitized_path/prisma-fmt-TEST_PLATFORM, resolved by PRISMA_FMT_BINARY)
Default Engines Hash : DYNAMICENGINEVERSION
Studio : STUDIOVERSION
`;

0 comments on commit 7b2b6c7

Please sign in to comment.