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
use std::env;
use std::fs;
const TESTS_TEMPLATE: &str = "\
use tls_api::TlsAcceptor;
use tls_api::TlsConnector;
#[test]
fn version() {
tls_api_test::test_version::<CRATE::TlsConnector, CRATE::TlsAcceptor>();
}
#[test]
fn google() {
tls_api_test::test_google::<CRATE::TlsConnector>();
}
#[test]
fn connect_bad_hostname() {
tls_api_test::connect_bad_hostname::<CRATE::TlsConnector, _>(drop);
}
#[test]
fn connect_bad_hostname_ignored() {
tls_api_test::connect_bad_hostname_ignored::<CRATE::TlsConnector>();
}
#[test]
fn client_server_der() {
tls_api_test::test_client_server_der::<
CRATE::TlsConnector,
CRATE::TlsAcceptor,
>();
}
#[test]
fn client_server_dyn_der() {
tls_api_test::test_client_server_dyn_der(
CRATE::TlsConnector::TYPE_DYN,
CRATE::TlsAcceptor::TYPE_DYN,
);
}
#[test]
fn client_server_pkcs12() {
tls_api_test::test_client_server_pkcs12::<
CRATE::TlsConnector,
CRATE::TlsAcceptor,
>();
}
#[test]
fn alpn() {
tls_api_test::test_alpn::<CRATE::TlsConnector, CRATE::TlsAcceptor>()
}
";
const BENCHES_TEMPLATE: &str = "\
extern crate test;
use tls_api::TlsAcceptor;
use tls_api::TlsConnector;
#[bench]
fn bench_1(b: &mut test::Bencher) {
tls_api_test::benches::bench_1::<CRATE::TlsConnector, CRATE::TlsAcceptor>(b)
}
#[bench]
fn bench_1_dyn(b: &mut test::Bencher) {
tls_api_test::benches::bench_1_dyn(
CRATE::TlsConnector::TYPE_DYN,
CRATE::TlsAcceptor::TYPE_DYN,
b,
)
}
";
pub fn gen_tests_and_benches() {
let crate_name = env::var("CARGO_PKG_NAME").unwrap().replace("-", "_");
let out_dir = env::var("OUT_DIR").unwrap();
let g = TESTS_TEMPLATE.replace("CRATE", &crate_name);
let g = format!("// {}generated\n\n{}", "@", g);
fs::write(format!("{}/tests_generated.rs", out_dir), g).unwrap();
let g = BENCHES_TEMPLATE.replace("CRATE", &crate_name);
let g = format!("// {}generated\n\n{}", "@", g);
fs::write(format!("{}/benches_generated.rs", out_dir), g).unwrap();
crate::gen_rustc_nightly();
}