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