testutils.c likes to print summaries after a test completes, including if it failed. But if the test outright exit()s, this summary is skipped. Enforce that we return instead of exit. * cfg.mk (sc_prohibit_exit_tests): New syntax check. * tests/commandhelper.c (main): Fix offenders. * tests/qemumonitorjsontest.c (mymain): Likewise. * tests/seclabeltest.c (main): Likewise. * tests/securityselinuxlabeltest.c (mymain): Likewise. * tests/securityselinuxtest.c (mymain): Likewise. * tests/testutils.h (VIRT_TEST_MAIN_PRELOAD): Likewise. * tests/testutils.c (virtTestMain): Likewise. (virtTestCaptureProgramOutput): Use symbolic name. --- cfg.mk | 7 +++++++ tests/commandhelper.c | 7 +++---- tests/qemumonitorjsontest.c | 8 +++----- tests/seclabeltest.c | 8 ++++---- tests/securityselinuxlabeltest.c | 6 +++--- tests/securityselinuxtest.c | 6 +++--- tests/testutils.c | 8 ++++---- tests/testutils.h | 4 ++-- 8 files changed, 29 insertions(+), 25 deletions(-) diff --git a/cfg.mk b/cfg.mk index d56f7e3..b95a90b 100644 --- a/cfg.mk +++ b/cfg.mk @@ -709,6 +709,13 @@ sc_prohibit_semicolon_at_eol_in_python: halt="Don't use semicolon at eol in python files" \ $(_sc_search_regexp) +# mymain() in test files should use return, not exit, for nicer output +sc_prohibit_exit_in_tests: + @prohibit='\<exit *\(' \ + in_vc_files='^tests/' \ + halt='use return, not exit(), in tests' \ + $(_sc_search_regexp) + # We don't use this feature of maint.mk. prev_version_file = /dev/null diff --git a/tests/commandhelper.c b/tests/commandhelper.c index 39f3c53..92f031f 100644 --- a/tests/commandhelper.c +++ b/tests/commandhelper.c @@ -1,7 +1,7 @@ /* * commandhelper.c: Auxiliary program for commandtest * - * Copyright (C) 2010-2012 Red Hat, Inc. + * Copyright (C) 2010-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -71,9 +71,8 @@ int main(int argc, char **argv) { origenv++; } - if (VIR_ALLOC_N(newenv, n) < 0) { - exit(EXIT_FAILURE); - } + if (VIR_ALLOC_N(newenv, n) < 0) + return EXIT_FAILURE; origenv = environ; n = i = 0; diff --git a/tests/qemumonitorjsontest.c b/tests/qemumonitorjsontest.c index e2f8cb1..fa5ef7c 100644 --- a/tests/qemumonitorjsontest.c +++ b/tests/qemumonitorjsontest.c @@ -448,11 +448,9 @@ mymain(void) return EXIT_AM_SKIP; #endif - if (virThreadInitialize() < 0) - exit(EXIT_FAILURE); - - if (!(caps = testQemuCapsInit())) - exit(EXIT_FAILURE); + if (virThreadInitialize() < 0 || + !(caps = testQemuCapsInit())) + return EXIT_FAILURE; virEventRegisterDefaultImpl(); diff --git a/tests/seclabeltest.c b/tests/seclabeltest.c index 93b4902..cd34b6b 100644 --- a/tests/seclabeltest.c +++ b/tests/seclabeltest.c @@ -15,12 +15,12 @@ main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) const char *doi, *model; if (virThreadInitialize() < 0) - exit(EXIT_FAILURE); + return EXIT_FAILURE; mgr = virSecurityManagerNew(NULL, "QEMU", false, true, false); if (mgr == NULL) { fprintf(stderr, "Failed to start security driver"); - exit(EXIT_FAILURE); + return EXIT_FAILURE; } model = virSecurityManagerGetModel(mgr); @@ -28,7 +28,7 @@ main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) { fprintf(stderr, "Failed to copy secModel model: %s", strerror(errno)); - exit(EXIT_FAILURE); + return EXIT_FAILURE; } doi = virSecurityManagerGetDOI(mgr); @@ -36,7 +36,7 @@ main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) { fprintf(stderr, "Failed to copy secModel DOI: %s", strerror(errno)); - exit(EXIT_FAILURE); + return EXIT_FAILURE; } virObjectUnref(mgr); diff --git a/tests/securityselinuxlabeltest.c b/tests/securityselinuxlabeltest.c index 7445ab6..2454772 100644 --- a/tests/securityselinuxlabeltest.c +++ b/tests/securityselinuxlabeltest.c @@ -317,15 +317,15 @@ mymain(void) if (!(mgr = virSecurityManagerNew("selinux", "QEMU", false, true, false))) { virErrorPtr err = virGetLastError(); if (err->code == VIR_ERR_CONFIG_UNSUPPORTED) - exit(EXIT_AM_SKIP); + return EXIT_AM_SKIP; fprintf(stderr, "Unable to initialize security driver: %s\n", err->message); - exit(EXIT_FAILURE); + return EXIT_FAILURE; } if ((caps = testQemuCapsInit()) == NULL) - exit(EXIT_FAILURE); + return EXIT_FAILURE; #define DO_TEST_LABELING(name) \ if (virtTestRun("Labelling " # name, 1, testSELinuxLabeling, name) < 0) \ diff --git a/tests/securityselinuxtest.c b/tests/securityselinuxtest.c index 0dff872..ba00010 100644 --- a/tests/securityselinuxtest.c +++ b/tests/securityselinuxtest.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2012 Red Hat, Inc. + * Copyright (C) 2011-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -274,11 +274,11 @@ mymain(void) if (!(mgr = virSecurityManagerNew("selinux", "QEMU", false, true, false))) { virErrorPtr err = virGetLastError(); if (err->code == VIR_ERR_CONFIG_UNSUPPORTED) - exit(EXIT_AM_SKIP); + return EXIT_AM_SKIP; fprintf(stderr, "Unable to initialize security driver: %s\n", err->message); - exit(EXIT_FAILURE); + return EXIT_FAILURE; } #define DO_TEST_GEN_LABEL(desc, pidcon, \ diff --git a/tests/testutils.c b/tests/testutils.c index 7b2ea51..ea46c09 100644 --- a/tests/testutils.c +++ b/tests/testutils.c @@ -317,7 +317,7 @@ virtTestCaptureProgramOutput(const char *const argv[], char **buf, int maxlen) virtTestCaptureProgramExecChild(argv, pipefd[1]); VIR_FORCE_CLOSE(pipefd[1]); - _exit(1); + _exit(EXIT_FAILURE); case -1: return -1; @@ -586,7 +586,7 @@ int virtTestMain(int argc, abs_srcdir_cleanup = true; } if (!abs_srcdir) - exit(EXIT_AM_HARDFAIL); + return EXIT_AM_HARDFAIL; progname = last_component(argv[0]); if (STRPREFIX(progname, "lt-")) @@ -603,13 +603,13 @@ int virtTestMain(int argc, if (virThreadInitialize() < 0 || virErrorInitialize() < 0) - return 1; + return EXIT_FAILURE; virLogSetFromEnv(); if (!getenv("LIBVIRT_DEBUG") && !virLogGetNbOutputs()) { if (virLogDefineOutput(virtTestLogOutput, virtTestLogClose, &testLog, VIR_LOG_DEBUG, VIR_LOG_TO_STDERR, NULL, 0) < 0) - return 1; + return EXIT_FAILURE; } #if TEST_OOM diff --git a/tests/testutils.h b/tests/testutils.h index 581bd3e..546c9ae 100644 --- a/tests/testutils.h +++ b/tests/testutils.h @@ -1,7 +1,7 @@ /* * utils.c: test utils * - * Copyright (C) 2005, 2008-2012 Red Hat, Inc. + * Copyright (C) 2005, 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -78,7 +78,7 @@ int virtTestMain(int argc, if (virAsprintf(&newenv, "%s%s%s", preload ? preload : "", \ preload ? ":" : "", lib) < 0) { \ perror("virAsprintf"); \ - exit(EXIT_FAILURE); \ + return EXIT_FAILURE; \ } \ setenv("LD_PRELOAD", newenv, 1); \ execv(argv[0], argv); \ -- 1.8.1.2 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list