mirror of
https://github.com/nick-fields/retry.git
synced 2026-02-10 23:25:28 +00:00
Compare commits
17 Commits
v2.7.0
...
anthonyc/m
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8e4fe2b191 | ||
|
|
676683ec60 | ||
|
|
772a768088 | ||
|
|
6e8635d64a | ||
|
|
2d8f74008e | ||
|
|
4d604b1776 | ||
|
|
29e1861bc1 | ||
|
|
f2eb0f4f8a | ||
|
|
2762157955 | ||
|
|
ce44dab6c9 | ||
|
|
40cf3886b8 | ||
|
|
db59b2620d | ||
|
|
02a3f09f15 | ||
|
|
6b1204d918 | ||
|
|
8629cc7c0b | ||
|
|
e4acf08f18 | ||
|
|
51e448da7c |
114
.github/workflows/ci_cd.yml
vendored
114
.github/workflows/ci_cd.yml
vendored
@@ -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
|
||||
|
||||
1501
dist/index.js
vendored
1501
dist/index.js
vendored
File diff suppressed because it is too large
Load Diff
13955
package-lock.json
generated
13955
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
16
package.json
16
package.json
@@ -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"
|
||||
},
|
||||
|
||||
10
src/index.ts
10
src/index.ts
@@ -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 });
|
||||
|
||||
Reference in New Issue
Block a user