tls_api_test/
gen.rs

1use std::env;
2use std::fs;
3
4const TESTS_TEMPLATE: &str = "\
5use tls_api::TlsAcceptor;
6use tls_api::TlsConnector;
7
8#[test]
9fn version() {
10    tls_api_test::test_version::<CRATE::TlsConnector, CRATE::TlsAcceptor>();
11}
12
13#[test]
14fn google() {
15    tls_api_test::test_google::<CRATE::TlsConnector>();
16}
17
18#[test]
19fn connect_bad_hostname() {
20    tls_api_test::connect_bad_hostname::<CRATE::TlsConnector, _>(drop);
21}
22
23#[test]
24fn connect_bad_hostname_ignored() {
25    tls_api_test::connect_bad_hostname_ignored::<CRATE::TlsConnector>();
26}
27
28#[test]
29fn client_server_der() {
30    tls_api_test::test_client_server_der::<
31        CRATE::TlsConnector,
32        CRATE::TlsAcceptor,
33    >();
34}
35
36#[test]
37fn client_server_dyn_der() {
38    tls_api_test::test_client_server_dyn_der(
39        CRATE::TlsConnector::TYPE_DYN,
40        CRATE::TlsAcceptor::TYPE_DYN,
41    );
42}
43
44#[test]
45fn client_server_pkcs12() {
46    tls_api_test::test_client_server_pkcs12::<
47        CRATE::TlsConnector,
48        CRATE::TlsAcceptor,
49    >();
50}
51
52#[test]
53fn alpn() {
54    tls_api_test::test_alpn::<CRATE::TlsConnector, CRATE::TlsAcceptor>()
55}
56";
57
58const BENCHES_TEMPLATE: &str = "\
59extern crate test;
60
61use tls_api::TlsAcceptor;
62use tls_api::TlsConnector;
63
64#[bench]
65fn bench_1(b: &mut test::Bencher) {
66    tls_api_test::benches::bench_1::<CRATE::TlsConnector, CRATE::TlsAcceptor>(b)
67}
68
69#[bench]
70fn bench_1_dyn(b: &mut test::Bencher) {
71    tls_api_test::benches::bench_1_dyn(
72        CRATE::TlsConnector::TYPE_DYN,
73        CRATE::TlsAcceptor::TYPE_DYN,
74        b,
75    )
76}
77";
78
79/// Called from impl crates to generate the common set of tests
80pub fn gen_tests_and_benches() {
81    let crate_name = env::var("CARGO_PKG_NAME").unwrap().replace("-", "_");
82
83    let out_dir = env::var("OUT_DIR").unwrap();
84
85    let g = TESTS_TEMPLATE.replace("CRATE", &crate_name);
86    let g = format!("// {}generated\n\n{}", "@", g);
87
88    fs::write(format!("{}/tests_generated.rs", out_dir), g).unwrap();
89
90    let g = BENCHES_TEMPLATE.replace("CRATE", &crate_name);
91    let g = format!("// {}generated\n\n{}", "@", g);
92
93    fs::write(format!("{}/benches_generated.rs", out_dir), g).unwrap();
94
95    crate::gen_rustc_nightly();
96}