diff --git a/src/env.cc b/src/env.cc index b8574fcfb775b8..642a7d4a9d2559 100644 --- a/src/env.cc +++ b/src/env.cc @@ -1096,6 +1096,12 @@ void Environment::InitializeCompileCache() { dir_from_env.empty()) { return; } + if (!options()->experimental_policy.empty()) { + Debug(this, + DebugCategory::COMPILE_CACHE, + "[compile cache] skipping cache because policy is enabled"); + return; + } auto handler = std::make_unique(this); if (handler->InitializeDirectory(this, dir_from_env)) { compile_cache_handler_ = std::move(handler); diff --git a/test/parallel/test-compile-cache-policy.js b/test/parallel/test-compile-cache-policy.js new file mode 100644 index 00000000000000..fd6fe36bcc0cd9 --- /dev/null +++ b/test/parallel/test-compile-cache-policy.js @@ -0,0 +1,38 @@ +'use strict'; + +// This tests NODE_COMPILE_CACHE is disabled when policy is used. + +const common = require('../common'); +if (!common.hasCrypto) + common.skip('missing crypto'); + +const { spawnSyncAndAssert } = require('../common/child_process'); +const assert = require('assert'); +const fs = require('fs'); +const tmpdir = require('../common/tmpdir'); +const fixtures = require('../common/fixtures'); + +{ + tmpdir.refresh(); + const dir = tmpdir.resolve('.compile_cache_dir'); + const script = fixtures.path('policy', 'parent.js'); + const policy = fixtures.path( + 'policy', + 'dependencies', + 'dependencies-redirect-policy.json'); + spawnSyncAndAssert( + process.execPath, + ['--experimental-policy', policy, script], + { + env: { + ...process.env, + NODE_DEBUG_NATIVE: 'COMPILE_CACHE', + NODE_COMPILE_CACHE: dir + }, + cwd: tmpdir.path + }, + { + stderr: /skipping cache because policy is enabled/ + }); + assert(!fs.existsSync(dir)); +}