The site table has two attributes for the same directory and only one of them is covered: nothing pins what xcatdsklspost appends to mypostscript for site.cleanupdiskfullxcatpost, on the path every updatenode run takes. Drive append_xcatpost_cleanup against a scratch /xcatpost, run the mypostscript it writes, and assert on the directory that comes back: the postscripts are gone after a run that succeeds, updateflag.awk stays, and a run that fails keeps everything. Add refute_grep to the helpers, because a "! grep" line cannot fail a bats test unless it is the last line of one. Three of the six tests fail on this commit. xcatdsklspost reads CLEANUPXCATPOST and never reads CLEANUPDISKFULLXCATPOST. Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
xCAT-test/bats
Shell-script unit tests live here and run with:
bats -r xCAT-test/bats
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.
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
helpers in xCAT/postscripts/xcatlib.sh. Use scratch directories and shadowed
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.