1
0
mirror of https://github.com/BurntSushi/ripgrep.git synced 2024-12-02 02:56:32 +02:00

ci: test build outputs

This modifies CI to check that we generate completion files and a man
page.

We also enable tests on arm.
This commit is contained in:
Andrew Gallant 2018-02-06 15:53:17 -05:00
parent 6553940328
commit e1f1ede17d
3 changed files with 83 additions and 24 deletions

View File

@ -1,5 +1,4 @@
language: rust
cache: cargo
env:
global:
- PROJECT_NAME: ripgrep
@ -7,12 +6,16 @@ env:
addons:
apt:
packages:
# For generating man page.
- libxslt1-dev
- asciidoc
- docbook-xsl
- xsltproc
- libxml2-utils
# Needed for completion-function test.
- zsh
# Needed for testing decompression search.
- xz-utils
# For generating man page.
- asciidoc
matrix:
fast_finish: true
include:

View File

@ -7,14 +7,49 @@ set -ex
. "$(dirname $0)/utils.sh"
main() {
# disable_cross_doctests
# Travis sometimes caches the target directory, which makes testing the
# output of cargo a little trickier. So just wipe it.
cargo clean
# Test a normal debug build.
cargo build --target "${TARGET}" --verbose --all
if [ "$(architecture)" = "amd64" ] || [ "$(architecture)" = "i386" ]; then
cargo test --target "${TARGET}" --verbose --all
"$( dirname "${0}" )/test_complete.sh"
fi
# Show the output of build.rs stderr.
set +x
find ./target/"$TARGET"/debug -name stderr | while read stderr; do
if [ -s "$stderr" ]; then
echo "===== $stderr ====="
cat "$stderr"
echo "====="
fi
done
set -x
# sanity check the file type
file target/$TARGET/debug/rg
file target/"$TARGET"/debug/rg
# Apparently tests don't work on arm, so just bail now. I guess we provide
# ARM releases on a best effort basis?
if is_arm; then
return 0
fi
# Test that zsh completions are in sync with ripgrep's actual args.
"$(dirname "${0}")/test_complete.sh"
# Check that we've generated man page and other shell completions.
find ./target/"$TARGET"/debug/build/ripgrep-* -name 'out' | \
while read outdir; do
file "$outdir/rg.bash"
file "$outdir/rg.fish"
file "$outdir/_rg.ps1"
# man page requires asciidoc, and we only install it on Linux x86.
if is_linux; then
file "$outdir/rg.1"
fi
done
# Run tests for ripgrep and all sub-crates.
cargo test --target "${TARGET}" --verbose --all
}
main

View File

@ -13,17 +13,6 @@ host() {
esac
}
gcc_prefix() {
case "$TARGET" in
arm*-gnueabihf)
echo arm-linux-gnueabihf-
;;
*)
return
;;
esac
}
architecture() {
case "$TARGET" in
x86_64-*)
@ -41,9 +30,41 @@ architecture() {
esac
}
is_ssse3_target() {
case "$TARGET" in
x86_64*) return 0 ;;
*) return 1 ;;
gcc_prefix() {
case "$(architecture)" in
armhf)
echo arm-linux-gnueabihf-
;;
*)
return
;;
esac
}
is_ssse3_target() {
case "$(architecture)" in
amd64) return 0 ;;
*) return 1 ;;
esac
}
is_x86() {
case "$(architecture)" in
amd64|i386) return 0 ;;
*) return 1 ;;
esac
}
is_arm() {
case "$(architecture)" in
armhf) return 0 ;;
*) return 1 ;;
esac
}
is_linux() {
case "$TRAVIS_OS_NAME" in
linux) return 0 ;;
*) return 1 ;;
esac
}