Skip to content

Commit 446eb92

Browse files
committed
parse test name and message in python
1 parent ded7e33 commit 446eb92

File tree

2 files changed

+51
-11
lines changed

2 files changed

+51
-11
lines changed

tmc-langs-python3/src/lib.rs

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,57 @@ struct PythonTestResult {
6060
impl PythonTestResult {
6161
fn into_test_result(self) -> TestResult {
6262
TestResult {
63-
name: self.name,
63+
name: parse_test_name(self.name),
6464
successful: self.passed,
65-
message: self.message,
65+
message: parse_test_message(self.message),
6666
points: self.points,
6767
exception: self.backtrace,
6868
}
6969
}
7070
}
71+
72+
fn parse_test_name(test_name: String) -> String {
73+
let parts: Vec<_> = test_name.split('.').collect();
74+
if parts.len() == 4 {
75+
format!("{}: {}", parts[2], parts[3])
76+
} else {
77+
test_name
78+
}
79+
}
80+
81+
fn parse_test_message(test_message: String) -> String {
82+
const PREFIX_1: &str = "true is not false :";
83+
const PREFIX_2: &str = "false is not true :";
84+
85+
let lower = test_message.to_lowercase();
86+
if lower.starts_with(PREFIX_1) {
87+
test_message[PREFIX_1.len()..].trim().to_string()
88+
} else if lower.starts_with(PREFIX_2) {
89+
test_message[PREFIX_2.len()..].trim().to_string()
90+
} else {
91+
test_message
92+
}
93+
}
94+
95+
#[cfg(test)]
96+
mod test {
97+
use super::*;
98+
99+
#[test]
100+
fn parses_test_name() {
101+
let parsed = parse_test_name("test.test_new.TestCase.test_new".to_string());
102+
assert_eq!(parsed, "TestCase: test_new");
103+
let parsed = parse_test_name("some.other.test".to_string());
104+
assert_eq!(parsed, "some.other.test");
105+
}
106+
107+
#[test]
108+
fn parses_test_message() {
109+
let parsed = parse_test_message("True is not False : !message! ".to_string());
110+
assert_eq!(parsed, "!message!");
111+
let parsed = parse_test_message("some other message".to_string());
112+
assert_eq!(parsed, "some other message");
113+
let parsed = parse_test_message("fAlSe Is NoT tRuE :".to_string());
114+
assert_eq!(parsed, "");
115+
}
116+
}

tmc-langs-python3/src/plugin.rs

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -223,10 +223,7 @@ mod test {
223223
let temp = copy_test("tests/data/project");
224224
let run_result = plugin.run_tests(temp.path()).unwrap();
225225
assert_eq!(run_result.status, RunStatus::Passed);
226-
assert_eq!(
227-
run_result.test_results[0].name,
228-
"test.test_points.TestEverything.test_new"
229-
);
226+
assert_eq!(run_result.test_results[0].name, "TestEverything: test_new");
230227
assert!(run_result.test_results[0].successful);
231228
assert!(run_result.test_results[0].points.contains(&"1.1".into()));
232229
assert!(run_result.test_results[0].points.contains(&"1.2".into()));
@@ -240,10 +237,7 @@ mod test {
240237
let temp = copy_test("tests/data/failing");
241238
let run_result = plugin.run_tests(temp.path()).unwrap();
242239
assert_eq!(run_result.status, RunStatus::TestsFailed);
243-
assert_eq!(
244-
run_result.test_results[0].name,
245-
"test.test_failing.TestFailing.test_new"
246-
);
240+
assert_eq!(run_result.test_results[0].name, "TestFailing: test_new");
247241
assert!(!run_result.test_results[0].successful);
248242
assert!(run_result.test_results[0].points.contains(&"1.1".into()));
249243
assert!(run_result.test_results[0].points.contains(&"1.2".into()));
@@ -258,7 +252,7 @@ mod test {
258252
assert_eq!(run_result.status, RunStatus::TestsFailed);
259253
assert_eq!(
260254
run_result.test_results[0].name,
261-
"test.test_erroring.TestErroring.test_erroring"
255+
"TestErroring: test_erroring"
262256
);
263257
assert!(!run_result.test_results[0].successful);
264258
assert!(run_result.test_results[0].points.contains(&"1.1".into()));

0 commit comments

Comments
 (0)