From 7b2b6c78b02757cebdb9e76da340665d3ad07644 Mon Sep 17 00:00:00 2001 From: Jan Piotrowski Date: Mon, 14 Mar 2022 08:50:55 +0100 Subject: [PATCH] test(version): Replace blanket sanitization of all version output value with more nuanced sanitization (#12307) --- .github/workflows/test.yml | 9 +-- .../src/__tests__/commands/Version.test.ts | 26 ++++++- .../__snapshots__/Version.test.ts.snap | 72 +++++++++---------- 3 files changed, 64 insertions(+), 43 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 564b166b9266..75e0bc4527f0 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -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-') || @@ -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 diff --git a/packages/cli/src/__tests__/commands/Version.test.ts b/packages/cli/src/__tests__/commands/Version.test.ts index 4ead790cdcb5..d3c2a3d1255b 100644 --- a/packages/cli/src/__tests__/commands/Version.test.ts +++ b/packages/cli/src/__tests__/commands/Version.test.ts @@ -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 @@ -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 } diff --git a/packages/cli/src/__tests__/commands/__snapshots__/Version.test.ts.snap b/packages/cli/src/__tests__/commands/__snapshots__/Version.test.ts.snap index 066c21d37c9f..938f82966126 100644 --- a/packages/cli/src/__tests__/commands/__snapshots__/Version.test.ts.snap +++ b/packages/cli/src/__tests__/commands/__snapshots__/Version.test.ts.snap @@ -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 `;