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:
parent
6553940328
commit
e1f1ede17d
@ -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:
|
||||
|
47
ci/script.sh
47
ci/script.sh
@ -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
|
||||
|
51
ci/utils.sh
51
ci/utils.sh
@ -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
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user