mirror of
https://github.com/token2/snapd.git
synced 2026-03-13 11:15:47 -07:00
Python 3 should be available everywhere at this point. Try dropping the wrapper. Signed-off-by: Maciej Borzecki <maciej.zenon.borzecki@canonical.com>
116 lines
4.2 KiB
Plaintext
116 lines
4.2 KiB
Plaintext
ONCE THINGS ARE MADE UNIFORM THIS SHOULD BECOME A README WITHOUT THE TODO PART!
|
|
|
|
This "tools" directory collects useful utility commands that can be
|
|
used in our spread test suites. (They are separate from the shell
|
|
function libraries *.sh in the level above.)
|
|
|
|
Commands here should have names that clarify their purpose, longish
|
|
names using '-' as word separator are expected. Commands that take
|
|
themselves a full command to execute should usually end in '-do'.
|
|
|
|
The commands might take one or multiple subcommands themselves if
|
|
meaningful, subcommands should also use '-' as internal word
|
|
separator.
|
|
|
|
If a subcommand executes other commands it should usually be called
|
|
"exec".
|
|
|
|
All the commands invoked without arguments should either do something
|
|
informative/non-destructive or print usage.
|
|
|
|
All the commands should support at least a -h help option.
|
|
|
|
To invoke a command here tests can do "$TESTSTOOLS"/cmd.
|
|
|
|
Commands that are used very often or that are particularly useful to
|
|
debug at a spread -debug shell prompt can be promoted to be on the
|
|
PATH during tests, if an acceptable name can be found for them.
|
|
|
|
This is done by putting symlinks to here from tests/bin which itself
|
|
will be on the PATH.
|
|
|
|
Commands expected to be on the PATH should follow more specific naming
|
|
conventions, the name should either hint at testing or trade that off
|
|
for brevity, but only when appropriate:
|
|
|
|
* really frequently used commands can have short/pithy names (not, retry...)
|
|
|
|
* commands that manage or deal with cross-test/cross-task state should be
|
|
prefixed with "tests." (tests.session)
|
|
|
|
* otherwise the command should take some form of suffix like ".query", ".check"
|
|
that hints at observing, checking the system
|
|
|
|
In general if none of these apply they should continue to be invoked
|
|
via $TESTSTOOLS, or possibly have a tests/lib/*.sh wrapping them if
|
|
appropriate.
|
|
|
|
TODO:
|
|
|
|
[done] rename tests/lib/bin to tests/lib/tools, define TESTSTOOLS in
|
|
spread.yaml pointing at it
|
|
|
|
[done] create tests/bin, have ultimately this on the PATH and not tools:
|
|
drop tests/lib/tools from PATH in spread.yaml and debian/tests/integrationtests
|
|
|
|
symlinks and renames (plus fixes):
|
|
|
|
[done] tests/bin/MATCH -> tests/lib/tools/MATCH
|
|
[done] tests/bin/REBOOT -> tests/lib/tools/REBOOT
|
|
[done] tests/bin/not -> tests/lib/tools/not
|
|
[done] tests/bin/retry -> tests/lib/tools/retry (was retry-tool)
|
|
|
|
[done] tests/bin/tests.session -> tests/lib/tools/tests.session (was session-tool)
|
|
[done] fix to have -h
|
|
[done] convert --ACTION into subcommands
|
|
[done] require "exec" subcommand to execute a command
|
|
|
|
[done] tests/lib/tools/memory-observe-do (was memory-tool)
|
|
[done] tests/lib/tools/version-compare (was version-tool)
|
|
|
|
[done] tests/bin/mountinfo.query -> tests/lib/tools/mountinfo.query (was mountinfo-tool)
|
|
(we might not do this and keep just tests/lib/tools/mountinfo and call it the long way)
|
|
|
|
[done] tests/bin/snapd.tool -> tests/lib/tools/snapd.tool (was snap-tool)
|
|
[done] fix no args
|
|
[done] fix to have -h
|
|
(we might not do this, this would be a special case, the name has
|
|
snapd in itself, it makes sense in /bin mostly for debugging,
|
|
otherwise it could stay just in tools as in itself it is not called
|
|
that often by tests, it would just become snapd-tool)
|
|
|
|
We are then left with a mixture of commands with maybe one or a couple
|
|
subcommands dealing with system state:
|
|
|
|
* simple option rename them with a -state suffix in most cases:
|
|
|
|
[done] user-tool -> test/lib/tools/user-state
|
|
[done] fix with no args
|
|
[done] fix -h help
|
|
|
|
[done] apt-tool -> tests/lib/tools/apt-state
|
|
[done] fix no args
|
|
[done] fix to have -h
|
|
|
|
[done] lxd-tool -> tests/lib/tools/lxd-state
|
|
[done] fix no args
|
|
[done] fix to have -h
|
|
|
|
[done] invariant-tool -> tests/lib/tools/tests.invariant? then it could also live in /bin
|
|
[done] fix to have -h
|
|
|
|
* more complicated option, have a tests.state trampoline command in tests/bin
|
|
that given `tests.state WHAT ARGS` invokes `tests/lib/tools/state-WHAT ARGS`
|
|
|
|
then we would have in tools:
|
|
|
|
state-apt (was apt-tool)
|
|
state-lxd-undo-mount-changes (was lxd-tool)
|
|
state-remove-user-with-group (was user-tool)
|
|
|
|
tests.state without arguments or with -h would invoke all the state-* commands
|
|
appropriately to show usage info
|
|
|
|
invariant-tool could possibly become `tests.state invariant` or be
|
|
dealt with separately
|