Compare commits

..

17 Commits

Author SHA1 Message Date
Nick Fields
8e4fe2b191 patch: remove original multiline tests from ci workflow 2022-06-20 09:26:36 -04:00
Nick Fields
676683ec60 patch: move multiline tests to separate job 2022-06-20 09:25:15 -04:00
Anton Chaporgin
772a768088 tests checked with act 2022-06-20 14:04:06 +03:00
Anton Chaporgin
6e8635d64a tests checked with act 2022-06-20 12:01:02 +03:00
Anton Chaporgin
2d8f74008e self review 2022-06-20 11:28:31 +03:00
Anton Chaporgin
4d604b1776 tests 2022-06-20 11:25:59 +03:00
Nick Fields
29e1861bc1 Merge branch 'master' into patch-1 2022-06-19 22:06:19 -04:00
dependabot[bot]
f2eb0f4f8a build(deps): bump npm from 8.7.0 to 8.12.2 (#78)
Bumps [npm](https://github.com/npm/cli) from 8.7.0 to 8.12.2.
- [Release notes](https://github.com/npm/cli/releases)
- [Changelog](https://github.com/npm/cli/blob/latest/CHANGELOG.md)
- [Commits](https://github.com/npm/cli/compare/v8.7.0...v8.12.2)

---
updated-dependencies:
- dependency-name: npm
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Nick Fields <46869826+nick-fields@users.noreply.github.com>
2022-06-20 01:54:36 +00:00
dependabot[bot]
2762157955 build(deps): bump semver-regex from 3.1.3 to 3.1.4 (#72)
Bumps [semver-regex](https://github.com/sindresorhus/semver-regex) from 3.1.3 to 3.1.4.
- [Release notes](https://github.com/sindresorhus/semver-regex/releases)
- [Commits](https://github.com/sindresorhus/semver-regex/commits/v3.1.4)

---
updated-dependencies:
- dependency-name: semver-regex
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Nick Fields <46869826+nick-fields@users.noreply.github.com>
2022-06-20 01:44:26 +00:00
Nick Fields
ce44dab6c9 [Snyk] Upgrade @actions/core from 1.5.0 to 1.8.2 (#73)
* fix: upgrade @actions/core from 1.5.0 to 1.8.2

Snyk has created this PR to upgrade @actions/core from 1.5.0 to 1.8.2.

See this package in npm:
https://www.npmjs.com/package/@actions/core

See this project in Snyk:
https://app.snyk.io/org/nick-invision/project/b960b937-66a3-4aae-9cb2-321f49c8750b?utm_source=github&utm_medium=referral&page=upgrade-pr

* patch: regenerate action after bumping @actions/core

Co-authored-by: snyk-bot <snyk-bot@snyk.io>
Co-authored-by: Nick Fields <46869826+nick-fields@users.noreply.github.com>
2022-06-20 01:27:32 +00:00
dependabot[bot]
40cf3886b8 build(deps-dev): bump semantic-release from 19.0.2 to 19.0.3 (#75)
Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 19.0.2 to 19.0.3.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](https://github.com/semantic-release/semantic-release/compare/v19.0.2...v19.0.3)

---
updated-dependencies:
- dependency-name: semantic-release
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-19 21:14:36 -04:00
Anton Chaporgin
db59b2620d add -e to bash to support multiline commands
#43 #53
2022-06-09 10:33:36 +03:00
Nick Fields
02a3f09f15 Various security related dependency updates and node16 update (#64)
* patch: update to node 16.4.2 LTS

* patch: update semantic-release and friends to get latest security fixes

* patch: npm audit fixes

* patch: update commitlint for security updates
2022-04-25 23:53:00 -04:00
Nick Fields
6b1204d918 Merge pull request #62 from nick-fields/dependabot/npm_and_yarn/npm-user-validate-1.0.1
build(deps): bump npm-user-validate from 1.0.0 to 1.0.1
2022-04-25 22:37:45 -04:00
Nick Fields
8629cc7c0b Merge pull request #63 from nick-fields/dependabot/npm_and_yarn/ssri-6.0.2
build(deps): bump ssri from 6.0.1 to 6.0.2
2022-04-25 22:37:37 -04:00
dependabot[bot]
e4acf08f18 build(deps): bump npm-user-validate from 1.0.0 to 1.0.1
Bumps [npm-user-validate](https://github.com/npm/npm-user-validate) from 1.0.0 to 1.0.1.
- [Release notes](https://github.com/npm/npm-user-validate/releases)
- [Commits](https://github.com/npm/npm-user-validate/compare/v1.0.0...v1.0.1)

---
updated-dependencies:
- dependency-name: npm-user-validate
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-26 02:22:33 +00:00
dependabot[bot]
51e448da7c build(deps): bump ssri from 6.0.1 to 6.0.2
Bumps [ssri](https://github.com/npm/ssri) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/npm/ssri/releases)
- [Changelog](https://github.com/npm/ssri/blob/v6.0.2/CHANGELOG.md)
- [Commits](https://github.com/npm/ssri/compare/v6.0.1...v6.0.2)

---
updated-dependencies:
- dependency-name: ssri
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-26 02:22:33 +00:00
6 changed files with 11074 additions and 4569 deletions

View File

@@ -14,7 +14,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: 12
node-version: 16
- name: Install dependencies
run: npm ci
@@ -313,6 +313,114 @@ jobs:
expected: failure
actual: ${{ steps.wrong_shell.outcome }}
ci_multiline_tests:
name: Run Tests (Multiline)
if: startsWith(github.ref, 'refs/heads')
runs-on: ubuntu-18.04
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: 16
- name: Install dependencies
run: npm ci
- name: Multi-line 2 commands non existent first command
id: multi_line_2_commands_non_existent_first_command
uses: ./
continue-on-error: true
with:
shell: bash
timeout_seconds: 1
max_attempts: 2
command: |
i-do-not-exist && \
echo "i-exist"
- uses: nick-invision/assert-action@v1
with:
expected: 2
actual: ${{ steps.multi_line_2_commands_non_existent_first_command.outputs.total_attempts }}
- uses: nick-invision/assert-action@v1
with:
expected: 'Final attempt failed'
actual: ${{ steps.multi_line_2_commands_non_existent_first_command.outputs.exit_error }}
comparison: contains
- uses: nick-invision/assert-action@v1
with:
# The 127 error code indicates “command not found”.
expected: '127'
actual: ${{ steps.multi_line_2_commands_non_existent_first_command.outputs.exit_code }}
comparison: contains
- uses: nick-invision/assert-action@v1
with:
expected: 'i-exist'
actual: ${{ steps.multi_line_2_commands_non_existent_first_command.outputs.exit_error }}
comparison: notContains
- name: Multi-line 2 commands happy path test
id: multi_line_2_commands_happy_path
uses: ./
with:
shell: bash
timeout_seconds: 1
max_attempts: 2
command: |
echo "foo" && \
echo "bar"
- uses: nick-invision/assert-action@v1
with:
expected: 1
actual: ${{ steps.multi_line_2_commands_happy_path.outputs.total_attempts }}
- name: Conventional multi-line non existent first command
id: conventional_multi_line_non_existent_first_command
uses: ./
continue-on-error: true
with:
shell: bash
timeout_seconds: 1
max_attempts: 2
command: |
i-do-not-exist
echo "i-exist"
- uses: nick-invision/assert-action@v1
with:
expected: 2
actual: ${{ steps.conventional_multi_line_non_existent_first_command.outputs.total_attempts }}
- uses: nick-invision/assert-action@v1
with:
expected: 'Final attempt failed'
actual: ${{ steps.conventional_multi_line_non_existent_first_command.outputs.exit_error }}
comparison: contains
- uses: nick-invision/assert-action@v1
with:
# The 127 error code indicates “command not found”.
expected: '127'
actual: ${{ steps.conventional_multi_line_non_existent_first_command.outputs.exit_code }}
comparison: contains
- uses: nick-invision/assert-action@v1
with:
expected: 'i-exist'
actual: ${{ steps.conventional_multi_line_non_existent_first_command.outputs.exit_error }}
comparison: notContains
- name: Conventional multi-line happy path test
id: conventional_multi_line_happy_path
uses: ./
with:
shell: bash
timeout_seconds: 1
max_attempts: 2
command: |
echo "foo"
echo "bar"
- uses: nick-invision/assert-action@v1
with:
expected: 1
actual: ${{ steps.conventional_multi_line_happy_path.outputs.total_attempts }}
ci_windows:
name: Run Windows Tests
if: startsWith(github.ref, 'refs/heads')
@@ -323,7 +431,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: 12
node-version: 16
- name: Install dependencies
run: npm ci
- name: Powershell test
@@ -377,7 +485,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: 12
node-version: 16
- name: Install dependencies
run: npm ci
- name: Release

1
.nvmrc Normal file
View File

@@ -0,0 +1 @@
v16.14.2

1501
dist/index.js vendored

File diff suppressed because it is too large Load Diff

14001
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -11,28 +11,28 @@
"url": "git+https://github.com/nick-invision/retry.git"
},
"keywords": [],
"author": "",
"author": "Nick Fields",
"license": "ISC",
"bugs": {
"url": "https://github.com/nick-invision/retry/issues"
},
"homepage": "https://github.com/nick-invision/retry#readme",
"dependencies": {
"@actions/core": "^1.5.0",
"@actions/core": "^1.8.2",
"milliseconds": "^1.0.3",
"tree-kill": "^1.2.2"
},
"devDependencies": {
"@commitlint/cli": "11.0.0",
"@commitlint/config-conventional": "11.0.0",
"@semantic-release/changelog": "5.0.1",
"@semantic-release/git": "9.0.0",
"@commitlint/cli": "^16.2.3",
"@commitlint/config-conventional": "^16.2.1",
"@semantic-release/changelog": "^6.0.1",
"@semantic-release/git": "^10.0.1",
"@types/milliseconds": "0.0.30",
"@types/node": "14.14.7",
"@zeit/ncc": "^0.20.5",
"dotenv": "8.2.0",
"husky": "4.3.0",
"semantic-release": "17.2.3",
"husky": "^4.3.8",
"semantic-release": "19.0.3",
"ts-node": "9.0.0",
"typescript": "4.0.5"
},

View File

@@ -78,12 +78,16 @@ function getTimeout(): number {
function getExecutable(): string {
if (!SHELL) {
return OS === 'win32' ? 'powershell' : 'bash';
return OS === 'win32' ? 'powershell' : 'bash -e';
}
let executable: string;
switch (SHELL) {
case "bash":
case "bash": {
// -e to not ignore errors, but exit with non-zero code.
executable = "bash -e";
break;
}
case "python":
case "pwsh": {
executable = SHELL;
@@ -131,7 +135,7 @@ async function runCmd(attempt: number) {
exit = 0;
done = false;
debug(`Running command ${COMMAND} on ${OS} using shell ${executable}`)
debug(`Running command ${COMMAND} on ${OS} using shell "${executable}"`)
var child = attempt > 1 && NEW_COMMAND_ON_RETRY
? exec(NEW_COMMAND_ON_RETRY, { 'shell': executable })
: exec(COMMAND, { 'shell': executable });