-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathfixture_tests.rs
143 lines (115 loc) · 4.66 KB
/
fixture_tests.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
// Copyright (c) The nextest Contributors
// SPDX-License-Identifier: MIT OR Apache-2.0
use chrono::DateTime;
use goldenfile::Mint;
use owo_colors::OwoColorize;
use quick_junit::{
NonSuccessKind, Property, Report, TestCase, TestCaseStatus, TestRerun, TestSuite,
};
use std::time::Duration;
#[test]
fn fixtures() {
let mut mint = Mint::new("tests/fixtures");
let f = mint
.new_goldenfile("basic_report.xml")
.expect("creating new goldenfile succeeds");
let basic_report = basic_report();
basic_report
.serialize(f)
.expect("serializing basic_report succeeds");
}
fn basic_report() -> Report {
let mut report = Report::new("my-test-run");
report.set_timestamp(
DateTime::parse_from_rfc2822("Thu, 1 Apr 2021 10:52:37 -0800")
.expect("valid RFC2822 datetime"),
);
report.set_time(Duration::new(42, 234_567_890));
let mut test_suite = TestSuite::new("testsuite0");
test_suite.set_timestamp(
DateTime::parse_from_rfc2822("Thu, 1 Apr 2021 10:52:39 -0800")
.expect("valid RFC2822 datetime"),
);
// ---
let test_case_status = TestCaseStatus::success();
let mut test_case = TestCase::new("testcase0", test_case_status);
test_case.set_system_out("testcase0-output");
test_suite.add_test_case(test_case);
// ---
let mut test_case_status = TestCaseStatus::non_success(NonSuccessKind::Failure);
test_case_status
.set_description("this is the failure description")
.set_message("testcase1-message");
let mut test_case = TestCase::new("testcase1", test_case_status);
test_case
.set_system_err("some sort of failure output")
.set_time(Duration::from_millis(4242));
test_suite.add_test_case(test_case);
// ---
let mut test_case_status = TestCaseStatus::non_success(NonSuccessKind::Error);
test_case_status
.set_description("testcase2 error description")
.set_type("error type");
let mut test_case = TestCase::new("testcase2", test_case_status);
test_case.set_time(Duration::from_nanos(421580));
test_suite.add_test_case(test_case);
// ---
let mut test_case_status = TestCaseStatus::skipped();
test_case_status
.set_type("skipped type")
.set_message("skipped message");
// no description to test that.
let mut test_case = TestCase::new("testcase3", test_case_status);
test_case
.set_timestamp(
DateTime::parse_from_rfc2822("Thu, 1 Apr 2021 11:52:41 -0700")
.expect("valid RFC2822 datetime"),
)
.set_assertions(20)
.set_system_out("testcase3 output")
.set_system_err("testcase3 error");
test_suite.add_test_case(test_case);
// ---
let mut test_case_status = TestCaseStatus::success();
let mut test_rerun = TestRerun::new(NonSuccessKind::Failure);
test_rerun
.set_type("flaky failure type")
.set_description("this is a flaky failure description");
test_case_status.add_rerun(test_rerun);
let mut test_rerun = TestRerun::new(NonSuccessKind::Error);
test_rerun
.set_type("flaky error type")
.set_system_out("flaky system output")
.set_system_err(format!(
"flaky system error with {}",
"ANSI escape codes".blue()
))
.set_stack_trace("flaky stack trace")
.set_description("flaky error description");
test_case_status.add_rerun(test_rerun);
let mut test_case = TestCase::new("testcase4", test_case_status);
test_case.set_time(Duration::from_millis(661661));
test_suite.add_test_case(test_case);
// ---
let mut test_case_status = TestCaseStatus::non_success(NonSuccessKind::Failure);
test_case_status.set_description("main test failure description");
let mut test_rerun = TestRerun::new(NonSuccessKind::Failure);
test_rerun.set_type("retry failure type");
test_case_status.add_rerun(test_rerun);
let mut test_rerun = TestRerun::new(NonSuccessKind::Error);
test_rerun
.set_type("retry error type")
.set_system_out("retry error system output")
.set_stack_trace("retry error stack trace");
test_case_status.add_rerun(test_rerun);
let mut test_case = TestCase::new("testcase5", test_case_status);
test_case.set_time(Duration::from_millis(156));
test_suite.add_test_case(test_case);
let test_case_status = TestCaseStatus::success();
let mut test_case = TestCase::new("testcase6", test_case_status);
test_case.add_property(Property::new("step", "foobar"));
test_suite.add_test_case(test_case);
test_suite.add_property(Property::new("env", "FOOBAR"));
report.add_test_suite(test_suite);
report
}