summaryrefslogtreecommitdiffstats
path: root/tests/invalid_config_tests.rs
blob: f8908b5c8d2eaf89acf9748075b45ba535ef960a (plain)
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
use assert_cmd::prelude::*;
use predicates::prelude::*;
use std::process::Command;

// These tests are for testing some config file-specific options.

fn get_binary_location() -> String {
    env!("CARGO_BIN_EXE_btm").to_string()
}

#[test]
fn test_toml_mismatch_type() {
    Command::new(get_binary_location())
        .arg("-C")
        .arg("./tests/invalid_configs/toml_mismatch_type.toml")
        .assert()
        .failure()
        .stderr(predicate::str::contains("invalid type"));
}

#[test]
fn test_empty_layout() {
    Command::new(get_binary_location())
        .arg("-C")
        .arg("./tests/invalid_configs/empty_layout.toml")
        .assert()
        .failure()
        .stderr(predicate::str::contains("Configuration file error")); // FIXME: [Urgent] Use a const for the error pattern
}

#[test]
fn test_invalid_layout_widget_type() {
    Command::new(get_binary_location())
        .arg("-C")
        .arg("./tests/invalid_configs/invalid_layout_widget_type.toml")
        .assert()
        .failure()
        .stderr(predicate::str::contains("invalid widget name"));
}

/// This test isn't really needed as this is technically covered by TOML spec.
/// However, I feel like it's worth checking anyways - not like it takes long.
#[test]
fn test_duplicate_temp_type() {
    Command::new(get_binary_location())
        .arg("-C")
        .arg("./tests/invalid_configs/duplicate_temp_type.toml")
        .assert()
        .failure()
        .stderr(predicate::str::contains("duplicate field"));
}

/// Checks for if a hex is valid
#[test]
fn test_invalid_colour_hex() {
    Command::new(get_binary_location())
        .arg("-C")
        .arg("./tests/invalid_configs/invalid_colour_hex.toml")
        .assert()
        .failure()
        .stderr(predicate::str::contains("invalid hex colour"));
}

/// Checks for if a hex is too long
#[test]
fn test_invalid_colour_hex_2() {
    Command::new(get_binary_location())
        .arg("-C")
        .arg("./tests/invalid_configs/invalid_colour_hex_2.toml")
        .assert()
        .failure()
        .stderr(predicate::str::contains("invalid hex colour"));
}

/// Checks unicode hex because the way we originally did it could cause char
/// boundary errors!
#[test]
fn test_invalid_colour_hex_3() {
    Command::new(get_binary_location())
        .arg("-C")
        .arg("./tests/invalid_configs/invalid_colour_hex_3.toml")
        .assert()
        .failure()
        .stderr(predicate::str::contains("invalid hex colour"));
}

#[test]
fn test_invalid_colour_name() {
    Command::new(get_binary_location())
        .arg("-C")
        .arg("./tests/invalid_configs/invalid_colour_name.toml")
        .assert()
        .failure()
        .stderr(predicate::str::contains("invalid named colour"));
}

#[test]
fn test_invalid_colour_rgb() {
    Command::new(get_binary_location())
        .arg("-C")
        .arg("./tests/invalid_configs/invalid_colour_rgb.toml")
        .assert()
        .failure()
        .stderr(predicate::str::contains("invalid RGB"));
}

#[test]
fn test_invalid_colour_rgb_2() {
    Command::new(get_binary_location())
        .arg("-C")
        .arg("./tests/invalid_configs/invalid_colour_rgb_2.toml")
        .assert()
        .failure()
        .stderr(predicate::str::contains("invalid RGB"));
}

#[test]
fn test_invalid_colour_string() {
    Command::new(get_binary_location())
        .arg("-C")
        .arg("./tests/invalid_configs/invalid_colour_string.toml")
        .assert()
        .failure()
        .stderr(predicate::str::contains("invalid named colour"));
}