#!/bin/bash # # SPDX-License-Identifier: GPL-2.0-only # # Copyright (C) 2019 EfficiOS Inc. # SH_TAP=1 if [ -n "${BT_TESTS_SRCDIR:-}" ]; then UTILSSH="$BT_TESTS_SRCDIR/utils/utils.sh" else UTILSSH="$(dirname "$0")/../utils/utils.sh" fi # shellcheck source=../utils/utils.sh source "$UTILSSH" plan_tests 21 stdout=$(mktemp -t test_help_stdout.XXXXXX) stderr=$(mktemp -t test_help_stderr.XXXXXX) # Return 0 if file "$1" exists and is empty, non-0 otherwise. is_empty() { [[ -f "$1" && ! -s "$1" ]] } # Test with a working plugin name. bt_cli "${stdout}" "${stderr}" help ctf ok $? "help ctf plugin exit status" grep --silent 'Description: CTF input and output' "${stdout}" ok $? "help ctf plugin expected output" is_empty "${stderr}" ok $? "help ctf plugin produces no error" # Test with a working component class name. bt_cli "${stdout}" "${stderr}" help src.ctf.fs ok $? "help src.ctf.fs component class exit status" grep --silent 'Description: Read CTF traces from the file system.' "${stdout}" ok $? "help src.ctf.fs component class expected output" is_empty "${stderr}" ok $? "help src.ctf.fs component class produces no error" # Test without parameter. bt_cli "${stdout}" "${stderr}" help isnt $? 0 "help without parameter exit status" grep --silent "Missing plugin name or component class descriptor." "${stderr}" ok $? "help without parameter produces expected error" is_empty "${stdout}" ok $? "help without parameter produces no output" # Test with too many parameters. bt_cli "${stdout}" "${stderr}" help ctf fs isnt $? 0 "help with too many parameters exit status" grep --silent "Extraneous command-line argument specified to \`help\` command:" "${stderr}" ok $? "help with too many parameters produces expected error" is_empty "${stdout}" ok $? "help with too many parameters produces no output" # Test with unknown plugin name. bt_cli "${stdout}" "${stderr}" help zigotos isnt $? 0 "help with unknown plugin name" grep --silent 'Cannot find plugin: plugin-name="zigotos"' "${stderr}" ok $? "help with unknown plugin name produces expected error" is_empty "${stdout}" ok $? "help with unknown plugin name produces no output" # Test with unknown component class name (but known plugin). bt_cli "${stdout}" "${stderr}" help src.ctf.bob isnt $? 0 "help with unknown component class name" grep --silent 'Cannot find component class: plugin-name="ctf", comp-cls-name="bob", comp-cls-type=SOURCE' "${stderr}" ok $? "help with unknown component class name produces expected error" grep --silent 'Description: CTF input and output' "${stdout}" ok $? "help with unknown component class name prints plugin help" # Test with unknown component class plugin bt_cli "${stdout}" "${stderr}" help src.bob.fs isnt $? 0 "help with unknown component class plugin" grep --silent 'Cannot find plugin: plugin-name="bob"' "${stderr}" ok $? "help with unknown component class plugin produces expected error" is_empty "${stdout}" ok $? "help with unknown component class plugin produces no output" rm -f "${stdout}" "${stderr}"