test(script): names, arguments and exit codes, in process and by CLI
RunScript on hand-built configurations: the named script alone runs, with the project, the project directory and the arguments exactly as given; its return value comes back whole from 0 to 255 and as 1 outside that; a script that throws exits 1. A project without scripts, a duplicate, an untypeable name, a missing callback and an unknown name all fail without running anything. ctx.Run returns the command's exit code and 128+signal for a killed one, and ShellQuote carries quotes, spaces and expansions through sh intact. Then the same through Run() with a fixture project, because the parsing is where this goes wrong. `run record a --help -v clean --debug --version run` must hand all seven words to the script, leave the one project arg that stood before `run` alone, and not delete the staged bin/ and build/. `run clean` and `run help` look for scripts of those names. Moving the two capture branches below the verbs in the parse loop fails this test. The command-line half needs the installed module sources and is skipped without them, but only when the in-process half reported no failure. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
561398013c
commit
8d031a1dba
3 changed files with 271 additions and 0 deletions
|
|
@ -152,6 +152,8 @@ extern "C" Configuration CrafterBuildProject(std::span<const std::string_view> a
|
|||
.LinkFlag("-Wl,--export-dynamic").LinkFlag("-ldl");
|
||||
cfg.AddTest("ProjectDependency").Dependencies({ CrafterBuildLib.get() })
|
||||
.LinkFlag("-Wl,--export-dynamic").LinkFlag("-ldl");
|
||||
cfg.AddTest("Script").Dependencies({ CrafterBuildLib.get() })
|
||||
.LinkFlag("-Wl,--export-dynamic").LinkFlag("-ldl");
|
||||
cfg.AddTest("ConcurrentDependencyReset").Dependencies({ CrafterBuildLib.get() });
|
||||
cfg.AddTest("Lint").Dependencies({ CrafterBuildLib.get() });
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue