summaryrefslogtreecommitdiff
path: root/test/end-to-end/actions
diff options
context:
space:
mode:
authorKlaus Aehlig <klaus.aehlig@huawei.com>2024-08-06 11:02:26 +0200
committerKlaus Aehlig <klaus.aehlig@huawei.com>2024-08-06 12:46:08 +0200
commit4acf0aa7031836abbb53f9a7816b6a55bab6fcd6 (patch)
treea40aaf7af5cacbdc9a4ec8002bddee135c492803 /test/end-to-end/actions
parent51da1899e8b46e8f445c46a57dc57fff7076fd23 (diff)
downloadjustbuild-4acf0aa7031836abbb53f9a7816b6a55bab6fcd6.tar.gz
analyse: extend provides map when switching to action input
When switching from a target to the artifacts that are the inputs of a particular action, the provides map is also switched to provide additional (besides the inputs) information about the action, in particular the command. Extend this provides map with the remaining information, in particular the working directory.
Diffstat (limited to 'test/end-to-end/actions')
-rw-r--r--test/end-to-end/actions/TARGETS7
-rw-r--r--test/end-to-end/actions/request-action-input.sh65
2 files changed, 72 insertions, 0 deletions
diff --git a/test/end-to-end/actions/TARGETS b/test/end-to-end/actions/TARGETS
index ef844223..a8dbd279 100644
--- a/test/end-to-end/actions/TARGETS
+++ b/test/end-to-end/actions/TARGETS
@@ -84,6 +84,12 @@
, "test": ["cwd.sh"]
, "deps": [["", "tool-under-test"]]
}
+, "request-action-input":
+ { "type": ["@", "rules", "shell/test", "script"]
+ , "name": ["request-action-input"]
+ , "test": ["request-action-input.sh"]
+ , "deps": [["", "tool-under-test"]]
+ }
, "TESTS":
{ "type": "install"
, "tainted": ["test"]
@@ -99,6 +105,7 @@
, "incomplete-retry"
, "error-reporting"
, "cwd"
+ , "request-action-input"
]
, { "type": "if"
, "cond": {"type": "var", "name": "DROP_IO_HEAVY_TESTS"}
diff --git a/test/end-to-end/actions/request-action-input.sh b/test/end-to-end/actions/request-action-input.sh
new file mode 100644
index 00000000..d4fcac8e
--- /dev/null
+++ b/test/end-to-end/actions/request-action-input.sh
@@ -0,0 +1,65 @@
+#!/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 -e
+
+readonly ROOT="$(pwd)"
+readonly LBR="${TMPDIR}/local-build-root"
+readonly OUT="${TMPDIR}/out"
+mkdir -p "${OUT}"
+readonly JUST="${ROOT}/bin/tool-under-test"
+
+mkdir work
+cd work
+touch ROOT
+
+cat > RULES <<'EOF'
+{ "complex action":
+ { "expression":
+ { "type": "RESULT"
+ , "artifacts":
+ { "type": "ACTION"
+ , "cmd": ["sh", "-c", "mkdir -p foo && echo bar > foo/out.txt"]
+ , "cwd": "deep/inside"
+ , "outs": ["deep/inside/foo/out.txt"]
+ , "execution properties":
+ {"type": "'", "$1": {"image": "something-fancy", "runner": "special"}}
+ , "timeout scaling": 2
+ }
+ }
+ }
+}
+EOF
+
+cat > TARGETS <<'EOF'
+{"": {"type": "complex action"}}
+EOF
+
+# Sanity check: build succeeds and gives the correct ouput
+"${JUST}" install --local-build-root "${LBR}" -o "${OUT}" \
+ -L '["env", "PATH='"${PATH}"'"]' 2>&1
+grep bar "${OUT}/deep/inside/foo/out.txt"
+
+# Analyse first action and dump provides map
+"${JUST}" analyse --local-build-root "${LBR}" \
+ --request-action-input 0 \
+ --dump-provides "${OUT}/provides.json" 2>&1
+
+[ $(jq '."timeout scaling" | . == 2' "${OUT}/provides.json") = true ]
+[ $(jq -r '.cwd' "${OUT}/provides.json") = "deep/inside" ]
+[ $(jq -r '."execution properties".image' "${OUT}/provides.json") = something-fancy ]
+[ $(jq -r '."execution properties".runner' "${OUT}/provides.json") = special ]
+
+echo OK