mirror of
https://github.com/earthly/actions-setup.git
synced 2025-01-13 18:57:56 +08:00
Expand local testing via earthly
Signed-off-by: Alex Couture-Beil <alex@earthly.dev>
This commit is contained in:
parent
6e1af8d1e2
commit
0d65467243
9
.github/workflows/test.yml
vendored
9
.github/workflows/test.yml
vendored
@ -8,10 +8,10 @@ on:
|
||||
|
||||
jobs:
|
||||
unit:
|
||||
name: Unit Test
|
||||
name: earthly +all
|
||||
strategy:
|
||||
matrix:
|
||||
platform: [ubuntu-latest, macos-latest, windows-latest]
|
||||
platform: [ubuntu-latest]
|
||||
runs-on: ${{ matrix.platform }}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
@ -19,8 +19,9 @@ jobs:
|
||||
with:
|
||||
cache: ${{ !env.ACT && 'npm' || '' }}
|
||||
node-version: "16.x"
|
||||
- run: npm install
|
||||
- run: npm run test
|
||||
- uses: ./
|
||||
- run: earthly +all
|
||||
# Below are tests specific to the github actions, which ensure the actions-setup code works with GHA
|
||||
latest:
|
||||
name: Test Latest Version Install
|
||||
strategy:
|
||||
|
61
Earthfile
61
Earthfile
@ -1,3 +1,5 @@
|
||||
VERSION 0.6
|
||||
|
||||
npm-base:
|
||||
FROM alpine:3.13.5
|
||||
RUN apk add --update nodejs npm
|
||||
@ -29,13 +31,72 @@ compile:
|
||||
SAVE ARTIFACT dist AS LOCAL dist
|
||||
SAVE ARTIFACT node_modules AS LOCAL node_modules
|
||||
|
||||
test-compile-was-run:
|
||||
FROM alpine:3.13.5
|
||||
COPY dist /from-git
|
||||
COPY +compile/dist /from-compile
|
||||
RUN diff -r /from-git /from-compile >/dev/null || (echo "dist and +compile/dist are different, did you forget to run earthly +compile?" && exit 1)
|
||||
|
||||
test:
|
||||
FROM +code
|
||||
COPY tsconfig.json .
|
||||
COPY jest.config.js .
|
||||
RUN npm test
|
||||
|
||||
test-run:
|
||||
FROM +npm-base
|
||||
COPY --dir +compile/dist .
|
||||
ENV RUNNER_TOOL_CACHE=/tmp/cache-dir
|
||||
RUN node dist/setup/index.js | tee output
|
||||
RUN ! grep 'Found tool in cache' output
|
||||
RUN cat output | grep '^::add-path::' | sed 's/::add-path:://g' > earthly-path
|
||||
RUN test "$(cat earthly-path)" = "/root/.earthly/bin"
|
||||
RUN export PATH="$(cat earthly-path):$PATH" && earthly --version | grep '^earthly version v.*linux/amd64; Linux'
|
||||
|
||||
# validate cache was used
|
||||
RUN node dist/setup/index.js | tee output2
|
||||
RUN grep 'Found tool in cache' output2
|
||||
|
||||
lint-newline:
|
||||
FROM alpine:3.15
|
||||
WORKDIR /everything
|
||||
COPY . .
|
||||
# test that line endings are unix-style
|
||||
RUN set -e; \
|
||||
code=0; \
|
||||
for f in $(find . -type f \( -iname '*.ts' -o -iname 'Earthfile' \) | grep -v node_modules); do \
|
||||
if ! dos2unix < "$f" | cmp - "$f"; then \
|
||||
echo "$f contains windows-style newlines and must be converted to unix-style (use dos2unix to fix)"; \
|
||||
code=1; \
|
||||
fi; \
|
||||
done; \
|
||||
exit $code
|
||||
# test file ends with a single newline
|
||||
RUN set -e; \
|
||||
code=0; \
|
||||
for f in $(find . -type f \( -iname '*.ts' -o -iname 'Earthfile' \) | grep -v node_modules); do \
|
||||
if [ "$(tail -c 1 $f)" != "$(printf '\n')" ]; then \
|
||||
echo "$f does not end with a newline"; \
|
||||
code=1; \
|
||||
fi; \
|
||||
done; \
|
||||
exit $code
|
||||
# check for files with trailing newlines
|
||||
RUN set -e; \
|
||||
code=0; \
|
||||
for f in $(find . -type f \( -iname '*.ts' -o -iname 'Earthfile' \) | grep -v node_modules); do \
|
||||
if [ "$(tail -c 2 $f)" == "$(printf '\n\n')" ]; then \
|
||||
echo "$f has trailing newlines"; \
|
||||
code=1; \
|
||||
fi; \
|
||||
done; \
|
||||
exit $code
|
||||
|
||||
|
||||
all:
|
||||
BUILD +lint
|
||||
BUILD +lint-newline
|
||||
BUILD +compile
|
||||
BUILD +test
|
||||
BUILD +test-run
|
||||
BUILD +test-compile-was-run
|
||||
|
@ -61,7 +61,9 @@ Install a version that adheres to a semver range
|
||||
|
||||
### Testing
|
||||
|
||||
You can test this action locally using [act](https://github.com/nektos/act). See the repo for more instructions.
|
||||
You can perform a local test by running `earthly +all`.
|
||||
|
||||
It is also possible to use [act](https://github.com/nektos/act) to test the contents of the github actions config.
|
||||
|
||||
## Configuration
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user