diff --git a/test/unit/cargo_build_script_data_runfiles/BUILD b/test/unit/cargo_build_script_data_runfiles/BUILD new file mode 100644 index 0000000000..b1cdb28577 --- /dev/null +++ b/test/unit/cargo_build_script_data_runfiles/BUILD @@ -0,0 +1,21 @@ +load("@rules_rust//rust:defs.bzl", "rust_binary") +load("@rules_rust//cargo:defs.bzl", "cargo_build_script") + +package( + default_visibility = ["//visibility:public"], +) + +cargo_build_script( + name = "build_script", + srcs = ["build.rs"], + data = ["data.txt"], + deps = [ + "@rules_rust//tools/runfiles", + ], +) + +rust_binary( + name = "reproduce_bin", + srcs = ["main.rs"], + deps = [":build_script"], +) diff --git a/test/unit/cargo_build_script_data_runfiles/build.rs b/test/unit/cargo_build_script_data_runfiles/build.rs new file mode 100644 index 0000000000..295dc3c6b6 --- /dev/null +++ b/test/unit/cargo_build_script_data_runfiles/build.rs @@ -0,0 +1,22 @@ +use std::env; +use std::path::Path; + +fn main() { + let r = runfiles::Runfiles::create().unwrap(); + // The rlocation path is relative to the workspace name + let rlocation_path = "rules_rust/test/unit/cargo_build_script_data_runfiles/data.txt"; + let path = runfiles::rlocation!(r, rlocation_path); + + match path { + Some(p) => { + if p.exists() { + println!("cargo:warning=Found data.txt at {}", p.display()); + } else { + panic!("data.txt path returned but does not exist: {}", p.display()); + } + } + None => { + panic!("Failed to resolve runfile path: {}", rlocation_path); + } + } +} diff --git a/test/unit/cargo_build_script_data_runfiles/data.txt b/test/unit/cargo_build_script_data_runfiles/data.txt new file mode 100644 index 0000000000..3b18e512db --- /dev/null +++ b/test/unit/cargo_build_script_data_runfiles/data.txt @@ -0,0 +1 @@ +hello world diff --git a/test/unit/cargo_build_script_data_runfiles/main.rs b/test/unit/cargo_build_script_data_runfiles/main.rs new file mode 100644 index 0000000000..40c29354a3 --- /dev/null +++ b/test/unit/cargo_build_script_data_runfiles/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello from main"); +}