mirror of
				https://github.com/actions/cache.git
				synced 2025-10-31 19:24:02 +00:00 
			
		
		
		
	Add Eric's e2e test change to get more coverage
This commit is contained in:
		
							parent
							
								
									0232e3178d
								
							
						
					
					
						commit
						3f662ca624
					
				
							
								
								
									
										111
									
								
								.github/workflows/workflow.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										111
									
								
								.github/workflows/workflow.yml
									
									
									
									
										vendored
									
									
								
							| @ -4,51 +4,130 @@ on: | ||||
|   pull_request: | ||||
|     branches: | ||||
|       - master | ||||
|       - releases/** | ||||
|     paths-ignore: | ||||
|       - '**.md' | ||||
|   push: | ||||
|     branches: | ||||
|       - master | ||||
|       - releases/** | ||||
|     paths-ignore: | ||||
|       - '**.md' | ||||
| 
 | ||||
| jobs: | ||||
|   test: | ||||
|     name: Test on ${{ matrix.os }} | ||||
| 
 | ||||
|   # Build and unit test | ||||
|   build: | ||||
|     strategy: | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macOS-latest] | ||||
|       fail-fast: false | ||||
| 
 | ||||
|     runs-on: ${{ matrix.os }} | ||||
| 
 | ||||
|     steps: | ||||
|     - uses: actions/checkout@v1 | ||||
| 
 | ||||
|     - uses: actions/setup-node@v1 | ||||
|     - name: Checkout | ||||
|       uses: actions/checkout@v2 | ||||
|     - name: Setup Node.js | ||||
|       uses: actions/setup-node@v1 | ||||
|       with: | ||||
|         node-version: '12.x' | ||||
| 
 | ||||
|     - name: Get npm cache directory | ||||
|     - name: Determine npm cache directory | ||||
|       id: npm-cache | ||||
|       run: | | ||||
|         echo "::set-output name=dir::$(npm config get cache)" | ||||
| 
 | ||||
|     - uses: actions/cache@v1 | ||||
|     - name: Restore npm cache | ||||
|       uses: actions/cache@v1 | ||||
|       with: | ||||
|         path: ${{ steps.npm-cache.outputs.dir }} | ||||
|         key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | ||||
|         restore-keys: | | ||||
|           ${{ runner.os }}-node- | ||||
| 
 | ||||
|     - run: npm ci | ||||
| 
 | ||||
|     - name: Prettier Format Check | ||||
|       run: npm run format-check | ||||
| 
 | ||||
|     - name: ESLint Check | ||||
|       run: npm run lint | ||||
| 
 | ||||
|     - name: Build & Test | ||||
|       run: npm run test | ||||
| 
 | ||||
|   # End to end save and restore | ||||
|   test-save: | ||||
|     strategy: | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macOS-latest] | ||||
|       fail-fast: false | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout | ||||
|       uses: actions/checkout@v2 | ||||
|     - name: Generate files | ||||
|       shell: bash | ||||
|       run: __tests__/create-cache-files.sh ${{ runner.os }} | ||||
|     - name: Save cache | ||||
|       uses: ./ | ||||
|       with: | ||||
|         key: test-${{ runner.os }}-${{ github.run_id }} | ||||
|         path: test-cache | ||||
|   test-restore: | ||||
|     needs: test-save | ||||
|     strategy: | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macOS-latest] | ||||
|       fail-fast: false | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout | ||||
|       uses: actions/checkout@v2 | ||||
|     - name: Restore cache | ||||
|       uses: ./ | ||||
|       with: | ||||
|         key: test-${{ runner.os }}-${{ github.run_id }} | ||||
|         path: test-cache | ||||
|     - name: Verify cache | ||||
|       shell: bash | ||||
|       run: __tests__/verify-cache-files.sh ${{ runner.os }} | ||||
| 
 | ||||
|   # End to end with proxy | ||||
|   test-proxy-save: | ||||
|     runs-on: ubuntu-latest | ||||
|     container: | ||||
|       image: ubuntu:latest | ||||
|       options: --dns 127.0.0.1 | ||||
|     services: | ||||
|       squid-proxy: | ||||
|         image: datadog/squid:latest | ||||
|         ports: | ||||
|           - 3128:3128 | ||||
|     env: | ||||
|       https_proxy: http://squid-proxy:3128 | ||||
|     steps: | ||||
|     - name: Checkout | ||||
|       uses: actions/checkout@v2 | ||||
|     - name: Generate files | ||||
|       run: __tests__/create-cache-files.sh proxy | ||||
|     - name: Save cache | ||||
|       uses: ./ | ||||
|       with: | ||||
|         key: test-proxy-${{ github.run_id }} | ||||
|         path: test-cache | ||||
|   test-proxy-restore: | ||||
|     needs: test-proxy-save | ||||
|     runs-on: ubuntu-latest | ||||
|     container: | ||||
|       image: ubuntu:latest | ||||
|       options: --dns 127.0.0.1 | ||||
|     services: | ||||
|       squid-proxy: | ||||
|         image: datadog/squid:latest | ||||
|         ports: | ||||
|           - 3128:3128 | ||||
|     env: | ||||
|       https_proxy: http://squid-proxy:3128 | ||||
|     steps: | ||||
|     - name: Checkout | ||||
|       uses: actions/checkout@v2 | ||||
|     - name: Restore cache | ||||
|       uses: ./ | ||||
|       with: | ||||
|         key: test-proxy-${{ github.run_id }} | ||||
|         path: test-cache | ||||
|     - name: Verify cache | ||||
|       run: __tests__/verify-cache-files.sh proxy | ||||
							
								
								
									
										11
									
								
								__tests__/create-cache-files.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										11
									
								
								__tests__/create-cache-files.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,11 @@ | ||||
| #!/bin/sh | ||||
| 
 | ||||
| # Validate args | ||||
| prefix="$1" | ||||
| if [ -z "$prefix" ]; then | ||||
|   echo "Must supply prefix argument" | ||||
|   exit 1 | ||||
| fi | ||||
| 
 | ||||
| mkdir test-cache | ||||
| echo "$prefix $GITHUB_RUN_ID" > test-cache/test-file.txt | ||||
| @ -51,7 +51,7 @@ test("extract GNU tar", async () => { | ||||
| 
 | ||||
|         await tar.extractTar(archivePath, targetDirectory); | ||||
| 
 | ||||
|         expect(execMock).toHaveBeenCalledTimes(2); | ||||
|         expect(execMock).toHaveBeenCalledTimes(1); | ||||
|         expect(execMock).toHaveBeenLastCalledWith(`"tar"`, [ | ||||
|             "-xz", | ||||
|             "-f", | ||||
|  | ||||
							
								
								
									
										30
									
								
								__tests__/verify-cache-files.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										30
									
								
								__tests__/verify-cache-files.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,30 @@ | ||||
| #!/bin/sh | ||||
| 
 | ||||
| # Validate args | ||||
| prefix="$1" | ||||
| if [ -z "$prefix" ]; then | ||||
|   echo "Must supply prefix argument" | ||||
|   exit 1 | ||||
| fi | ||||
| 
 | ||||
| # Sanity check GITHUB_RUN_ID defined | ||||
| if [ -z "$GITHUB_RUN_ID" ]; then | ||||
|   echo "GITHUB_RUN_ID not defined" | ||||
|   exit 1 | ||||
| fi | ||||
| 
 | ||||
| # Verify file exists | ||||
| file="test-cache/test-file.txt" | ||||
| echo "Checking for $file" | ||||
| if [ ! -e $file ]; then | ||||
|   echo "File does not exist" | ||||
|   exit 1 | ||||
| fi | ||||
| 
 | ||||
| # Verify file content | ||||
| content="$(cat $file)" | ||||
| echo "File content:\n$content" | ||||
| if [ -z "$(echo $content | grep --fixed-strings "$prefix $GITHUB_RUN_ID")" ]; then | ||||
|   echo "Unexpected file content" | ||||
|   exit 1 | ||||
| fi | ||||
							
								
								
									
										3
									
								
								dist/restore/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								dist/restore/index.js
									
									
									
									
										vendored
									
									
								
							| @ -3000,6 +3000,7 @@ const exec_1 = __webpack_require__(986); | ||||
| const io = __importStar(__webpack_require__(1)); | ||||
| const fs_1 = __webpack_require__(747); | ||||
| const path = __importStar(__webpack_require__(622)); | ||||
| const tar = __importStar(__webpack_require__(943)); | ||||
| function isGnuTar() { | ||||
|     return __awaiter(this, void 0, void 0, function* () { | ||||
|         core.debug("Checking tar --version"); | ||||
| @ -3026,7 +3027,7 @@ function getTarPath(args) { | ||||
|             if (fs_1.existsSync(systemTar)) { | ||||
|                 return systemTar; | ||||
|             } | ||||
|             else if (yield isGnuTar()) { | ||||
|             else if (yield tar.isGnuTar()) { | ||||
|                 args.push("--force-local"); | ||||
|             } | ||||
|         } | ||||
|  | ||||
							
								
								
									
										3
									
								
								dist/save/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								dist/save/index.js
									
									
									
									
										vendored
									
									
								
							| @ -2981,6 +2981,7 @@ const exec_1 = __webpack_require__(986); | ||||
| const io = __importStar(__webpack_require__(1)); | ||||
| const fs_1 = __webpack_require__(747); | ||||
| const path = __importStar(__webpack_require__(622)); | ||||
| const tar = __importStar(__webpack_require__(943)); | ||||
| function isGnuTar() { | ||||
|     return __awaiter(this, void 0, void 0, function* () { | ||||
|         core.debug("Checking tar --version"); | ||||
| @ -3007,7 +3008,7 @@ function getTarPath(args) { | ||||
|             if (fs_1.existsSync(systemTar)) { | ||||
|                 return systemTar; | ||||
|             } | ||||
|             else if (yield isGnuTar()) { | ||||
|             else if (yield tar.isGnuTar()) { | ||||
|                 args.push("--force-local"); | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @ -3,6 +3,7 @@ import { exec } from "@actions/exec"; | ||||
| import * as io from "@actions/io"; | ||||
| import { existsSync } from "fs"; | ||||
| import * as path from "path"; | ||||
| import * as tar from "./tar"; | ||||
| 
 | ||||
| export async function isGnuTar(): Promise<boolean> { | ||||
|     core.debug("Checking tar --version"); | ||||
| @ -28,7 +29,7 @@ async function getTarPath(args: string[]): Promise<string> { | ||||
|         const systemTar = `${process.env["windir"]}\\System32\\tar.exe`; | ||||
|         if (existsSync(systemTar)) { | ||||
|             return systemTar; | ||||
|         } else if (await isGnuTar()) { | ||||
|         } else if (await tar.isGnuTar()) { | ||||
|             args.push("--force-local"); | ||||
|         } | ||||
|     } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user