summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorClementTsang <cjhtsang@uwaterloo.ca>2020-04-23 15:33:51 -0400
committerClementTsang <cjhtsang@uwaterloo.ca>2020-04-23 15:33:51 -0400
commitf4c6cb95e4e12511054af0942a02422c9ea4d1bc (patch)
tree9018b84c419d45b12e0ec19f84a132ea0a603a90 /tests
parenta6b48921ee7fe49874bc629f107e06a688603547 (diff)
test: add config tests, update arg tests
Diffstat (limited to 'tests')
-rw-r--r--tests/arg_tests.rs2
-rw-r--r--tests/invalid_config_tests.rs135
-rw-r--r--tests/invalid_configs/duplicate_temp_type.toml4
-rw-r--r--tests/invalid_configs/empty_layout.toml1
-rw-r--r--tests/invalid_configs/invalid_colour_hex.toml2
-rw-r--r--tests/invalid_configs/invalid_colour_hex_2.toml2
-rw-r--r--tests/invalid_configs/invalid_colour_hex_3.toml2
-rw-r--r--tests/invalid_configs/invalid_colour_name.toml2
-rw-r--r--tests/invalid_configs/invalid_colour_rgb.toml2
-rw-r--r--tests/invalid_configs/invalid_colour_rgb_2.toml2
-rw-r--r--tests/invalid_configs/invalid_colour_string.toml2
-rw-r--r--tests/invalid_configs/invalid_layout_widget_type.toml5
-rw-r--r--tests/invalid_configs/toml_mismatch_type.toml2
13 files changed, 162 insertions, 1 deletions
diff --git a/tests/arg_tests.rs b/tests/arg_tests.rs
index ff760f9e..134d9615 100644
--- a/tests/arg_tests.rs
+++ b/tests/arg_tests.rs
@@ -136,7 +136,7 @@ fn test_invalid_default_widget_1() -> Result<(), Box<dyn std::error::Error>> {
.arg("fake_widget")
.assert()
.failure()
- .stderr(predicate::str::contains("Invalid widget type"));
+ .stderr(predicate::str::contains("invalid widget type"));
Ok(())
}
diff --git a/tests/invalid_config_tests.rs b/tests/invalid_config_tests.rs
index 8b137891..34b8e06e 100644
--- a/tests/invalid_config_tests.rs
+++ b/tests/invalid_config_tests.rs
@@ -1 +1,136 @@
+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() -> Result<(), Box<dyn std::error::Error>> {
+ Command::new(get_binary_location())
+ .arg("-C")
+ .arg("./tests/invalid_configs/toml_mismatch_type.toml")
+ .assert()
+ .failure()
+ .stderr(predicate::str::contains("invalid type"));
+ Ok(())
+}
+
+#[test]
+fn test_empty_layout() -> Result<(), Box<dyn std::error::Error>> {
+ Command::new(get_binary_location())
+ .arg("-C")
+ .arg("./tests/invalid_configs/empty_layout.toml")
+ .assert()
+ .failure()
+ .stderr(predicate::str::contains("invalid layout config"));
+ Ok(())
+}
+
+#[test]
+fn test_invalid_layout_widget_type() -> Result<(), Box<dyn std::error::Error>> {
+ Command::new(get_binary_location())
+ .arg("-C")
+ .arg("./tests/invalid_configs/invalid_layout_widget_type.toml")
+ .assert()
+ .failure()
+ .stderr(predicate::str::contains("invalid widget type"));
+ Ok(())
+}
+
+/// 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() -> Result<(), Box<dyn std::error::Error>> {
+ Command::new(get_binary_location())
+ .arg("-C")
+ .arg("./tests/invalid_configs/duplicate_temp_type.toml")
+ .assert()
+ .failure()
+ .stderr(predicate::str::contains("duplicate field"));
+ Ok(())
+}
+
+/// Checks for if a hex is valid
+#[test]
+fn test_invalid_colour_hex() -> Result<(), Box<dyn std::error::Error>> {
+ Command::new(get_binary_location())
+ .arg("-C")
+ .arg("./tests/invalid_configs/invalid_colour_hex.toml")
+ .assert()
+ .failure()
+ .stderr(predicate::str::contains("invalid color hex"));
+ Ok(())
+}
+
+/// Checks for if a hex is too long
+#[test]
+fn test_invalid_colour_hex_2() -> Result<(), Box<dyn std::error::Error>> {
+ Command::new(get_binary_location())
+ .arg("-C")
+ .arg("./tests/invalid_configs/invalid_colour_hex_2.toml")
+ .assert()
+ .failure()
+ .stderr(predicate::str::contains("invalid color hex"));
+ Ok(())
+}
+
+/// Checks unicode hex because the way we originally did it could cause char
+/// boundary errors!
+#[test]
+fn test_invalid_colour_hex_3() -> Result<(), Box<dyn std::error::Error>> {
+ Command::new(get_binary_location())
+ .arg("-C")
+ .arg("./tests/invalid_configs/invalid_colour_hex_3.toml")
+ .assert()
+ .failure()
+ .stderr(predicate::str::contains("invalid color hex"));
+ Ok(())
+}
+
+#[test]
+fn test_invalid_colour_name() -> Result<(), Box<dyn std::error::Error>> {
+ Command::new(get_binary_location())
+ .arg("-C")
+ .arg("./tests/invalid_configs/invalid_colour_name.toml")
+ .assert()
+ .failure()
+ .stderr(predicate::str::contains("invalid named color"));
+ Ok(())
+}
+
+#[test]
+fn test_invalid_colour_rgb() -> Result<(), Box<dyn std::error::Error>> {
+ Command::new(get_binary_location())
+ .arg("-C")
+ .arg("./tests/invalid_configs/invalid_colour_rgb.toml")
+ .assert()
+ .failure()
+ .stderr(predicate::str::contains("invalid RGB color"));
+ Ok(())
+}
+
+#[test]
+fn test_invalid_colour_rgb_2() -> Result<(), Box<dyn std::error::Error>> {
+ Command::new(get_binary_location())
+ .arg("-C")
+ .arg("./tests/invalid_configs/invalid_colour_rgb_2.toml")
+ .assert()
+ .failure()
+ .stderr(predicate::str::contains("invalid RGB color"));
+ Ok(())
+}
+
+#[test]
+fn test_invalid_colour_string() -> Result<(), Box<dyn std::error::Error>> {
+ Command::new(get_binary_location())
+ .arg("-C")
+ .arg("./tests/invalid_configs/invalid_colour_string.toml")
+ .assert()
+ .failure()
+ .stderr(predicate::str::contains("invalid named color"));
+ Ok(())
+}
diff --git a/tests/invalid_configs/duplicate_temp_type.toml b/tests/invalid_configs/duplicate_temp_type.toml
new file mode 100644
index 00000000..48e3e57a
--- /dev/null
+++ b/tests/invalid_configs/duplicate_temp_type.toml
@@ -0,0 +1,4 @@
+[flags]
+temperature_type = "k"
+temperature_type = "f"
+temperature_type = "c" \ No newline at end of file
diff --git a/tests/invalid_configs/empty_layout.toml b/tests/invalid_configs/empty_layout.toml
new file mode 100644
index 00000000..9582a0da
--- /dev/null
+++ b/tests/invalid_configs/empty_layout.toml
@@ -0,0 +1 @@
+[[row]] \ No newline at end of file
diff --git a/tests/invalid_configs/invalid_colour_hex.toml b/tests/invalid_configs/invalid_colour_hex.toml
new file mode 100644
index 00000000..b836a50c
--- /dev/null
+++ b/tests/invalid_configs/invalid_colour_hex.toml
@@ -0,0 +1,2 @@
+[colors]
+table_header_color="#zzzzzz" \ No newline at end of file
diff --git a/tests/invalid_configs/invalid_colour_hex_2.toml b/tests/invalid_configs/invalid_colour_hex_2.toml
new file mode 100644
index 00000000..5c1c92cc
--- /dev/null
+++ b/tests/invalid_configs/invalid_colour_hex_2.toml
@@ -0,0 +1,2 @@
+[colors]
+table_header_color="#1111111" \ No newline at end of file
diff --git a/tests/invalid_configs/invalid_colour_hex_3.toml b/tests/invalid_configs/invalid_colour_hex_3.toml
new file mode 100644
index 00000000..92ce4fd3
--- /dev/null
+++ b/tests/invalid_configs/invalid_colour_hex_3.toml
@@ -0,0 +1,2 @@
+[colors]
+table_header_color="#我死" \ No newline at end of file
diff --git a/tests/invalid_configs/invalid_colour_name.toml b/tests/invalid_configs/invalid_colour_name.toml
new file mode 100644
index 00000000..afdacf7a
--- /dev/null
+++ b/tests/invalid_configs/invalid_colour_name.toml
@@ -0,0 +1,2 @@
+[colors]
+table_header_color="Light Blue" \ No newline at end of file
diff --git a/tests/invalid_configs/invalid_colour_rgb.toml b/tests/invalid_configs/invalid_colour_rgb.toml
new file mode 100644
index 00000000..d2e6ab3b
--- /dev/null
+++ b/tests/invalid_configs/invalid_colour_rgb.toml
@@ -0,0 +1,2 @@
+[colors]
+table_header_color="257, 50, 50" \ No newline at end of file
diff --git a/tests/invalid_configs/invalid_colour_rgb_2.toml b/tests/invalid_configs/invalid_colour_rgb_2.toml
new file mode 100644
index 00000000..dbae5e20
--- /dev/null
+++ b/tests/invalid_configs/invalid_colour_rgb_2.toml
@@ -0,0 +1,2 @@
+[colors]
+table_header_color="50, 50, 50, 50" \ No newline at end of file
diff --git a/tests/invalid_configs/invalid_colour_string.toml b/tests/invalid_configs/invalid_colour_string.toml
new file mode 100644
index 00000000..3b320b66
--- /dev/null
+++ b/tests/invalid_configs/invalid_colour_string.toml
@@ -0,0 +1,2 @@
+[colors]
+table_header_color="this is not a colour" \ No newline at end of file
diff --git a/tests/invalid_configs/invalid_layout_widget_type.toml b/tests/invalid_configs/invalid_layout_widget_type.toml
new file mode 100644
index 00000000..58e8ba8e
--- /dev/null
+++ b/tests/invalid_configs/invalid_layout_widget_type.toml
@@ -0,0 +1,5 @@
+[[row]]
+ [[row.child]]
+ type="cpu"
+ [[row.child]]
+ type="not_real" \ No newline at end of file
diff --git a/tests/invalid_configs/toml_mismatch_type.toml b/tests/invalid_configs/toml_mismatch_type.toml
new file mode 100644
index 00000000..b7f02b0e
--- /dev/null
+++ b/tests/invalid_configs/toml_mismatch_type.toml
@@ -0,0 +1,2 @@
+[flags]
+avg_cpu = "test" \ No newline at end of file