Add justfile and integration tests
This commit is contained in:
parent
653e0b92a7
commit
8555ba93da
3 changed files with 147 additions and 0 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1 +1,2 @@
|
||||||
/target
|
/target
|
||||||
|
dist/
|
||||||
|
|
15
justfile
Normal file
15
justfile
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
dist: target-release-skip
|
||||||
|
if test ! -d dist ; then mkdir dist ; fi
|
||||||
|
cp target/release/skip dist/
|
||||||
|
|
||||||
|
inttest: target-debug-skip
|
||||||
|
./test.sh
|
||||||
|
|
||||||
|
target-release-skip: unittest inttest
|
||||||
|
cargo build --release
|
||||||
|
|
||||||
|
target-debug-skip:
|
||||||
|
cargo build
|
||||||
|
|
||||||
|
unittest: target-debug-skip
|
||||||
|
cargo test
|
131
test.sh
Executable file
131
test.sh
Executable file
|
@ -0,0 +1,131 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
SKIP="./target/debug/skip"
|
||||||
|
DIFF="diff -u --color"
|
||||||
|
|
||||||
|
if test ! -x $SKIP ; then
|
||||||
|
echo "File missing: $SKIP - try 'zig build'"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
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 test.expect test.out
|
||||||
|
rm 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 test.expect test.out
|
||||||
|
rm test.expect test.out
|
||||||
|
|
||||||
|
echo "> skip until 2 matching lines seen"
|
||||||
|
cat<<EOF > test.in
|
||||||
|
alpha
|
||||||
|
beta
|
||||||
|
alpha
|
||||||
|
alpha
|
||||||
|
gamma
|
||||||
|
alpha
|
||||||
|
EOF
|
||||||
|
cat<<EOF > test.expect
|
||||||
|
alpha
|
||||||
|
gamma
|
||||||
|
alpha
|
||||||
|
EOF
|
||||||
|
$SKIP 2 test.in --line alpha > test.out
|
||||||
|
$DIFF test.expect test.out
|
||||||
|
rm test.in 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 test.expect test.out
|
||||||
|
rm test.in test.expect test.out
|
||||||
|
|
||||||
|
echo "> handle unknown parameter with simple error message"
|
||||||
|
cat<<EOF > test.expect.err
|
||||||
|
error: unexpected argument '--foo' found
|
||||||
|
|
||||||
|
note: to pass '--foo' as a value, use '-- --foo'
|
||||||
|
|
||||||
|
Usage: skip [OPTIONS] <LINES> [FILE]
|
||||||
|
|
||||||
|
For more information, try '--help'.
|
||||||
|
EOF
|
||||||
|
cat<<EOF > test.expect
|
||||||
|
EOF
|
||||||
|
touch test.out test.err
|
||||||
|
$SKIP --foo > test.out 2> test.err || true
|
||||||
|
$DIFF test.expect test.out
|
||||||
|
$DIFF test.expect.err test.err
|
||||||
|
rm test.expect test.out
|
||||||
|
rm test.expect.err test.err
|
||||||
|
|
||||||
|
echo "> handle ignore-extra when token is missing"
|
||||||
|
cat<<EOF > test.expect.err
|
||||||
|
error: the following required arguments were not provided:
|
||||||
|
--token <TOKEN>
|
||||||
|
<LINES>
|
||||||
|
|
||||||
|
Usage: skip --ignore-extras --token <TOKEN> <LINES> [FILE]
|
||||||
|
|
||||||
|
For more information, try '--help'.
|
||||||
|
EOF
|
||||||
|
cat<<EOF > test.expect
|
||||||
|
EOF
|
||||||
|
touch test.out test.err
|
||||||
|
$SKIP --ignore-extras > test.out 2> test.err || true
|
||||||
|
$DIFF test.expect test.out
|
||||||
|
$DIFF test.expect.err test.err
|
||||||
|
rm test.expect test.out
|
||||||
|
rm test.expect.err test.err
|
||||||
|
|
||||||
|
echo "> skip lines until 4 tokens seen - ignored extra tokens on same line"
|
||||||
|
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
|
||||||
|
quis nostrud exercitation ullamco
|
||||||
|
laboris nisi ut aliquip ex ea
|
||||||
|
commodo consequat.
|
||||||
|
EOF
|
||||||
|
$SKIP 4 test.in --token m --ignore-extras > test.out
|
||||||
|
$DIFF test.expect test.out
|
||||||
|
rm test.in test.expect test.out
|
||||||
|
|
||||||
|
echo done
|
Loading…
Reference in a new issue