diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2019-06-28 10:58:06 +0200 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2019-06-29 17:11:03 +0200 |
commit | 910c6d09311ff41ee6f913ff4881f4d8059c2a33 (patch) | |
tree | 0ab30166ce1ac5923f50240597551c8504247233 /src/test/test-condition.c | |
parent | fd4487f01ac5d9ae5e03adcf8120e64f2e7c6a52 (diff) | |
download | systemd-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.c | 24 |
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)); |