Skip to content

Commit dc726f9

Browse files
committed
sh: fix tests
1 parent bfe05b8 commit dc726f9

File tree

6 files changed

+16
-13
lines changed

6 files changed

+16
-13
lines changed

sh/tests/integration.rs

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,30 @@ use plib::testing::{run_test, run_test_with_checker, TestPlan};
22
use std::process::Output;
33
use std::sync::atomic::{AtomicBool, Ordering};
44

5-
static SET_TEST_VARS: AtomicBool = AtomicBool::new(true);
5+
static SETTING_TEST_VARS: AtomicBool = AtomicBool::new(false);
6+
static TEST_VARS_ARE_SET: AtomicBool = AtomicBool::new(false);
67

78
fn set_env_vars() {
8-
if SET_TEST_VARS.load(Ordering::SeqCst) {
9+
if SETTING_TEST_VARS
10+
.compare_exchange(false, true, Ordering::SeqCst, Ordering::SeqCst)
11+
.is_ok()
12+
{
913
let current_dir = std::env::current_dir().unwrap();
1014
let base_dir = if current_dir.ends_with("sh") {
1115
current_dir.join("tests")
1216
} else {
1317
current_dir.join("sh/tests")
1418
};
15-
std::env::set_var("TEST_READ_DIR", base_dir.join("read_dir"));
16-
std::env::set_var("TEST_WRITE_DIR", base_dir.join("write_dir"));
17-
SET_TEST_VARS.store(false, Ordering::SeqCst);
18-
}
19+
let read_dir = base_dir.join("read_dir");
20+
let write_dir = base_dir.join("write_dir");
21+
if !write_dir.exists() {
22+
std::fs::create_dir(&write_dir).expect("failed to create write_dir");
23+
}
24+
std::env::set_var("TEST_READ_DIR", read_dir);
25+
std::env::set_var("TEST_WRITE_DIR", write_dir);
26+
TEST_VARS_ARE_SET.store(true, Ordering::SeqCst);
27+
}
28+
while !TEST_VARS_ARE_SET.load(Ordering::SeqCst) {}
1929
}
2030

2131
fn run_script_with_checker<F: Fn(&Output)>(script: &str, checker: F) {
@@ -807,7 +817,6 @@ mod redirection {
807817
run_script_with_checker(
808818
r#"
809819
set -o noclobber
810-
mkdir -p tests/write_dir
811820
cd $TEST_WRITE_DIR
812821
echo test1 > standard_output_redirection_fails_with_noclobber_set.txt
813822
echo test2 > standard_output_redirection_fails_with_noclobber_set.txt

sh/tests/sh/redirection/append_redirected_output.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
mkdir -p tests/write_dir
21
cd $TEST_WRITE_DIR
32

43
echo test >>append_redirected_output.txt

sh/tests/sh/redirection/duplicate_output_file_descriptor.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
mkdir -p tests/write_dir
21
cd $TEST_WRITE_DIR
32

43

sh/tests/sh/redirection/open_file_descriptor_for_read_and_write.sh

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ cd $TEST_READ_DIR
33
cat <>file1.txt
44
cat 0<>file1.txt
55

6-
cd ../../
7-
mkdir -p tests/write_dir
86
cd $TEST_WRITE_DIR
97

108
echo test 1<>open_file_descriptor_for_read_and_write.txt

sh/tests/sh/redirection/output_redirection.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
mkdir -p tests/write_dir
21
cd $TEST_WRITE_DIR
32

43
echo test >ouput_redirection.txt

sh/tests/sh/redirection/redirect_output_of_special_builtin_commands.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
mkdir -p tests/write_dir
21
cd $TEST_WRITE_DIR
32

43
set -o > redirect_output_of_special_builtin_commands.txt

0 commit comments

Comments
 (0)