#!/bin/bash
#
# Copyright (C) 2019 Simon Marchi <simon.marchi@efficios.com>
#
# 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.

# Test the auto source disovery mechanism of the CLI.

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
SH_TAP=1 source "$UTILSSH"

NUM_TESTS=3

plan_tests $NUM_TESTS

data_dir="${BT_TESTS_DATADIR}/auto-source-discovery/grouping"
plugin_dir="${data_dir}"
trace_dir="${data_dir}/traces"

stdout_expected_file="${BT_TESTS_DATADIR}/cli/convert/auto-source-discovery-grouping.expect"
stdout_actual_file=$(mktemp -t stdout-actual.XXXXXX)
stderr_actual_file=$(mktemp -t actual-stderr.XXXXXX)

bt_cli "$stdout_actual_file" "$stderr_actual_file" \
	--plugin-path "${plugin_dir}" convert "ABCDE" "${trace_dir}" some_other_non_opt \
	-c sink.text.details --params='with-metadata=false'
ok "$?" "CLI runs successfully"

# Check components and their inputs.
bt_diff "$stdout_expected_file" "$stdout_actual_file"
ok "$?" "expected components are instantiated with expected inputs"

# Check that expected warning is printed.
# shellcheck disable=SC2016
grep -q 'No trace was found based on input `some_other_non_opt`' "$stderr_actual_file"
ok "$?" "warning is printed"

rm -f "$stdout_actual_file"
rm -f "$stderr_actual_file"
