summaryrefslogtreecommitdiff
path: root/src/test/test-condition.c
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2019-06-28 10:58:06 +0200
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2019-06-29 17:11:03 +0200
commit910c6d09311ff41ee6f913ff4881f4d8059c2a33 (patch)
tree0ab30166ce1ac5923f50240597551c8504247233 /src/test/test-condition.c
parentfd4487f01ac5d9ae5e03adcf8120e64f2e7c6a52 (diff)
downloadsystemd-910c6d09311ff41ee6f913ff4881f4d8059c2a33.tar.gz
Treat kernel version condition as a list of quoted checks
Before only one comparison was allowed. Let's make this more flexible: ConditionKernelVersion = ">=4.0" "<=4.5" Fixes #12881. This also fixes expressions like "ConditionKernelVersion=>" which would evaluate as true.
Diffstat (limited to 'src/test/test-condition.c')
-rw-r--r--src/test/test-condition.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/test/test-condition.c b/src/test/test-condition.c
index 4bbca2074f..4fa4974adc 100644
--- a/src/test/test-condition.c
+++ b/src/test/test-condition.c
@@ -301,9 +301,11 @@ static void test_condition_test_kernel_version(void) {
assert_se(condition_test(condition));
condition_free(condition);
+ /* An artificially empty condition. It evaluates to true, but normally
+ * such condition cannot be created, because the condition list is reset instead. */
condition = condition_new(CONDITION_KERNEL_VERSION, "", false, false);
assert_se(condition);
- assert_se(!condition_test(condition));
+ assert_se(condition_test(condition) > 0);
condition_free(condition);
assert_se(uname(&u) >= 0);
@@ -327,6 +329,26 @@ static void test_condition_test_kernel_version(void) {
assert_se(condition_test(condition));
condition_free(condition);
+ condition = condition_new(CONDITION_KERNEL_VERSION, ">0.1.2", false, false);
+ assert_se(condition);
+ assert_se(condition_test(condition) > 0);
+ condition_free(condition);
+
+ condition = condition_new(CONDITION_KERNEL_VERSION, "'>0.1.2' '<9.0.0'", false, false);
+ assert_se(condition);
+ assert_se(condition_test(condition) > 0);
+ condition_free(condition);
+
+ condition = condition_new(CONDITION_KERNEL_VERSION, "> 0.1.2 < 9.0.0", false, false);
+ assert_se(condition);
+ assert_se(condition_test(condition) == -EINVAL);
+ condition_free(condition);
+
+ condition = condition_new(CONDITION_KERNEL_VERSION, ">", false, false);
+ assert_se(condition);
+ assert_se(condition_test(condition) == -EINVAL);
+ condition_free(condition);
+
condition = condition_new(CONDITION_KERNEL_VERSION, ">= 0.1.2", false, false);
assert_se(condition);
assert_se(condition_test(condition));