test: Isolate environment variables passed to semantic-release
`npm` is called through `semantic-release` and in the integration test to make some assertion. By isolating the the environment variables passed to `semantic-release` it's easier to avoid a mistake that would pass the test environment that contains is own auth variables.
This commit is contained in:
parent
8371a03da0
commit
eec4e68615
@ -9,15 +9,20 @@ import semanticRelease from '..';
|
|||||||
|
|
||||||
/* eslint camelcase: ["error", {properties: "never"}] */
|
/* eslint camelcase: ["error", {properties: "never"}] */
|
||||||
|
|
||||||
// Environment variables used with cli
|
// Environment variables used with semantic-release cli (similar to what a user would setup)
|
||||||
const env = {
|
const env = {
|
||||||
npm_config_registry: npmRegistry.url,
|
|
||||||
GH_TOKEN: 'github_token',
|
GH_TOKEN: 'github_token',
|
||||||
GITHUB_URL: mockServer.url,
|
GITHUB_URL: mockServer.url,
|
||||||
NPM_EMAIL: 'integration@test.com',
|
NPM_EMAIL: 'integration@test.com',
|
||||||
NPM_USERNAME: 'integration',
|
NPM_USERNAME: 'integration',
|
||||||
NPM_PASSWORD: 'suchsecure',
|
NPM_PASSWORD: 'suchsecure',
|
||||||
};
|
};
|
||||||
|
// Environment variables used only for the local npm command used to do verification
|
||||||
|
const testEnv = Object.assign({}, process.env, {
|
||||||
|
npm_config_registry: npmRegistry.url,
|
||||||
|
NPM_EMAIL: 'integration@test.com',
|
||||||
|
LEGACY_TOKEN: Buffer.from(`${process.env.NPM_USERNAME}:${process.env.NPM_PASSWORD}`, 'utf8').toString('base64'),
|
||||||
|
});
|
||||||
const cli = require.resolve('../bin/semantic-release');
|
const cli = require.resolve('../bin/semantic-release');
|
||||||
const pluginError = require.resolve('./fixtures/plugin-error');
|
const pluginError = require.resolve('./fixtures/plugin-error');
|
||||||
const pluginInheritedError = require.resolve('./fixtures/plugin-error-inherited');
|
const pluginInheritedError = require.resolve('./fixtures/plugin-error-inherited');
|
||||||
@ -92,7 +97,7 @@ test.serial('Release patch, minor and major versions', async t => {
|
|||||||
publishConfig: {registry: npmRegistry.url},
|
publishConfig: {registry: npmRegistry.url},
|
||||||
});
|
});
|
||||||
// Create a npm-shrinkwrap.json file
|
// Create a npm-shrinkwrap.json file
|
||||||
await execa('npm', ['shrinkwrap'], {env});
|
await execa('npm', ['shrinkwrap'], {env: testEnv});
|
||||||
|
|
||||||
/* No release */
|
/* No release */
|
||||||
|
|
||||||
@ -143,7 +148,7 @@ test.serial('Release patch, minor and major versions', async t => {
|
|||||||
|
|
||||||
// Retrieve the published package from the registry and check version and gitHead
|
// Retrieve the published package from the registry and check version and gitHead
|
||||||
let [, releasedVersion, releasedGitHead] = /^version = '(.+)'\s+gitHead = '(.+)'$/.exec(
|
let [, releasedVersion, releasedGitHead] = /^version = '(.+)'\s+gitHead = '(.+)'$/.exec(
|
||||||
(await execa('npm', ['show', packageName, 'version', 'gitHead'], {env})).stdout
|
(await execa('npm', ['show', packageName, 'version', 'gitHead'], {env: testEnv})).stdout
|
||||||
);
|
);
|
||||||
t.is(releasedVersion, version);
|
t.is(releasedVersion, version);
|
||||||
t.is(releasedGitHead, await gitHead());
|
t.is(releasedGitHead, await gitHead());
|
||||||
@ -188,7 +193,7 @@ test.serial('Release patch, minor and major versions', async t => {
|
|||||||
|
|
||||||
// Retrieve the published package from the registry and check version and gitHead
|
// Retrieve the published package from the registry and check version and gitHead
|
||||||
[, releasedVersion, releasedGitHead] = /^version = '(.+)'\s+gitHead = '(.+)'$/.exec(
|
[, releasedVersion, releasedGitHead] = /^version = '(.+)'\s+gitHead = '(.+)'$/.exec(
|
||||||
(await execa('npm', ['show', packageName, 'version', 'gitHead'], {env})).stdout
|
(await execa('npm', ['show', packageName, 'version', 'gitHead'], {env: testEnv})).stdout
|
||||||
);
|
);
|
||||||
t.is(releasedVersion, version);
|
t.is(releasedVersion, version);
|
||||||
t.is(releasedGitHead, await gitHead());
|
t.is(releasedGitHead, await gitHead());
|
||||||
@ -233,7 +238,7 @@ test.serial('Release patch, minor and major versions', async t => {
|
|||||||
|
|
||||||
// Retrieve the published package from the registry and check version and gitHead
|
// Retrieve the published package from the registry and check version and gitHead
|
||||||
[, releasedVersion, releasedGitHead] = /^version = '(.+)'\s+gitHead = '(.+)'$/.exec(
|
[, releasedVersion, releasedGitHead] = /^version = '(.+)'\s+gitHead = '(.+)'$/.exec(
|
||||||
(await execa('npm', ['show', packageName, 'version', 'gitHead'], {env})).stdout
|
(await execa('npm', ['show', packageName, 'version', 'gitHead'], {env: testEnv})).stdout
|
||||||
);
|
);
|
||||||
t.is(releasedVersion, version);
|
t.is(releasedVersion, version);
|
||||||
t.is(releasedGitHead, await gitHead());
|
t.is(releasedGitHead, await gitHead());
|
||||||
@ -278,7 +283,7 @@ test.serial('Release patch, minor and major versions', async t => {
|
|||||||
|
|
||||||
// Retrieve the published package from the registry and check version and gitHead
|
// Retrieve the published package from the registry and check version and gitHead
|
||||||
[, releasedVersion, releasedGitHead] = /^version = '(.+)'\s+gitHead = '(.+)'$/.exec(
|
[, releasedVersion, releasedGitHead] = /^version = '(.+)'\s+gitHead = '(.+)'$/.exec(
|
||||||
(await execa('npm', ['show', packageName, 'version', 'gitHead'], {env})).stdout
|
(await execa('npm', ['show', packageName, 'version', 'gitHead'], {env: testEnv})).stdout
|
||||||
);
|
);
|
||||||
t.is(releasedVersion, version);
|
t.is(releasedVersion, version);
|
||||||
t.is(releasedGitHead, await gitHead());
|
t.is(releasedGitHead, await gitHead());
|
||||||
@ -337,7 +342,7 @@ test.serial('Release versions from a packed git repository, using tags to determ
|
|||||||
// Verify package.json has been updated
|
// Verify package.json has been updated
|
||||||
t.is((await readJson('./package.json')).version, version);
|
t.is((await readJson('./package.json')).version, version);
|
||||||
// Retrieve the published package from the registry and check version
|
// Retrieve the published package from the registry and check version
|
||||||
let releasedVersion = (await execa('npm', ['show', packageName, 'version'], {env})).stdout;
|
let releasedVersion = (await execa('npm', ['show', packageName, 'version'], {env: testEnv})).stdout;
|
||||||
t.is(releasedVersion, version);
|
t.is(releasedVersion, version);
|
||||||
t.log(`+ released ${releasedVersion}`);
|
t.log(`+ released ${releasedVersion}`);
|
||||||
await mockServer.verify(verifyMock);
|
await mockServer.verify(verifyMock);
|
||||||
@ -378,7 +383,7 @@ test.serial('Release versions from a packed git repository, using tags to determ
|
|||||||
t.is((await readJson('./package.json')).version, version);
|
t.is((await readJson('./package.json')).version, version);
|
||||||
|
|
||||||
// Retrieve the published package from the registry and check version
|
// Retrieve the published package from the registry and check version
|
||||||
releasedVersion = (await execa('npm', ['show', packageName, 'version'], {env})).stdout;
|
releasedVersion = (await execa('npm', ['show', packageName, 'version'], {env: testEnv})).stdout;
|
||||||
t.is(releasedVersion, version);
|
t.is(releasedVersion, version);
|
||||||
t.log(`+ released ${releasedVersion}`);
|
t.log(`+ released ${releasedVersion}`);
|
||||||
await mockServer.verify(verifyMock);
|
await mockServer.verify(verifyMock);
|
||||||
@ -452,7 +457,7 @@ test.serial('Create a tag as a recovery solution for "ENOTINHISTORY" error', asy
|
|||||||
|
|
||||||
// Retrieve the published package from the registry and check version and gitHead
|
// Retrieve the published package from the registry and check version and gitHead
|
||||||
let [, releasedVersion, releasedGitHead] = /^version = '(.+)'\s+gitHead = '(.+)'$/.exec(
|
let [, releasedVersion, releasedGitHead] = /^version = '(.+)'\s+gitHead = '(.+)'$/.exec(
|
||||||
(await execa('npm', ['show', packageName, 'version', 'gitHead'], {env})).stdout
|
(await execa('npm', ['show', packageName, 'version', 'gitHead'], {env: testEnv})).stdout
|
||||||
);
|
);
|
||||||
const head = await gitHead();
|
const head = await gitHead();
|
||||||
t.is(releasedGitHead, head);
|
t.is(releasedGitHead, head);
|
||||||
@ -527,7 +532,7 @@ test.serial('Create a tag as a recovery solution for "ENOTINHISTORY" error', asy
|
|||||||
t.is((await readJson('./package.json')).version, version);
|
t.is((await readJson('./package.json')).version, version);
|
||||||
|
|
||||||
// Retrieve the published package from the registry and check version and gitHead
|
// Retrieve the published package from the registry and check version and gitHead
|
||||||
releasedVersion = (await execa('npm', ['show', packageName, 'version'], {env})).stdout;
|
releasedVersion = (await execa('npm', ['show', packageName, 'version'], {env: testEnv})).stdout;
|
||||||
t.is(releasedVersion, version);
|
t.is(releasedVersion, version);
|
||||||
t.log(`+ released ${releasedVersion}`);
|
t.log(`+ released ${releasedVersion}`);
|
||||||
await mockServer.verify(verifyMock);
|
await mockServer.verify(verifyMock);
|
||||||
@ -596,7 +601,7 @@ test.serial('Pass options via CLI arguments', async t => {
|
|||||||
|
|
||||||
// Retrieve the published package from the registry and check version and gitHead
|
// Retrieve the published package from the registry and check version and gitHead
|
||||||
const [, releasedVersion, releasedGitHead] = /^version = '(.+)'\s+gitHead = '(.+)'$/.exec(
|
const [, releasedVersion, releasedGitHead] = /^version = '(.+)'\s+gitHead = '(.+)'$/.exec(
|
||||||
(await execa('npm', ['show', packageName, 'version', 'gitHead'], {env})).stdout
|
(await execa('npm', ['show', packageName, 'version', 'gitHead'], {env: testEnv})).stdout
|
||||||
);
|
);
|
||||||
t.is(releasedVersion, version);
|
t.is(releasedVersion, version);
|
||||||
t.is(releasedGitHead, await gitHead());
|
t.is(releasedGitHead, await gitHead());
|
||||||
@ -658,7 +663,7 @@ test.serial('Run via JS API', async t => {
|
|||||||
|
|
||||||
// Retrieve the published package from the registry and check version and gitHead
|
// Retrieve the published package from the registry and check version and gitHead
|
||||||
const [, releasedVersion, releasedGitHead] = /^version = '(.+)'\s+gitHead = '(.+)'$/.exec(
|
const [, releasedVersion, releasedGitHead] = /^version = '(.+)'\s+gitHead = '(.+)'$/.exec(
|
||||||
(await execa('npm', ['show', packageName, 'version', 'gitHead'], {env})).stdout
|
(await execa('npm', ['show', packageName, 'version', 'gitHead'], {env: testEnv})).stdout
|
||||||
);
|
);
|
||||||
t.is(releasedVersion, version);
|
t.is(releasedVersion, version);
|
||||||
t.is(releasedGitHead, await gitHead());
|
t.is(releasedGitHead, await gitHead());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user