Skip to content

Commit

Permalink
fix: remove "ci-name" config
Browse files Browse the repository at this point in the history
BREAKING CHANGE: the "ci-name" config has been removed

The "ci" portion of the default "user-agent" will now only be derived
from the environment and can not be manually overridden.
  • Loading branch information
wraithgar authored and lukekarrys committed Jul 26, 2023
1 parent 0318f44 commit e0d3edd
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 43 deletions.
20 changes: 1 addition & 19 deletions workspaces/config/lib/definitions/definitions.js
Original file line number Diff line number Diff line change
Expand Up @@ -429,24 +429,6 @@ define('cert', {
flatten,
})

define('ci-name', {
default: ciInfo.name ? ciInfo.name.toLowerCase().split(' ').join('-') : null,
defaultDescription: `
The name of the current CI system, or \`null\` when not on a known CI
platform.
`,
type: [null, String],
deprecated: `
This config is deprecated and will not be changeable in future version of npm.
`,
description: `
The name of a continuous integration system. If not set explicitly, npm
will detect the current CI environment using the
[\`ci-info\`](http://npm.im/ci-info) module.
`,
flatten,
})

define('cidr', {
default: null,
type: [null, String, Array],
Expand Down Expand Up @@ -2204,7 +2186,7 @@ define('user-agent', {
`,
flatten (key, obj, flatOptions) {
const value = obj[key]
const ciName = obj['ci-name']
const ciName = ciInfo.name?.toLowerCase().split(' ').join('-') || null
let inWorkspaces = false
if (obj.workspaces || obj.workspace && obj.workspace.length) {
inWorkspaces = true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,6 @@ Object {
null,
Function String(),
],
"ci-name": Array [
null,
Function String(),
],
"cidr": Array [
null,
Function String(),
Expand Down
38 changes: 18 additions & 20 deletions workspaces/config/test/definitions/definitions.js
Original file line number Diff line number Diff line change
Expand Up @@ -730,53 +730,51 @@ YYYY\r
t.end()
})

t.test('detect CI', t => {
const defnNoCI = mockDefs({
'ci-info': { isCI: false, name: null },
})
const defnCIFoo = mockDefs({
'ci-info': { isCI: false, name: 'foo' },
})
t.equal(defnNoCI['ci-name'].default, null, 'null when not in CI')
t.equal(defnCIFoo['ci-name'].default, 'foo', 'name of CI when in CI')
t.end()
})

t.test('user-agent', t => {
const npmVersion = '1.2.3'
const obj = {
'npm-version': npmVersion,
'user-agent': mockDefs()['user-agent'].default,
'user-agent': mockDefs({
'ci-info': { isCi: false, name: null },
})['user-agent'].default,
}
const flat = {}
const expectNoCI = `npm/${npmVersion} node/${process.version} ` +
`${process.platform} ${process.arch} workspaces/false`
mockDefs()['user-agent'].flatten('user-agent', obj, flat)
mockDefs({
'ci-info': { isCi: false, name: null },
})['user-agent'].flatten('user-agent', obj, flat)
t.equal(flat.userAgent, expectNoCI)
t.equal(process.env.npm_config_user_agent, flat.userAgent, 'npm_user_config environment is set')
t.not(obj['user-agent'], flat.userAgent, 'config user-agent template is not translated')

obj['ci-name'] = 'foo'
obj['user-agent'] = mockDefs()['user-agent'].default
obj['user-agent'] = mockDefs({
'ci-info': { isCi: true, name: 'foo' },
})['user-agent'].default
const expectCI = `${expectNoCI} ci/foo`
mockDefs()['user-agent'].flatten('user-agent', obj, flat)
mockDefs({
'ci-info': { isCi: true, name: 'foo' },
})['user-agent'].flatten('user-agent', obj, flat)
t.equal(flat.userAgent, expectCI)
t.equal(process.env.npm_config_user_agent, flat.userAgent, 'npm_user_config environment is set')
t.not(obj['user-agent'], flat.userAgent, 'config user-agent template is not translated')

delete obj['ci-name']
obj.workspaces = true
obj['user-agent'] = mockDefs()['user-agent'].default
const expectWorkspaces = expectNoCI.replace('workspaces/false', 'workspaces/true')
mockDefs()['user-agent'].flatten('user-agent', obj, flat)
mockDefs({
'ci-info': { isCi: false, name: null },
})['user-agent'].flatten('user-agent', obj, flat)
t.equal(flat.userAgent, expectWorkspaces)
t.equal(process.env.npm_config_user_agent, flat.userAgent, 'npm_user_config environment is set')
t.not(obj['user-agent'], flat.userAgent, 'config user-agent template is not translated')

delete obj.workspaces
obj.workspace = ['foo']
obj['user-agent'] = mockDefs()['user-agent'].default
mockDefs()['user-agent'].flatten('user-agent', obj, flat)
mockDefs({
'ci-info': { isCi: false, name: null },
})['user-agent'].flatten('user-agent', obj, flat)
t.equal(flat.userAgent, expectWorkspaces)
t.equal(process.env.npm_config_user_agent, flat.userAgent, 'npm_user_config environment is set')
t.not(obj['user-agent'], flat.userAgent, 'config user-agent template is not translated')
Expand Down

0 comments on commit e0d3edd

Please sign in to comment.