Skip to content

Commit 555164f

Browse files
committed
Move new tests up into a tests subdirectory
The new tests of `gix_testtools::Env` are effectively end-to-end tests, since they are involve modifying the actual environment, and more importantly they are only testing the public surface of the crate (`Env` is public), and therefore need not be inside any non-test module. So this moves from residing inside the nested `tests::env` module within `tests/tools/src/lib.rs`, into the newly created `tests/tools/tests/env.rs`. (As expected, they still all pass, and when the fix in `tests/tools/src/lib.rs` is temporarily undone, the `overlapping_*` tests fail again, confirming they still work as regression tests.)
1 parent 581957e commit 555164f

File tree

2 files changed

+93
-94
lines changed

2 files changed

+93
-94
lines changed

tests/tools/src/lib.rs

Lines changed: 0 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -883,98 +883,4 @@ mod tests {
883883
fn parse_version_with_trailing_newline() {
884884
assert_eq!(git_version_from_bytes(b"git version 2.37.2\n").unwrap(), (2, 37, 2));
885885
}
886-
887-
mod env {
888-
use super::Env;
889-
use serial_test::serial;
890-
891-
// We rely on these not already existing, to test `Env` without using or rewriting it.
892-
static VAR1: &str = "VAR_03FC4045_6043_4A61_9D15_852236CB632B";
893-
static VAR2: &str = "VAR_8C135840_05DB_4F3A_BFDD_FC755EC35B89";
894-
static VAR3: &str = "VAR_9B23A2BE_E20B_4670_93E2_3A6A8D47F274";
895-
896-
struct TestEnv;
897-
898-
impl TestEnv {
899-
fn new() -> Self {
900-
assert_eq!(std::env::var_os(VAR1), None);
901-
assert_eq!(std::env::var_os(VAR2), None);
902-
assert_eq!(std::env::var_os(VAR3), None);
903-
Self
904-
}
905-
}
906-
907-
impl Drop for TestEnv {
908-
fn drop(&mut self) {
909-
std::env::remove_var(VAR1);
910-
std::env::remove_var(VAR2);
911-
std::env::remove_var(VAR3);
912-
}
913-
}
914-
915-
#[test]
916-
#[serial]
917-
fn nonoverlapping() {
918-
let _meta = TestEnv::new();
919-
std::env::set_var(VAR1, "old1");
920-
std::env::set_var(VAR2, "old2");
921-
{
922-
let _env = Env::new().set(VAR1, "new1").unset(VAR2).set(VAR3, "new3");
923-
assert_eq!(std::env::var_os(VAR1), Some("new1".into()));
924-
assert_eq!(std::env::var_os(VAR2), None);
925-
assert_eq!(std::env::var_os(VAR3), Some("new3".into()));
926-
}
927-
assert_eq!(std::env::var_os(VAR1), Some("old1".into()));
928-
assert_eq!(std::env::var_os(VAR2), Some("old2".into()));
929-
assert_eq!(std::env::var_os(VAR3), None);
930-
}
931-
932-
#[test]
933-
#[serial]
934-
fn overlapping_reset() {
935-
let _meta = TestEnv::new();
936-
{
937-
let _env = Env::new().set(VAR1, "new1A").set(VAR1, "new1B");
938-
assert_eq!(std::env::var_os(VAR1), Some("new1B".into()));
939-
}
940-
assert_eq!(std::env::var_os(VAR1), None);
941-
}
942-
943-
#[test]
944-
#[serial]
945-
fn overlapping_unset() {
946-
let _meta = TestEnv::new();
947-
std::env::set_var(VAR1, "old1");
948-
{
949-
let _env = Env::new().unset(VAR1).unset(VAR1);
950-
assert_eq!(std::env::var_os(VAR1), None);
951-
}
952-
assert_eq!(std::env::var_os(VAR1), Some("old1".into()));
953-
}
954-
955-
#[test]
956-
#[serial]
957-
fn overlapping_combo() {
958-
let _meta = TestEnv::new();
959-
std::env::set_var(VAR1, "old1");
960-
std::env::set_var(VAR2, "old2");
961-
{
962-
let _env = Env::new()
963-
.set(VAR1, "new1A")
964-
.unset(VAR2)
965-
.set(VAR1, "new1B")
966-
.unset(VAR3)
967-
.set(VAR2, "new2")
968-
.set(VAR3, "new3")
969-
.unset(VAR1)
970-
.unset(VAR3);
971-
assert_eq!(std::env::var_os(VAR1), None);
972-
assert_eq!(std::env::var_os(VAR2), Some("new2".into()));
973-
assert_eq!(std::env::var_os(VAR3), None);
974-
}
975-
assert_eq!(std::env::var_os(VAR1), Some("old1".into()));
976-
assert_eq!(std::env::var_os(VAR2), Some("old2".into()));
977-
assert_eq!(std::env::var_os(VAR3), None);
978-
}
979-
}
980886
}

tests/tools/tests/env.rs

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
use std::env;
2+
3+
use gix_testtools::Env;
4+
use serial_test::serial;
5+
6+
// We rely on these not already existing, to test `Env` without using or rewriting it.
7+
static VAR1: &str = "VAR_03FC4045_6043_4A61_9D15_852236CB632B";
8+
static VAR2: &str = "VAR_8C135840_05DB_4F3A_BFDD_FC755EC35B89";
9+
static VAR3: &str = "VAR_9B23A2BE_E20B_4670_93E2_3A6A8D47F274";
10+
11+
struct TestEnv;
12+
13+
impl TestEnv {
14+
fn new() -> Self {
15+
assert_eq!(env::var_os(VAR1), None);
16+
assert_eq!(env::var_os(VAR2), None);
17+
assert_eq!(env::var_os(VAR3), None);
18+
Self
19+
}
20+
}
21+
22+
impl Drop for TestEnv {
23+
fn drop(&mut self) {
24+
env::remove_var(VAR1);
25+
env::remove_var(VAR2);
26+
env::remove_var(VAR3);
27+
}
28+
}
29+
30+
#[test]
31+
#[serial]
32+
fn nonoverlapping() {
33+
let _meta = TestEnv::new();
34+
env::set_var(VAR1, "old1");
35+
env::set_var(VAR2, "old2");
36+
{
37+
let _env = Env::new().set(VAR1, "new1").unset(VAR2).set(VAR3, "new3");
38+
assert_eq!(env::var_os(VAR1), Some("new1".into()));
39+
assert_eq!(env::var_os(VAR2), None);
40+
assert_eq!(env::var_os(VAR3), Some("new3".into()));
41+
}
42+
assert_eq!(env::var_os(VAR1), Some("old1".into()));
43+
assert_eq!(env::var_os(VAR2), Some("old2".into()));
44+
assert_eq!(env::var_os(VAR3), None);
45+
}
46+
47+
#[test]
48+
#[serial]
49+
fn overlapping_reset() {
50+
let _meta = TestEnv::new();
51+
{
52+
let _env = Env::new().set(VAR1, "new1A").set(VAR1, "new1B");
53+
assert_eq!(env::var_os(VAR1), Some("new1B".into()));
54+
}
55+
assert_eq!(env::var_os(VAR1), None);
56+
}
57+
58+
#[test]
59+
#[serial]
60+
fn overlapping_unset() {
61+
let _meta = TestEnv::new();
62+
env::set_var(VAR1, "old1");
63+
{
64+
let _env = Env::new().unset(VAR1).unset(VAR1);
65+
assert_eq!(env::var_os(VAR1), None);
66+
}
67+
assert_eq!(env::var_os(VAR1), Some("old1".into()));
68+
}
69+
70+
#[test]
71+
#[serial]
72+
fn overlapping_combo() {
73+
let _meta = TestEnv::new();
74+
env::set_var(VAR1, "old1");
75+
env::set_var(VAR2, "old2");
76+
{
77+
let _env = Env::new()
78+
.set(VAR1, "new1A")
79+
.unset(VAR2)
80+
.set(VAR1, "new1B")
81+
.unset(VAR3)
82+
.set(VAR2, "new2")
83+
.set(VAR3, "new3")
84+
.unset(VAR1)
85+
.unset(VAR3);
86+
assert_eq!(env::var_os(VAR1), None);
87+
assert_eq!(env::var_os(VAR2), Some("new2".into()));
88+
assert_eq!(env::var_os(VAR3), None);
89+
}
90+
assert_eq!(env::var_os(VAR1), Some("old1".into()));
91+
assert_eq!(env::var_os(VAR2), Some("old2".into()));
92+
assert_eq!(env::var_os(VAR3), None);
93+
}

0 commit comments

Comments
 (0)