3131#![ warn( clippy:: print_stdout) ]
3232
3333mod macros;
34+ mod trial;
3435
3536#[ doc( hidden) ]
3637pub mod _private {
@@ -41,80 +42,8 @@ pub use _private::main;
4142pub use libtest2_harness:: RunError ;
4243pub use libtest2_harness:: RunResult ;
4344pub use libtest2_harness:: TestContext ;
44-
45- use libtest2_harness:: Case ;
46- use libtest2_harness:: Source ;
47- use libtest2_harness:: TestKind ;
48-
49- pub struct Trial {
50- name : String ,
51- #[ allow( clippy:: type_complexity) ]
52- runner : Box < dyn Fn ( & TestContext ) -> RunResult + Send + Sync > ,
53- }
54-
55- impl Trial {
56- pub fn test (
57- name : impl Into < String > ,
58- runner : impl Fn ( & TestContext ) -> RunResult + Send + Sync + ' static ,
59- ) -> Self {
60- Self {
61- name : name. into ( ) ,
62- runner : Box :: new ( runner) ,
63- }
64- }
65- }
66-
67- impl Case for Trial {
68- fn name ( & self ) -> & str {
69- & self . name
70- }
71- fn kind ( & self ) -> TestKind {
72- Default :: default ( )
73- }
74- fn source ( & self ) -> Option < & Source > {
75- None
76- }
77- fn exclusive ( & self , _: & TestContext ) -> bool {
78- false
79- }
80-
81- fn run ( & self , context : & TestContext ) -> RunResult {
82- ( self . runner ) ( context)
83- }
84- }
85-
86- pub fn main ( cases : impl IntoIterator < Item = impl Case + ' static > ) {
87- let harness = libtest2_harness:: Harness :: new ( ) ;
88- let harness = match harness. with_env ( ) {
89- Ok ( harness) => harness,
90- Err ( err) => {
91- eprintln ! ( "{err}" ) ;
92- :: std:: process:: exit ( 1 ) ;
93- }
94- } ;
95- let harness = match harness. parse ( ) {
96- Ok ( harness) => harness,
97- Err ( err) => {
98- eprintln ! ( "{err}" ) ;
99- :: std:: process:: exit ( 1 ) ;
100- }
101- } ;
102- let harness = match harness. discover ( cases) {
103- Ok ( harness) => harness,
104- Err ( err) => {
105- eprintln ! ( "{err}" ) ;
106- :: std:: process:: exit ( libtest2_harness:: ERROR_EXIT_CODE )
107- }
108- } ;
109- match harness. run ( ) {
110- Ok ( true ) => :: std:: process:: exit ( 0 ) ,
111- Ok ( false ) => :: std:: process:: exit ( libtest2_harness:: ERROR_EXIT_CODE ) ,
112- Err ( err) => {
113- eprintln ! ( "{err}" ) ;
114- :: std:: process:: exit ( libtest2_harness:: ERROR_EXIT_CODE )
115- }
116- }
117- }
45+ pub use trial:: main;
46+ pub use trial:: Trial ;
11847
11948#[ doc = include_str ! ( "../README.md" ) ]
12049#[ cfg( doctest) ]
0 commit comments