From 284ee7ea667f20873580efed687d98e797afa8be Mon Sep 17 00:00:00 2001 From: Martin Pitt Date: Wed, 14 Oct 2026 15:47:34 +0000 Subject: [PATCH] condition: pass runtime scope to condition tests The next commit makes condition behaviour differ between the system and per-user service managers, so condition tests need to know which scope they evaluate for. Pass the `RuntimeScope` through `condition_test()` and `condition_test_list()` and adjust all callers: - the service manager and `systemd-analyze condition` pass their scope - systemd-sysupdate is system-only - networkd and udevd are no service managers and pass no scope No behaviour change. Signed-off-by: Martin Pitt --- src/analyze/analyze-condition.c | 4 +- src/core/unit.c | 2 + src/shared/condition.c | 94 ++--- src/shared/condition.h | 4 +- src/sysupdate/sysupdate-component.c | 3 +- src/sysupdate/sysupdate-feature.c | 3 +- src/test/test-condition.c | 537 ++++++++++++++-------------- 7 files changed, 328 insertions(+), 319 deletions(-) diff --git a/src/analyze/analyze-condition.c b/src/analyze/analyze-condition.c index 293d82c1000..cb4d23079b3 100644 --- a/src/analyze/analyze-condition.c +++ b/src/analyze/analyze-condition.c @@ -125,11 +125,11 @@ static int verify_conditions(char **lines, RuntimeScope scope, const char *unit, } condition_test_logger_t logger = arg_quiet ? NULL : log_helper; - r = condition_test_list(u->asserts, environ, assert_type_to_string, logger, u) > 0; + r = condition_test_list(u->asserts, environ, scope, assert_type_to_string, logger, u) > 0; if (u->asserts) log_full(arg_quiet ? LOG_DEBUG : LOG_NOTICE, "Asserts %s.", r > 0 ? "succeeded" : "failed"); - q = condition_test_list(u->conditions, environ, condition_type_to_string, logger, u) > 0; + q = condition_test_list(u->conditions, environ, scope, condition_type_to_string, logger, u) > 0; if (u->conditions) log_full(arg_quiet ? LOG_DEBUG : LOG_NOTICE, "Conditions %s.", q > 0 ? "succeeded" : "failed"); diff --git a/src/core/unit.c b/src/core/unit.c index d7d35867caa..2d4e9bb69d1 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -1817,6 +1817,7 @@ static bool unit_test_condition(Unit *u) { u->condition_result = condition_test_list( u->conditions, env, + u->manager->runtime_scope, condition_type_to_string, log_unit_internal, u) > 0; @@ -1841,6 +1842,7 @@ static bool unit_test_assert(Unit *u) { u->assert_result = condition_test_list( u->asserts, env, + u->manager->runtime_scope, assert_type_to_string, log_unit_internal, u) > 0; diff --git a/src/shared/condition.c b/src/shared/condition.c index f00f3132e6d..97bc370b3ab 100644 --- a/src/shared/condition.c +++ b/src/shared/condition.c @@ -54,6 +54,7 @@ #include "proc-cmdline.h" #include "process-util.h" #include "psi-util.h" +#include "runtime-scope.h" #include "selinux-util.h" #include "smack-util.h" #include "special.h" @@ -111,7 +112,7 @@ Condition* condition_free_list_type(Condition *head, ConditionType type) { return head; } -static int condition_test_kernel_command_line(Condition *c, char **env) { +static int condition_test_kernel_command_line(Condition *c, char **env, RuntimeScope scope) { _cleanup_strv_free_ char **args = NULL; int r; @@ -144,7 +145,7 @@ static int condition_test_kernel_command_line(Condition *c, char **env) { return false; } -static int condition_test_credential(Condition *c, char **env) { +static int condition_test_credential(Condition *c, char **env, RuntimeScope scope) { int r; assert(c); @@ -235,7 +236,7 @@ static int condition_test_version_cmp(const char *condition, const char *ver) { return true; } -static int condition_test_version(Condition *c, char **env) { +static int condition_test_version(Condition *c, char **env, RuntimeScope scope) { int r; assert(c); @@ -269,7 +270,7 @@ static int condition_test_version(Condition *c, char **env) { return condition_test_version_cmp(p, u.release); } -static int condition_test_osrelease(Condition *c, char **env) { +static int condition_test_osrelease(Condition *c, char **env, RuntimeScope scope) { int r; assert(c); @@ -318,7 +319,7 @@ static int condition_test_osrelease(Condition *c, char **env) { return true; } -static int condition_test_machine_tag(Condition *c, char **env) { +static int condition_test_machine_tag(Condition *c, char **env, RuntimeScope scope) { int r; assert(c); @@ -349,7 +350,7 @@ static int condition_test_machine_tag(Condition *c, char **env) { return false; } -static int condition_test_memory(Condition *c, char **env) { +static int condition_test_memory(Condition *c, char **env, RuntimeScope scope) { CompareOperator operator; uint64_t m, k; const char *p; @@ -373,7 +374,7 @@ static int condition_test_memory(Condition *c, char **env) { return test_order(CMP(m, k), operator); } -static int condition_test_cpus(Condition *c, char **env) { +static int condition_test_cpus(Condition *c, char **env, RuntimeScope scope) { CompareOperator operator; const char *p; unsigned k; @@ -399,7 +400,7 @@ static int condition_test_cpus(Condition *c, char **env) { return test_order(CMP((unsigned) n, k), operator); } -static int condition_test_user(Condition *c, char **env) { +static int condition_test_user(Condition *c, char **env, RuntimeScope scope) { uid_t id; int r; @@ -438,7 +439,7 @@ static int condition_test_user(Condition *c, char **env) { return id == getuid() || id == geteuid(); } -static int condition_test_control_group_controller(Condition *c, char **env) { +static int condition_test_control_group_controller(Condition *c, char **env, RuntimeScope scope) { CGroupMask system_mask, wanted_mask; int r; @@ -467,7 +468,7 @@ static int condition_test_control_group_controller(Condition *c, char **env) { return FLAGS_SET(system_mask, wanted_mask); } -static int condition_test_group(Condition *c, char **env) { +static int condition_test_group(Condition *c, char **env, RuntimeScope scope) { gid_t id; int r; @@ -486,7 +487,7 @@ static int condition_test_group(Condition *c, char **env) { return in_group(c->parameter) > 0; } -static int condition_test_virtualization(Condition *c, char **env) { +static int condition_test_virtualization(Condition *c, char **env, RuntimeScope scope) { Virtualization v; int b; @@ -537,7 +538,7 @@ static int condition_test_architecture_parameter(const char *parameter) { return a == b; } -static int condition_test_architecture(Condition *c, char **env) { +static int condition_test_architecture(Condition *c, char **env, RuntimeScope scope) { assert(c); assert(c->parameter); assert(c->type == CONDITION_ARCHITECTURE); @@ -629,7 +630,7 @@ static int condition_test_firmware_smbios_field(const char *expression) { return version_or_fnmatch_compare(operator, actual_value, expected_value); } -static int condition_test_firmware(Condition *c, char **env) { +static int condition_test_firmware(Condition *c, char **env, RuntimeScope scope) { sd_char *arg; int r; @@ -683,7 +684,7 @@ static int condition_test_firmware(Condition *c, char **env) { } } -static int condition_test_host(Condition *c, char **env) { +static int condition_test_host(Condition *c, char **env, RuntimeScope scope) { _cleanup_free_ char *h = NULL; int r; @@ -743,7 +744,7 @@ static uint32_t condition_fraction_value(sd_id128_t machine_id, const char *text return unaligned_read_le32(res); } -static int condition_test_fraction(Condition *c, char **env) { +static int condition_test_fraction(Condition *c, char **env, RuntimeScope scope) { int r; assert(c); @@ -806,7 +807,7 @@ static int condition_test_fraction(Condition *c, char **env) { return condition_fraction_value(mid, text) < UINT32_SCALE_FROM_PERMYRIAD(permyriad); } -static int condition_test_ac_power(Condition *c, char **env) { +static int condition_test_ac_power(Condition *c, char **env, RuntimeScope scope) { int r; assert(c); @@ -830,7 +831,7 @@ static int has_tpm2(void) { return FLAGS_SET(tpm2_support_full(TPM2_SUPPORT_SUBSYSTEM|TPM2_SUPPORT_FIRMWARE), TPM2_SUPPORT_SUBSYSTEM|TPM2_SUPPORT_FIRMWARE); } -static int condition_test_security(Condition *c, char **env) { +static int condition_test_security(Condition *c, char **env, RuntimeScope scope) { assert(c); assert(c->parameter); assert(c->type == CONDITION_SECURITY); @@ -861,7 +862,7 @@ static int condition_test_security(Condition *c, char **env) { return false; } -static int condition_test_capability(Condition *c, char **env) { +static int condition_test_capability(Condition *c, char **env, RuntimeScope scope) { int r; assert(c); @@ -881,7 +882,7 @@ static int condition_test_capability(Condition *c, char **env) { return BIT_SET(q.bounding, value); } -static int condition_test_needs_update(Condition *c, char **env) { +static int condition_test_needs_update(Condition *c, char **env, RuntimeScope scope) { struct stat usr, other; const char *p; bool b; @@ -967,7 +968,7 @@ static int condition_test_needs_update(Condition *c, char **env) { return timespec_load_nsec(&usr.st_mtim) > timestamp; } -static int condition_test_first_boot(Condition *c, char **env) { +static int condition_test_first_boot(Condition *c, char **env, RuntimeScope scope) { int r; assert(c); @@ -984,7 +985,7 @@ static int condition_test_first_boot(Condition *c, char **env) { return (in_first_boot() > 0) == r; } -static int condition_test_environment(Condition *c, char **env) { +static int condition_test_environment(Condition *c, char **env, RuntimeScope scope) { bool equal; assert(c); @@ -1012,7 +1013,7 @@ static int condition_test_environment(Condition *c, char **env) { return false; } -static int condition_test_path_exists(Condition *c, char **env) { +static int condition_test_path_exists(Condition *c, char **env, RuntimeScope scope) { assert(c); assert(c->parameter); assert(c->type == CONDITION_PATH_EXISTS); @@ -1020,7 +1021,7 @@ static int condition_test_path_exists(Condition *c, char **env) { return access(c->parameter, F_OK) >= 0; } -static int condition_test_path_exists_glob(Condition *c, char **env) { +static int condition_test_path_exists_glob(Condition *c, char **env, RuntimeScope scope) { assert(c); assert(c->parameter); assert(c->type == CONDITION_PATH_EXISTS_GLOB); @@ -1028,7 +1029,7 @@ static int condition_test_path_exists_glob(Condition *c, char **env) { return glob_exists(c->parameter) > 0; } -static int condition_test_path_is_directory(Condition *c, char **env) { +static int condition_test_path_is_directory(Condition *c, char **env, RuntimeScope scope) { assert(c); assert(c->parameter); assert(c->type == CONDITION_PATH_IS_DIRECTORY); @@ -1036,7 +1037,7 @@ static int condition_test_path_is_directory(Condition *c, char **env) { return is_dir(c->parameter, true) > 0; } -static int condition_test_path_is_symbolic_link(Condition *c, char **env) { +static int condition_test_path_is_symbolic_link(Condition *c, char **env, RuntimeScope scope) { assert(c); assert(c->parameter); assert(c->type == CONDITION_PATH_IS_SYMBOLIC_LINK); @@ -1044,7 +1045,7 @@ static int condition_test_path_is_symbolic_link(Condition *c, char **env) { return is_symlink(c->parameter) > 0; } -static int condition_test_path_is_mount_point(Condition *c, char **env) { +static int condition_test_path_is_mount_point(Condition *c, char **env, RuntimeScope scope) { assert(c); assert(c->parameter); assert(c->type == CONDITION_PATH_IS_MOUNT_POINT); @@ -1052,7 +1053,7 @@ static int condition_test_path_is_mount_point(Condition *c, char **env) { return path_is_mount_point_full(c->parameter, /* root= */ NULL, AT_SYMLINK_FOLLOW) > 0; } -static int condition_test_path_is_read_write(Condition *c, char **env) { +static int condition_test_path_is_read_write(Condition *c, char **env, RuntimeScope scope) { int r; assert(c); @@ -1064,7 +1065,7 @@ static int condition_test_path_is_read_write(Condition *c, char **env) { return r <= 0 && r != -ENOENT; } -static int condition_test_cpufeature(Condition *c, char **env) { +static int condition_test_cpufeature(Condition *c, char **env, RuntimeScope scope) { _cleanup_free_ char *cpu_arch = NULL, *feature = NULL; int r; @@ -1087,7 +1088,7 @@ static int condition_test_cpufeature(Condition *c, char **env) { return has_cpu_with_flag(ascii_strlower(feature)); } -static int condition_test_path_is_encrypted(Condition *c, char **env) { +static int condition_test_path_is_encrypted(Condition *c, char **env, RuntimeScope scope) { int r; assert(c); @@ -1101,7 +1102,7 @@ static int condition_test_path_is_encrypted(Condition *c, char **env) { return r > 0; } -static int condition_test_path_is_socket(Condition *c, char **env) { +static int condition_test_path_is_socket(Condition *c, char **env, RuntimeScope scope) { assert(c); assert(c->parameter); assert(c->type == CONDITION_PATH_IS_SOCKET); @@ -1109,7 +1110,7 @@ static int condition_test_path_is_socket(Condition *c, char **env) { return is_socket(c->parameter) > 0; } -static int condition_test_directory_not_empty(Condition *c, char **env) { +static int condition_test_directory_not_empty(Condition *c, char **env, RuntimeScope scope) { int r; assert(c); @@ -1120,7 +1121,7 @@ static int condition_test_directory_not_empty(Condition *c, char **env) { return r <= 0 && !IN_SET(r, -ENOENT, -ENOTDIR); } -static int condition_test_file_not_empty(Condition *c, char **env) { +static int condition_test_file_not_empty(Condition *c, char **env, RuntimeScope scope) { struct stat st; assert(c); @@ -1132,7 +1133,7 @@ static int condition_test_file_not_empty(Condition *c, char **env) { st.st_size > 0); } -static int condition_test_file_is_executable(Condition *c, char **env) { +static int condition_test_file_is_executable(Condition *c, char **env, RuntimeScope scope) { struct stat st; assert(c); @@ -1144,7 +1145,7 @@ static int condition_test_file_is_executable(Condition *c, char **env) { (st.st_mode & 0111)); } -static int condition_test_psi(Condition *c, char **env) { +static int condition_test_psi(Condition *c, char **env, RuntimeScope scope) { _cleanup_free_ char *first = NULL, *second = NULL, *third = NULL, *fourth = NULL, *pressure_path = NULL; const char *p, *value, *pressure_type; loadavg_t *current, limit; @@ -1287,7 +1288,7 @@ static int condition_test_psi(Condition *c, char **env) { return *current <= limit; } -static int condition_test_kernel_module_loaded(Condition *c, char **env) { +static int condition_test_kernel_module_loaded(Condition *c, char **env, RuntimeScope scope) { int r; assert(c); @@ -1340,9 +1341,9 @@ static int condition_test_kernel_module_loaded(Condition *c, char **env) { return true; } -typedef int (*condition_test_func_t)(Condition *c, char **env); +typedef int (*condition_test_func_t)(Condition *c, char **env, RuntimeScope scope); -static int condition_test_impl(Condition *c, char **env, const condition_test_func_t table[]) { +static int condition_test_impl(Condition *c, char **env, RuntimeScope scope, const condition_test_func_t table[]) { int r, b; assert(c); @@ -1351,7 +1352,7 @@ static int condition_test_impl(Condition *c, char **env, const condition_test_fu assert(table); assert(table[c->type]); - r = table[c->type](c, env); + r = table[c->type](c, env, scope); if (r < 0) { c->result = CONDITION_ERROR; return r; @@ -1362,7 +1363,7 @@ static int condition_test_impl(Condition *c, char **env, const condition_test_fu return b; } -static int condition_test_net(Condition *c, char **env) { +static int condition_test_net(Condition *c, char **env, RuntimeScope scope) { static const condition_test_func_t table_net[_CONDITION_TYPE_MAX] = { [CONDITION_KERNEL_COMMAND_LINE] = condition_test_kernel_command_line, [CONDITION_VERSION] = condition_test_version, @@ -1374,10 +1375,10 @@ static int condition_test_net(Condition *c, char **env) { [CONDITION_MACHINE_TAG] = condition_test_machine_tag, }; - return condition_test_impl(c, env, table_net); + return condition_test_impl(c, env, scope, table_net); } -int condition_test(Condition *c, char **env) { +int condition_test(Condition *c, char **env, RuntimeScope scope) { static const condition_test_func_t table[_CONDITION_TYPE_MAX] = { [CONDITION_PATH_EXISTS] = condition_test_path_exists, [CONDITION_PATH_EXISTS_GLOB] = condition_test_path_exists_glob, @@ -1418,12 +1419,13 @@ int condition_test(Condition *c, char **env) { [CONDITION_KERNEL_MODULE_LOADED] = condition_test_kernel_module_loaded, }; - return condition_test_impl(c, env, table); + return condition_test_impl(c, env, scope, table); } static int condition_test_list_impl( Condition *first, char **env, + RuntimeScope scope, condition_to_string_t to_string, condition_test_logger_t logger, condition_test_func_t tester, @@ -1444,7 +1446,7 @@ static int condition_test_list_impl( has_trigger = has_trigger || c->trigger; - r = tester(c, env); + r = tester(c, env, scope); if (logger) { if (r < 0) @@ -1493,17 +1495,19 @@ bool condition_test_list_net( condition_test_logger_t logger, void *userdata) { - return condition_test_list_impl(first, env, to_string, logger, condition_test_net, userdata) > 0; + /* networkd and udevd are not service managers, they have no runtime scope */ + return condition_test_list_impl(first, env, _RUNTIME_SCOPE_INVALID, to_string, logger, condition_test_net, userdata) > 0; } int condition_test_list( Condition *first, char **env, + RuntimeScope scope, condition_to_string_t to_string, condition_test_logger_t logger, void *userdata) { - return condition_test_list_impl(first, env, to_string, logger, condition_test, userdata); + return condition_test_list_impl(first, env, scope, to_string, logger, condition_test, userdata); } void condition_dump(Condition *c, FILE *f, const char *prefix, condition_to_string_t to_string) { diff --git a/src/shared/condition.h b/src/shared/condition.h index f79a6257181..9ec82a1434f 100644 --- a/src/shared/condition.h +++ b/src/shared/condition.h @@ -81,12 +81,12 @@ static inline Condition* condition_free_list(Condition *first) { return condition_free_list_type(first, _CONDITION_TYPE_INVALID); } -int condition_test(Condition *c, char **env); +int condition_test(Condition *c, char **env, RuntimeScope scope); typedef int (*condition_test_logger_t)(void *userdata, int level, int error, const char *file, int line, const char *func, const char *format, ...) _printf_(7, 8); typedef const char* (*condition_to_string_t)(ConditionType t); bool condition_test_list_net(Condition *first, char **env, condition_to_string_t to_string, condition_test_logger_t logger, void *userdata); -int condition_test_list(Condition *first, char **env, condition_to_string_t to_string, condition_test_logger_t logger, void *userdata); +int condition_test_list(Condition *first, char **env, RuntimeScope scope, condition_to_string_t to_string, condition_test_logger_t logger, void *userdata); void condition_dump(Condition *c, FILE *f, const char *prefix, condition_to_string_t to_string); void condition_dump_list(Condition *first, FILE *f, const char *prefix, condition_to_string_t to_string); diff --git a/src/sysupdate/sysupdate-component.c b/src/sysupdate/sysupdate-component.c index c00860c9985..6d6199fe9a0 100644 --- a/src/sysupdate/sysupdate-component.c +++ b/src/sysupdate/sysupdate-component.c @@ -10,6 +10,7 @@ #include "hashmap.h" #include "json-util.h" #include "log.h" +#include "runtime-scope.h" #include "string-table.h" #include "string-util.h" #include "strv.h" @@ -88,7 +89,7 @@ int component_is_suggested(const Component *c) { if (!c->suggest_on) /* no condition → false */ return false; - return condition_test_list(c->suggest_on, environ, suggest_on_type_to_string, /* logger= */ NULL, /* userdata= */ NULL); + return condition_test_list(c->suggest_on, environ, RUNTIME_SCOPE_SYSTEM, suggest_on_type_to_string, /* logger= */ NULL, /* userdata= */ NULL); } static const char* const component_success_action_table[_COMPONENT_SUCCESS_ACTION_MAX] = { diff --git a/src/sysupdate/sysupdate-feature.c b/src/sysupdate/sysupdate-feature.c index 6fdaedfaa72..31f95686fde 100644 --- a/src/sysupdate/sysupdate-feature.c +++ b/src/sysupdate/sysupdate-feature.c @@ -10,6 +10,7 @@ #include "hash-funcs.h" #include "json-util.h" #include "path-util.h" +#include "runtime-scope.h" #include "string-util.h" #include "strv.h" #include "sysupdate-config.h" @@ -191,5 +192,5 @@ int feature_is_suggested(const Feature *f) { if (!f->suggest_on) /* no condition → false */ return false; - return condition_test_list(f->suggest_on, environ, suggest_on_type_to_string, /* logger= */ NULL, /* userdata= */ NULL); + return condition_test_list(f->suggest_on, environ, RUNTIME_SCOPE_SYSTEM, suggest_on_type_to_string, /* logger= */ NULL, /* userdata= */ NULL); } diff --git a/src/test/test-condition.c b/src/test/test-condition.c index ad2fa7a11a3..cecfb3e7832 100644 --- a/src/test/test-condition.c +++ b/src/test/test-condition.c @@ -32,6 +32,7 @@ #include "path-util.h" #include "psi-util.h" #include "rm-rf.h" +#include "runtime-scope.h" #include "selinux-util.h" #include "smack-util.h" #include "stdio-util.h" @@ -50,69 +51,69 @@ TEST(condition_test_list) { ASSERT_OK(arch = uname_architecture()); - ASSERT_OK_POSITIVE(condition_test_list(NULL, environ, NULL, NULL, NULL)); + ASSERT_OK_POSITIVE(condition_test_list(NULL, environ, RUNTIME_SCOPE_SYSTEM, NULL, NULL, NULL)); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, "smbios-field(malformed)", false, false))); - ASSERT_ERROR(condition_test_list(condition, environ, NULL, NULL, NULL), EINVAL); + ASSERT_ERROR(condition_test_list(condition, environ, RUNTIME_SCOPE_SYSTEM, NULL, NULL, NULL), EINVAL); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, "smbios-field(malformed)", true, false))); ASSERT_NOT_NULL((sibling = condition_new(CONDITION_ARCHITECTURE, architecture_to_string(arch), true, false))); LIST_APPEND(conditions, condition, sibling); - ASSERT_OK_POSITIVE(condition_test_list(condition, environ, NULL, NULL, NULL)); + ASSERT_OK_POSITIVE(condition_test_list(condition, environ, RUNTIME_SCOPE_SYSTEM, NULL, NULL, NULL)); condition_free_list(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_ARCHITECTURE, architecture_to_string(arch), true, false))); ASSERT_NOT_NULL((sibling = condition_new(CONDITION_FIRMWARE, "smbios-field(malformed)", true, false))); LIST_APPEND(conditions, condition, sibling); - ASSERT_OK_POSITIVE(condition_test_list(condition, environ, NULL, NULL, NULL)); + ASSERT_OK_POSITIVE(condition_test_list(condition, environ, RUNTIME_SCOPE_SYSTEM, NULL, NULL, NULL)); condition_free_list(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, "smbios-field(malformed)", true, false))); - ASSERT_ERROR(condition_test_list(condition, environ, NULL, NULL, NULL), EINVAL); + ASSERT_ERROR(condition_test_list(condition, environ, RUNTIME_SCOPE_SYSTEM, NULL, NULL, NULL), EINVAL); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, "smbios-field(malformed)", true, false))); ASSERT_NOT_NULL((sibling = condition_new(CONDITION_PATH_EXISTS, "/thiscertainlywontexist", false, false))); LIST_APPEND(conditions, condition, sibling); - ASSERT_OK_ZERO(condition_test_list(condition, environ, NULL, NULL, NULL)); + ASSERT_OK_ZERO(condition_test_list(condition, environ, RUNTIME_SCOPE_SYSTEM, NULL, NULL, NULL)); condition_free_list(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, "smbios-field(malformed)", true, false))); ASSERT_NOT_NULL((sibling = condition_new(CONDITION_PATH_EXISTS, "/bin/sh", false, false))); LIST_APPEND(conditions, condition, sibling); - ASSERT_ERROR(condition_test_list(condition, environ, NULL, NULL, NULL), EINVAL); + ASSERT_ERROR(condition_test_list(condition, environ, RUNTIME_SCOPE_SYSTEM, NULL, NULL, NULL), EINVAL); condition_free_list(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_PATH_EXISTS, "/thiscertainlywontexist", false, false))); ASSERT_NOT_NULL((sibling = condition_new(CONDITION_FIRMWARE, "smbios-field(malformed)", false, false))); LIST_APPEND(conditions, condition, sibling); - ASSERT_OK_ZERO(condition_test_list(condition, environ, NULL, NULL, NULL)); + ASSERT_OK_ZERO(condition_test_list(condition, environ, RUNTIME_SCOPE_SYSTEM, NULL, NULL, NULL)); condition_free_list(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, "smbios-field(malformed)", false, false))); ASSERT_NOT_NULL((sibling = condition_new(CONDITION_PATH_EXISTS, "/thiscertainlywontexist", false, false))); LIST_APPEND(conditions, condition, sibling); - ASSERT_OK_ZERO(condition_test_list(condition, environ, NULL, NULL, NULL)); + ASSERT_OK_ZERO(condition_test_list(condition, environ, RUNTIME_SCOPE_SYSTEM, NULL, NULL, NULL)); condition_free_list(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_PATH_EXISTS, "/bin/sh", false, false))); ASSERT_NOT_NULL((sibling = condition_new(CONDITION_ARCHITECTURE, architecture_to_string(arch), false, false))); LIST_APPEND(conditions, condition, sibling); - ASSERT_OK_POSITIVE(condition_test_list(condition, environ, NULL, NULL, NULL)); + ASSERT_OK_POSITIVE(condition_test_list(condition, environ, RUNTIME_SCOPE_SYSTEM, NULL, NULL, NULL)); condition_free_list(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, "smbios-field(malformed)", false, false))); ASSERT_NOT_NULL((sibling = condition_new(CONDITION_ARCHITECTURE, architecture_to_string(arch), true, false))); LIST_APPEND(conditions, condition, sibling); - ASSERT_ERROR(condition_test_list(condition, environ, NULL, NULL, NULL), EINVAL); + ASSERT_ERROR(condition_test_list(condition, environ, RUNTIME_SCOPE_SYSTEM, NULL, NULL, NULL), EINVAL); condition_free_list(condition); other_arch = arch == ARCHITECTURE_X86_64 ? ARCHITECTURE_X86 : ARCHITECTURE_X86_64; ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, "smbios-field(malformed)", false, false))); ASSERT_NOT_NULL((sibling = condition_new(CONDITION_ARCHITECTURE, architecture_to_string(other_arch), true, false))); LIST_APPEND(conditions, condition, sibling); - ASSERT_OK_ZERO(condition_test_list(condition, environ, NULL, NULL, NULL)); + ASSERT_OK_ZERO(condition_test_list(condition, environ, RUNTIME_SCOPE_SYSTEM, NULL, NULL, NULL)); condition_free_list(condition); } @@ -120,81 +121,81 @@ TEST(condition_test_path) { Condition *condition; ASSERT_NOT_NULL((condition = condition_new(CONDITION_PATH_EXISTS, "/bin/sh", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_PATH_EXISTS, "/bin/s?", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_PATH_EXISTS_GLOB, "/bin/s?", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_PATH_EXISTS_GLOB, "/bin/s?", false, true))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_PATH_EXISTS, "/thiscertainlywontexist", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_PATH_EXISTS, "/thiscertainlywontexist", false, true))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_PATH_IS_DIRECTORY, "/bin", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_DIRECTORY_NOT_EMPTY, "/bin", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FILE_NOT_EMPTY, "/bin/sh", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FILE_IS_EXECUTABLE, "/bin/sh", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FILE_IS_EXECUTABLE, "/etc/passwd", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_PATH_IS_MOUNT_POINT, "/proc", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_PATH_IS_MOUNT_POINT, "/", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_PATH_IS_MOUNT_POINT, "/bin", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_PATH_IS_READ_WRITE, "/tmp", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_PATH_IS_ENCRYPTED, "/sys", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); if (access("/run/dbus/system_bus_socket", F_OK) >= 0) { ASSERT_NOT_NULL((condition = condition_new(CONDITION_PATH_IS_SOCKET, "/run/dbus/system_bus_socket", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); } ASSERT_NOT_NULL((condition = condition_new(CONDITION_PATH_IS_SOCKET, "/sys", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_PATH_IS_SYMBOLIC_LINK, "/dev/stdout", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); } @@ -202,11 +203,11 @@ TEST(condition_test_control_group_hierarchy) { Condition *condition; ASSERT_NOT_NULL(condition = condition_new(CONDITION_CONTROL_GROUP_CONTROLLER, "v1", false, false)); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL(condition = condition_new(CONDITION_CONTROL_GROUP_CONTROLLER, "v2", false, false)); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); } @@ -220,11 +221,11 @@ TEST(condition_test_control_group_controller) { /* Invalid controllers are ignored */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_CONTROL_GROUP_CONTROLLER, "thisisnotarealcontroller", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CONTROL_GROUP_CONTROLLER, "thisisnotarealcontroller", false, true))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_OK(cg_mask_supported(&system_mask)); @@ -236,20 +237,20 @@ TEST(condition_test_control_group_controller) { if (system_mask & CGROUP_CONTROLLER_TO_MASK(controller)) { log_info("this controller is available"); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CONTROL_GROUP_CONTROLLER, local_controller_name, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CONTROL_GROUP_CONTROLLER, local_controller_name, false, true))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); } else { log_info("this controller is unavailable"); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CONTROL_GROUP_CONTROLLER, local_controller_name, false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CONTROL_GROUP_CONTROLLER, local_controller_name, false, true))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); } } @@ -258,11 +259,11 @@ TEST(condition_test_control_group_controller) { ASSERT_OK(cg_mask_to_string(system_mask, &controller_name)); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CONTROL_GROUP_CONTROLLER, strempty(controller_name), false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CONTROL_GROUP_CONTROLLER, strempty(controller_name), false, true))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); } @@ -270,15 +271,15 @@ TEST(condition_test_ac_power) { Condition *condition; ASSERT_NOT_NULL((condition = condition_new(CONDITION_AC_POWER, "true", false, false))); - ASSERT_OK_EQ(condition_test(condition, environ), on_ac_power()); + ASSERT_OK_EQ(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), on_ac_power()); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_AC_POWER, "false", false, false))); - ASSERT_OK_NE(condition_test(condition, environ), on_ac_power()); + ASSERT_OK_NE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), on_ac_power()); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_AC_POWER, "false", false, true))); - ASSERT_OK_EQ(condition_test(condition, environ), on_ac_power()); + ASSERT_OK_EQ(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), on_ac_power()); condition_free(condition); } @@ -294,15 +295,15 @@ TEST(condition_test_host) { ASSERT_OK(r); ASSERT_NOT_NULL((condition = condition_new(CONDITION_HOST, SD_ID128_TO_STRING(id), false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_HOST, "garbage value jjjjjjjjjjjjjj", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_HOST, SD_ID128_TO_STRING(id), false, true))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((hostname = gethostname_malloc())); @@ -312,7 +313,7 @@ TEST(condition_test_host) { return (void) log_notice("hostname is an id128, skipping test"); ASSERT_NOT_NULL((condition = condition_new(CONDITION_HOST, hostname, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); } @@ -323,29 +324,29 @@ TEST(condition_test_fraction) { /* The 0%/100% boundaries are deterministic and short-circuit before the machine ID is even * read, so these run everywhere. */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_FRACTION, "0%", /* trigger= */ false, /* negate= */ false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FRACTION, "100%", /* trigger= */ false, /* negate= */ false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* A tag does not change the boundary behaviour. */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_FRACTION, "sometag 0%", /* trigger= */ false, /* negate= */ false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FRACTION, "sometag 100%", /* trigger= */ false, /* negate= */ false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* Negation flips the boundaries. */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_FRACTION, "100%", /* trigger= */ false, /* negate= */ true))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FRACTION, "0%", /* trigger= */ false, /* negate= */ true))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* Malformed values must propagate an error rather than silently passing or failing. */ @@ -358,7 +359,7 @@ TEST(condition_test_fraction) { "tag 30% extra", /* trailing garbage */ "a b 30%") { /* unquoted multi-word tag → trailing garbage */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_FRACTION, bad, /* trigger= */ false, /* negate= */ false))); - ASSERT_FAIL(condition_test(condition, environ)); + ASSERT_FAIL(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); } @@ -384,7 +385,7 @@ TEST(condition_test_fraction) { xsprintf(param, "tag-%u %u%%", i, *pct); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FRACTION, param, /* trigger= */ false, /* negate= */ false))); - r = ASSERT_OK(condition_test(condition, environ)); + r = ASSERT_OK(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); match += r > 0; condition_free(condition); } @@ -404,15 +405,15 @@ TEST(condition_test_architecture) { ASSERT_NOT_NULL((sa = architecture_to_string(a))); ASSERT_NOT_NULL((condition = condition_new(CONDITION_ARCHITECTURE, sa, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_ARCHITECTURE, "garbage value", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_ARCHITECTURE, sa, false, true))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); } @@ -421,12 +422,12 @@ TEST(condition_test_firmware) { /* Empty parameter */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, "", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* uefi parameter */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, "uefi", false, false))); - ASSERT_OK_EQ(condition_test(condition, environ), is_efi_boot()); + ASSERT_OK_EQ(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), is_efi_boot()); condition_free(condition); } @@ -438,13 +439,13 @@ TEST(condition_test_firmware_device_tree) { is_device_tree_system = access("/sys/firmware/devicetree/", F_OK) == 0; ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, "device-tree", false, false))); - ASSERT_OK_EQ(condition_test(condition, environ), is_device_tree_system); + ASSERT_OK_EQ(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), is_device_tree_system); condition_free(condition); /* device-tree-compatible parameter */ if (!is_device_tree_system) { ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, "device-tree-compatible()", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); } else { _cleanup_free_ char *dtcompat = NULL; @@ -456,9 +457,9 @@ TEST(condition_test_firmware_device_tree) { if (r < 0) { ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, "device-tree-compatible()", false, false))); if (r == -ENOENT) - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); else - ASSERT_FAIL(condition_test(condition, environ)); + ASSERT_FAIL(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); return; } @@ -470,7 +471,7 @@ TEST(condition_test_firmware_device_tree) { ASSERT_NOT_NULL((expression = strjoin("device-tree-compatible(", *c, ")"))); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, expression, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); } } @@ -484,32 +485,32 @@ TEST(condition_test_firmware_smbios) { /* smbios-field parameter */ /* Test some malformed smbios-field arguments */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, "smbios-field()", false, false))); - ASSERT_ERROR(condition_test(condition, environ), EINVAL); + ASSERT_ERROR(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), EINVAL); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, "smbios-field(malformed)", false, false))); - ASSERT_ERROR(condition_test(condition, environ), EINVAL); + ASSERT_ERROR(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), EINVAL); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, "smbios-field(malformed", false, false))); - ASSERT_ERROR(condition_test(condition, environ), EINVAL); + ASSERT_ERROR(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), EINVAL); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, "smbios-field(malformed=)", false, false))); - ASSERT_ERROR(condition_test(condition, environ), EINVAL); + ASSERT_ERROR(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), EINVAL); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, "smbios-field(malformed=)", false, false))); - ASSERT_ERROR(condition_test(condition, environ), EINVAL); + ASSERT_ERROR(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), EINVAL); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, "smbios-field(not_existing=nothing garbage)", false, false))); - ASSERT_ERROR(condition_test(condition, environ), EINVAL); + ASSERT_ERROR(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), EINVAL); condition_free(condition); /* Test not existing SMBIOS field */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, "smbios-field(not_existing=nothing)", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* Test with bios_vendor, if available */ @@ -525,27 +526,27 @@ TEST(condition_test_firmware_smbios) { /* Test equality / inequality using fnmatch() */ expression = strjoina("smbios-field(bios_vendor $= ", quote, bios_vendor, quote, ")"); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, expression, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); expression = strjoina("smbios-field(bios_vendor$=", quote, bios_vendor, quote, ")"); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, expression, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); expression = strjoina("smbios-field(bios_vendor !$= ", quote, bios_vendor, quote, ")"); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, expression, false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); expression = strjoina("smbios-field(bios_vendor!$=", quote, bios_vendor, quote, ")"); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, expression, false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); expression = strjoina("smbios-field(bios_vendor $= ", quote, bios_vendor, "*", quote, ")"); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, expression, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* Test version comparison with bios_version, if available */ @@ -560,32 +561,32 @@ TEST(condition_test_firmware_smbios) { expression = strjoina("smbios-field(bios_version = ", quote, bios_version, quote, ")"); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, expression, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); expression = strjoina("smbios-field(bios_version != ", quote, bios_version, quote, ")"); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, expression, false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); expression = strjoina("smbios-field(bios_version <= ", quote, bios_version, quote, ")"); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, expression, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); expression = strjoina("smbios-field(bios_version >= ", quote, bios_version, quote, ")"); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, expression, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); expression = strjoina("smbios-field(bios_version < ", quote, bios_version, ".1", quote, ")"); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, expression, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); expression = strjoina("smbios-field(bios_version > ", quote, bios_version, ".1", quote, ")"); ASSERT_NOT_NULL((condition = condition_new(CONDITION_FIRMWARE, expression, false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); } @@ -594,14 +595,14 @@ TEST(condition_test_kernel_command_line) { int r; ASSERT_NOT_NULL((condition = condition_new(CONDITION_KERNEL_COMMAND_LINE, "thisreallyshouldntbeonthekernelcommandline", false, false))); - r = condition_test(condition, environ); + r = condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM); if (ERRNO_IS_PRIVILEGE(r)) return; ASSERT_OK_ZERO(r); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_KERNEL_COMMAND_LINE, "andthis=neither", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); } @@ -611,115 +612,115 @@ TEST(condition_test_kernel_version) { const char *v; ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "*thisreallyshouldntbeinthekernelversion*", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "*", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); 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. */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_OK_ERRNO(uname(&u)); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, u.release, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); strshorten(u.release, 4); strcpy(strchr(u.release, 0), "*"); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, u.release, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* 0.1.2 would be a very very very old kernel */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "> 0.1.2", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, ">0.1.2", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "'>0.1.2' '<9.0.0'", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "> 0.1.2 < 9.0.0", false, false))); - ASSERT_ERROR(condition_test(condition, environ), EINVAL); + ASSERT_ERROR(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), EINVAL); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, ">", false, false))); - ASSERT_ERROR(condition_test(condition, environ), EINVAL); + ASSERT_ERROR(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), EINVAL); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, ">= 0.1.2", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "< 0.1.2", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "<= 0.1.2", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "= 0.1.2", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* 4711.8.15 is a very very very future kernel */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "< 4711.8.15", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "<= 4711.8.15", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "= 4711.8.15", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "> 4711.8.15", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, " >= 4711.8.15", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_OK_ERRNO(uname(&u)); v = strjoina(">=", u.release); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, v, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); v = strjoina("= ", u.release); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, v, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); v = strjoina("<=", u.release); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, v, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); v = strjoina("> ", u.release); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, v, false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); v = strjoina("< ", u.release); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, v, false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); } @@ -729,145 +730,145 @@ TEST(condition_test_version) { char ver[8]; ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "systemd *thisreallyshouldntbeinthesystemdversion*", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "systemd *", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); 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. */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* 42 would be a very very very old systemd release */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "systemd > 42", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "systemd>42", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "systemd '>42' '<9000'", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "systemd > 42 < 9000", false, false))); - ASSERT_ERROR(condition_test(condition, environ), EINVAL); + ASSERT_ERROR(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), EINVAL); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "systemd>", false, false))); - ASSERT_ERROR(condition_test(condition, environ), EINVAL); + ASSERT_ERROR(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), EINVAL); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "systemd >= 42", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "systemd < 42", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "systemd <= 42", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "systemd = 42", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* 9000 is a very very very future systemd release */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "systemd < 9000", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "systemd <= 9000", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "systemd = 9000", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "systemd > 9000", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "systemd >= 9000", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); xsprintf(ver, "%d", PROJECT_VERSION); v = strjoina("systemd>=", ver); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, v, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); v = strjoina("systemd = ", ver); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, v, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); v = strjoina("systemd<=", ver); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, v, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); v = strjoina("systemd > ", ver); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, v, false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); v = strjoina("systemd < ", ver); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, v, false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* Test glibc version */ bool has = !isempty(gnu_get_libc_version()); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "glibc > 1", false, false))); - ASSERT_OK_EQ(condition_test(condition, environ), has); + ASSERT_OK_EQ(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), has); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "glibc < 2", false, false))); - ASSERT_OK_EQ(condition_test(condition, environ), !has); + ASSERT_OK_EQ(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), !has); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "glibc < 9999", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "glibc > 9999", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); v = strjoina("glibc = ", gnu_get_libc_version()); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, v, false, false))); if (has) - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); else - ASSERT_ERROR(condition_test(condition, environ), EINVAL); + ASSERT_ERROR(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), EINVAL); condition_free(condition); v = strjoina("glibc != ", gnu_get_libc_version()); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, v, false, false))); if (has) - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); else - ASSERT_ERROR(condition_test(condition, environ), EINVAL); + ASSERT_ERROR(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), EINVAL); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "glibc $= ?*", false, false))); - ASSERT_OK_EQ(condition_test(condition, environ), has); + ASSERT_OK_EQ(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), has); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "glibc !$= ?*", false, false))); - ASSERT_OK_EQ(condition_test(condition, environ), !has); + ASSERT_OK_EQ(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), !has); condition_free(condition); } @@ -883,12 +884,12 @@ TEST(condition_test_credential) { ASSERT_OK_ERRNO(unsetenv("ENCRYPTED_CREDENTIALS_DIRECTORY")); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CREDENTIAL, "definitelymissing", /* trigger= */ false, /* negate= */ false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* invalid */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_CREDENTIAL, "..", /* trigger= */ false, /* negate= */ false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_OK(mkdtemp_malloc(NULL, &n1)); @@ -898,20 +899,20 @@ TEST(condition_test_credential) { ASSERT_OK_ERRNO(setenv("ENCRYPTED_CREDENTIALS_DIRECTORY", n2, /* overwrite= */ true)); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CREDENTIAL, "stillmissing", /* trigger= */ false, /* negate= */ false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((j = path_join(n1, "existing"))); ASSERT_OK(touch(j)); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CREDENTIAL, "existing", /* trigger= */ false, /* negate= */ false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); free(j); ASSERT_NOT_NULL((j = path_join(n2, "existing-encrypted"))); ASSERT_OK(touch(j)); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CREDENTIAL, "existing-encrypted", /* trigger= */ false, /* negate= */ false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_OK(set_unset_env("CREDENTIALS_DIRECTORY", d1, /* overwrite= */ true)); @@ -924,47 +925,47 @@ TEST(condition_test_cpufeature) { switch (uname_architecture()) { case ARCHITECTURE_X86: ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_FEATURE, "fpu", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_FEATURE, "x86.fpu", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_FEATURE, "bogus.fpu", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); break; case ARCHITECTURE_X86_64: ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_FEATURE, "fpu", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_FEATURE, "x86-64.fpu", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_FEATURE, "bogus.fpu", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); break; case ARCHITECTURE_ARM64: { int expected = native_architecture() == ARCHITECTURE_ARM64; ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_FEATURE, "fp", false, false))); - ASSERT_OK_EQ(condition_test(condition, environ), expected); + ASSERT_OK_EQ(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), expected); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_FEATURE, "asimd", false, false))); - ASSERT_OK_EQ(condition_test(condition, environ), expected); + ASSERT_OK_EQ(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), expected); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_FEATURE, "arm64.asimd", false, false))); - ASSERT_OK_EQ(condition_test(condition, environ), expected); + ASSERT_OK_EQ(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), expected); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_FEATURE, "bogus.asimd", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); break; } @@ -973,15 +974,15 @@ TEST(condition_test_cpufeature) { } ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_FEATURE, "bogus.featurethatshouldnotexist", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_FEATURE, "somecpufeaturethatreallydoesntmakesense", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_FEATURE, "a", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); } @@ -989,39 +990,39 @@ TEST(condition_test_security) { Condition *condition; ASSERT_NOT_NULL((condition = condition_new(CONDITION_SECURITY, "garbage oifdsjfoidsjoj", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_SECURITY, "selinux", false, true))); - ASSERT_OK_NE(condition_test(condition, environ), mac_selinux_use()); + ASSERT_OK_NE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), mac_selinux_use()); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_SECURITY, "apparmor", false, false))); - ASSERT_OK_EQ(condition_test(condition, environ), mac_apparmor_use()); + ASSERT_OK_EQ(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), mac_apparmor_use()); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_SECURITY, "tomoyo", false, false))); - ASSERT_OK_EQ(condition_test(condition, environ), mac_tomoyo_use()); + ASSERT_OK_EQ(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), mac_tomoyo_use()); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_SECURITY, "ima", false, false))); - ASSERT_OK_EQ(condition_test(condition, environ), use_ima()); + ASSERT_OK_EQ(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), use_ima()); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_SECURITY, "smack", false, false))); - ASSERT_OK_EQ(condition_test(condition, environ), mac_smack_use()); + ASSERT_OK_EQ(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), mac_smack_use()); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_SECURITY, "audit", false, false))); - ASSERT_OK_EQ(condition_test(condition, environ), use_audit()); + ASSERT_OK_EQ(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), use_audit()); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_SECURITY, "uefi-secureboot", false, false))); - ASSERT_OK_EQ(condition_test(condition, environ), is_efi_secure_boot()); + ASSERT_OK_EQ(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), is_efi_secure_boot()); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_SECURITY, "cvm", false, false))); - ASSERT_OK_EQ(condition_test(condition, environ), + ASSERT_OK_EQ(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), (detect_confidential_virtualization() != CONFIDENTIAL_VIRTUALIZATION_NONE)); condition_free(condition); } @@ -1045,7 +1046,7 @@ TEST(condition_test_virtualization) { int r; ASSERT_NOT_NULL((condition = condition_new(CONDITION_VIRTUALIZATION, "garbage oifdsjfoidsjoj", false, false))); - r = condition_test(condition, environ); + r = condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM); if (ERRNO_IS_PRIVILEGE(r)) return; log_info("ConditionVirtualization=garbage → %i", r); @@ -1053,19 +1054,19 @@ TEST(condition_test_virtualization) { condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VIRTUALIZATION, "container", false, false))); - r = condition_test(condition, environ); + r = condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM); log_info("ConditionVirtualization=container → %i", r); ASSERT_OK_EQ(r, !!detect_container()); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VIRTUALIZATION, "vm", false, false))); - r = condition_test(condition, environ); + r = condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM); log_info("ConditionVirtualization=vm → %i", r); ASSERT_OK_EQ(r, (detect_vm() && !detect_container())); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_VIRTUALIZATION, "private-users", false, false))); - r = condition_test(condition, environ); + r = condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM); log_info("ConditionVirtualization=private-users → %i", r); ASSERT_OK_EQ(r, !!running_in_userns()); condition_free(condition); @@ -1086,7 +1087,7 @@ TEST(condition_test_virtualization) { "vm_other\0") { ASSERT_NOT_NULL((condition = condition_new(CONDITION_VIRTUALIZATION, virt, false, false))); - r = condition_test(condition, environ); + r = condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM); log_info("ConditionVirtualization=%s → %i", virt, r); ASSERT_OK(r); condition_free(condition); @@ -1100,14 +1101,14 @@ TEST(condition_test_user) { int r; ASSERT_NOT_NULL((condition = condition_new(CONDITION_USER, "garbage oifdsjfoidsjoj", false, false))); - r = condition_test(condition, environ); + r = condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM); log_info("ConditionUser=garbage → %i", r); ASSERT_OK_ZERO(r); condition_free(condition); ASSERT_OK_POSITIVE(asprintf(&uid, "%"PRIu32, UINT32_C(0xFFFF))); ASSERT_NOT_NULL((condition = condition_new(CONDITION_USER, uid, false, false))); - r = condition_test(condition, environ); + r = condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM); log_info("ConditionUser=%s → %i", uid, r); ASSERT_OK_ZERO(r); condition_free(condition); @@ -1115,7 +1116,7 @@ TEST(condition_test_user) { ASSERT_OK_POSITIVE(asprintf(&uid, "%u", (unsigned)getuid())); ASSERT_NOT_NULL((condition = condition_new(CONDITION_USER, uid, false, false))); - r = condition_test(condition, environ); + r = condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM); log_info("ConditionUser=%s → %i", uid, r); ASSERT_OK_POSITIVE(r); condition_free(condition); @@ -1123,7 +1124,7 @@ TEST(condition_test_user) { ASSERT_OK_POSITIVE(asprintf(&uid, "%u", (unsigned)getuid()+1)); ASSERT_NOT_NULL((condition = condition_new(CONDITION_USER, uid, false, false))); - r = condition_test(condition, environ); + r = condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM); log_info("ConditionUser=%s → %i", uid, r); ASSERT_OK_ZERO(r); condition_free(condition); @@ -1131,7 +1132,7 @@ TEST(condition_test_user) { ASSERT_NOT_NULL((username = getusername_malloc())); ASSERT_NOT_NULL((condition = condition_new(CONDITION_USER, username, false, false))); - r = condition_test(condition, environ); + r = condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM); log_info("ConditionUser=%s → %i", username, r); ASSERT_OK_POSITIVE(r); condition_free(condition); @@ -1139,13 +1140,13 @@ TEST(condition_test_user) { username = (char*)(geteuid() == 0 ? NOBODY_USER_NAME : "root"); ASSERT_NOT_NULL((condition = condition_new(CONDITION_USER, username, false, false))); - r = condition_test(condition, environ); + r = condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM); log_info("ConditionUser=%s → %i", username, r); ASSERT_OK_ZERO(r); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_USER, "@system", false, false))); - r = condition_test(condition, environ); + r = condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM); log_info("ConditionUser=@system → %i", r); if (uid_is_system(getuid()) || uid_is_system(geteuid())) ASSERT_OK_POSITIVE(r); @@ -1163,14 +1164,14 @@ TEST(condition_test_group) { xsprintf(gid, "%u", UINT32_C(0xFFFF)); ASSERT_NOT_NULL((condition = condition_new(CONDITION_GROUP, gid, false, false))); - r = condition_test(condition, environ); + r = condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM); log_info("ConditionGroup=%s → %i", gid, r); ASSERT_OK_ZERO(r); condition_free(condition); xsprintf(gid, "%u", getgid()); ASSERT_NOT_NULL((condition = condition_new(CONDITION_GROUP, gid, false, false))); - r = condition_test(condition, environ); + r = condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM); log_info("ConditionGroup=%s → %i", gid, r); ASSERT_OK_POSITIVE(r); condition_free(condition); @@ -1188,7 +1189,7 @@ TEST(condition_test_group) { xsprintf(gid, "%u", gids[i]); ASSERT_NOT_NULL((condition = condition_new(CONDITION_GROUP, gid, false, false))); - r = condition_test(condition, environ); + r = condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM); log_info("ConditionGroup=%s → %i", gid, r); ASSERT_OK_POSITIVE(r); condition_free(condition); @@ -1199,7 +1200,7 @@ TEST(condition_test_group) { return; /* Debian package build in chroot, groupnames won't match, skip */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_GROUP, name, false, false))); - r = condition_test(condition, environ); + r = condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM); log_info("ConditionGroup=%s → %i", name, r); ASSERT_OK_POSITIVE(r); condition_free(condition); @@ -1208,7 +1209,7 @@ TEST(condition_test_group) { xsprintf(gid, "%u", max_gid + 1); ASSERT_NOT_NULL((condition = condition_new(CONDITION_GROUP, gid, false, false))); - r = condition_test(condition, environ); + r = condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM); log_info("ConditionGroup=%s → %i", gid, r); ASSERT_OK_ZERO(r); condition_free(condition); @@ -1222,7 +1223,7 @@ TEST(condition_test_group) { const char *groupname = getegid() == 0 ? NOBODY_GROUP_NAME : "root"; ASSERT_NOT_NULL((condition = condition_new(CONDITION_GROUP, groupname, false, false))); - r = condition_test(condition, environ); + r = condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM); log_info("ConditionGroup=%s → %i", groupname, r); ASSERT_OK_ZERO(r); condition_free(condition); @@ -1235,7 +1236,7 @@ static void test_condition_test_cpus_one(const char *s, bool result) { ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPUS, s, false, false))); - ASSERT_OK_EQ(condition_test(condition, environ), result); + ASSERT_OK_EQ(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), result); condition_free(condition); } @@ -1291,7 +1292,7 @@ static void test_condition_test_memory_one(const char *s, bool result) { ASSERT_NOT_NULL((condition = condition_new(CONDITION_MEMORY, s, false, false))); - ASSERT_OK_EQ(condition_test(condition, environ), result); + ASSERT_OK_EQ(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), result); condition_free(condition); } @@ -1368,7 +1369,7 @@ static void test_condition_test_environment_one(const char *s, bool result) { ASSERT_NOT_NULL((condition = condition_new(CONDITION_ENVIRONMENT, s, false, false))); - ASSERT_OK_EQ(condition_test(condition, environ), result); + ASSERT_OK_EQ(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), result); condition_free(condition); } @@ -1398,57 +1399,57 @@ TEST(condition_test_os_release) { return; ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, "_THISHOPEFULLYWONTEXIST=01234 56789", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, "WRONG FORMAT", false, false))); - ASSERT_ERROR(condition_test(condition, environ), EINVAL); + ASSERT_ERROR(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), EINVAL); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, "WRONG!<>=FORMAT", false, false))); - ASSERT_ERROR(condition_test(condition, environ), EINVAL); + ASSERT_ERROR(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), EINVAL); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, "WRONG FORMAT=", false, false))); - ASSERT_ERROR(condition_test(condition, environ), EINVAL); + ASSERT_ERROR(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), EINVAL); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, "WRONG =FORMAT", false, false))); - ASSERT_ERROR(condition_test(condition, environ), EINVAL); + ASSERT_ERROR(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), EINVAL); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, "WRONG = FORMAT", false, false))); - ASSERT_ERROR(condition_test(condition, environ), EINVAL); + ASSERT_ERROR(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), EINVAL); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, "WRONGFORMAT= ", false, false))); - ASSERT_ERROR(condition_test(condition, environ), EINVAL); + ASSERT_ERROR(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), EINVAL); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, "WRO NG=FORMAT", false, false))); - ASSERT_ERROR(condition_test(condition, environ), EINVAL); + ASSERT_ERROR(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM), EINVAL); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, "", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* Test shell style globs */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, "ID_LIKE$=*THISHOPEFULLYWONTEXIST*", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, "ID_THISHOPEFULLYWONTEXIST$=*rhel*", false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, "ID_LIKE!$=*THISHOPEFULLYWONTEXIST*", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, "ID_THISHOPEFULLYWONTEXIST!$=*rhel*", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* load_os_release_pairs() removes quotes, we have to add them back, @@ -1457,23 +1458,23 @@ TEST(condition_test_os_release) { const char *quote = strchr(os_release_pairs[1], ' ') ? "\"" : ""; key_value_pair = strjoina(os_release_pairs[0], "=", quote, os_release_pairs[1], quote); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, key_value_pair, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); key_value_pair = strjoina(os_release_pairs[0], "!=", quote, os_release_pairs[1], quote); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, key_value_pair, false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* Test fnmatch() operators */ key_value_pair = strjoina(os_release_pairs[0], "$=", quote, os_release_pairs[1], quote); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, key_value_pair, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); key_value_pair = strjoina(os_release_pairs[0], "!$=", quote, os_release_pairs[1], quote); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, key_value_pair, false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* Some distros (eg: Arch) do not set VERSION_ID */ @@ -1482,57 +1483,57 @@ TEST(condition_test_os_release) { key_value_pair = strjoina("VERSION_ID", "=", version_id); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, key_value_pair, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); key_value_pair = strjoina("VERSION_ID", "!=", version_id); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, key_value_pair, false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); key_value_pair = strjoina("VERSION_ID", "<=", version_id); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, key_value_pair, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); key_value_pair = strjoina("VERSION_ID", ">=", version_id); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, key_value_pair, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); key_value_pair = strjoina("VERSION_ID", "<", version_id, ".1"); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, key_value_pair, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); key_value_pair = strjoina("VERSION_ID", ">", version_id, ".1"); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, key_value_pair, false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); key_value_pair = strjoina("VERSION_ID", "=", version_id, " ", os_release_pairs[0], "=", quote, os_release_pairs[1], quote); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, key_value_pair, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); key_value_pair = strjoina("VERSION_ID", "!=", version_id, " ", os_release_pairs[0], "=", quote, os_release_pairs[1], quote); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, key_value_pair, false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); key_value_pair = strjoina("VERSION_ID", "=", version_id, " ", os_release_pairs[0], "!=", quote, os_release_pairs[1], quote); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, key_value_pair, false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); key_value_pair = strjoina("VERSION_ID", "!=", version_id, " ", os_release_pairs[0], "!=", quote, os_release_pairs[1], quote); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, key_value_pair, false, false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); key_value_pair = strjoina("VERSION_ID", "<", version_id, ".1", " ", os_release_pairs[0], "=", quote, os_release_pairs[1], quote); ASSERT_NOT_NULL((condition = condition_new(CONDITION_OS_RELEASE, key_value_pair, false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); } @@ -1556,44 +1557,44 @@ TEST(condition_test_machine_tag) { /* Exact match */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_MACHINE_TAG, "webserver", /* trigger= */ false, /* negate= */ false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* Glob match */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_MACHINE_TAG, "front*", /* trigger= */ false, /* negate= */ false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* No match */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_MACHINE_TAG, "database", /* trigger= */ false, /* negate= */ false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* Negation matches when the tag is absent, ... */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_MACHINE_TAG, "database", /* trigger= */ false, /* negate= */ true))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* ... and does not match when the tag is present */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_MACHINE_TAG, "webserver", /* trigger= */ false, /* negate= */ true))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* Invalid tags in the file are ignored (matching the Tags D-Bus property) */ ASSERT_OK(write_string_file(f, "TAGS=\"in valid:good\"\n", WRITE_STRING_FILE_CREATE|WRITE_STRING_FILE_TRUNCATE)); ASSERT_NOT_NULL((condition = condition_new(CONDITION_MACHINE_TAG, "in valid", /* trigger= */ false, /* negate= */ false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_MACHINE_TAG, "good", /* trigger= */ false, /* negate= */ false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* No tags configured at all → never matches */ ASSERT_OK(write_string_file(f, "PRETTY_HOSTNAME=\"x\"\n", WRITE_STRING_FILE_CREATE|WRITE_STRING_FILE_TRUNCATE)); ASSERT_NOT_NULL((condition = condition_new(CONDITION_MACHINE_TAG, "webserver", /* trigger= */ false, /* negate= */ false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* Key/value (parameterized) tags */ @@ -1602,40 +1603,40 @@ TEST(condition_test_machine_tag) { /* Exact match of a key/value tag */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_MACHINE_TAG, "role=webserver", /* trigger= */ false, /* negate= */ false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* Glob on the value */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_MACHINE_TAG, "role=web*", /* trigger= */ false, /* negate= */ false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* Glob on the key */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_MACHINE_TAG, "*=prod", /* trigger= */ false, /* negate= */ false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* A bare key does not match an assignment (the "=" is part of the tag) */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_MACHINE_TAG, "role", /* trigger= */ false, /* negate= */ false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* Right key, wrong value → no match */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_MACHINE_TAG, "role=database", /* trigger= */ false, /* negate= */ false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* A plain (non-parameterized) tag still matches alongside key/value tags */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_MACHINE_TAG, "berlin", /* trigger= */ false, /* negate= */ false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* Negation against a key/value tag */ ASSERT_NOT_NULL((condition = condition_new(CONDITION_MACHINE_TAG, "role=database", /* trigger= */ false, /* negate= */ true))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_MACHINE_TAG, "role=webserver", /* trigger= */ false, /* negate= */ true))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* Conflicting values for the same key: graceful parsing keeps the last value and drops the rest, @@ -1643,20 +1644,20 @@ TEST(condition_test_machine_tag) { ASSERT_OK(write_string_file(f, "TAGS=\"env=staging:env=prod\"\n", WRITE_STRING_FILE_CREATE|WRITE_STRING_FILE_TRUNCATE)); ASSERT_NOT_NULL((condition = condition_new(CONDITION_MACHINE_TAG, "env=prod", /* trigger= */ false, /* negate= */ false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_MACHINE_TAG, "env=staging", /* trigger= */ false, /* negate= */ false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); /* Invalid key/value tags in the file are ignored, valid ones still match */ ASSERT_OK(write_string_file(f, "TAGS=\"bad-=x:role=good\"\n", WRITE_STRING_FILE_CREATE|WRITE_STRING_FILE_TRUNCATE)); ASSERT_NOT_NULL((condition = condition_new(CONDITION_MACHINE_TAG, "bad-=x", /* trigger= */ false, /* negate= */ false))); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_MACHINE_TAG, "role=good", /* trigger= */ false, /* negate= */ false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_OK(set_unset_env("SYSTEMD_ETC_MACHINE_INFO", saved, /* overwrite= */ true)); @@ -1670,83 +1671,83 @@ TEST(condition_test_psi) { return (void) log_notice("Pressure Stall Information (PSI) is not supported, skipping %s", __func__); ASSERT_NOT_NULL((condition = condition_new(CONDITION_MEMORY_PRESSURE, "", false, false))); - ASSERT_FAIL(condition_test(condition, environ)); + ASSERT_FAIL(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_PRESSURE, "sbarabau", false, false))); - ASSERT_FAIL(condition_test(condition, environ)); + ASSERT_FAIL(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_MEMORY_PRESSURE, "10%sbarabau", false, false))); - ASSERT_FAIL(condition_test(condition, environ)); + ASSERT_FAIL(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_PRESSURE, "10% sbarabau", false, false))); - ASSERT_FAIL(condition_test(condition, environ)); + ASSERT_FAIL(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_PRESSURE, "-10", false, false))); - ASSERT_FAIL(condition_test(condition, environ)); + ASSERT_FAIL(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_PRESSURE, "10%/10min", false, false))); - ASSERT_FAIL(condition_test(condition, environ)); + ASSERT_FAIL(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_PRESSURE, "10min/10%", false, false))); - ASSERT_FAIL(condition_test(condition, environ)); + ASSERT_FAIL(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_PRESSURE, "10% 5min", false, false))); - ASSERT_FAIL(condition_test(condition, environ)); + ASSERT_FAIL(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_PRESSURE, "/5min", false, false))); - ASSERT_FAIL(condition_test(condition, environ)); + ASSERT_FAIL(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_IO_PRESSURE, "10s / ", false, false))); - ASSERT_FAIL(condition_test(condition, environ)); + ASSERT_FAIL(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_MEMORY_PRESSURE, "100%", false, false))); - ASSERT_OK(condition_test(condition, environ)); + ASSERT_OK(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_MEMORY_PRESSURE, "0%", false, false))); - ASSERT_OK(condition_test(condition, environ)); + ASSERT_OK(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_MEMORY_PRESSURE, "0.0%", false, false))); - ASSERT_OK(condition_test(condition, environ)); + ASSERT_OK(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_PRESSURE, "100%", false, false))); - ASSERT_OK(condition_test(condition, environ)); + ASSERT_OK(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_PRESSURE, "0%", false, false))); - ASSERT_OK(condition_test(condition, environ)); + ASSERT_OK(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_PRESSURE, "0.0%", false, false))); - ASSERT_OK(condition_test(condition, environ)); + ASSERT_OK(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_PRESSURE, "0.01%", false, false))); - ASSERT_OK(condition_test(condition, environ)); + ASSERT_OK(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_PRESSURE, "0.0%/10sec", false, false))); - ASSERT_OK(condition_test(condition, environ)); + ASSERT_OK(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_PRESSURE, "100.0% / 1min", false, false))); - ASSERT_OK(condition_test(condition, environ)); + ASSERT_OK(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_IO_PRESSURE, "50.0% / 1min", false, false))); - ASSERT_OK(condition_test(condition, environ)); + ASSERT_OK(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); if (cg_is_available() <= 0) @@ -1762,27 +1763,27 @@ TEST(condition_test_psi) { return (void) log_notice("Requires the cgroup CPU controller, skipping %s", __func__); ASSERT_NOT_NULL((condition = condition_new(CONDITION_MEMORY_PRESSURE, " : / ", false, false))); - ASSERT_FAIL(condition_test(condition, environ)); + ASSERT_FAIL(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_PRESSURE, "hopefullythisisnotarealone.slice:100% / 10sec", false, false))); - ASSERT_OK_POSITIVE(condition_test(condition, environ)); + ASSERT_OK_POSITIVE(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_CPU_PRESSURE, "-.slice:100.0% / 1min", false, false))); - ASSERT_OK(condition_test(condition, environ)); + ASSERT_OK(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_MEMORY_PRESSURE, "-.slice:0.0%/5min", false, false))); - ASSERT_OK(condition_test(condition, environ)); + ASSERT_OK(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_MEMORY_PRESSURE, "-.slice:100.0%", false, false))); - ASSERT_OK(condition_test(condition, environ)); + ASSERT_OK(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); ASSERT_NOT_NULL((condition = condition_new(CONDITION_IO_PRESSURE, "-.slice:0.0%", false, false))); - ASSERT_OK(condition_test(condition, environ)); + ASSERT_OK(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); } @@ -1791,11 +1792,11 @@ TEST(condition_test_kernel_module_loaded) { int r; condition = ASSERT_NOT_NULL(condition_new(CONDITION_KERNEL_MODULE_LOADED, "", /* trigger= */ false, /* negate= */ false)); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); condition = ASSERT_NOT_NULL(condition_new(CONDITION_KERNEL_MODULE_LOADED, "..", /* trigger= */ false, /* negate= */ false)); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); if (access("/sys/module/", F_OK) < 0) @@ -1803,7 +1804,7 @@ TEST(condition_test_kernel_module_loaded) { FOREACH_STRING(m, "random", "vfat", "fat", "cec", "binfmt_misc", "binfmt-misc") { condition = ASSERT_NOT_NULL(condition_new(CONDITION_KERNEL_MODULE_LOADED, m, /* trigger= */ false, /* negate= */ false)); - r = condition_test(condition, environ); + r = condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM); ASSERT_OK(r); condition_free(condition); @@ -1811,7 +1812,7 @@ TEST(condition_test_kernel_module_loaded) { } condition = ASSERT_NOT_NULL(condition_new(CONDITION_KERNEL_MODULE_LOADED, "idefinitelydontexist", /* trigger= */ false, /* negate= */ false)); - ASSERT_OK_ZERO(condition_test(condition, environ)); + ASSERT_OK_ZERO(condition_test(condition, environ, RUNTIME_SCOPE_SYSTEM)); condition_free(condition); }