diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml index a15e1f16dc..c53621a6fd 100644 --- a/.bazelci/presubmit.yml +++ b/.bazelci/presubmit.yml @@ -67,6 +67,10 @@ tasks: - "-//test/conflicting_deps:conflicting_deps_test" # TODO: This test does not work on RBE - "-//test/versioned_dylib:versioned_dylib_test" + # TODO: rule_test does not work on RBE + - "-//test/rust:hello_lib_rule_test" + - "-//test/rust:hello_world_rule_test" + - "-//test/rustc_env_files:output_test" post_shell_commands: *coverage_validation_post_shell_commands macos: build_targets: *default_macos_targets @@ -118,8 +122,7 @@ tasks: build_targets: *default_linux_targets test_targets: - "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245 - - "..." - - "//test/..." + - "//..." - "-//test/conflicting_deps:conflicting_deps_test" # TODO: This test does not work on RBE - "-//test/versioned_dylib:versioned_dylib_test" @@ -133,8 +136,7 @@ tasks: build_targets: *default_linux_targets test_targets: - "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245 - - "..." - - "//test/..." + - "//..." - "-//test/conflicting_deps:conflicting_deps_test" # TODO: This test does not work on RBE - "-//test/versioned_dylib:versioned_dylib_test" @@ -319,11 +321,12 @@ tasks: working_directory: examples build_flags: - "--repo_env=CC=clang" + - "--config=rustfmt" + - "--config=clippy" build_targets: - "//..." test_targets: - "//..." - build_flags: *aspects_flags ubuntu2004_examples_clang_lld: name: Examples with Clang and LLD platform: ubuntu2004 @@ -333,11 +336,12 @@ tasks: build_flags: - "--repo_env=CC=clang" - "--linkopt=-fuse-ld=lld" + - "--config=rustfmt" + - "--config=clippy" build_targets: - "//..." test_targets: - "//..." - build_flags: *aspects_flags ubuntu2004_examples_rolling: name: "Examples with Rolling Bazel Version" platform: ubuntu2004 diff --git a/test/BUILD.bazel b/test/BUILD.bazel index a217437d3e..e69de29bb2 100644 --- a/test/BUILD.bazel +++ b/test/BUILD.bazel @@ -1,19 +0,0 @@ -load( - "@bazel_tools//tools/build_rules:test_rules.bzl", - "rule_test", -) - -rule_test( - name = "hello_lib_rule_test", - generates = ["libhello_lib-683707109.rlib"], - rule = "//test/rust:hello_lib", -) - -rule_test( - name = "hello_world_rule_test", - generates = select({ - "//rust/platform:windows": ["hello_world.exe"], - "//conditions:default": ["hello_world"], - }), - rule = "//test/rust:hello_world", -) diff --git a/test/rust/BUILD.bazel b/test/rust/BUILD.bazel index 4209f4ce87..ad873a4dc6 100644 --- a/test/rust/BUILD.bazel +++ b/test/rust/BUILD.bazel @@ -1,3 +1,4 @@ +load("@bazel_tools//tools/build_rules:test_rules.bzl", "rule_test") load("//rust:defs.bzl", "rust_binary", "rust_library", "rust_test") package(default_visibility = ["//visibility:public"]) @@ -24,3 +25,18 @@ rust_test( name = "hello_lib_test", crate = ":hello_lib", ) + +rule_test( + name = "hello_lib_rule_test", + generates = ["libhello_lib-683707109.rlib"], + rule = ":hello_lib", +) + +rule_test( + name = "hello_world_rule_test", + generates = select({ + "//rust/platform:windows": ["hello_world.exe"], + "//conditions:default": ["hello_world"], + }), + rule = "//test/rust:hello_world", +) diff --git a/test/rustc_env_files/BUILD.bazel b/test/rustc_env_files/BUILD.bazel index cb48b2ef4a..d32457fa43 100644 --- a/test/rustc_env_files/BUILD.bazel +++ b/test/rustc_env_files/BUILD.bazel @@ -20,11 +20,13 @@ write_file( ], ) -sh_test( +rust_test( name = "output_test", - srcs = ["output_test.sh"], + srcs = ["output_test.rs"], args = ["$(rootpath :hello_env)"], data = [":hello_env"], + edition = "2018", + use_libtest_harness = False, ) rust_library( diff --git a/test/rustc_env_files/output_test.rs b/test/rustc_env_files/output_test.rs new file mode 100644 index 0000000000..daa71c3ca4 --- /dev/null +++ b/test/rustc_env_files/output_test.rs @@ -0,0 +1,18 @@ +use std::process; + +fn main() { + let binary = std::env::args().nth(1).expect("No argument was provided"); + + let output = process::Command::new(binary) + .output() + .expect("Failed to spawn process"); + if !output.status.success() { + eprintln!("Failed to execute binary"); + eprintln!("{}", std::str::from_utf8(&output.stdout).unwrap()); + eprintln!("{}", std::str::from_utf8(&output.stderr).unwrap()); + process::exit(output.status.code().unwrap()); + } + + let stdout = std::str::from_utf8(&output.stdout).unwrap().trim(); + assert_eq!("Howdy from version 1.2.3", stdout); +} diff --git a/test/rustc_env_files/output_test.sh b/test/rustc_env_files/output_test.sh deleted file mode 100755 index 9bb91fe474..0000000000 --- a/test/rustc_env_files/output_test.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -eu - -set -o pipefail - -output="$($1)" -[[ "${output}" == "Howdy from version 1.2.3" ]] || { echo >&2 "Unexpected output: ${output}"; exit 1;}