171 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			171 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| name: Test
 | |
| 
 | |
| on:
 | |
|   push:
 | |
|     branches:
 | |
|       - main
 | |
|     paths-ignore:
 | |
|       - '**.md'
 | |
|   pull_request:
 | |
|     paths-ignore:
 | |
|       - '**.md'
 | |
| 
 | |
| jobs:
 | |
|   build:
 | |
|     name: Build
 | |
| 
 | |
|     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: Install dependencies
 | |
|       run: npm ci
 | |
| 
 | |
|     - name: Compile
 | |
|       run: npm run build
 | |
| 
 | |
|     - name: Lint
 | |
|       run: npm run lint
 | |
| 
 | |
|     - name: Format
 | |
|       run: npm run format-check
 | |
| 
 | |
|     - name: Test
 | |
|       run: npm run test
 | |
| 
 | |
|     # Test end-to-end by uploading two artifacts and then downloading them
 | |
|     - name: Create artifact files
 | |
|       run: |
 | |
|         mkdir -p path/to/dir-1
 | |
|         mkdir -p path/to/dir-2
 | |
|         mkdir -p path/to/dir-3
 | |
|         echo "Lorem ipsum dolor sit amet" > path/to/dir-1/file1.txt
 | |
|         echo "Hello world from file #2" > path/to/dir-2/file2.txt
 | |
| 
 | |
|     # Upload a single file artifact
 | |
|     - name: 'Upload artifact #1'
 | |
|       uses: ./
 | |
|       with:
 | |
|         name: 'Artifact-A-${{ matrix.runs-on }}'
 | |
|         path: path/to/dir-1/file1.txt
 | |
| 
 | |
|     # Upload using a wildcard pattern
 | |
|     - name: 'Upload artifact #2'
 | |
|       uses: ./
 | |
|       with:
 | |
|         name: 'Artifact-Wildcard-${{ matrix.runs-on }}'
 | |
|         path: path/**/dir*/
 | |
| 
 | |
|     # Upload a multi-path artifact
 | |
|     - name: 'Upload artifact #3'
 | |
|       uses: ./
 | |
|       with:
 | |
|         name: 'Multi-Path-Artifact-${{ matrix.runs-on }}'
 | |
|         path: |
 | |
|           path/to/dir-1/*
 | |
|           path/to/dir-[23]/*
 | |
|           !path/to/dir-3/*.txt
 | |
| 
 | |
|     # Download Artifact #1 and verify the correctness of the content
 | |
|     - name: 'Download artifact #1'
 | |
|       uses: actions/download-artifact@v4
 | |
|       with:
 | |
|         name: 'Artifact-A-${{ matrix.runs-on }}'
 | |
|         path: some/new/path
 | |
| 
 | |
|     - name: 'Verify Artifact #1'
 | |
|       run: |
 | |
|         $file = "some/new/path/file1.txt"
 | |
|         if(!(Test-Path -path $file))
 | |
|         {
 | |
|             Write-Error "Expected file does not exist"
 | |
|         }
 | |
|         if(!((Get-Content $file) -ceq "Lorem ipsum dolor sit amet"))
 | |
|         {
 | |
|             Write-Error "File contents of downloaded artifact are incorrect"
 | |
|         }
 | |
|       shell: pwsh
 | |
| 
 | |
|     # Download Artifact #2 and verify the correctness of the content
 | |
|     - name: 'Download artifact #2'
 | |
|       uses: actions/download-artifact@v4
 | |
|       with:
 | |
|         name: 'Artifact-Wildcard-${{ matrix.runs-on }}'
 | |
|         path: some/other/path
 | |
| 
 | |
|     - name: 'Verify Artifact #2'
 | |
|       run: |
 | |
|         $file1 = "some/other/path/to/dir-1/file1.txt"
 | |
|         $file2 = "some/other/path/to/dir-2/file2.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 "Hello world from file #2"))
 | |
|         {
 | |
|             Write-Error "File contents of downloaded artifacts are incorrect"
 | |
|         }
 | |
|       shell: pwsh
 | |
| 
 | |
|     # Download Artifact #4 and verify the correctness of the content
 | |
|     - name: 'Download artifact #4'
 | |
|       uses: actions/download-artifact@v4
 | |
|       with:
 | |
|         name: 'Multi-Path-Artifact-${{ matrix.runs-on }}'
 | |
|         path: multi/artifact
 | |
| 
 | |
|     - name: 'Verify Artifact #4'
 | |
|       run: |
 | |
|         $file1 = "multi/artifact/dir-1/file1.txt"
 | |
|         $file2 = "multi/artifact/dir-2/file2.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 "Hello world from file #2"))
 | |
|         {
 | |
|             Write-Error "File contents of downloaded artifacts are incorrect"
 | |
|         }
 | |
|       shell: pwsh
 | |
| 
 | |
|     # Replace the contents of Artifact #1
 | |
|     - name: 'Overwrite artifact #1 again'
 | |
|       uses: ./
 | |
|       with:
 | |
|         name: 'Artifact-A-${{ matrix.runs-on }}'
 | |
|         path: path/to/dir-2/file2.txt
 | |
|         overwrite: true
 | |
| 
 | |
|     # Download replaced Artifact #1 and verify the correctness of the content
 | |
|     - name: 'Download artifact #1 again'
 | |
|       uses: actions/download-artifact@v4
 | |
|       with:
 | |
|         name: 'Artifact-A-${{ matrix.runs-on }}'
 | |
|         path: overwrite/some/new/path
 | |
| 
 | |
|     - name: 'Verify Artifact #1 again'
 | |
|       run: |
 | |
|         $file = "overwrite/some/new/path/file2.txt"
 | |
|         if(!(Test-Path -path $file))
 | |
|         {
 | |
|             Write-Error "Expected file does not exist"
 | |
|         }
 | |
|         if(!((Get-Content $file) -ceq "Hello world from file #2"))
 | |
|         {
 | |
|             Write-Error "File contents of downloaded artifacts are incorrect"
 | |
|         }
 | |
|       shell: pwsh
 |