From 2ee837a68ca31c0a29ecc2447999ffa271a7a4fd Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Mon, 8 Jun 2020 12:32:52 +0200 Subject: [PATCH] sysinfotest: Dissolve sysinfotest_run() in testSysinfo() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There is no real need to have two separate functions. They can be merged together which not only saves couple of lines, but prepares the structure of the code for future expansion. See next commits. Signed-off-by: Michal Privoznik Reviewed-by: Daniel P. Berrangé --- tests/sysinfotest.c | 70 ++++++++++++++------------------------------- 1 file changed, 22 insertions(+), 48 deletions(-) diff --git a/tests/sysinfotest.c b/tests/sysinfotest.c index 4807c5b1ba..558dd60294 100644 --- a/tests/sysinfotest.c +++ b/tests/sysinfotest.c @@ -37,25 +37,33 @@ #define VIR_FROM_THIS VIR_FROM_NONE struct testSysinfoData { + const char *name; /* test name, also base name for result files */ virSysinfoDefPtr (*func)(void); /* sysinfo gathering function */ - char *decoder; /* name of dmi decoder binary/script */ - char *sysinfo; /* name of /proc/sysinfo substitute file */ - char *cpuinfo; /* name of /proc/cpuinfo substitute file */ - char *expected; /* (required) file containing output of virSysinfoFormat */ + const char *decoder; /* name of dmi decoder binary/script */ }; static int testSysinfo(const void *data) { + const struct testSysinfoData *testdata = data; const char *sysfsActualData; g_auto(virSysinfoDefPtr) ret = NULL; g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER; - const struct testSysinfoData *testdata = data; + g_autofree char *sysinfo = NULL; + g_autofree char *cpuinfo = NULL; + g_autofree char *expected = NULL; + g_autofree char *decoder = NULL; - virSysinfoSetup(testdata->decoder, testdata->sysinfo, testdata->cpuinfo); + sysinfo = g_strdup_printf("%s/sysinfodata/%ssysinfo.data", abs_srcdir, testdata->name); + cpuinfo = g_strdup_printf("%s/sysinfodata/%scpuinfo.data", abs_srcdir, testdata->name); + expected = g_strdup_printf("%s/sysinfodata/%ssysinfo.expect", abs_srcdir, testdata->name); - if (!testdata->expected || - !(ret = testdata->func())) + if (testdata->decoder) + decoder = g_strdup_printf("%s/%s", abs_srcdir, testdata->decoder); + + virSysinfoSetup(decoder, sysinfo, cpuinfo); + + if (!(ret = testdata->func())) return -1; if (virSysinfoFormat(&buf, ret) < 0) @@ -64,50 +72,16 @@ testSysinfo(const void *data) if (!(sysfsActualData = virBufferCurrentContent(&buf))) return -1; - return virTestCompareToFile(sysfsActualData, testdata->expected); + return virTestCompareToFile(sysfsActualData, expected); } -static int -sysinfotest_run(const char *test, - virSysinfoDefPtr (*func)(void), - const char *decoder, - const char *sysinfo, - const char *cpuinfo, - const char *expected) -{ - struct testSysinfoData testdata = { 0 }; - int ret = EXIT_FAILURE; - - testdata.func = func; - - if (decoder) - testdata.decoder = g_strdup_printf("%s/%s", abs_srcdir, decoder); - if (sysinfo) - testdata.sysinfo = g_strdup_printf("%s/%s", abs_srcdir, sysinfo); - if (cpuinfo) - testdata.cpuinfo = g_strdup_printf("%s/%s", abs_srcdir, cpuinfo); - if (expected) - testdata.expected = g_strdup_printf("%s/%s", abs_srcdir, expected); - - if (virTestRun(test, testSysinfo, &testdata) < 0) - goto error; - - ret = EXIT_SUCCESS; - - error: - VIR_FREE(testdata.decoder); - VIR_FREE(testdata.sysinfo); - VIR_FREE(testdata.cpuinfo); - VIR_FREE(testdata.expected); - return ret; -} #define TEST_FULL(name, func, decoder) \ - if (sysinfotest_run(name " sysinfo", func, decoder, \ - "/sysinfodata/" name "sysinfo.data", \ - "/sysinfodata/" name "cpuinfo.data", \ - "/sysinfodata/" name "sysinfo.expect") != EXIT_SUCCESS) \ - ret = EXIT_FAILURE + do { \ + struct testSysinfoData data = { name, func, decoder }; \ + if (virTestRun(name " sysinfo", testSysinfo, &data) < 0) \ + ret = EXIT_FAILURE; \ + } while (0) #define TEST(name, func) \