1 Star 0 Fork 48

maqi/systemd

forked from src-anolis-os/systemd 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
0382-test-execute-allow-filtering-test-cases-by-pattern.patch 6.12 KB
一键复制 编辑 原始数据 按行查看 历史
geliwei 提交于 2021-06-16 16:46 . update to systemd-239-45.el8.src.rpm
From 9beae637a919326ddc072c4dd53cb66e80273c8f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Date: Fri, 15 Mar 2019 13:42:55 +0100
Subject: [PATCH] test-execute: allow filtering test cases by pattern
When debugging failure in one of the cases, it's annoying to have to wade
through the output from all the other cases. Let's allow picking select
cases.
(cherry picked from commit 9efb96315ae502dabeb94ab35816ea8955563b7a)
Related: #1737283
---
src/test/test-execute.c | 104 ++++++++++++++++++++++------------------
1 file changed, 58 insertions(+), 46 deletions(-)
diff --git a/src/test/test-execute.c b/src/test/test-execute.c
index d88de52d2a..d077674efc 100644
--- a/src/test/test-execute.c
+++ b/src/test/test-execute.c
@@ -659,8 +659,15 @@ static void test_exec_standardoutput_append(Manager *m) {
test(m, "exec-standardoutput-append.service", 0, CLD_EXITED);
}
-static int run_tests(UnitFileScope scope, const test_function_t *tests) {
- const test_function_t *test = NULL;
+typedef struct test_entry {
+ test_function_t f;
+ const char *name;
+} test_entry;
+
+#define entry(x) {x, #x}
+
+static int run_tests(UnitFileScope scope, const test_entry tests[], char **patterns) {
+ const test_entry *test = NULL;
_cleanup_(manager_freep) Manager *m = NULL;
int r;
@@ -674,55 +681,60 @@ static int run_tests(UnitFileScope scope, const test_function_t *tests) {
assert_se(r >= 0);
assert_se(manager_startup(m, NULL, NULL) >= 0);
- for (test = tests; test && *test; test++)
- (*test)(m);
+ for (test = tests; test && test->f; test++)
+ if (strv_fnmatch_or_empty(patterns, test->name, FNM_NOESCAPE))
+ test->f(m);
+ else
+ log_info("Skipping %s because it does not match any pattern.", test->name);
return 0;
}
+
int main(int argc, char *argv[]) {
_cleanup_(rm_rf_physical_and_freep) char *runtime_dir = NULL;
- static const test_function_t user_tests[] = {
- test_exec_basic,
- test_exec_ambientcapabilities,
- test_exec_bindpaths,
- test_exec_capabilityboundingset,
- test_exec_cpuaffinity,
- test_exec_environment,
- test_exec_environmentfile,
- test_exec_group,
- test_exec_ignoresigpipe,
- test_exec_inaccessiblepaths,
- test_exec_ioschedulingclass,
- test_exec_oomscoreadjust,
- test_exec_passenvironment,
- test_exec_personality,
- test_exec_privatedevices,
- test_exec_privatenetwork,
- test_exec_privatetmp,
- test_exec_protectkernelmodules,
- test_exec_readonlypaths,
- test_exec_readwritepaths,
- test_exec_restrictnamespaces,
- test_exec_runtimedirectory,
- test_exec_standardinput,
- test_exec_standardoutput,
- test_exec_standardoutput_append,
- test_exec_supplementarygroups,
- test_exec_systemcallerrornumber,
- test_exec_systemcallfilter,
- test_exec_temporaryfilesystem,
- test_exec_umask,
- test_exec_unsetenvironment,
- test_exec_user,
- test_exec_workingdirectory,
- NULL,
+ _cleanup_free_ char *test_execute_path = NULL;
+ static const test_entry user_tests[] = {
+ entry(test_exec_basic),
+ entry(test_exec_ambientcapabilities),
+ entry(test_exec_bindpaths),
+ entry(test_exec_capabilityboundingset),
+ entry(test_exec_cpuaffinity),
+ entry(test_exec_environment),
+ entry(test_exec_environmentfile),
+ entry(test_exec_group),
+ entry(test_exec_ignoresigpipe),
+ entry(test_exec_inaccessiblepaths),
+ entry(test_exec_ioschedulingclass),
+ entry(test_exec_oomscoreadjust),
+ entry(test_exec_passenvironment),
+ entry(test_exec_personality),
+ entry(test_exec_privatedevices),
+ entry(test_exec_privatenetwork),
+ entry(test_exec_privatetmp),
+ entry(test_exec_protectkernelmodules),
+ entry(test_exec_readonlypaths),
+ entry(test_exec_readwritepaths),
+ entry(test_exec_restrictnamespaces),
+ entry(test_exec_runtimedirectory),
+ entry(test_exec_standardinput),
+ entry(test_exec_standardoutput),
+ entry(test_exec_standardoutput_append),
+ entry(test_exec_supplementarygroups),
+ entry(test_exec_systemcallerrornumber),
+ entry(test_exec_systemcallfilter),
+ entry(test_exec_temporaryfilesystem),
+ entry(test_exec_umask),
+ entry(test_exec_unsetenvironment),
+ entry(test_exec_user),
+ entry(test_exec_workingdirectory),
+ {},
};
- static const test_function_t system_tests[] = {
- test_exec_dynamicuser,
- test_exec_specifier,
- test_exec_systemcallfilter_system,
- NULL,
+ static const test_entry system_tests[] = {
+ entry(test_exec_dynamicuser),
+ entry(test_exec_specifier),
+ entry(test_exec_systemcallfilter_system),
+ {},
};
int r;
@@ -759,9 +771,9 @@ int main(int argc, char *argv[]) {
assert_se(unsetenv("VAR2") == 0);
assert_se(unsetenv("VAR3") == 0);
- r = run_tests(UNIT_FILE_USER, user_tests);
+ r = run_tests(UNIT_FILE_USER, user_tests, argv + 1);
if (r != 0)
return r;
- return run_tests(UNIT_FILE_SYSTEM, system_tests);
+ return run_tests(UNIT_FILE_SYSTEM, system_tests, argv + 1);
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/maqi77/systemd.git
git@gitee.com:maqi77/systemd.git
maqi77
systemd
systemd
a8

搜索帮助