Skip to content

Commit 06d6d85

Browse files
Document safe TestData formatting
1 parent ea01935 commit 06d6d85

1 file changed

Lines changed: 9 additions & 1 deletion

File tree

README.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,8 @@ workflow. It is one JSON object with two maps, so everything the tests need is v
418418
Values under `secrets` are masked in the logs; values under `variables` are not. Build it in the
419419
calling workflow and pass it through the `secrets:` block (so the whole blob is masked). Reference each
420420
secret directly as `"${{ secrets.<name> }}"` and each variable as `${{ toJSON(vars.<name>) }}`. A
421-
folded `>-` scalar keeps the source readable while producing a single-line value:
421+
folded `>-` scalar keeps the source readable while producing a single-line value, as long as the JSON
422+
content lines stay at the same indentation level:
422423

423424
```yaml
424425
jobs:
@@ -450,9 +451,16 @@ Notes:
450451
base64-encode a multi-line or special-character secret and decode it in the test (for example
451452
`[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($env:MY_KEY_B64))`).
452453
- Variables use `toJSON(vars.<name>)` so any characters are JSON-encoded safely; they are never masked.
454+
You can use the same quoted direct form as secrets (`"${{ vars.<name> }}"`) only for simple values
455+
that do not contain `"`, `\` or newlines.
453456
- Provide `TestData` as a single-line value (the folded `>-` block above does this). Avoid a literal
454457
`|` block: GitHub registers every line of a multi-line secret as its own mask, which over-masks
455458
unrelated log output.
459+
- Do not pretty-print `TestData` with nested indentation. YAML preserves more-indented lines inside a
460+
folded scalar, so a fully formatted JSON object can still become a multi-line secret. That makes
461+
GitHub register each line as its own mask, including brace-only lines such as `{`, `}` or `},`, which
462+
can turn unrelated log output into `***`. Keep the compact form above, or keep every JSON content
463+
line at the same indentation level.
456464
- Omit `TestData` entirely when the module needs no secrets or variables. Include only the map you
457465
need (just `secrets`, just `variables`, or both).
458466
- Because `secrets: inherit` is not used, only the values you list are ever exposed.

0 commit comments

Comments
 (0)