load("//rust:defs.bzl", "rust_binary", "rust_test") rust_binary( name = "hello-world", srcs = ["src/main.rs"], edition = "2018", ) filegroup( name = "hello_world_main", srcs = ["src/main.rs"], ) rust_test( name = "test_run", srcs = ["tests/run.rs"], data = [ ":hello-world", ":hello_world_main", ], edition = "2018", env = { "FERRIS_SAYS": "Hello fellow Rustaceans!", "HELLO_WORLD_BIN_ROOTPATH": "$(rootpath :hello-world)", }, # `CARGO_BIN_EXE` behaves similarly to `CARGO_MANIFEST_DIR`. See # the comment on `test_manifest_dir`. target_compatible_with = select({ "@platforms//os:windows": ["@platforms//:incompatible"], "//conditions:default": [], }), ) rust_test( name = "test_manifest_dir", srcs = ["tests/manifest_dir.rs"], data = ["src/manifest_dir_file.txt"], edition = "2018", # `CARGO_MANIFEST_DIR` relies on relative paths that often align with # runfiles paths but on Windows it's the common case that runfiles # directories may not exist due to the system not having symlinks enabled. # Thus this test is not run for now. Perhaps in the future these variables # will switch to being runfiles paths so it's commonly usable across # platforms. However, this would violate the expectation of Cargo so # it's left as-is for now. target_compatible_with = select({ "@platforms//os:windows": ["@platforms//:incompatible"], "//conditions:default": [], }), )