Fix exit code of --help and --version, and test them in CI
Corrects prior regression which caused ERROR output and exit code of 1.
This commit is contained in:
parent
a2459c7d35
commit
d38d76d039
9 changed files with 24 additions and 4 deletions
2
.github/workflows/linux_builds.yml
vendored
2
.github/workflows/linux_builds.yml
vendored
|
@ -127,6 +127,8 @@ jobs:
|
||||||
- name: Unit tests
|
- name: Unit tests
|
||||||
if: ${{ matrix.tests }}
|
if: ${{ matrix.tests }}
|
||||||
run: |
|
run: |
|
||||||
|
${{ matrix.bin }} --version
|
||||||
|
${{ matrix.bin }} --help
|
||||||
${{ matrix.bin }} --test --headless
|
${{ matrix.bin }} --test --headless
|
||||||
|
|
||||||
# Check class reference
|
# Check class reference
|
||||||
|
|
2
.github/workflows/macos_builds.yml
vendored
2
.github/workflows/macos_builds.yml
vendored
|
@ -58,6 +58,8 @@ jobs:
|
||||||
- name: Unit tests
|
- name: Unit tests
|
||||||
if: ${{ matrix.tests }}
|
if: ${{ matrix.tests }}
|
||||||
run: |
|
run: |
|
||||||
|
${{ matrix.bin }} --version
|
||||||
|
${{ matrix.bin }} --help
|
||||||
${{ matrix.bin }} --test
|
${{ matrix.bin }} --test
|
||||||
|
|
||||||
- name: Prepare artifact
|
- name: Prepare artifact
|
||||||
|
|
2
.github/workflows/windows_builds.yml
vendored
2
.github/workflows/windows_builds.yml
vendored
|
@ -64,6 +64,8 @@ jobs:
|
||||||
- name: Unit tests
|
- name: Unit tests
|
||||||
if: ${{ matrix.tests }}
|
if: ${{ matrix.tests }}
|
||||||
run: |
|
run: |
|
||||||
|
${{ matrix.bin }} --version
|
||||||
|
${{ matrix.bin }} --help
|
||||||
${{ matrix.bin }} --test
|
${{ matrix.bin }} --test
|
||||||
|
|
||||||
- name: Prepare artifact
|
- name: Prepare artifact
|
||||||
|
|
|
@ -691,12 +691,12 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
|
||||||
if (I->get() == "-h" || I->get() == "--help" || I->get() == "/?") { // display help
|
if (I->get() == "-h" || I->get() == "--help" || I->get() == "/?") { // display help
|
||||||
|
|
||||||
show_help = true;
|
show_help = true;
|
||||||
exit_code = OK;
|
exit_code = ERR_HELP; // Hack to force an early exit in `main()` with a success code.
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
} else if (I->get() == "--version") {
|
} else if (I->get() == "--version") {
|
||||||
print_line(get_full_version_string());
|
print_line(get_full_version_string());
|
||||||
exit_code = OK;
|
exit_code = ERR_HELP; // Hack to force an early exit in `main()` with a success code.
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
} else if (I->get() == "-v" || I->get() == "--verbose") { // verbose output
|
} else if (I->get() == "-v" || I->get() == "--verbose") { // verbose output
|
||||||
|
|
|
@ -157,6 +157,7 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_setup(JNIEnv *env, jc
|
||||||
memfree(cmdline);
|
memfree(cmdline);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Note: --help and --version return ERR_HELP, but this should be translated to 0 if exit codes are propagated.
|
||||||
if (err != OK) {
|
if (err != OK) {
|
||||||
return; // should exit instead and print the error
|
return; // should exit instead and print the error
|
||||||
}
|
}
|
||||||
|
|
|
@ -112,7 +112,10 @@ int iphone_main(int argc, char **argv, String data_dir, String cache_dir) {
|
||||||
|
|
||||||
Error err = Main::setup(fargv[0], argc - 1, &fargv[1], false);
|
Error err = Main::setup(fargv[0], argc - 1, &fargv[1], false);
|
||||||
printf("setup %i\n", err);
|
printf("setup %i\n", err);
|
||||||
if (err != OK) {
|
|
||||||
|
if (err == ERR_HELP) { // Returned by --help and --version, so success.
|
||||||
|
return 0;
|
||||||
|
} else if (err != OK) {
|
||||||
return 255;
|
return 255;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -61,6 +61,10 @@ int main(int argc, char *argv[]) {
|
||||||
Error err = Main::setup(argv[0], argc - 1, &argv[1]);
|
Error err = Main::setup(argv[0], argc - 1, &argv[1]);
|
||||||
if (err != OK) {
|
if (err != OK) {
|
||||||
free(cwd);
|
free(cwd);
|
||||||
|
|
||||||
|
if (err == ERR_HELP) { // Returned by --help and --version, so success.
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
return 255;
|
return 255;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -83,7 +83,9 @@ int main(int argc, char **argv) {
|
||||||
err = Main::setup(argv[0], argc - first_arg, &argv[first_arg]);
|
err = Main::setup(argv[0], argc - first_arg, &argv[first_arg]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (err != OK) {
|
if (err == ERR_HELP) { // Returned by --help and --version, so success.
|
||||||
|
return 0;
|
||||||
|
} else if (err != OK) {
|
||||||
return 255;
|
return 255;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -166,6 +166,10 @@ int widechar_main(int argc, wchar_t **argv) {
|
||||||
delete[] argv_utf8[i];
|
delete[] argv_utf8[i];
|
||||||
}
|
}
|
||||||
delete[] argv_utf8;
|
delete[] argv_utf8;
|
||||||
|
|
||||||
|
if (err == ERR_HELP) { // Returned by --help and --version, so success.
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
return 255;
|
return 255;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue