2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2026-09-30 14:55:16 +00:00

docs(test): document the BATS postscript sandbox

This commit is contained in:
Vinícius Ferrão
2026-09-25 12:49:09 -03:00
parent 76d8dfdd14
commit afa6e05789
2 changed files with 11 additions and 16 deletions
+11 -3
View File
@@ -10,9 +10,6 @@ The GitHub Actions `xcat_test` workflow runs this command after the Perl `.t`
unit tests. Use BATS for shell behavior that can be exercised from the source
tree without an installed xCAT, a live management node, or real services.
The existing `otherpkgs_upgrade_scope.t` remains in `unit/` for its structured
command and repository assertions. See its [sandbox prerequisites](../unit/README.md#postscript-sandbox-prerequisites).
Prefer sourcing an existing shell library or sourceable script and calling the
function under test. Keep reusable install-template helpers in
`xCAT-server/share/xcat/install/scripts/scriptlib`, and reusable postscript
@@ -22,3 +19,14 @@ commands so tests cannot write to the host.
Extraction helpers in `helpers/shell_source.bash` are only for legacy code that
cannot safely be sourced yet. Do not add Perl `.t` tests that grep shell source
when the behavior can be tested with BATS.
## Postscript sandbox prerequisites
`otherpkgs_upgrade_scope.bats` runs the complete postscript in a Linux filesystem
sandbox because it writes to `/etc/yum.repos.d`. It requires Bubblewrap, Bash,
GNU core utilities, and permission to create user namespaces. The CI workflow
installs Bubblewrap and enables those namespaces.
Missing prerequisites fail this test without stopping unrelated test files.
Non-Linux hosts report a skip. Set `TMPDIR` to a writable, executable filesystem
if the default temporary directory is mounted with `noexec`.
-13
View File
@@ -10,19 +10,6 @@ which calls `run_unit_tests()` in `github_action_xcat_test.pl`:
prove -r xCAT-test/unit
```
## Postscript sandbox prerequisites
`otherpkgs_upgrade_scope.t` runs the complete postscript in a Linux filesystem
sandbox. It requires Bubblewrap, Bash, GNU core utilities, and permission to create
user namespaces. The CI workflow installs Bubblewrap and enables those namespaces.
Missing prerequisites fail this test without stopping unrelated test files.
Non-Linux hosts report a skip. Set `TMPDIR` to a writable, executable filesystem
if the default temporary directory is mounted with `noexec`.
This test is an exception to the shell-test placement rule below. It stays in Perl
to compare structured command arguments and generated repository records with the
existing test helpers. It does not read or extract postscript source.
You can run exactly the same thing from a clean checkout:
```