]> git.lizzy.rs Git - rust.git/blobdiff - ci/integration.sh
Merge pull request #3085 from otavio/extend-gitignore
[rust.git] / ci / integration.sh
index 74e7c397a805278cb0e0a2e974fc9e68422bf60e..b360b1468e2d45905eae181e26e19a0f16da4b16 100755 (executable)
@@ -4,8 +4,7 @@ set -ex
 
 : ${INTEGRATION?"The INTEGRATION environment variable must be set."}
 
-# FIXME: this is causing the build to fail when rustfmt is found in .cargo/bin
-# but cargo-fmt is not found.
+# FIXME: this means we can get a stale cargo-fmt from a previous run.
 #
 # `which rustfmt` fails if rustfmt is not found. Since we don't install
 # `rustfmt` via `rustup`, this is the case unless we manually install it. Once
@@ -15,14 +14,25 @@ set -ex
 # here after the first installation will find `rustfmt` and won't need to build
 # it again.
 #
-# which rustfmt || cargo install --force
+#which cargo-fmt || cargo install --force
 cargo install --force
 
 echo "Integration tests for: ${INTEGRATION}"
+cargo fmt -- --version
 
+# Checks that:
+#
+# * `cargo fmt --all` succeeds without any warnings or errors
+# * `cargo fmt --all -- --check` after formatting returns success
+# * `cargo test -all` still passes (formatting did not break the build)
 function check_fmt {
-    cargo fmt --all -v 2>&1 | tee rustfmt_output
+    cargo test --all
     if [[ $? != 0 ]]; then
+          return 0
+    fi
+    touch rustfmt.toml
+    cargo fmt --all -v |& tee rustfmt_output
+    if [[ ${PIPESTATUS[0]} != 0 ]]; then
         cat rustfmt_output
         return 1
     fi
@@ -39,20 +49,14 @@ function check_fmt {
     if [[ $? != 0 ]]; then
         return 1
     fi
-    cargo test --all
-    if [[ $? != 0 ]]; then
-        return $?
-    fi
-}
-
-function check {
-    cargo test --all
-    if [[ $? != 0 ]]; then
+    cargo fmt --all -- --check |& tee rustfmt_check_output
+    if [[ ${PIPESTATUS[0]} != 0 ]]; then
+        cat rustfmt_check_output
         return 1
     fi
-    check_fmt
+    cargo test --all
     if [[ $? != 0 ]]; then
-        return 1
+        return $?
     fi
 }
 
@@ -61,19 +65,13 @@ case ${INTEGRATION} in
         git clone --depth=1 https://github.com/rust-lang/${INTEGRATION}.git
         cd ${INTEGRATION}
         export CFG_DISABLE_CROSS_TESTS=1
-        check
-        cd -
-        ;;
-    failure)
-        git clone --depth=1 https://github.com/rust-lang-nursery/${INTEGRATION}.git
-        cd ${INTEGRATION}/failure-1.X
-        check
+        check_fmt
         cd -
         ;;
     *)
         git clone --depth=1 https://github.com/rust-lang-nursery/${INTEGRATION}.git
         cd ${INTEGRATION}
-        check
+        check_fmt
         cd -
         ;;
 esac