mirror of
				https://github.com/actions/download-artifact.git
				synced 2025-11-04 14:53:41 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			134 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
name: Test
 | 
						|
on:
 | 
						|
  push:
 | 
						|
    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: 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: Run Unit Tests
 | 
						|
      run: npm test
 | 
						|
 | 
						|
    - 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: 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
 |