From 542be77add5e0076b00c0f2fc707999328f06590 Mon Sep 17 00:00:00 2001 From: Pierre Vanduynslager Date: Thu, 6 Jun 2019 13:11:50 -0400 Subject: [PATCH] feat: require Node.js 8.3 BREAKING CHANGE: remove support for Node.js < 8.3 --- .travis.yml | 2 +- index.js | 4 +- package.json | 2 +- services/github.js | 24 ++++----- services/teamcity.js | 18 +++---- test/services/appveyor.test.js | 5 +- test/services/bitrise.test.js | 6 +-- test/services/buddy.test.js | 2 +- test/services/buildkite.test.js | 5 +- test/services/circleci.test.js | 93 +++++++++++++++------------------ test/services/cirrus.test.js | 2 +- test/services/codefresh.test.js | 6 +-- test/services/drone.test.js | 5 +- test/services/github.test.js | 30 ++++++----- test/services/jenkins.test.js | 12 ++--- test/services/sail.test.js | 23 ++++---- test/services/semaphore.test.js | 27 +++++----- test/services/shippable.test.js | 7 +-- test/services/teamcity.test.js | 29 +++++----- test/services/travis.test.js | 2 +- test/services/vsts.test.js | 5 +- 21 files changed, 136 insertions(+), 173 deletions(-) diff --git a/.travis.yml b/.travis.yml index ff2aae8..2423dc4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,9 @@ language: node_js node_js: + - 12 - 10 - 8 - - 6 branches: only: diff --git a/index.js b/index.js index fa2175b..3f016ca 100644 --- a/index.js +++ b/index.js @@ -31,9 +31,9 @@ const services = { module.exports = ({env = process.env, cwd = process.cwd()} = {}) => { for (const name of Object.keys(services)) { if (services[name].detect({env, cwd})) { - return Object.assign({isCi: true}, services[name].configuration({env, cwd})); + return {isCi: true, ...services[name].configuration({env, cwd})}; } } - return Object.assign({isCi: Boolean(env.CI)}, git.configuration({env, cwd})); + return {isCi: Boolean(env.CI), ...git.configuration({env, cwd})}; }; diff --git a/package.json b/package.json index bdb251c..4b3ccaa 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "xo": "^0.24.0" }, "engines": { - "node": ">=6" + "node": ">=8.3" }, "files": [ "index.js", diff --git a/services/github.js b/services/github.js index 2ee5734..af462e8 100644 --- a/services/github.js +++ b/services/github.js @@ -27,18 +27,16 @@ module.exports = { const isPr = env.GITHUB_EVENT_NAME === 'pull_request'; const branch = parseBranch(env.GITHUB_REF); - return Object.assign( - { - name: 'GitHub Actions', - service: 'github', - commit: env.GITHUB_SHA, - isPr, - branch, - prBranch: isPr ? branch : undefined, - slug: env.GITHUB_REPOSITORY, - root: env.GITHUB_WORKSPACE, - }, - isPr ? getPrEvent({env, cwd}) : undefined - ); + return { + name: 'GitHub Actions', + service: 'github', + commit: env.GITHUB_SHA, + isPr, + branch, + prBranch: isPr ? branch : undefined, + slug: env.GITHUB_REPOSITORY, + root: env.GITHUB_WORKSPACE, + ...(isPr ? getPrEvent({env, cwd}) : undefined), + }; }, }; diff --git a/services/teamcity.js b/services/teamcity.js index ebd0d59..4b275d6 100644 --- a/services/teamcity.js +++ b/services/teamcity.js @@ -37,15 +37,13 @@ module.exports = { return Boolean(env.TEAMCITY_VERSION); }, configuration({env, cwd}) { - return Object.assign( - { - name: 'TeamCity', - service: 'teamcity', - commit: env.BUILD_VCS_NUMBER, - build: env.BUILD_NUMBER, - slug: env.TEAMCITY_BUILDCONF_NAME, - }, - getProperties({env, cwd}) - ); + return { + name: 'TeamCity', + service: 'teamcity', + commit: env.BUILD_VCS_NUMBER, + build: env.BUILD_NUMBER, + slug: env.TEAMCITY_BUILDCONF_NAME, + ...getProperties({env, cwd}), + }; }, }; diff --git a/test/services/appveyor.test.js b/test/services/appveyor.test.js index 229c3d3..6975b82 100644 --- a/test/services/appveyor.test.js +++ b/test/services/appveyor.test.js @@ -37,10 +37,7 @@ test('Push', t => { test('PR', t => { t.deepEqual( appveyor.configuration({ - env: Object.assign({}, env, { - APPVEYOR_PULL_REQUEST_NUMBER: '10', - APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH: 'pr-branch', - }), + env: {...env, APPVEYOR_PULL_REQUEST_NUMBER: '10', APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH: 'pr-branch'}, }), { name: 'Appveyor', diff --git a/test/services/bitrise.test.js b/test/services/bitrise.test.js index 93d44ef..0c891ad 100644 --- a/test/services/bitrise.test.js +++ b/test/services/bitrise.test.js @@ -31,11 +31,7 @@ test('Push', t => { test('PR', t => { t.deepEqual( bitrise.configuration({ - env: Object.assign({}, env, { - BITRISE_PULL_REQUEST: '10', - BITRISEIO_GIT_BRANCH_DEST: 'master', - BITRISE_GIT_BRANCH: 'pr-branch', - }), + env: {...env, BITRISE_PULL_REQUEST: '10', BITRISEIO_GIT_BRANCH_DEST: 'master', BITRISE_GIT_BRANCH: 'pr-branch'}, }), { name: 'Bitrise', diff --git a/test/services/buddy.test.js b/test/services/buddy.test.js index e13606e..319469f 100644 --- a/test/services/buddy.test.js +++ b/test/services/buddy.test.js @@ -31,7 +31,7 @@ test('Push', t => { test('PR', t => { t.deepEqual( buddy.configuration({ - env: Object.assign({}, env, {BUDDY_EXECUTION_PULL_REQUEST_ID: 'pull/10', BUDDY_EXECUTION_BRANCH: undefined}), + env: {...env, BUDDY_EXECUTION_PULL_REQUEST_ID: 'pull/10', BUDDY_EXECUTION_BRANCH: undefined}, }), { name: 'Buddy', diff --git a/test/services/buildkite.test.js b/test/services/buildkite.test.js index 25fe584..f14271b 100644 --- a/test/services/buildkite.test.js +++ b/test/services/buildkite.test.js @@ -34,11 +34,12 @@ test('Push', t => { test('PR', t => { t.deepEqual( buildkite.configuration({ - env: Object.assign({}, env, { + env: { + ...env, BUILDKITE_PULL_REQUEST: '10', BUILDKITE_PULL_REQUEST_BASE_BRANCH: 'master', BUILDKITE_BRANCH: 'pr-branch', - }), + }, }), { name: 'Buildkite', diff --git a/test/services/circleci.test.js b/test/services/circleci.test.js index eac089d..46d708e 100644 --- a/test/services/circleci.test.js +++ b/test/services/circleci.test.js @@ -31,61 +31,52 @@ test('Push', t => { }); test('PR 1.0', t => { - t.deepEqual( - circle.configuration({env: Object.assign({}, env, {CIRCLE_BRANCH: 'pr-branch', CIRCLE_PR_NUMBER: '10'})}), - { - name: 'CircleCI', - service: 'circleci', - commit: '5678', - tag: 'tag_name', - build: '1234', - buildUrl: 'https://server.com/buildresult', - job: '1234.1', - branch: undefined, - pr: '10', - isPr: true, - prBranch: 'pr-branch', - slug: 'owner/repo', - } - ); + t.deepEqual(circle.configuration({env: {...env, CIRCLE_BRANCH: 'pr-branch', CIRCLE_PR_NUMBER: '10'}}), { + name: 'CircleCI', + service: 'circleci', + commit: '5678', + tag: 'tag_name', + build: '1234', + buildUrl: 'https://server.com/buildresult', + job: '1234.1', + branch: undefined, + pr: '10', + isPr: true, + prBranch: 'pr-branch', + slug: 'owner/repo', + }); }); test('PR 2.0', t => { - t.deepEqual( - circle.configuration({env: Object.assign({}, env, {CIRCLE_BRANCH: 'pr-branch', CIRCLE_PR_NUMBER: '10'})}), - { - name: 'CircleCI', - service: 'circleci', - commit: '5678', - tag: 'tag_name', - build: '1234', - buildUrl: 'https://server.com/buildresult', - job: '1234.1', - branch: undefined, - pr: '10', - isPr: true, - prBranch: 'pr-branch', - slug: 'owner/repo', - } - ); + t.deepEqual(circle.configuration({env: {...env, CIRCLE_BRANCH: 'pr-branch', CIRCLE_PR_NUMBER: '10'}}), { + name: 'CircleCI', + service: 'circleci', + commit: '5678', + tag: 'tag_name', + build: '1234', + buildUrl: 'https://server.com/buildresult', + job: '1234.1', + branch: undefined, + pr: '10', + isPr: true, + prBranch: 'pr-branch', + slug: 'owner/repo', + }); }); test('PR 2.0 without pull uri', t => { - t.deepEqual( - circle.configuration({env: Object.assign({}, env, {CIRCLE_BRANCH: 'pr-branch', CIRCLE_PR_NUMBER: '10'})}), - { - name: 'CircleCI', - service: 'circleci', - commit: '5678', - tag: 'tag_name', - build: '1234', - buildUrl: 'https://server.com/buildresult', - job: '1234.1', - branch: undefined, - pr: '10', - isPr: true, - prBranch: 'pr-branch', - slug: 'owner/repo', - } - ); + t.deepEqual(circle.configuration({env: {...env, CIRCLE_BRANCH: 'pr-branch', CIRCLE_PR_NUMBER: '10'}}), { + name: 'CircleCI', + service: 'circleci', + commit: '5678', + tag: 'tag_name', + build: '1234', + buildUrl: 'https://server.com/buildresult', + job: '1234.1', + branch: undefined, + pr: '10', + isPr: true, + prBranch: 'pr-branch', + slug: 'owner/repo', + }); }); diff --git a/test/services/cirrus.test.js b/test/services/cirrus.test.js index af40447..4c7248f 100644 --- a/test/services/cirrus.test.js +++ b/test/services/cirrus.test.js @@ -33,7 +33,7 @@ test('Push', t => { test('PR', t => { t.deepEqual( cirrus.configuration({ - env: Object.assign({}, env, {CIRRUS_PR: '239', CIRRUS_BASE_BRANCH: 'master', CIRRUS_BRANCH: 'pr-branch'}), + env: {...env, CIRRUS_PR: '239', CIRRUS_BASE_BRANCH: 'master', CIRRUS_BRANCH: 'pr-branch'}, }), { name: 'Cirrus CI', diff --git a/test/services/codefresh.test.js b/test/services/codefresh.test.js index d8ff9ec..6dd11ec 100644 --- a/test/services/codefresh.test.js +++ b/test/services/codefresh.test.js @@ -30,11 +30,7 @@ test('Push', t => { test('PR', t => { t.deepEqual( codefresh.configuration({ - env: Object.assign({}, env, { - CF_PULL_REQUEST_NUMBER: '10', - CF_PULL_REQUEST_TARGET: 'master', - CF_BRANCH: 'pr-branch', - }), + env: {...env, CF_PULL_REQUEST_NUMBER: '10', CF_PULL_REQUEST_TARGET: 'master', CF_BRANCH: 'pr-branch'}, }), { name: 'Codefresh', diff --git a/test/services/drone.test.js b/test/services/drone.test.js index 27c7d52..6751f00 100644 --- a/test/services/drone.test.js +++ b/test/services/drone.test.js @@ -31,12 +31,13 @@ test('Push', t => { test('PR', t => { t.deepEqual( drone.configuration({ - env: Object.assign({}, env, { + env: { + ...env, DRONE_PULL_REQUEST: '10', DRONE_BUILD_EVENT: 'pull_request', DRONE_TARGET_BRANCH: 'master', DRONE_SOURCE_BRANCH: 'pr-branch', - }), + }, }), { name: 'Drone', diff --git a/test/services/github.test.js b/test/services/github.test.js index 3f59a19..fda373d 100644 --- a/test/services/github.test.js +++ b/test/services/github.test.js @@ -33,11 +33,12 @@ test('PR - with event.json file', t => { t.deepEqual( github.configuration({ - env: Object.assign({}, env, { + env: { + ...env, GITHUB_EVENT_NAME: 'pull_request', GITHUB_REF: '/refs/heads/pr-branch', GITHUB_EVENT_PATH: eventFile, - }), + }, }), { name: 'GitHub Actions', @@ -56,11 +57,12 @@ test('PR - with event.json file', t => { test('PR - with missing event.json file', t => { t.deepEqual( github.configuration({ - env: Object.assign({}, env, { + env: { + ...env, GITHUB_EVENT_NAME: 'pull_request', GITHUB_REF: '/refs/heads/pr-branch', GITHUB_EVENT_PATH: '/tmp/null', - }), + }, }), { name: 'GitHub Actions', @@ -79,10 +81,7 @@ test('PR - with missing event.json file', t => { test('PR - with missing event.json file path', t => { t.deepEqual( github.configuration({ - env: Object.assign({}, env, { - GITHUB_EVENT_NAME: 'pull_request', - GITHUB_REF: '/refs/heads/pr-branch', - }), + env: {...env, GITHUB_EVENT_NAME: 'pull_request', GITHUB_REF: '/refs/heads/pr-branch'}, }), { name: 'GitHub Actions', @@ -105,11 +104,12 @@ test('PR - with missing "pull_request" in event.json file', t => { t.deepEqual( github.configuration({ - env: Object.assign({}, env, { + env: { + ...env, GITHUB_EVENT_NAME: 'pull_request', GITHUB_REF: '/refs/heads/pr-branch', GITHUB_EVENT_PATH: eventFile, - }), + }, }), { name: 'GitHub Actions', @@ -132,11 +132,12 @@ test('PR - with missing "pull_request.base" in event.json file', t => { t.deepEqual( github.configuration({ - env: Object.assign({}, env, { + env: { + ...env, GITHUB_EVENT_NAME: 'pull_request', GITHUB_REF: '/refs/heads/pr-branch', GITHUB_EVENT_PATH: eventFile, - }), + }, }), { name: 'GitHub Actions', @@ -159,11 +160,12 @@ test('PR - with erronous branch names', t => { t.deepEqual( github.configuration({ - env: Object.assign({}, env, { + env: { + ...env, GITHUB_EVENT_NAME: 'pull_request', GITHUB_REF: '/refs/tags/pr-branch', GITHUB_EVENT_PATH: eventFile, - }), + }, }), { name: 'GitHub Actions', diff --git a/test/services/jenkins.test.js b/test/services/jenkins.test.js index df1436c..3a4a4ad 100644 --- a/test/services/jenkins.test.js +++ b/test/services/jenkins.test.js @@ -10,7 +10,7 @@ const env = { }; test('Push', t => { - t.deepEqual(jenkins.configuration({env: Object.assign({}, env, {GIT_BRANCH: 'master'})}), { + t.deepEqual(jenkins.configuration({env: {...env, GIT_BRANCH: 'master'}}), { name: 'Jenkins', service: 'jenkins', commit: '5678', @@ -25,7 +25,7 @@ test('Push', t => { }); test('PR', t => { - t.deepEqual(jenkins.configuration({env: Object.assign({}, env, {BRANCH_NAME: 'pr-branch', CHANGE_ID: '10'})}), { + t.deepEqual(jenkins.configuration({env: {...env, BRANCH_NAME: 'pr-branch', CHANGE_ID: '10'}}), { name: 'Jenkins', service: 'jenkins', commit: '5678', @@ -42,7 +42,7 @@ test('PR', t => { test('PR (PR ghprb-plugin)', t => { t.deepEqual( jenkins.configuration({ - env: Object.assign({}, env, {ghprbSourceBranch: 'pr-branch', ghprbTargetBranch: 'master', ghprbPullId: '10'}), + env: {...env, ghprbSourceBranch: 'pr-branch', ghprbTargetBranch: 'master', ghprbPullId: '10'}, }), { name: 'Jenkins', @@ -62,11 +62,7 @@ test('PR (PR ghprb-plugin)', t => { test('PR (gitlab-plugin)', t => { t.deepEqual( jenkins.configuration({ - env: Object.assign({}, env, { - ghprbSourceBranch: 'pr-branch', - gitlabTargetBranch: 'master', - gitlabMergeRequestId: '10', - }), + env: {...env, ghprbSourceBranch: 'pr-branch', gitlabTargetBranch: 'master', gitlabMergeRequestId: '10'}, }), { name: 'Jenkins', diff --git a/test/services/sail.test.js b/test/services/sail.test.js index e72431d..39f8c7a 100644 --- a/test/services/sail.test.js +++ b/test/services/sail.test.js @@ -23,17 +23,14 @@ test('Push', t => { }); test('PR', t => { - t.deepEqual( - sail.configuration({env: Object.assign({}, env, {SAIL_PULL_REQUEST_NUMBER: '10', SAIL_COMMIT_BRANCH: 'pull/10'})}), - { - name: 'Sail CI', - service: 'sail', - commit: 'full-commit-sha', - branch: undefined, - slug: 'owner/repo', - root: '/workspace/repo', - pr: '10', - isPr: true, - } - ); + t.deepEqual(sail.configuration({env: {...env, SAIL_PULL_REQUEST_NUMBER: '10', SAIL_COMMIT_BRANCH: 'pull/10'}}), { + name: 'Sail CI', + service: 'sail', + commit: 'full-commit-sha', + branch: undefined, + slug: 'owner/repo', + root: '/workspace/repo', + pr: '10', + isPr: true, + }); }); diff --git a/test/services/semaphore.test.js b/test/services/semaphore.test.js index 0ba2214..afc38b1 100644 --- a/test/services/semaphore.test.js +++ b/test/services/semaphore.test.js @@ -32,19 +32,16 @@ test('PR', async t => { const {cwd} = await gitRepo(true); const commit = await gitCommit('Test commit message', {cwd}); - t.deepEqual( - semaphore.configuration({env: Object.assign({}, env, {PULL_REQUEST_NUMBER: '10', BRANCH_NAME: 'pr-branch'}), cwd}), - { - name: 'Semaphore', - service: 'semaphore', - commit, - build: '91011', - branch: undefined, - root: '/', - pr: '10', - isPr: true, - prBranch: 'pr-branch', - slug: 'owner/repo', - } - ); + t.deepEqual(semaphore.configuration({env: {...env, PULL_REQUEST_NUMBER: '10', BRANCH_NAME: 'pr-branch'}, cwd}), { + name: 'Semaphore', + service: 'semaphore', + commit, + build: '91011', + branch: undefined, + root: '/', + pr: '10', + isPr: true, + prBranch: 'pr-branch', + slug: 'owner/repo', + }); }); diff --git a/test/services/shippable.test.js b/test/services/shippable.test.js index 93e3e9f..47ab9d7 100644 --- a/test/services/shippable.test.js +++ b/test/services/shippable.test.js @@ -36,12 +36,7 @@ test('Push', t => { test('PR', t => { t.deepEqual( shippable.configuration({ - env: Object.assign({}, env, { - BASE_BRANCH: 'master', - HEAD_BRANCH: 'pr-branch', - IS_PULL_REQUEST: 'true', - PULL_REQUEST: '10', - }), + env: {...env, BASE_BRANCH: 'master', HEAD_BRANCH: 'pr-branch', IS_PULL_REQUEST: 'true', PULL_REQUEST: '10'}, }), { name: 'Shippable', diff --git a/test/services/teamcity.test.js b/test/services/teamcity.test.js index 8d50eb1..6188511 100644 --- a/test/services/teamcity.test.js +++ b/test/services/teamcity.test.js @@ -16,7 +16,7 @@ test('Push - with build properties file', t => { const buildProperties = ['teamcity.build.branch=master', 'teamcity.build.workingDir=/']; fs.writeFileSync(buildFile, buildProperties.join('\n') + '\n'); - t.deepEqual(teamcity.configuration({env: Object.assign({}, env, {TEAMCITY_BUILD_PROPERTIES_FILE: buildFile})}), { + t.deepEqual(teamcity.configuration({env: {...env, TEAMCITY_BUILD_PROPERTIES_FILE: buildFile}}), { name: 'TeamCity', service: 'teamcity', commit: '5678', @@ -35,7 +35,7 @@ test('Push - with build and config properties files', t => { fs.writeFileSync(buildFile, buildProperties.join('\n') + '\n'); fs.writeFileSync(configFile, configProperties.join('\n') + '\n'); - t.deepEqual(teamcity.configuration({env: Object.assign({}, env, {TEAMCITY_BUILD_PROPERTIES_FILE: buildFile})}), { + t.deepEqual(teamcity.configuration({env: {...env, TEAMCITY_BUILD_PROPERTIES_FILE: buildFile}}), { name: 'TeamCity', service: 'teamcity', commit: '5678', @@ -58,7 +58,7 @@ test('Push - prioritize build properties file values', t => { fs.writeFileSync(buildFile, buildProperties.join('\n') + '\n'); fs.writeFileSync(configFile, configProperties.join('\n') + '\n'); - t.deepEqual(teamcity.configuration({env: Object.assign({}, env, {TEAMCITY_BUILD_PROPERTIES_FILE: buildFile})}), { + t.deepEqual(teamcity.configuration({env: {...env, TEAMCITY_BUILD_PROPERTIES_FILE: buildFile}}), { name: 'TeamCity', service: 'teamcity', commit: '5678', @@ -90,7 +90,7 @@ test('Push - with build and missing config properties files', async t => { const buildProperties = ['teamcity.build.branch=master', 'teamcity.configuration.properties.file=/tmp/null']; fs.writeFileSync(buildFile, buildProperties.join('\n') + '\n'); - t.deepEqual(teamcity.configuration({env: Object.assign({}, env, {TEAMCITY_BUILD_PROPERTIES_FILE: buildFile}), cwd}), { + t.deepEqual(teamcity.configuration({env: {...env, TEAMCITY_BUILD_PROPERTIES_FILE: buildFile}, cwd}), { name: 'TeamCity', service: 'teamcity', commit: '5678', @@ -104,16 +104,13 @@ test('Push - with build and missing config properties files', async t => { test('Push - with missing build properties files', async t => { const {cwd} = await gitRepo(true); - t.deepEqual( - teamcity.configuration({env: Object.assign({}, env, {TEAMCITY_BUILD_PROPERTIES_FILE: '/tmp/null'}), cwd}), - { - name: 'TeamCity', - service: 'teamcity', - commit: '5678', - build: '91011', - branch: 'master', - root: undefined, - slug: 'owner/repo', - } - ); + t.deepEqual(teamcity.configuration({env: {...env, TEAMCITY_BUILD_PROPERTIES_FILE: '/tmp/null'}, cwd}), { + name: 'TeamCity', + service: 'teamcity', + commit: '5678', + build: '91011', + branch: 'master', + root: undefined, + slug: 'owner/repo', + }); }); diff --git a/test/services/travis.test.js b/test/services/travis.test.js index a2ca497..996c9f6 100644 --- a/test/services/travis.test.js +++ b/test/services/travis.test.js @@ -37,7 +37,7 @@ test('Push', t => { test('PR', t => { t.deepEqual( travis.configuration({ - env: Object.assign({}, env, {TRAVIS_PULL_REQUEST: '10', TRAVIS_PULL_REQUEST_BRANCH: 'pr-branch'}), + env: {...env, TRAVIS_PULL_REQUEST: '10', TRAVIS_PULL_REQUEST_BRANCH: 'pr-branch'}, }), { name: 'Travis CI', diff --git a/test/services/vsts.test.js b/test/services/vsts.test.js index cb2f5c6..b27c5a7 100644 --- a/test/services/vsts.test.js +++ b/test/services/vsts.test.js @@ -26,11 +26,12 @@ test('Push', t => { test('PR', t => { t.deepEqual( vsts.configuration({ - env: Object.assign({}, env, { + env: { + ...env, SYSTEM_PULLREQUEST_PULLREQUESTID: '9', SYSTEM_PULLREQUEST_TARGETBRANCH: 'master', SYSTEM_PULLREQUEST_SOURCEBRANCH: 'pr-branch', - }), + }, }), { name: 'Visual Studio Team Services',