From b4a488ce63bd47db000c9fd398c6091c8309d83b Mon Sep 17 00:00:00 2001 From: Weihang Lo Date: Mon, 4 May 2026 21:41:41 -0400 Subject: [PATCH] test(config): `[env]` relative paths definition https://github.com/rust-lang/cargo/issues/16954 --- tests/testsuite/config_include.rs | 61 +++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/tests/testsuite/config_include.rs b/tests/testsuite/config_include.rs index abd88d9a0..80e425070 100644 --- a/tests/testsuite/config_include.rs +++ b/tests/testsuite/config_include.rs @@ -645,3 +645,64 @@ fn env_relative_path_included_from_upper_level() { str!["[ROOT]/val"], ); } + +#[cargo_test] +fn env_relative_path_included_override() { + // See https://github.com/rust-lang/cargo/issues/16954 + write_config_at( + "foo/.cargo/config.toml", + " + include = ['../../inc/inc.toml'] + + [env] + MY_ENV = { value = 'inner', relative = true } + ", + ); + write_config_at( + "inc/inc.toml", + " + [env] + MY_ENV = { value = 'outer', relative = true } + ", + ); + let gctx = GlobalContextBuilder::new().cwd("foo").build(); + let env = gctx.env_config().unwrap(); + let my_env = env.get("MY_ENV").unwrap(); + + assert_e2e().eq(my_env.to_str().unwrap(), str!["[ROOT]/inner"]); +} + +#[cargo_test] +fn env_relative_path_nested_included_override() { + // See https://github.com/rust-lang/cargo/issues/16954 + write_config_at( + "foo/.cargo/config.toml", + " + include = ['../../mid/mid.toml'] + + [env] + MY_ENV = { value = 'inner', relative = true } + ", + ); + write_config_at( + "mid/mid.toml", + " + include = ['../deep/deep.toml'] + + [env] + MY_ENV = { value = 'mid', relative = true } + ", + ); + write_config_at( + "deep/deep.toml", + " + [env] + MY_ENV = { value = 'deep', relative = true } + ", + ); + let gctx = GlobalContextBuilder::new().cwd("foo").build(); + let env = gctx.env_config().unwrap(); + let my_env = env.get("MY_ENV").unwrap(); + + assert_e2e().eq(my_env.to_str().unwrap(), str!["[ROOT]/inner"]); +}