#!/bin/bash # # Copyright (C) 2019 EfficiOS Inc. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License, version 2 only, as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # # You should have received a copy of the GNU General Public License along with # this program; if not, write to the Free Software Foundation, Inc., 51 # Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. SH_TAP=1 if [ "x${BT_TESTS_SRCDIR:-}" != "x" ]; 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 test_help_stdout.XXXXXX) stderr=$(mktemp 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=0' "${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"