diff options
author | Klaus Aehlig <klaus.aehlig@huawei.com> | 2023-03-20 15:00:51 +0100 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2023-03-20 15:26:03 +0100 |
commit | 0579817952965c5e7c5e22c287d8711006eff844 (patch) | |
tree | b285b6528c9bbfe8f4efb5bc143f35e4eded2f00 /test | |
parent | bc27cbc4ad46615978504e27b29ced3fe985b40b (diff) | |
download | justbuild-0579817952965c5e7c5e22c287d8711006eff844.tar.gz |
just-mr: add test for command verbosity
Diffstat (limited to 'test')
-rw-r--r-- | test/other_tools/just_mr/TARGETS | 12 | ||||
-rw-r--r-- | test/other_tools/just_mr/verbosity.sh | 101 |
2 files changed, 112 insertions, 1 deletions
diff --git a/test/other_tools/just_mr/TARGETS b/test/other_tools/just_mr/TARGETS index 385cbaef..699abed8 100644 --- a/test/other_tools/just_mr/TARGETS +++ b/test/other_tools/just_mr/TARGETS @@ -26,5 +26,15 @@ , "just_mr_install" ] } -, "TESTS": {"type": "install", "tainted": ["test"], "deps": ["just_mr_mp"]} +, "git-tree-verbosity": + { "type": ["@", "rules", "shell/test", "script"] + , "name": ["git-tree-verbosity"] + , "test": ["verbosity.sh"] + , "deps": ["just_mr_install"] + } +, "TESTS": + { "type": "install" + , "tainted": ["test"] + , "deps": ["just_mr_mp", "git-tree-verbosity"] + } } diff --git a/test/other_tools/just_mr/verbosity.sh b/test/other_tools/just_mr/verbosity.sh new file mode 100644 index 00000000..4aa0c600 --- /dev/null +++ b/test/other_tools/just_mr/verbosity.sh @@ -0,0 +1,101 @@ +#!/bin/sh +# Copyright 2023 Huawei Cloud Computing Technology Co., Ltd. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -eu + + +readonly JUST_MR="${PWD}/bin/just-mr-under-test" +readonly TOOLS_DIR="${TEST_TMPDIR}/tools" +readonly COMPUTE_TREE_DIR="${TEST_TMPDIR}/generate-the-tree-id" +readonly LBR="${TEST_TMPDIR}/local-build-root" + +# Set up a tree generating tool, and the corresponding tree + +readonly TOOL_MSG_A="UsefulTextOnStout" +readonly TOOL_MSG_B="PotentialErrorOnStderr" +mkdir -p "${TOOLS_DIR}" +readonly TOOL="${TOOLS_DIR}/generate-tree.sh" +cat > "${TOOL}" <<EOF +#!/bin/sh +echo "${TOOL_MSG_A}" +echo "${TOOL_MSG_B}" 1>&2 +echo {} > TARGETS +if [ -n "\${SHOULD_FAIL:-}" ] +then + exit 0 +fi +echo data > foo.txt +EOF +chmod 755 "${TOOL}" +mkdir -p "${COMPUTE_TREE_DIR}" +( cd "${COMPUTE_TREE_DIR}" + git init + git config user.email "nobody@example.org" + git config user.name "Nobody" + "${TOOL}" + git add . + git commit -m "Sample output" +) +readonly TREE_ID=$(cd "${COMPUTE_TREE_DIR}" && git log -n 1 --format="%T") +rm -rf "${COMPUTE_TREE_DIR}" + +# Set up workspace + +touch ROOT +cat > repos.json <<EOF +{ "repositories": + { "": + { "repository": + {"type": "git tree", "id": "${TREE_ID}", "cmd": ["${TOOL}"]} + } + } +} +EOF + +# On failure, the messages should be shown on stderr, +# as well as the effective command + +echo +echo testing setup failure +echo + +"${JUST_MR}" --local-build-root "${LBR}" \ + -L '["env", "SHOULD_FAIL=YES"]' setup 2>log && exit 1 || : +cat log +grep -q -F "${TOOL_MSG_A}" log +grep -q -F "${TOOL_MSG_B}" log +grep -q -F "SHOULD_FAIL=YES" log +grep -q -F "${TOOL}" log + +# On success, everything should be quiet (despite the command +# potentially producing output) + +echo +echo testing setup success +echo + +CONF=$("${JUST_MR}" --local-build-root "${LBR}" \ + -L '["env", "SHOULD_FAIL="]' setup 2>log) +cat log +echo "${CONF}" +cat "${CONF}" +echo +grep -F "${TOOL_MSG_A}" log && exit 1 || : +grep -F "${TOOL_MSG_B}" log && exit 1 || : +grep -F "${TOOL}" log && exit 1 || : +# sanity check: the generated configuration contains the requested tree +grep -q -F "${TREE_ID}" "${CONF}" + +echo OK |