X Tutup
The Wayback Machine - https://web.archive.org/web/20210828163755/https://github.com/nodejs/node/pull/38285
Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test: add ancestor package.json checks for tmpdir #38285

Closed
wants to merge 1 commit into from

Conversation

@richardlau
Copy link
Member

@richardlau richardlau commented Apr 18, 2021

Policy tests can fail if a package.json exists in any of the parent
directories above the test. The existing checks are done for the
ancestors of the test directory but some tests execute from the tmpdir.

Refs: #38088
Refs: #35600
Refs: #35633

cc @bmeck

Policy tests can fail if a `package.json` exists in any of the parent
directories above the test. The existing checks are done for the
ancestors of the test directory but some tests execute from the tmpdir.
@nodejs-github-bot
Copy link

@nodejs-github-bot nodejs-github-bot commented Apr 18, 2021

@richardlau
Copy link
Member Author

@richardlau richardlau commented Apr 18, 2021

With this change:

$ cat /home/rlau/node-tmp/package.json 
{"main": "dep.js"}
$ NODE_TEST_DIR=/home/rlau/node-tmp node test/pummel/test-policy-integrity.js 
assert.js:145
  throw err;
  ^

AssertionError [ERR_ASSERTION]: This test shouldn't load properties from a package.json above its file location. Found package.json at /home/rlau/node-tmp/package.json.
    at Proxy.requireNoPackageJSONAbove (/home/rlau/sandbox/github/node/test/common/index.js:716:14)
    at Object.<anonymous> (/home/rlau/sandbox/github/node/test/pummel/test-policy-integrity.js:79:8)
    at Module._compile (internal/modules/cjs/loader.js:1063:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
    at internal/main/run_main_module.js:17:47 {
  generatedMessage: false,
  code: 'ERR_ASSERTION',
  actual: undefined,
  expected: undefined,
  operator: 'fail'
}
$

compared to without:

$ cat /home/rlau/node-tmp/package.json 
{"main": "dep.js"}
$ NODE_TEST_DIR=/home/rlau/node-tmp node test/pummel/test-policy-integrity.js 
permutation 118 failed
{
  config: {
    onError: 'exit',
    shouldSucceed: true,
    entryPath: './worker-spawner.cjs',
    willDeletePolicy: true,
    preloads: [],
    parentPath: './parent.js',
    depPath: './dep.js',
    resources: {
      './dep.js': {
        body: '',
        integrities: [
          'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=',
          'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='
        ]
      },
      './parent.js': {
        body: '\n' +
          '    if (!process.env.DEP_FILE) {\n' +
          '      console.error(\n' +
          "        'missing required DEP_FILE env to determine dependency'\n" +
          '      );\n' +
          '      process.exit(33);\n' +
          '    }\n' +
          '    require(process.env.DEP_FILE)\n' +
          '  ',
        integrities: [
          'sha256-AzbH3oEA96J/+tLSqOJ+LaIt9vdOY+ikShkvKm0VutU=',
          'sha256-R0QVSw9BUI7znwKNvt6BuzkLozhYKTtFNRSENIL5H7k='
        ]
      },
      './worker-spawner.cjs': {
        body: '\n' +
          "  const path = require('path');\n" +
          "  const { Worker } = require('worker_threads');\n" +
          '  if (!process.env.PARENT_FILE) {\n' +
          '    console.error(\n' +
          "      'missing required PARENT_FILE env to determine worker entry point'\n" +
          '    );\n' +
          '    process.exit(33);\n' +
          '  }\n' +
          '  if (!process.env.DELETABLE_POLICY_FILE) {\n' +
          '    console.error(\n' +
          "      'missing required DELETABLE_POLICY_FILE env to check reloading'\n" +
          '    );\n' +
          '    process.exit(33);\n' +
          '  }\n' +
          '  const w = new Worker(path.resolve(process.env.PARENT_FILE));\n' +
          "  w.on('exit', (status) => process.exit(status === 0 ? 0 : 1));\n",
        integrities: [
          'sha256-23P4m8edtJAPTH24RJHIHMEuMVgP7QKcgWBSyj6FxPc=',
          'sha256-XTRkNC3vxo+zvjv7CD8iapeqc7npNN7TwqRR0TOv5lg='
        ]
      }
    }
  },
  manifest: {
    onerror: 'exit',
    resources: {
      'file:///home/rlau/node-tmp/.tmp.0/test-policy-integrity-permutation-118/dep.js': {
        integrity: 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=',
        dependencies: true
      },
      'file:///home/rlau/node-tmp/.tmp.0/test-policy-integrity-permutation-118/parent.js': {
        integrity: 'sha256-AzbH3oEA96J/+tLSqOJ+LaIt9vdOY+ikShkvKm0VutU= sha256-R0QVSw9BUI7znwKNvt6BuzkLozhYKTtFNRSENIL5H7k=',
        dependencies: true
      },
      'file:///home/rlau/node-tmp/.tmp.0/test-policy-integrity-permutation-118/worker-spawner.cjs': {
        integrity: 'sha256-23P4m8edtJAPTH24RJHIHMEuMVgP7QKcgWBSyj6FxPc= sha256-XTRkNC3vxo+zvjv7CD8iapeqc7npNN7TwqRR0TOv5lg=',
        dependencies: true
      }
    }
  }
}
exit code: 1 signal: null
stdout: 
stderr: 
/home/rlau/sandbox/github/node/test/pummel/test-policy-integrity.js:187
        throw e;
        ^

AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:

1 !== 0

    at ChildProcess.<anonymous> (/home/rlau/sandbox/github/node/test/pummel/test-policy-integrity.js:170:18)
    at ChildProcess.emit (events.js:315:20)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:277:12) {
  generatedMessage: true,
  code: 'ERR_ASSERTION',
  actual: 1,
  expected: 0,
  operator: 'strictEqual'
}
$ 

@Trott Trott requested a review from bmeck Apr 19, 2021
@Trott
Trott approved these changes Apr 19, 2021
Trott added a commit that referenced this pull request Apr 23, 2021
Policy tests can fail if a `package.json` exists in any of the parent
directories above the test. The existing checks are done for the
ancestors of the test directory but some tests execute from the tmpdir.

PR-URL: #38285
Refs: #38088
Refs: #35600
Refs: #35633
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
@Trott
Copy link
Member

@Trott Trott commented Apr 23, 2021

Landed in f9e07e4

@Trott Trott closed this Apr 23, 2021
@richardlau richardlau deleted the richardlau:integrity branch Apr 23, 2021
targos added a commit that referenced this pull request Apr 29, 2021
Policy tests can fail if a `package.json` exists in any of the parent
directories above the test. The existing checks are done for the
ancestors of the test directory but some tests execute from the tmpdir.

PR-URL: #38285
Refs: #38088
Refs: #35600
Refs: #35633
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
@targos targos mentioned this pull request May 3, 2021
targos added a commit that referenced this pull request May 30, 2021
Policy tests can fail if a `package.json` exists in any of the parent
directories above the test. The existing checks are done for the
ancestors of the test directory but some tests execute from the tmpdir.

PR-URL: #38285
Refs: #38088
Refs: #35600
Refs: #35633
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
targos added a commit that referenced this pull request Jun 5, 2021
Policy tests can fail if a `package.json` exists in any of the parent
directories above the test. The existing checks are done for the
ancestors of the test directory but some tests execute from the tmpdir.

PR-URL: #38285
Refs: #38088
Refs: #35600
Refs: #35633
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
targos added a commit that referenced this pull request Jun 11, 2021
Policy tests can fail if a `package.json` exists in any of the parent
directories above the test. The existing checks are done for the
ancestors of the test directory but some tests execute from the tmpdir.

PR-URL: #38285
Refs: #38088
Refs: #35600
Refs: #35633
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

5 participants
X Tutup