feat: enhance cargo test script to support profile and release flag

This commit is contained in:
2026-03-10 22:33:24 -05:00
parent 8126f06bf8
commit 170025c448
3 changed files with 44 additions and 4 deletions
+3
View File
@@ -2,6 +2,7 @@ project(
'depot',
version: '0.16.1',
meson_version: '>=0.60.0',
default_options: ['buildtype=release'],
)
fs = import('fs')
@@ -79,6 +80,8 @@ test(
cargo.full_path(),
src_root,
build_root,
cargo_profile,
cargo_release ? '1' : '0',
],
suite: ['cargo'],
timeout: 0,
+33 -2
View File
@@ -21,7 +21,15 @@ pub struct ShellHelpers {
impl ShellHelpers {
/// Create helper commands for a given staging tree (`DESTDIR`).
pub fn new(destdir: &Path) -> Result<Self> {
let tempdir = tempfile::tempdir().context("Failed to create shell helper tempdir")?;
let helper_root = destdir.join(INTERNAL_DEPOT_DIR).join("helpers");
fs::create_dir_all(&helper_root).with_context(|| {
format!(
"Failed to create shell helper root dir: {}",
helper_root.display()
)
})?;
let tempdir =
tempfile::tempdir_in(&helper_root).context("Failed to create shell helper tempdir")?;
let bin_dir = tempdir.path().join("bin");
fs::create_dir_all(&bin_dir)
.with_context(|| format!("Failed to create helper bin dir: {}", bin_dir.display()))?;
@@ -241,7 +249,8 @@ printf '%s\n' "$path"
#[cfg(test)]
mod tests {
use super::shell_ident_suffix;
use super::{INTERNAL_DEPOT_DIR, ShellHelpers, shell_ident_suffix};
use tempfile::tempdir;
#[test]
fn shell_ident_suffix_normalizes_package_names() {
@@ -250,4 +259,26 @@ mod tests {
assert_eq!(shell_ident_suffix("3foo"), "_3FOO");
assert_eq!(shell_ident_suffix("foo.bar+baz"), "FOO_BAR_BAZ");
}
#[test]
fn shell_helpers_use_destdir_internal_helper_dir() {
let destdir = tempdir().unwrap();
let helpers = ShellHelpers::new(destdir.path()).unwrap();
let mut envs = Vec::new();
helpers.apply_to_env_vars(&mut envs);
let path = envs
.iter()
.find(|(key, _)| key == "PATH")
.map(|(_, value)| value)
.unwrap();
let helper_prefix = destdir
.path()
.join(INTERNAL_DEPOT_DIR)
.join("helpers")
.to_string_lossy()
.into_owned();
assert!(path.starts_with(&helper_prefix));
}
}
+8 -2
View File
@@ -1,14 +1,16 @@
#!/bin/sh
set -eu
if [ "$#" -ne 3 ]; then
echo "usage: $0 <cargo> <src_root> <build_root>" >&2
if [ "$#" -ne 5 ]; then
echo "usage: $0 <cargo> <src_root> <build_root> <profile> <release_flag>" >&2
exit 2
fi
cargo_bin="$1"
src_root="$2"
build_root="$3"
profile="$4"
release_flag="$5"
cargo_home="$build_root/cargo-home"
cargo_target_dir="$build_root/cargo-target"
@@ -18,4 +20,8 @@ mkdir -p "$cargo_home" "$cargo_target_dir"
export CARGO_HOME="$cargo_home"
export CARGO_TARGET_DIR="$cargo_target_dir"
if [ "$release_flag" = "1" ]; then
exec "$cargo_bin" test --locked --manifest-path "$src_root/Cargo.toml" --profile "$profile"
fi
exec "$cargo_bin" test --locked --manifest-path "$src_root/Cargo.toml"