1
0
Fork 0
mirror of https://code.forgejo.org/actions/cache.git synced 2024-11-30 23:59:16 +01:00

Add Eric's e2e test change to get more coverage

This commit is contained in:
Aiqiao Yan 2020-05-12 16:36:56 -04:00
parent 0232e3178d
commit 3f662ca624
7 changed files with 143 additions and 20 deletions

View file

@ -4,51 +4,130 @@ on:
pull_request: pull_request:
branches: branches:
- master - master
- releases/**
paths-ignore: paths-ignore:
- '**.md' - '**.md'
push: push:
branches: branches:
- master - master
- releases/**
paths-ignore: paths-ignore:
- '**.md' - '**.md'
jobs: jobs:
test: # Build and unit test
name: Test on ${{ matrix.os }} build:
strategy: strategy:
matrix: matrix:
os: [ubuntu-latest, windows-latest, macOS-latest] os: [ubuntu-latest, windows-latest, macOS-latest]
fail-fast: false fail-fast: false
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@v1 - name: Checkout
uses: actions/checkout@v2
- uses: actions/setup-node@v1 - name: Setup Node.js
uses: actions/setup-node@v1
with: with:
node-version: '12.x' node-version: '12.x'
- name: Determine npm cache directory
- name: Get npm cache directory
id: npm-cache id: npm-cache
run: | run: |
echo "::set-output name=dir::$(npm config get cache)" echo "::set-output name=dir::$(npm config get cache)"
- name: Restore npm cache
- uses: actions/cache@v1 uses: actions/cache@v1
with: with:
path: ${{ steps.npm-cache.outputs.dir }} path: ${{ steps.npm-cache.outputs.dir }}
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: | restore-keys: |
${{ runner.os }}-node- ${{ runner.os }}-node-
- run: npm ci - run: npm ci
- name: Prettier Format Check - name: Prettier Format Check
run: npm run format-check run: npm run format-check
- name: ESLint Check - name: ESLint Check
run: npm run lint run: npm run lint
- name: Build & Test - name: Build & Test
run: npm run 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
View 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

View file

@ -51,7 +51,7 @@ test("extract GNU tar", async () => {
await tar.extractTar(archivePath, targetDirectory); await tar.extractTar(archivePath, targetDirectory);
expect(execMock).toHaveBeenCalledTimes(2); expect(execMock).toHaveBeenCalledTimes(1);
expect(execMock).toHaveBeenLastCalledWith(`"tar"`, [ expect(execMock).toHaveBeenLastCalledWith(`"tar"`, [
"-xz", "-xz",
"-f", "-f",

30
__tests__/verify-cache-files.sh Executable file
View 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

View file

@ -3000,6 +3000,7 @@ const exec_1 = __webpack_require__(986);
const io = __importStar(__webpack_require__(1)); const io = __importStar(__webpack_require__(1));
const fs_1 = __webpack_require__(747); const fs_1 = __webpack_require__(747);
const path = __importStar(__webpack_require__(622)); const path = __importStar(__webpack_require__(622));
const tar = __importStar(__webpack_require__(943));
function isGnuTar() { function isGnuTar() {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
core.debug("Checking tar --version"); core.debug("Checking tar --version");
@ -3026,7 +3027,7 @@ function getTarPath(args) {
if (fs_1.existsSync(systemTar)) { if (fs_1.existsSync(systemTar)) {
return systemTar; return systemTar;
} }
else if (yield isGnuTar()) { else if (yield tar.isGnuTar()) {
args.push("--force-local"); args.push("--force-local");
} }
} }

3
dist/save/index.js vendored
View file

@ -2981,6 +2981,7 @@ const exec_1 = __webpack_require__(986);
const io = __importStar(__webpack_require__(1)); const io = __importStar(__webpack_require__(1));
const fs_1 = __webpack_require__(747); const fs_1 = __webpack_require__(747);
const path = __importStar(__webpack_require__(622)); const path = __importStar(__webpack_require__(622));
const tar = __importStar(__webpack_require__(943));
function isGnuTar() { function isGnuTar() {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
core.debug("Checking tar --version"); core.debug("Checking tar --version");
@ -3007,7 +3008,7 @@ function getTarPath(args) {
if (fs_1.existsSync(systemTar)) { if (fs_1.existsSync(systemTar)) {
return systemTar; return systemTar;
} }
else if (yield isGnuTar()) { else if (yield tar.isGnuTar()) {
args.push("--force-local"); args.push("--force-local");
} }
} }

View file

@ -3,6 +3,7 @@ import { exec } from "@actions/exec";
import * as io from "@actions/io"; import * as io from "@actions/io";
import { existsSync } from "fs"; import { existsSync } from "fs";
import * as path from "path"; import * as path from "path";
import * as tar from "./tar";
export async function isGnuTar(): Promise<boolean> { export async function isGnuTar(): Promise<boolean> {
core.debug("Checking tar --version"); core.debug("Checking tar --version");
@ -28,7 +29,7 @@ async function getTarPath(args: string[]): Promise<string> {
const systemTar = `${process.env["windir"]}\\System32\\tar.exe`; const systemTar = `${process.env["windir"]}\\System32\\tar.exe`;
if (existsSync(systemTar)) { if (existsSync(systemTar)) {
return systemTar; return systemTar;
} else if (await isGnuTar()) { } else if (await tar.isGnuTar()) {
args.push("--force-local"); args.push("--force-local");
} }
} }