summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClementTsang <cjhtsang@uwaterloo.ca>2020-09-01 03:08:38 -0400
committerClementTsang <cjhtsang@uwaterloo.ca>2020-09-01 03:08:46 -0400
commit663ae6c5c25a2ef88eff856c202265c8a1455f06 (patch)
treefa11a47464d9088a76f3a89eaef7368f129feff0
parentd24a797ce9a137cbce68d621693dc7db60db2ba8 (diff)
bug: fix broken check from last commit, add tests
-rwxr-xr-x.cargo-husky/hooks/pre-push9
-rw-r--r--src/options.rs43
-rw-r--r--tests/arg_tests.rs14
-rw-r--r--tests/invalid_config_tests.rs11
-rw-r--r--tests/invalid_configs/invalid_default_widget_count.toml2
5 files changed, 57 insertions, 22 deletions
diff --git a/.cargo-husky/hooks/pre-push b/.cargo-husky/hooks/pre-push
index 46fb32d2..3a69d89a 100755
--- a/.cargo-husky/hooks/pre-push
+++ b/.cargo-husky/hooks/pre-push
@@ -1,2 +1,7 @@
-echo "Running pre-push hook: cargo +nightly clippy -- -D clippy::all"
-cargo +nightly clippy -- -D clippy::all \ No newline at end of file
+echo "Running pre-push hook:"
+
+echo "Executing: cargo +nightly clippy -- -D clippy::all"
+cargo +nightly clippy -- -D clippy::all
+
+echo "Executing: cargo test"
+cargo test \ No newline at end of file
diff --git a/src/options.rs b/src/options.rs
index 1d25ca85..e1a6e226 100644
--- a/src/options.rs
+++ b/src/options.rs
@@ -592,30 +592,33 @@ fn get_default_widget_and_count(
None
};
- if widget_type.is_some() {
- let widget_count = if let Some(widget_count) = matches.value_of("DEFAULT_WIDGET_COUNT") {
- widget_count.parse::<u128>()?
- } else if let Some(flags) = &config.flags {
- if let Some(widget_count) = flags.default_widget_count {
- widget_count as u128
- } else {
- 1 as u128
- }
- } else {
- 1 as u128
- };
-
- if widget_count > std::u64::MAX as u128 {
- Err(BottomError::ConfigError(
- "set your widget count to be at most unsigned INT_MAX.".to_string(),
- ))
+ let widget_count = if let Some(widget_count) = matches.value_of("DEFAULT_WIDGET_COUNT") {
+ Some(widget_count.parse::<u128>()?)
+ } else if let Some(flags) = &config.flags {
+ if let Some(widget_count) = flags.default_widget_count {
+ Some(widget_count as u128)
} else {
- Ok((widget_type, widget_count as u64))
+ None
}
} else {
- Err(BottomError::ConfigError(
+ None
+ };
+
+ match (widget_type, widget_count) {
+ (Some(widget_type), Some(widget_count)) => {
+ if widget_count > std::u64::MAX as u128 {
+ Err(BottomError::ConfigError(
+ "set your widget count to be at most unsigned INT_MAX.".to_string(),
+ ))
+ } else {
+ Ok((Some(widget_type), widget_count as u64))
+ }
+ }
+ (Some(widget_type), None) => Ok((Some(widget_type), 1)),
+ (None, Some(_widget_count)) => Err(BottomError::ConfigError(
"cannot set 'default_widget_count' by itself, it must be used with 'default_widget_type'.".to_string(),
- ))
+ )),
+ (None, None) => Ok((None, 1))
}
}
diff --git a/tests/arg_tests.rs b/tests/arg_tests.rs
index f6dac340..6f19eb8c 100644
--- a/tests/arg_tests.rs
+++ b/tests/arg_tests.rs
@@ -156,3 +156,17 @@ fn test_invalid_default_widget_2() -> Result<(), Box<dyn std::error::Error>> {
Ok(())
}
+
+#[test]
+fn test_missing_default_widget_type() -> Result<(), Box<dyn std::error::Error>> {
+ Command::new(get_binary_location())
+ .arg("--default_widget_count")
+ .arg("3")
+ .assert()
+ .failure()
+ .stderr(predicate::str::contains(
+ "The following required arguments were not provided",
+ ));
+
+ Ok(())
+}
diff --git a/tests/invalid_config_tests.rs b/tests/invalid_config_tests.rs
index cda6beb5..49db85da 100644
--- a/tests/invalid_config_tests.rs
+++ b/tests/invalid_config_tests.rs
@@ -147,3 +147,14 @@ fn test_empty_battery() -> Result<(), Box<dyn std::error::Error>> {
));
Ok(())
}
+
+#[test]
+fn test_invalid_default_widget_count() -> Result<(), Box<dyn std::error::Error>> {
+ Command::new(get_binary_location())
+ .arg("-C")
+ .arg("./tests/invalid_configs/invalid_default_widget_count.toml")
+ .assert()
+ .failure()
+ .stderr(predicate::str::contains("it must be used with"));
+ Ok(())
+}
diff --git a/tests/invalid_configs/invalid_default_widget_count.toml b/tests/invalid_configs/invalid_default_widget_count.toml
new file mode 100644
index 00000000..0e299d12
--- /dev/null
+++ b/tests/invalid_configs/invalid_default_widget_count.toml
@@ -0,0 +1,2 @@
+[flags]
+default_widget_count = 3 \ No newline at end of file