summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorKlaus Aehlig <klaus.aehlig@huawei.com>2023-03-20 15:00:51 +0100
committerKlaus Aehlig <klaus.aehlig@huawei.com>2023-03-20 15:26:03 +0100
commit0579817952965c5e7c5e22c287d8711006eff844 (patch)
treeb285b6528c9bbfe8f4efb5bc143f35e4eded2f00 /test
parentbc27cbc4ad46615978504e27b29ced3fe985b40b (diff)
downloadjustbuild-0579817952965c5e7c5e22c287d8711006eff844.tar.gz
just-mr: add test for command verbosity
Diffstat (limited to 'test')
-rw-r--r--test/other_tools/just_mr/TARGETS12
-rw-r--r--test/other_tools/just_mr/verbosity.sh101
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