Add warn-on-failure #7
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Test | |
on: | |
push: | |
paths-ignore: | |
- '**.md' | |
pull_request: | |
paths-ignore: | |
- '**.md' | |
permissions: | |
contents: read | |
jobs: | |
test: | |
name: Build and Test | |
strategy: | |
matrix: | |
runs-on: [ubuntu-latest, macos-latest, windows-latest] | |
fail-fast: false | |
runs-on: ${{ matrix.runs-on }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Node 20 | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20.x | |
cache: 'npm' | |
- name: npm install | |
run: npm install | |
- name: Compile | |
run: npm run build | |
- name: Lint | |
run: npm run lint | |
- name: Format | |
run: npm run format-check | |
- name: Create artifacts | |
run: | | |
mkdir -p path/to/artifact-A | |
mkdir -p path/to/artifact-B | |
echo "Lorem ipsum dolor sit amet" > path/to/artifact-A/file-A.txt | |
echo "Hello world from file B" > path/to/artifact-B/file-B.txt | |
- name: Upload artifact A | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Artifact-A-${{ matrix.runs-on }} | |
path: path/to/artifact-A | |
- name: Upload artifact B | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Artifact-B-${{ matrix.runs-on }} | |
path: path/to/artifact-B | |
# Test downloading a single artifact | |
- name: Download artifact A | |
uses: ./ | |
with: | |
name: Artifact-A-${{ matrix.runs-on }} | |
path: some/new/path | |
# Test downloading an artifact using tilde expansion | |
- name: Download artifact A | |
uses: ./ | |
with: | |
name: Artifact-A-${{ matrix.runs-on }} | |
path: ~/some/path/with/a/tilde | |
- name: Verify successful download | |
run: | | |
$file1 = "some/new/path/file-A.txt" | |
$file2 = "~/some/path/with/a/tilde/file-A.txt" | |
if(!(Test-Path -path $file1) -or !(Test-Path -path $file2)) | |
{ | |
Write-Error "Expected files do not exist" | |
} | |
if(!((Get-Content $file1) -ceq "Lorem ipsum dolor sit amet") -or !((Get-Content $file2) -ceq "Lorem ipsum dolor sit amet")) | |
{ | |
Write-Error "File contents of downloaded artifacts are incorrect" | |
} | |
shell: pwsh | |
# Test downloading both artifacts at once | |
- name: Download all Artifacts | |
uses: ./ | |
with: | |
path: some/other/path | |
- name: Verify successful download | |
run: | | |
$fileA = "some/other/path/Artifact-A-${{ matrix.runs-on }}/file-A.txt" | |
$fileB = "some/other/path/Artifact-B-${{ matrix.runs-on }}/file-B.txt" | |
if(!(Test-Path -path $fileA) -or !(Test-Path -path $fileB)) | |
{ | |
Write-Error "Expected files do not exist" | |
} | |
if(!((Get-Content $fileA) -ceq "Lorem ipsum dolor sit amet") -or !((Get-Content $fileB) -ceq "Hello world from file B")) | |
{ | |
Write-Error "File contents of downloaded artifacts are incorrect" | |
} | |
shell: pwsh | |
# Test glob downloading both artifacts to same directory | |
- name: Download all Artifacts | |
uses: ./ | |
with: | |
pattern: Artifact-* | |
path: single/directory | |
merge-multiple: true | |
- name: Request missing Artifact | |
id: request-missing-artifact | |
uses: ./ | |
with: | |
name: nonexistent | |
warn-on-failure: true | |
- name: Check missing warning | |
env: | |
output: ${{ steps.request-missing-artifact.outputs.failure }} | |
if: ${{ !contains(env.output, 'Unable to download artifact(s):') }} | |
run: | | |
false | |
shell: bash | |
- name: Log missing warning | |
env: | |
output: ${{ steps.request-missing-artifact.outputs.failure }} | |
run_os: ${{ matrix.runs-on }} | |
run: | | |
echo "::notice title=This message is expected::[$run_os] $output" | |
shell: bash | |
- name: Verify successful download | |
run: | | |
$fileA = "single/directory/file-A.txt" | |
$fileB = "single/directory/file-B.txt" | |
if(!(Test-Path -path $fileA) -or !(Test-Path -path $fileB)) | |
{ | |
Write-Error "Expected files do not exist" | |
} | |
if(!((Get-Content $fileA) -ceq "Lorem ipsum dolor sit amet") -or !((Get-Content $fileB) -ceq "Hello world from file B")) | |
{ | |
Write-Error "File contents of downloaded artifacts are incorrect" | |
} | |
shell: pwsh |