1
0
mirror of https://github.com/upx/upx.git synced 2025-08-07 22:46:51 +08:00

src: improve error message when using doctest options like '--dt-help'; add

doctest info to help.cpp
This commit is contained in:
Markus F.X.J. Oberhumer
2022-10-24 23:00:12 +02:00
parent 98fedef1a1
commit 983eb6d676
4 changed files with 22 additions and 10 deletions

View File

@ -741,8 +741,8 @@ unsigned membuffer_get_size(MemBuffer &mb);
// util/dt_check.cpp
void upx_compiler_sanity_check();
bool upx_doctest_check();
bool upx_doctest_check(int argc, char **argv);
int upx_doctest_check();
int upx_doctest_check(int argc, char **argv);
// main.cpp
extern const char *progname;

View File

@ -407,6 +407,9 @@ void show_version(bool one_line)
v = upx_lzma_version_string();
if (v != nullptr && v[0])
fprintf(fp, "LZMA SDK version %s\n", v);
#endif
#if !defined(DOCTEST_CONFIG_DISABLE)
fprintf(fp, "doctest C++ testing framework version %s\n", DOCTEST_VERSION_STR);
#endif
fprintf(fp, "Copyright (C) 1996-2022 Markus Franz Xaver Johannes Oberhumer\n");
fprintf(fp, "Copyright (C) 1996-2022 Laszlo Molnar\n");
@ -417,6 +420,9 @@ void show_version(bool one_line)
#endif
#if (WITH_LZMA)
fprintf(fp, "Copyright (C) 1999" "-2006 Igor Pavlov\n");
#endif
#if !defined(DOCTEST_CONFIG_DISABLE)
fprintf(fp, "Copyright (C) 2016" "-2021 Viktor Kirilov\n");
#endif
fprintf(fp, "UPX comes with ABSOLUTELY NO WARRANTY; for details type '%s -L'.\n", progname);
}

View File

@ -1159,8 +1159,12 @@ int upx_main(int argc, char *argv[]) {
argv0 = argv[0];
upx_compiler_sanity_check();
if (!upx_doctest_check(argc, argv)) {
fprintf(stderr, "%s: internal error: doctest failed\n", argv0);
int dt_res = upx_doctest_check(argc, argv);
if (dt_res != 0) {
if (dt_res == 2)
fprintf(stderr, "%s: doctest requested program exit; Stop.\n", argv0);
else
fprintf(stderr, "%s: internal error: doctest failed\n", argv0);
e_exit(EXIT_INIT);
}

View File

@ -31,14 +31,14 @@
// upx_doctest_check()
**************************************************************************/
bool upx_doctest_check(int argc, char **argv) {
int upx_doctest_check(int argc, char **argv) {
#if defined(DOCTEST_CONFIG_DISABLE)
UNUSED(argc);
UNUSED(argv);
#else
const char *e = getenv("UPX_DEBUG_DOCTEST_DISABLE");
if (e && e[0] && strcmp(e, "0") != 0)
return true;
return 0;
bool minimal = true; // only show failing tests
bool duration = false; // show timings
bool success = false; // show all tests
@ -68,13 +68,15 @@ bool upx_doctest_check(int argc, char **argv) {
if (argc > 0 && argv != nullptr)
context.applyCommandLine(argc, argv);
int r = context.run();
if (context.shouldExit() || r != 0)
return false;
if (r != 0)
return 1;
if (context.shouldExit())
return 2;
#endif // DOCTEST_CONFIG_DISABLE
return true;
return 0;
}
bool upx_doctest_check() { return upx_doctest_check(0, nullptr); }
int upx_doctest_check() { return upx_doctest_check(0, nullptr); }
/*************************************************************************
// compile-time checks