From f803851b19ff41ad26a04864a41fa9126476c669 Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Wed, 2 Oct 2019 21:31:26 +0200 Subject: [PATCH 1/8] add test coverage --- index.test.js | 6 ++--- package.json | 2 +- settings.test.js | 66 ++++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 67 insertions(+), 7 deletions(-) diff --git a/index.test.js b/index.test.js index e6076432..7c0cfefd 100644 --- a/index.test.js +++ b/index.test.js @@ -3,7 +3,7 @@ const cp = require('child_process'); const path = require('path'); const fs = require('fs'); -const testHomePath = path.join(__dirname, 'temp'); +const testHomePath = fs.mkdtempSync(".m2"); const settingsPath = path.join(testHomePath, '.m2', 'settings.xml'); const indexPath = path.join(__dirname, 'index.js'); @@ -19,16 +19,14 @@ afterEach(() => { try { fs.unlinkSync(settingsPath); } catch (error) { - console.error(error.message); } }); afterAll(() => { try { - fs.rmdirSync(path.join(testHomePath, ".m2")); + fs.rmdirSync(path.dirname(settingsPath)); fs.rmdirSync(testHomePath); } catch (error) { - console.error(error.message); } }); diff --git a/package.json b/package.json index 71875689..636ab161 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "index.js", "scripts": { "lint": "eslint index.js settings.js", - "test": "eslint index.js settings.js && jest" + "test": "eslint index.js settings.js && jest --coverage" }, "repository": { "type": "git", diff --git a/settings.test.js b/settings.test.js index 6dde1b5d..a8e89715 100644 --- a/settings.test.js +++ b/settings.test.js @@ -1,11 +1,16 @@ const DOMParser = require('xmldom').DOMParser; const XMLSerializer = require('xmldom').XMLSerializer; +const fs = require('fs'); +const path = require('path'); const settings = require('./settings'); var xmlTestProfile = undefined; +const testHomePath = fs.mkdtempSync(".m2"); +const settingsPath = path.join(testHomePath, '.m2', 'settings.xml'); + beforeEach(() => { xmlTestProfile = new DOMParser().parseFromString(` @@ -27,6 +32,28 @@ beforeEach(() => { }); +afterEach(() => { + + for (key in process.env) { + if (key.match(/^INPUT_/)) { + delete process.env[key]; + } + } + + try { + fs.unlinkSync(settingsPath); + } catch (error) { + } +}); + +afterAll(() => { + try { + fs.rmdirSync(path.dirname(settingsPath)); + fs.rmdirSync(testHomePath); + } catch (error) { + } +}); + test('template should be read', () => { const template = settings.getSettingsTemplate(); @@ -34,6 +61,19 @@ test('template should be read', () => { expect(template).toBeDefined(); }); +test('xml should be write', () => { + + if (!fs.existsSync(testHomePath)) { + fs.mkdirSync(testHomePath); + } + + settings.writeSettings(settingsPath, xmlTestProfile); + + const settingsStatus = fs.lstatSync(settingsPath); + expect(settingsStatus.isFile()).toBeTruthy(); + expect(settingsStatus.size).toBeGreaterThan(0); +}); + test('fillServers do nothing if no params', () => { const xml = new DOMParser().parseFromString(""); @@ -43,7 +83,6 @@ test('fillServers do nothing if no params', () => { const xmlStr = new XMLSerializer().serializeToString(xml); expect(xmlStr).toBe(""); - }); test('fillServers one server', () => { @@ -60,7 +99,6 @@ test('fillServers one server', () => { expect(xmlStr).toBe("" + "id1username1password1" + ""); - }); test('fillServers two servers', () => { @@ -131,3 +169,27 @@ test('fillProperties', () => { `); }) + +test('fillProperties do nothing if no params', () => { + + settings.fillProperties(xmlTestProfile); + + const xmlStr = new XMLSerializer().serializeToString(xmlTestProfile); + expect(xmlStr).toBe(` + + + _properties_ + + false + + + + + _sonatype-snapshots_ + + false + + + + `); +}) From 6aa8b46f1d7697f9f8140d60d2aeacf0cd4e2c5f Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Wed, 2 Oct 2019 22:50:39 +0200 Subject: [PATCH 2/8] test on os matrix --- .github/workflows/test.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index dcf38551..6dadadf1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -5,11 +5,18 @@ on: jobs: test: - runs-on: ubuntu-latest + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macOS-latest] + fail-fast: false + runs-on: ${{ matrix.os }} + steps: - uses: actions/checkout@v1 - - run: npm ci + - run: npm version + - run: npm install - run: npm test + - uses: ./ with: servers: '[{"id": "serverId", "username": "username", "password": "password"}]' @@ -17,3 +24,4 @@ jobs: sonatypeSnapshots: true - run: cat ~/.m2/settings.xml + shell: bash \ No newline at end of file From d715271c3a7091c504b31d36ff9136ae62b14659 Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Thu, 3 Oct 2019 07:55:31 +0200 Subject: [PATCH 3/8] home path on windows --- index.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index 7cfeb72c..a41a4515 100644 --- a/index.js +++ b/index.js @@ -8,10 +8,17 @@ const settings = require('./settings'); async function run() { try { - const settingsPath = path.join(process.env.HOME, '.m2', 'settings.xml'); - core.info('Prepare maven setings: ' + settingsPath); + var settingsPath; + try { + settingsPath= path.join(process.env['HOME'], '.m2', 'settings.xml'); + } catch (error) { + console.log("HOME=" + process.env['HOME']); + throw error; + } - if ( fs.existsSync(settingsPath) ) { + core.info('Prepare maven setings: ' + settingsPath); + + if (fs.existsSync(settingsPath)) { core.warning('maven settings.xml already exists - skip'); return; } From bcf2e289fb06a9f8a2bab55e16c3ef91cc93c41e Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Thu, 3 Oct 2019 09:06:12 +0200 Subject: [PATCH 4/8] windows home directory --- index.js | 9 ++------- index.test.js | 1 + 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/index.js b/index.js index a41a4515..2f9a2183 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,7 @@ const core = require('@actions/core'); const path = require('path'); const fs = require('fs'); +const os = require('os'); const settings = require('./settings'); @@ -8,13 +9,7 @@ const settings = require('./settings'); async function run() { try { - var settingsPath; - try { - settingsPath= path.join(process.env['HOME'], '.m2', 'settings.xml'); - } catch (error) { - console.log("HOME=" + process.env['HOME']); - throw error; - } + const settingsPath = path.join(os.homedir(), '.m2', 'settings.xml'); core.info('Prepare maven setings: ' + settingsPath); diff --git a/index.test.js b/index.test.js index 7c0cfefd..3415e3d4 100644 --- a/index.test.js +++ b/index.test.js @@ -13,6 +13,7 @@ beforeAll(() => { } process.env['HOME'] = testHomePath; + process.env['USERPROFILE'] = testHomePath; }); afterEach(() => { From 774565612cdc8c1e4bff4c5c1a4415341f3cd92a Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Thu, 3 Oct 2019 11:25:32 +0200 Subject: [PATCH 5/8] setup node version --- .github/workflows/test.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6dadadf1..3c1d0637 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,6 +13,9 @@ jobs: steps: - uses: actions/checkout@v1 + - uses: actions/setup-node@v1 + with: + node-version: '12.x' - run: npm version - run: npm install - run: npm test From 66fddc0a20063bc92b7a886a6609066a183196fb Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Thu, 3 Oct 2019 12:09:39 +0200 Subject: [PATCH 6/8] action badge --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f2727d1e..d4828ae5 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # maven-settings-action +[![Test Action](https://github.com/s4u/maven-settings-action/workflows/Test%20Action/badge.svg)](https://github.com/s4u/maven-settings-action/actions) This action setup maven environment for use in action by: - create maven setings.xml From 12ff0e5d808d205adb59dc9e9db3dcc8bda8ac1b Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Fri, 4 Oct 2019 11:32:06 +0200 Subject: [PATCH 7/8] update dependency --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 58f81d6b..9147ca38 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@actions/core": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.1.2.tgz", - "integrity": "sha512-l8Ol2wEzFeuhV1v7LbGB2x8ghXSnmUiSVKVSjsNwgqAU4i5LvGRXpM+kli9gNMkGVudwZYHET4qZ5DTep5Sssw==" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.1.3.tgz", + "integrity": "sha512-2BIib53Jh4Cfm+1XNuZYYGTeRo8yiWEAUMoliMh1qQGMaqTF4VUlhhcsBylTu4qWmUx45DrY0y0XskimAHSqhw==" }, "@babel/code-frame": { "version": "7.5.5", diff --git a/package.json b/package.json index 636ab161..edaf0977 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ }, "homepage": "https://github.com/s4u/maven-settings-action#readme", "dependencies": { - "@actions/core": "^1.1.2", + "@actions/core": "^1.1.3", "xmldom": "^0.1.27", "xpath": "0.0.27" }, From 6c2693dc588446d9aaf75538e812ba99ee20c195 Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Fri, 4 Oct 2019 11:42:46 +0200 Subject: [PATCH 8/8] use npm ci instead of install --- .github/workflows/test.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3c1d0637..6d5110f4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -17,7 +17,8 @@ jobs: with: node-version: '12.x' - run: npm version - - run: npm install + - run: npm ci + - run: npm audit - run: npm test - uses: ./ @@ -27,4 +28,4 @@ jobs: sonatypeSnapshots: true - run: cat ~/.m2/settings.xml - shell: bash \ No newline at end of file + shell: bash