summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Aehlig <klaus.aehlig@huawei.com>2024-08-28 14:40:17 +0200
committerKlaus Aehlig <klaus.aehlig@huawei.com>2024-08-28 15:45:10 +0200
commit3c40c9b61be181d71d3d7f970300e63953fb3737 (patch)
tree898520770b462d8d840f928dd1ba32629b3967c9
parent07e9ec60fe1e203d5e28133d7cc2ffb292df0846 (diff)
downloadjustbuild-3c40c9b61be181d71d3d7f970300e63953fb3737.tar.gz
Add basic sanity check on the default output
-rw-r--r--test/end-to-end/cli/TARGETS9
-rw-r--r--test/end-to-end/cli/output.sh60
2 files changed, 68 insertions, 1 deletions
diff --git a/test/end-to-end/cli/TARGETS b/test/end-to-end/cli/TARGETS
index 5b1e8370..c449a2d4 100644
--- a/test/end-to-end/cli/TARGETS
+++ b/test/end-to-end/cli/TARGETS
@@ -73,6 +73,13 @@
, "test": ["describe.sh"]
, "deps": [["", "tool-under-test"]]
}
+, "output":
+ { "type": ["@", "rules", "shell/test", "script"]
+ , "name": ["output"]
+ , "test": ["output.sh"]
+ , "deps": [["", "tool-under-test"], ["", "mr-tool-under-test"]]
+ , "keep": ["log"]
+ }
, "TESTS":
{ "type": ["@", "rules", "test", "suite"]
, "arguments_config": ["TEST_BOOTSTRAP_JUST_MR"]
@@ -94,7 +101,7 @@
, { "type": "if"
, "cond": {"type": "var", "name": "TEST_BOOTSTRAP_JUST_MR"}
, "then": []
- , "else": ["just-mr reporting", "log limit"]
+ , "else": ["just-mr reporting", "log limit", "output"]
}
]
}
diff --git a/test/end-to-end/cli/output.sh b/test/end-to-end/cli/output.sh
new file mode 100644
index 00000000..f77dfad6
--- /dev/null
+++ b/test/end-to-end/cli/output.sh
@@ -0,0 +1,60 @@
+#!/bin/sh
+# Copyright 2024 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
+
+ROOT="$(pwd)"
+JUST="${ROOT}/bin/tool-under-test"
+JUST_MR="${ROOT}/bin/mr-tool-under-test"
+LBR="${TEST_TMPDIR}/build-root"
+LOG="${ROOT}/log"
+
+mkdir work
+cd work
+touch ROOT
+
+cat > repos.json <<'EOF'
+{"repositories": {"": {"repository": {"type": "file", "path": "."}}}}
+EOF
+
+cat > TARGETS <<'EOF'
+{ "generic":
+ { "type": "generic"
+ , "outs": ["hello.txt"]
+ , "cmds": ["echo Hello World > hello.txt"]
+ }
+, "": {"type": "install", "files": {"generic": "generic"}}
+}
+EOF
+
+${JUST_MR} --norc -L '["env", "PATH='"${PATH}"'"]' --local-build-root "${LBR}" \
+ --just "${JUST}" \
+ -f "${LOG}" build 2>&1
+echo
+
+# Sanity check on verbosity of output
+
+## By default, we should be at a log level reporting resulting artifacts
+HELLO_BLOB_ID=$(echo Hello World | git hash-object --stdin)
+grep -i $HELLO_BLOB_ID "${LOG}"
+
+## This build should not cause any errors or warnings
+grep -i error "${LOG}" && exit 1 || :
+grep -i warn "${LOG}" && exit 1 || :
+
+## Such a simple build should not have an overly long log
+[ $(cat "${LOG}" | wc -l) -lt 100 ]
+
+echo OK