File: cache_hit_rate.rs

package info (click to toggle)
sccache 0.12.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,028 kB
  • sloc: sh: 358; cpp: 112; perl: 68; makefile: 35; ansic: 31
file content (118 lines) | stat: -rw-r--r-- 3,323 bytes parent folder | download
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
pub mod helpers;

use std::process::Command;

use anyhow::Result;
use assert_cmd::assert::OutputAssertExt;
use helpers::{CARGO, CRATE_DIR, SccacheTest, cargo_clean};
use predicates::{boolean::PredicateBooleanExt, str::PredicateStrExt};
use serial_test::serial;

#[test]
#[serial]
fn test_cache_hit_rate() -> Result<()> {
    let test_info = SccacheTest::new(None)?;

    Command::new(CARGO.as_os_str())
        .args(["build", "--color=never"])
        .envs(test_info.env.iter().cloned())
        .current_dir(CRATE_DIR.as_os_str())
        .assert()
        .try_stderr(predicates::str::contains("\x1b[").from_utf8().not())?
        .try_success()?;

    test_info
        .show_text_stats(false)?
        .try_stdout(
            predicates::str::is_match(r"Cache hits rate\s+0\.00\s%")
                .unwrap()
                .from_utf8(),
        )?
        .try_stdout(
            predicates::str::is_match(r"Cache hits rate \(Rust\)\s+0\.00\s%")
                .unwrap()
                .from_utf8(),
        )?
        .try_success()?;

    // Clean it so we can build it again.
    cargo_clean(&test_info)?;

    Command::new(CARGO.as_os_str())
        .args(["run", "--color=always"])
        .envs(test_info.env.iter().cloned())
        .current_dir(CRATE_DIR.as_os_str())
        .assert()
        .try_stderr(predicates::str::contains("\x1b[").from_utf8())?
        .try_success()?;

    test_info
        .show_text_stats(false)?
        .try_stdout(
            predicates::str::is_match(r"Cache hits rate\s+50\.00\s%")
                .unwrap()
                .from_utf8(),
        )?
        .try_stdout(
            predicates::str::is_match(r"Cache hits rate \(Rust\)\s+50\.00\s%")
                .unwrap()
                .from_utf8(),
        )?
        .try_success()?;

    Ok(())
}

#[test]
#[serial]
fn test_adv_cache_hit_rate() -> Result<()> {
    let test_info = SccacheTest::new(None)?;

    Command::new(CARGO.as_os_str())
        .args(["build", "--color=never"])
        .envs(test_info.env.iter().cloned())
        .current_dir(CRATE_DIR.as_os_str())
        .assert()
        .try_stderr(predicates::str::contains("\x1b[").from_utf8().not())?
        .try_success()?;

    test_info
        .show_text_stats(true)?
        .try_stdout(
            predicates::str::is_match(r"Cache hits rate\s+0\.00\s%")
                .unwrap()
                .from_utf8(),
        )?
        .try_stdout(
            predicates::str::is_match(r"Cache hits rate \(rust\)\s+0\.00\s%")
                .unwrap()
                .from_utf8(),
        )?
        .try_success()?;

    cargo_clean(&test_info)?;

    Command::new(CARGO.as_os_str())
        .args(["run", "--color=always"])
        .envs(test_info.env.iter().cloned())
        .current_dir(CRATE_DIR.as_os_str())
        .assert()
        .try_stderr(predicates::str::contains("\x1b[").from_utf8())?
        .try_success()?;

    test_info
        .show_text_stats(true)?
        .try_stdout(
            predicates::str::is_match(r"Cache hits rate\s+50\.00\s%")
                .unwrap()
                .from_utf8(),
        )?
        .try_stdout(
            predicates::str::is_match(r"Cache hits rate \(rust\)\s+50\.00\s%")
                .unwrap()
                .from_utf8(),
        )?
        .try_success()?;

    Ok(())
}