From 4acf0aa7031836abbb53f9a7816b6a55bab6fcd6 Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Tue, 6 Aug 2024 11:02:26 +0200 Subject: 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. --- test/end-to-end/actions/TARGETS | 7 +++ test/end-to-end/actions/request-action-input.sh | 65 +++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 test/end-to-end/actions/request-action-input.sh (limited to 'test') 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 -- cgit v1.2.3