add github workflow to run tests

This commit is contained in:
Paul Campbell 2022-01-01 15:49:17 +00:00
parent 1f1e14967e
commit 6c347a1dc0
3 changed files with 88 additions and 0 deletions

18
.github/workflows/main.yml vendored Normal file
View file

@ -0,0 +1,18 @@
name: CI
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Zig
uses: goto-bus-stop/setup-zig@v1.3.0
with:
version: master
- name: Tests
run: ./test.sh

3
.gitignore vendored
View file

@ -2,3 +2,6 @@ zig-cache/
zig-out/
.zigmod
deps.zig
/test.in
/test.out
/test.expect

67
test.sh Executable file
View file

@ -0,0 +1,67 @@
#!/usr/bin/env bash
set -e
echo "Unit tests..."
zig build test
echo "Build..."
zig build
echo -n "Created: "
ls zig-out/bin/skip
export PATH=$PWD/zig-out/bin/:$PATH
echo "> skip a line when reading from stdin"
INPUT=$(cat<<EOF
line 1
line 2
EOF
)
echo "line 2" > test.expect
echo "$INPUT" | skip 1 > test.out
diff --brief test.expect test.out
echo "> skip a line when reading from a file"
cat<<EOF > test.in
line 1
line 2
EOF
echo "line 2" > test.expect
skip 1 test.in > test.out
diff --brief test.expect test.out
echo "> skip until 2 matching lines seen"
cat<<EOF > test.in
alpha
beta
alpha
gamma
EOF
echo "gamma" > test.expect
skip 2 test.in --line alpha > test.out
diff --brief test.expect test.out
echo "> skip lines until 2 tokens seen"
cat<<EOF > test.in
Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.
Ut enim ad minim veniam,
quis nostrud exercitation ullamco
laboris nisi ut aliquip ex ea
commodo consequat.
EOF
cat<<EOF > test.expect
Ut enim ad minim veniam,
quis nostrud exercitation ullamco
laboris nisi ut aliquip ex ea
commodo consequat.
EOF
skip 2 test.in --token dolor > test.out
diff --brief test.expect test.out
rm test.in test.out test.expect
echo done