Update generated code build test
Use absolute paths for the test project, add roto-tonic and other dependencies, and capture build output on failure.
This commit is contained in:
@@ -37,8 +37,9 @@ fn test_generated_code_builds() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
// 2. Setup a temporary Cargo project to verify the code builds
|
// 2. Setup a temporary Cargo project to verify the code builds
|
||||||
let root = std::env::current_dir().expect("Failed to get current directory");
|
let codegen_root = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR"));
|
||||||
let temp_project_dir = root.join("test_gen_project");
|
let project_root = codegen_root.parent().expect("Failed to get project root");
|
||||||
|
let temp_project_dir = std::path::PathBuf::from("/tmp/roto_test_gen_project");
|
||||||
|
|
||||||
// Clean up previous runs
|
// Clean up previous runs
|
||||||
if temp_project_dir.exists() {
|
if temp_project_dir.exists() {
|
||||||
@@ -47,8 +48,7 @@ fn test_generated_code_builds() {
|
|||||||
|
|
||||||
// Create new library project
|
// Create new library project
|
||||||
let status = Command::new("cargo")
|
let status = Command::new("cargo")
|
||||||
.args(["new", "--lib", "test_gen_project"])
|
.args(["new", "--lib", temp_project_dir.to_str().expect("Invalid path")])
|
||||||
.current_dir(&root)
|
|
||||||
.status()
|
.status()
|
||||||
.expect("Failed to run cargo new");
|
.expect("Failed to run cargo new");
|
||||||
assert!(status.success(), "cargo new failed");
|
assert!(status.success(), "cargo new failed");
|
||||||
@@ -58,8 +58,11 @@ fn test_generated_code_builds() {
|
|||||||
let cargo_toml_content =
|
let cargo_toml_content =
|
||||||
fs::read_to_string(&cargo_toml_path).expect("Failed to read Cargo.toml");
|
fs::read_to_string(&cargo_toml_path).expect("Failed to read Cargo.toml");
|
||||||
let updated_cargo_toml = format!(
|
let updated_cargo_toml = format!(
|
||||||
"{}\n\nroto-codegen = {{ path = \"..\" }}\nroto-runtime = {{ path = \"../../runtime\" }}\nbytes = \"1.7\"\ntonic = \"0.12\"\ntokio-stream = \"0.1\"\n\n[workspace]\n",
|
"{}\n\nroto-codegen = {{ path = \"{}\" }}\nroto-runtime = {{ path = \"{}\" }}\nroto-tonic = {{ path = \"{}\" }}\nbytes = \"1.7\"\ntonic = \"0.12\"\ntokio-stream = \"0.1\"\ntower = \"0.4\"\nfutures-util = \"0.3\"\nhttp-body-util = \"0.1\"\nhttp-body = \"1.0\"\n\n[workspace]\n",
|
||||||
cargo_toml_content
|
cargo_toml_content,
|
||||||
|
codegen_root.to_string_lossy(),
|
||||||
|
project_root.join("runtime").to_string_lossy(),
|
||||||
|
project_root.join("roto-tonic").to_string_lossy()
|
||||||
);
|
);
|
||||||
fs::write(cargo_toml_path, updated_cargo_toml).expect("Failed to write Cargo.toml");
|
fs::write(cargo_toml_path, updated_cargo_toml).expect("Failed to write Cargo.toml");
|
||||||
|
|
||||||
@@ -75,14 +78,18 @@ fn test_generated_code_builds() {
|
|||||||
fs::write(lib_path, all_code).expect("Failed to write generated code to src/lib.rs");
|
fs::write(lib_path, all_code).expect("Failed to write generated code to src/lib.rs");
|
||||||
|
|
||||||
// 5. Attempt to build the project
|
// 5. Attempt to build the project
|
||||||
let build_status = Command::new("cargo")
|
let build_output = Command::new("cargo")
|
||||||
.args(["--offline", "build"])
|
.args(["build"])
|
||||||
.current_dir(&temp_project_dir)
|
.current_dir(&temp_project_dir)
|
||||||
.status()
|
.output()
|
||||||
.expect("Failed to run cargo build");
|
.expect("Failed to run cargo build");
|
||||||
|
|
||||||
|
if !build_output.status.success() {
|
||||||
|
eprintln!("Cargo build failed output:\n{}", String::from_utf8_lossy(&build_output.stderr));
|
||||||
|
}
|
||||||
|
|
||||||
assert!(
|
assert!(
|
||||||
build_status.success(),
|
build_output.status.success(),
|
||||||
"The generated Rust code failed to build in a standalone project!"
|
"The generated Rust code failed to build in a standalone project!"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user