diff options
| author | Leitwolf11 | 2026-11-05 18:30:13 +0300 |
|---|---|---|
| committer | Leitwolf11 | 2026-11-05 18:30:13 +0300 |
| commit | 89b4769c35986444a0297ad0806a584c7181c85c (patch) | |
| tree | 2ec3dcb30828ef3749c503eb58e401b918beae7e /src/Progmasoft/Runner/Options.cpp | |
| parent | 268698be92962247a21a86dda4de2d4267adcf8f (diff) | |
| download | catch3-89b4769c35986444a0297ad0806a584c7181c85c.tar.gz | |
Withhold secret-looking variables from the processes the runner starts
Workers and the other processes the runner starts copied its whole
environment, tokens and passwords included. ChildProcess::Start now
leaves out every variable whose name contains, in any case, TOKEN,
SECRET, PASSWORD, PASSWD, CREDENTIAL, API_KEY, APIKEY, PRIVATE_KEY or
ACCESS_KEY (IsSecretVariable), unless ChildOptions::keptEnvironment
names it; names compare without case on Windows.
--pass-env=NAME, repeatable, and "pass-env" in catch3.json keep a
variable for the tests. The runner itself still starts with the whole
environment, so code that runs before the first worker sees it;
docs/progmasoft-runner.md says so.
A runner test starts the shell's environment listing with a secret and
a plain variable set, sees only the plain one, and sees the secret once
it is kept.
Diffstat (limited to 'src/Progmasoft/Runner/Options.cpp')
| -rw-r--r-- | src/Progmasoft/Runner/Options.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/Progmasoft/Runner/Options.cpp b/src/Progmasoft/Runner/Options.cpp index 383ed68d..13cf4be7 100644 --- a/src/Progmasoft/Runner/Options.cpp +++ b/src/Progmasoft/Runner/Options.cpp @@ -361,6 +361,17 @@ namespace Progmasoft::Catch3::Runner options.isolate = true; return Status::Ok(); }}, + {"pass-env", + '\0', + Takes::kValue, + "NAME", + "Running", + "give the tests the variable NAME, which they do not get " + "because its name looks like a secret (repeatable)", + [](Options &options, const std::optional<std::string> &value) { + options.passedEnvironment.push_back(*value); + return Status::Ok(); + }}, {"timeout", '\0', Takes::kValue, |