aboutsummaryrefslogtreecommitdiffstats
path: root/ci
diff options
context:
space:
mode:
authorNathan Jaremko2017-12-15 16:17:15 -0500
committerNathan Jaremko2017-12-15 16:17:15 -0500
commit2ab28a6dada467d2462ac249425fa2abf8b6c114 (patch)
tree156a0f82b541a9c8a73c3518f730c2fd3b040741 /ci
parentc0b38deda139c64c9ad0dab6e10efcee2d3ef333 (diff)
downloadpodcast-2ab28a6dada467d2462ac249425fa2abf8b6c114.tar.bz2
Lets start adding tests
Diffstat (limited to 'ci')
-rw-r--r--ci/install.sh58
-rw-r--r--ci/script.sh32
2 files changed, 90 insertions, 0 deletions
diff --git a/ci/install.sh b/ci/install.sh
new file mode 100644
index 0000000..e3f904a
--- /dev/null
+++ b/ci/install.sh
@@ -0,0 +1,58 @@
+# `install` phase: install stuff needed for the `script` phase
+
+set -ex
+
+. $(dirname $0)/utils.sh
+
+install_c_toolchain() {
+ case $TARGET in
+ aarch64-unknown-linux-gnu)
+ sudo apt-get install -y --no-install-recommends \
+ gcc-aarch64-linux-gnu libc6-arm64-cross libc6-dev-arm64-cross
+ ;;
+ *)
+ # For other targets, this is handled by addons.apt.packages in .travis.yml
+ ;;
+ esac
+}
+
+install_rustup() {
+ curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain=$TRAVIS_RUST_VERSION
+
+ rustc -V
+ cargo -V
+}
+
+install_standard_crates() {
+ if [ $(host) != "$TARGET" ]; then
+ rustup target add $TARGET
+ fi
+}
+
+configure_cargo() {
+ local prefix=$(gcc_prefix)
+
+ if [ ! -z $prefix ]; then
+ # information about the cross compiler
+ ${prefix}gcc -v
+
+ # tell cargo which linker to use for cross compilation
+ mkdir -p .cargo
+ cat >>.cargo/config <<EOF
+[target.$TARGET]
+linker = "${prefix}gcc"
+EOF
+ fi
+}
+
+main() {
+ install_c_toolchain
+ install_rustup
+ install_standard_crates
+ configure_cargo
+
+ # TODO if you need to install extra stuff add it here
+}
+
+main
+
diff --git a/ci/script.sh b/ci/script.sh
new file mode 100644
index 0000000..e97aa45
--- /dev/null
+++ b/ci/script.sh
@@ -0,0 +1,32 @@
+# `script` phase: you usually build, test and generate docs in this phase
+
+set -ex
+
+. $(dirname $0)/utils.sh
+
+# NOTE Workaround for rust-lang/rust#31907 - disable doc tests when cross compiling
+# This has been fixed in the nightly channel but it would take a while to reach the other channels
+disable_cross_doctests() {
+ if [ $(host) != "$TARGET" ] && [ "$TRAVIS_RUST_VERSION" = "stable" ]; then
+ if [ "$TRAVIS_OS_NAME" = "osx" ]; then
+ brew install gnu-sed --default-names
+ fi
+ find src -name '*.rs' -type f | xargs sed -i -e 's:\(//.\s*```\):\1 ignore,:g'
+ fi
+}
+
+run_test_suite() {
+ cargo clean --target $TARGET --verbose
+ cargo build --target $TARGET --verbose
+ cargo test --target $TARGET --verbose
+
+ # sanity check the file type
+ file target/$TARGET/debug/podcast
+}
+
+main() {
+ # disable_cross_doctests
+ run_test_suite
+}
+
+main