diff options
author | Klaus T. Aehlig <aehlig@linta.de> | 2024-02-05 11:46:34 +0100 |
---|---|---|
committer | Klaus T. Aehlig <aehlig@linta.de> | 2024-02-05 16:24:18 +0100 |
commit | b20171a41a97dbfd75a98955694eb9df5314ef27 (patch) | |
tree | 1be0e4d5ecaf0bec2e5b198da3d9ff1c3aea0d0d | |
parent | d71277e0a0b6ad60b6ecce4382b7f7f3e35c3282 (diff) | |
download | justbuild-b20171a41a97dbfd75a98955694eb9df5314ef27.tar.gz |
end-to-end tests: inherit path
... for test actions, by setting an appropriate local launcher. In
this way, the tests can also be run on systems where sh does not
pull in enough paths to have all the "usual" tools available.
31 files changed, 120 insertions, 50 deletions
diff --git a/test/end-to-end/actions/action-equality.sh b/test/end-to-end/actions/action-equality.sh index 2a070814..517035e0 100755 --- a/test/end-to-end/actions/action-equality.sh +++ b/test/end-to-end/actions/action-equality.sh @@ -60,7 +60,8 @@ cat > TARGETS <<'EOI' EOI -bin/tool-under-test build -J 1 --local-build-root .tool-root -f build.log --log-limit 2 2>&1 +bin/tool-under-test build -L '["env", "PATH='"${PATH}"'"]' \ + -J 1 --local-build-root .tool-root -f build.log --log-limit 2 2>&1 cat build.log echo grep 'Processed.* 4 actions' build.log diff --git a/test/end-to-end/actions/nested-trees.sh b/test/end-to-end/actions/nested-trees.sh index 346c03d5..a5b052c5 100755 --- a/test/end-to-end/actions/nested-trees.sh +++ b/test/end-to-end/actions/nested-trees.sh @@ -118,7 +118,8 @@ cat ../trees.json echo echo Build echo -../bin/tool-under-test install -o ../out --local-build-root ../tool-root 2>&1 +../bin/tool-under-test install -L '["env", "PATH='"${PATH}"'"]' \ + -o ../out --local-build-root ../tool-root 2>&1 echo echo Index echo diff --git a/test/end-to-end/built-in-rules/generic_out_dirs.sh b/test/end-to-end/built-in-rules/generic_out_dirs.sh index afa49d19..c4dd81da 100755 --- a/test/end-to-end/built-in-rules/generic_out_dirs.sh +++ b/test/end-to-end/built-in-rules/generic_out_dirs.sh @@ -47,7 +47,7 @@ cat <<EOF > TARGETS EOF echo "read_out_dirs" >&2 -bin/tool-under-test build --local-build-root lcl-build read_out_dirs +bin/tool-under-test build -L '["env", "PATH='"${PATH}"'"]' --local-build-root lcl-build read_out_dirs echo "done" >&2 echo "missing_outs_and_out_dirs" >&2 @@ -64,7 +64,7 @@ echo "out_dirs_contains_a_file" >&2 # the analysis phase should run fine bin/tool-under-test analyse --local-build-root lcl-build out_dirs_contains_a_file echo "analysis ok" >&2 -bin/tool-under-test build --local-build-root lcl-build out_dirs_contains_a_file && exit 1 || : +bin/tool-under-test build -L '["env", "PATH='"${PATH}"'"]' --local-build-root lcl-build out_dirs_contains_a_file && exit 1 || : echo "done" >&2 echo "outs_contains_a_dir" >&2 @@ -73,7 +73,7 @@ echo "outs_contains_a_dir" >&2 # anlysis should run fine bin/tool-under-test analyse --local-build-root lcl-build outs_contains_a_dir echo "analysis ok" >&2 -bin/tool-under-test build --local-build-root lcl-build -f test.log outs_contains_a_dir && exit 1 || : +bin/tool-under-test build -L '["env", "PATH='"${PATH}"'"]' --local-build-root lcl-build -f test.log outs_contains_a_dir && exit 1 || : # grep 'ERROR' test.log | grep 'output file' echo "done" >&2 diff --git a/test/end-to-end/cli/build-p.sh b/test/end-to-end/cli/build-p.sh index 853ab3e3..9a829fe7 100644 --- a/test/end-to-end/cli/build-p.sh +++ b/test/end-to-end/cli/build-p.sh @@ -31,23 +31,23 @@ cat > TARGETS <<'EOF' } EOF -"${JUST}" build --local-build-root "${BUILDROOT}" --dump-artifacts out.json 2>&1 +"${JUST}" build -L '["env", "PATH='"${PATH}"'"]' --local-build-root "${BUILDROOT}" --dump-artifacts out.json 2>&1 echo cat out.json # foo/bar is the output artifact, and it is a tree [ $(jq -rM '."foo/bar"."file_type"' out.json) = "t" ] # Therefore, foo is not an output artifact, so requesting -P leaves stdout empty -"${JUST}" build --local-build-root "${BUILDROOT}" -P foo > foo.txt +"${JUST}" build -L '["env", "PATH='"${PATH}"'"]' --local-build-root "${BUILDROOT}" -P foo > foo.txt [ -f foo.txt ] && [ -z "$(cat foo.txt)" ] # Requesting foo/bar gives a human-readable description of the tree -"${JUST}" build --local-build-root "${BUILDROOT}" -P foo/bar | grep baz +"${JUST}" build -L '["env", "PATH='"${PATH}"'"]' --local-build-root "${BUILDROOT}" -P foo/bar | grep baz # going deepter into the tree we stil can get human-readable tree descriptions -"${JUST}" build --local-build-root "${BUILDROOT}" -P foo/bar/baz/greeting | grep hello.txt +"${JUST}" build -L '["env", "PATH='"${PATH}"'"]' --local-build-root "${BUILDROOT}" -P foo/bar/baz/greeting | grep hello.txt # Files inside the tree can be retrieved -"${JUST}" build --local-build-root "${BUILDROOT}" -P foo/bar/baz/greeting/hello.txt | grep World +"${JUST}" build -L '["env", "PATH='"${PATH}"'"]' --local-build-root "${BUILDROOT}" -P foo/bar/baz/greeting/hello.txt | grep World echo OK diff --git a/test/end-to-end/cli/install.sh b/test/end-to-end/cli/install.sh index b3019e5b..1f06af76 100644 --- a/test/end-to-end/cli/install.sh +++ b/test/end-to-end/cli/install.sh @@ -45,7 +45,7 @@ echo # Verify non-interference of install cd "${SRCDIR}" -"${TOOL}" install --local-build-root "${BUILDROOT}" -o "${OUTDIR}" 2>&1 +"${TOOL}" install -L '["env", "PATH='"${PATH}"'"]' --local-build-root "${BUILDROOT}" -o "${OUTDIR}" 2>&1 echo ls -al "${OUTDIR}" @@ -55,7 +55,7 @@ grep Original unrelated.txt # Verify non-interference of install cd "${SRCDIR}" -"${TOOL}" build --local-build-root "${BUILDROOT}" \ +"${TOOL}" build -L '["env", "PATH='"${PATH}"'"]' --local-build-root "${BUILDROOT}" \ --dump-artifacts "${OUTDIR}/artifacts.json" 2>&1 echo ID=$(jq -rM '."hello.txt".id' "${OUTDIR}/artifacts.json") @@ -73,7 +73,7 @@ grep Original unrelated.txt # Verify non-interference of install (overwrite existing file with symlink) cd "${SRCDIR}" -"${TOOL}" install --local-build-root "${BUILDROOT}" -o "${OUTDIR}" symlink 2>&1 +"${TOOL}" install -L '["env", "PATH='"${PATH}"'"]' --local-build-root "${BUILDROOT}" -o "${OUTDIR}" symlink 2>&1 echo ls -al "${OUTDIR}" @@ -86,7 +86,7 @@ grep Original unrelated.txt rm -f ${OUTDIR}/hello.txt ln -s /noexistent ${OUTDIR}/hello.txt cd "${SRCDIR}" -"${TOOL}" install --local-build-root "${BUILDROOT}" -o "${OUTDIR}" symlink 2>&1 +"${TOOL}" install -L '["env", "PATH='"${PATH}"'"]' --local-build-root "${BUILDROOT}" -o "${OUTDIR}" symlink 2>&1 echo ls -al "${OUTDIR}" @@ -99,7 +99,7 @@ grep Original unrelated.txt rm -f ${OUTDIR}/content.txt ln -s /noexistent ${OUTDIR}/content.txt cd "${SRCDIR}" -"${TOOL}" install --local-build-root "${BUILDROOT}" -o "${OUTDIR}" symlink 2>&1 +"${TOOL}" install -L '["env", "PATH='"${PATH}"'"]' --local-build-root "${BUILDROOT}" -o "${OUTDIR}" symlink 2>&1 echo ls -al "${OUTDIR}" diff --git a/test/end-to-end/gc/basic.sh b/test/end-to-end/gc/basic.sh index b3e93ff5..28552885 100644 --- a/test/end-to-end/gc/basic.sh +++ b/test/end-to-end/gc/basic.sh @@ -68,14 +68,14 @@ EOF cat TARGETS # Build to fill the cache -"${JUST}" build ${BUILD_ARGS} \ +"${JUST}" build ${BUILD_ARGS} -L '["env", "PATH='"${PATH}"'"]' \ -D '{"ENV": {"TOOLS": "'${TOOLS_DIR}'"}}' 2>&1 # Demonstrate that from now on, we don't build anything any more rm -rf "${TOOLS_DIR}" # Verify the large file is in cache -"${JUST}" install ${BUILD_ARGS} -o "${OUT}/out-large" \ +"${JUST}" install ${BUILD_ARGS} -L '["env", "PATH='"${PATH}"'"]' -o "${OUT}/out-large" \ -D '{"ENV": {"TOOLS": "'${TOOLS_DIR}'"}}' large 2>&1 wc -c "${OUT}/out-large/out.txt" test $(cat "${OUT}/out-large/out.txt" | wc -c) -gt 100000 @@ -84,7 +84,7 @@ test $(cat "${OUT}/out-large/out.txt" | wc -c) -gt 100000 "${JUST}" gc --local-build-root "${LBR}" 2>&1 # Use the tree -"${JUST}" build ${BUILD_ARGS} \ +"${JUST}" build ${BUILD_ARGS} -L '["env", "PATH='"${PATH}"'"]' \ -D '{"ENV": {"TOOLS": "'${TOOLS_DIR}'"}}' tree 2>&1 # collect garbage again @@ -96,7 +96,7 @@ wc -c "${OUT}/root.tar" test $(cat "${OUT}/root.tar" | wc -c) -lt 100000 # Verify that the tree is fully in cache -"${JUST}" install ${BUILD_ARGS} -o "${OUT}/out-tree" \ +"${JUST}" install ${BUILD_ARGS} -L '["env", "PATH='"${PATH}"'"]' -o "${OUT}/out-tree" \ -D '{"ENV": {"TOOLS": "'${TOOLS_DIR}'"}}' tree 2>&1 ls -R "${OUT}/out-tree" test -f "${OUT}/out-tree/out/hello/world/tree/hello.txt" diff --git a/test/end-to-end/gc/export.sh b/test/end-to-end/gc/export.sh index 87ec32fd..83185a1d 100644 --- a/test/end-to-end/gc/export.sh +++ b/test/end-to-end/gc/export.sh @@ -73,6 +73,7 @@ cat TARGETS # Build to fill the cache "${JUST_MR}" ${JUST_MR_ARGS} build ${BUILD_ARGS} \ + -L '["env", "PATH='"${PATH}"'"]' \ -D '{"ENV": {"TOOLS": "'${TOOLS_DIR}'"}}' 2>&1 # Demonstrate that from now on, we don't build anything any more @@ -86,6 +87,7 @@ rm -rf ${LBR}/protocol-dependent/generation-*/*/ac # Use the export "${JUST_MR}" ${JUST_MR_ARGS} build ${BUILD_ARGS} \ + -L '["env", "PATH='"${PATH}"'"]' \ -D '{"ENV": {"TOOLS": "'${TOOLS_DIR}'"}}' 2>&1 # collect garbage again @@ -93,6 +95,7 @@ rm -rf ${LBR}/protocol-dependent/generation-*/*/ac # Verify that the export target is fully in cache "${JUST_MR}" ${JUST_MR_ARGS} install ${BUILD_ARGS} -o "${OUT}" \ + -L '["env", "PATH='"${PATH}"'"]' \ -D '{"ENV": {"TOOLS": "'${TOOLS_DIR}'"}}' 2>&1 ls -R "${OUT}" test -f "${OUT}/out/hello/world/tree/hello.txt" diff --git a/test/end-to-end/generated-binary/compiled.sh b/test/end-to-end/generated-binary/compiled.sh index 56434dc8..aa90961c 100755 --- a/test/end-to-end/generated-binary/compiled.sh +++ b/test/end-to-end/generated-binary/compiled.sh @@ -34,4 +34,4 @@ bin/tool-under-test analyse --local-build-root .tool-root --dump-graph graph.jso echo echo "Building" -bin/tool-under-test install -o out --local-build-root .tool-root -J 16 2>&1 +bin/tool-under-test install -L '["env", "PATH='"${PATH}"'"]' -o out --local-build-root .tool-root -J 16 2>&1 diff --git a/test/end-to-end/generated-binary/shell-script.sh b/test/end-to-end/generated-binary/shell-script.sh index 6dfaa500..3718a0f8 100755 --- a/test/end-to-end/generated-binary/shell-script.sh +++ b/test/end-to-end/generated-binary/shell-script.sh @@ -58,6 +58,6 @@ cat > TARGETS <<'EOI' EOI -bin/tool-under-test install -o out --local-build-root .tool-root 2>&1 +bin/tool-under-test install -L '["env", "PATH='"${PATH}"'"]' -o out --local-build-root .tool-root 2>&1 grep Hello out/out.txt grep Good out/out.txt diff --git a/test/end-to-end/git-import/TARGETS b/test/end-to-end/git-import/TARGETS index ef379f37..bcf8cf56 100644 --- a/test/end-to-end/git-import/TARGETS +++ b/test/end-to-end/git-import/TARGETS @@ -29,7 +29,18 @@ } , "TESTS": { "type": "install" + , "arguments_config": ["TEST_BOOTSTRAP_JUST_MR"] , "tainted": ["test"] - , "deps": ["chained-import", "deduplicate"] + , "deps": + { "type": "++" + , "$1": + [ ["deduplicate"] + , { "type": "if" + , "cond": {"type": "var", "name": "TEST_BOOTSTRAP_JUST_MR"} + , "then": [] + , "else": ["chained-import", "deduplicate"] + } + ] + } } } diff --git a/test/end-to-end/git-import/chained-import.sh b/test/end-to-end/git-import/chained-import.sh index e9f98198..b3b2d5b9 100755 --- a/test/end-to-end/git-import/chained-import.sh +++ b/test/end-to-end/git-import/chained-import.sh @@ -82,7 +82,7 @@ EOF echo cat repos.json echo -"${JUST_MR}" --norc --just "${JUST}" --local-build-root "${LBR}" install -o "${OUT}" 2>&1 +"${JUST_MR}" -L '["env", "PATH='"${PATH}"'"]' --norc --just "${JUST}" --local-build-root "${LBR}" install -o "${OUT}" 2>&1 echo cat "${OUT}/out.txt" echo diff --git a/test/end-to-end/just-mr/fetch-absent-archives-symlinks.sh b/test/end-to-end/just-mr/fetch-absent-archives-symlinks.sh index 217ea61a..48effd5c 100644 --- a/test/end-to-end/just-mr/fetch-absent-archives-symlinks.sh +++ b/test/end-to-end/just-mr/fetch-absent-archives-symlinks.sh @@ -68,12 +68,14 @@ echo cat repos.json echo CONF=$("${JUST_MR}" --norc --local-build-root "${LBR}" \ + -L '["env", "PATH='"${PATH}"'"]' \ --remote-serve-address ${SERVE} \ -r ${REMOTE_EXECUTION_ADDRESS} \ --fetch-absent setup) cat $CONF echo "${JUST}" install --local-build-root "${LBR}" -C "${CONF}" \ + -L '["env", "PATH='"${PATH}"'"]' \ -r "${REMOTE_EXECUTION_ADDRESS}" -o "${OUT}" 2>&1 grep x "${OUT}/out.txt" @@ -81,6 +83,7 @@ grep x "${OUT}/out.txt" # about the root should now be available locally, so we can build without # a serve or remote endpoint with still (logically) fetching absent roots. "${JUST_MR}" --norc --just "${JUST}" --local-build-root "${LBR}" \ + -L '["env", "PATH='"${PATH}"'"]' \ --fetch-absent install -o "${OUT2}" 2>&1 grep x "${OUT2}/out.txt" @@ -107,6 +110,7 @@ echo cat repos.json echo "${JUST_MR}" --norc --local-build-root "${LBR}" \ + -L '["env", "PATH='"${PATH}"'"]' \ --remote-serve-address ${SERVE} \ -r ${REMOTE_EXECUTION_ADDRESS} \ --just "${JUST}" \ diff --git a/test/end-to-end/just-mr/fetch-absent-archives.sh b/test/end-to-end/just-mr/fetch-absent-archives.sh index 52c05cb8..2b26bf71 100644 --- a/test/end-to-end/just-mr/fetch-absent-archives.sh +++ b/test/end-to-end/just-mr/fetch-absent-archives.sh @@ -64,12 +64,14 @@ echo cat repos.json echo CONF=$("${JUST_MR}" --norc --local-build-root "${LBR}" \ + -L '["env", "PATH='"${PATH}"'"]' \ --remote-serve-address ${SERVE} \ -r ${REMOTE_EXECUTION_ADDRESS} \ --fetch-absent setup) cat $CONF echo "${JUST}" install --local-build-root "${LBR}" -C "${CONF}" \ + -L '["env", "PATH='"${PATH}"'"]' \ -r "${REMOTE_EXECUTION_ADDRESS}" -o "${OUT}" 2>&1 grep 42 "${OUT}/out.txt" @@ -77,6 +79,7 @@ grep 42 "${OUT}/out.txt" # about the root should now be available locally, so we can build without # a serve or remote endpoint with still (logically) fetching absent roots. "${JUST_MR}" --norc --just "${JUST}" --local-build-root "${LBR}" \ + -L '["env", "PATH='"${PATH}"'"]' \ --fetch-absent install -o "${OUT2}" 2>&1 grep 42 "${OUT2}/out.txt" @@ -107,6 +110,7 @@ cat > targets/TARGETS <<'EOF' } EOF "${JUST_MR}" --norc --local-build-root "${LBR}" \ + -L '["env", "PATH='"${PATH}"'"]' \ --remote-serve-address ${SERVE} \ -r ${REMOTE_EXECUTION_ADDRESS} \ --just "${JUST}" \ @@ -145,6 +149,7 @@ echo cat repos.json echo "${JUST_MR}" --norc --local-build-root "${LBR_NON_ABSENT}" \ + -L '["env", "PATH='"${PATH}"'"]' \ --remote-serve-address ${SERVE} \ -r ${REMOTE_EXECUTION_ADDRESS} \ --just "${JUST}" \ diff --git a/test/end-to-end/just-mr/fetch-absent-distdir-archive.sh b/test/end-to-end/just-mr/fetch-absent-distdir-archive.sh index cded9c4a..ade94031 100644 --- a/test/end-to-end/just-mr/fetch-absent-distdir-archive.sh +++ b/test/end-to-end/just-mr/fetch-absent-distdir-archive.sh @@ -72,12 +72,14 @@ echo cat repos.json echo CONF=$("${JUST_MR}" --norc --local-build-root "${LBR}" \ + -L '["env", "PATH='"${PATH}"'"]' \ --remote-serve-address ${SERVE} \ -r ${REMOTE_EXECUTION_ADDRESS} \ --fetch-absent setup) cat $CONF echo "${JUST}" install --local-build-root "${LBR}" -C "${CONF}" \ + -L '["env", "PATH='"${PATH}"'"]' \ -r "${REMOTE_EXECUTION_ADDRESS}" -o "${OUT}" 2>&1 grep 42 "${OUT}/out.txt" @@ -85,6 +87,7 @@ grep 42 "${OUT}/out.txt" # about the root should now be available locally, so we can build without # a serve or remote endpoint with still (logically) fetching absent roots. "${JUST_MR}" --norc --just "${JUST}" --local-build-root "${LBR}" \ + -L '["env", "PATH='"${PATH}"'"]' \ --fetch-absent install -o "${OUT2}" 2>&1 grep 42 "${OUT2}/out.txt" @@ -116,6 +119,7 @@ echo cat repos.json echo "${JUST_MR}" --norc --local-build-root "${LBR_NON_ABSENT}" \ + -L '["env", "PATH='"${PATH}"'"]' \ --remote-serve-address ${SERVE} \ -r ${REMOTE_EXECUTION_ADDRESS} \ --just "${JUST}" \ diff --git a/test/end-to-end/just-mr/fetch-absent-git-tree.sh b/test/end-to-end/just-mr/fetch-absent-git-tree.sh index 5ecc034c..fb5d516a 100644 --- a/test/end-to-end/just-mr/fetch-absent-git-tree.sh +++ b/test/end-to-end/just-mr/fetch-absent-git-tree.sh @@ -59,6 +59,7 @@ echo cat repos.json echo CONF=$("${JUST_MR}" --norc --local-build-root "${LBR}" \ + -L '["env", "PATH='"${PATH}"'"]' \ --remote-serve-address ${SERVE} \ -r ${REMOTE_EXECUTION_ADDRESS} \ --fetch-absent setup) @@ -73,6 +74,7 @@ grep 42 "${OUT}/out.txt" # about the root should now be available locally, so we can build without # a serve or remote endpoint with still (logically) fetching absent roots. "${JUST_MR}" --norc --just "${JUST}" --local-build-root "${LBR}" \ + -L '["env", "PATH='"${PATH}"'"]' \ --fetch-absent install -o "${OUT2}" 2>&1 grep 42 "${OUT2}/out.txt" @@ -99,6 +101,7 @@ echo cat repos.json echo "${JUST_MR}" --norc --local-build-root "${LBR_NON_ABSENT}" \ + -L '["env", "PATH='"${PATH}"'"]' \ --remote-serve-address ${SERVE} \ -r ${REMOTE_EXECUTION_ADDRESS} \ --just "${JUST}" \ diff --git a/test/end-to-end/just-mr/fetch-absent.sh b/test/end-to-end/just-mr/fetch-absent.sh index 00c76e7b..30267998 100644 --- a/test/end-to-end/just-mr/fetch-absent.sh +++ b/test/end-to-end/just-mr/fetch-absent.sh @@ -62,12 +62,14 @@ echo cat repos.json echo CONF=$("${JUST_MR}" --norc --local-build-root "${LBR}" \ + -L '["env", "PATH='"${PATH}"'"]' \ --remote-serve-address ${SERVE} \ -r ${REMOTE_EXECUTION_ADDRESS} \ --fetch-absent setup) cat $CONF echo "${JUST}" install --local-build-root "${LBR}" -C "${CONF}" \ + -L '["env", "PATH='"${PATH}"'"]' \ -r "${REMOTE_EXECUTION_ADDRESS}" -o "${OUT}" 2>&1 grep 42 "${OUT}/out.txt" @@ -75,6 +77,7 @@ grep 42 "${OUT}/out.txt" # about the root should now be available locally, so we can build without # a serve or remote endpoint with still (logically) fetching absent roots. "${JUST_MR}" --norc --just "${JUST}" --local-build-root "${LBR}" \ + -L '["env", "PATH='"${PATH}"'"]' \ --fetch-absent install -o "${OUT2}" 2>&1 grep 42 "${OUT2}/out.txt" @@ -108,6 +111,7 @@ EOF "${JUST_MR}" --norc --local-build-root "${LBR}" \ --remote-serve-address ${SERVE} \ -r ${REMOTE_EXECUTION_ADDRESS} \ + -L '["env", "PATH='"${PATH}"'"]' \ --just "${JUST}" \ --fetch-absent install -o "${OUT3}" 2>&1 grep 42 "${OUT3}/out.txt" @@ -147,6 +151,7 @@ echo "${JUST_MR}" --norc --local-build-root "${LBR_NON_ABSENT}" \ --remote-serve-address ${SERVE} \ -r ${REMOTE_EXECUTION_ADDRESS} \ + -L '["env", "PATH='"${PATH}"'"]' \ --just "${JUST}" \ install -o "${OUT_NON_ABSENT}" 2>&1 grep 42 "${OUT_NON_ABSENT}/out.txt" diff --git a/test/end-to-end/just-mr/just-mr.test.sh b/test/end-to-end/just-mr/just-mr.test.sh index 276bcfdf..105f1b97 100644 --- a/test/end-to-end/just-mr/just-mr.test.sh +++ b/test/end-to-end/just-mr/just-mr.test.sh @@ -252,6 +252,7 @@ echo "Test individual repos" test_alone() { CONFIG_CPP=$("${JUST_MR_CPP}" -C test-repos.json --norc \ --local-build-root "${BUILDROOT}" \ + -L '["env", "PATH='"${PATH}"'"]' \ -j 32 setup "$1") if [ ! -s "${CONFIG_CPP}" ]; then exit 1 @@ -279,6 +280,7 @@ echo "Set up parallel run" test_all() { CONFIG_CPP=$("${JUST_MR_CPP}" -C test-repos.json --norc \ --local-build-root "${BUILDROOT}" \ + -L '["env", "PATH='"${PATH}"'"]' \ ${DISTDIR_ARGS} -j 32 setup --all) if [ ! -s "${CONFIG_CPP}" ]; then exit 1 diff --git a/test/end-to-end/remote-execution/large-blobs.sh b/test/end-to-end/remote-execution/large-blobs.sh index 21804977..a338825a 100644 --- a/test/end-to-end/remote-execution/large-blobs.sh +++ b/test/end-to-end/remote-execution/large-blobs.sh @@ -55,7 +55,8 @@ run_tests() { echo echo Upload and download to $NAME $TYPE CAS. echo - "${JUST}" build test $BUILD_ARGS --dump-artifacts result + "${JUST}" build -L '["env", "PATH='"${PATH}"'"]' $BUILD_ARGS \ + --dump-artifacts result echo SUCCESS local ARTIFACT_ID="$(cat result | jq -r '."out.file".id')" diff --git a/test/end-to-end/remote-execution/native-protocol.sh b/test/end-to-end/remote-execution/native-protocol.sh index 3ff3a050..0737b9ff 100644 --- a/test/end-to-end/remote-execution/native-protocol.sh +++ b/test/end-to-end/remote-execution/native-protocol.sh @@ -80,7 +80,9 @@ fi echo echo Upload and download Git tree to local CAS in ${NAME} mode echo -"${JUST}" build -C "${CONF}" --main test test --local-build-root="${LBRDIR}" --dump-artifacts "${RESULT}" ${ARGS} 2>&1 +"${JUST}" build -L '["env", "PATH='"${PATH}"'"]' -C "${CONF}" --main test \ + --local-build-root="${LBRDIR}" --dump-artifacts "${RESULT}" \ + ${ARGS} test 2>&1 TREE_ID="$(jq -r ".${OUT_DIRNAME}.id" "${RESULT}" 2>&1)" test ${TREE_ID} ${EQUAL} ${GIT_TREE_ID} @@ -92,6 +94,8 @@ fi echo echo Upload and download Git tree to remote CAS in ${NAME} mode echo -"${JUST}" build -C "${CONF}" --main test test ${REMOTE_EXECUTION_ARGS} --local-build-root="${LBRDIR}" --dump-artifacts "${RESULT}" ${ARGS} 2>&1 +"${JUST}" build -L '["env", "PATH='"${PATH}"'"]' -C "${CONF}" --main test \ + ${REMOTE_EXECUTION_ARGS} --local-build-root="${LBRDIR}" \ + --dump-artifacts "${RESULT}" ${ARGS} test 2>&1 TREE_ID="$(jq -r ".${OUT_DIRNAME}.id" "${RESULT}" 2>&1)" test ${TREE_ID} ${EQUAL} ${GIT_TREE_ID} diff --git a/test/end-to-end/remote-execution/upload-test.sh b/test/end-to-end/remote-execution/upload-test.sh index f4fbfac7..91f6d069 100644 --- a/test/end-to-end/remote-execution/upload-test.sh +++ b/test/end-to-end/remote-execution/upload-test.sh @@ -59,7 +59,7 @@ fi # Build locally export CONF="$(realpath repos.json)" -"${JUST}" build -C "${CONF}" --local-build-root="${LBRDIR_1}" ${ARGS} 2>&1 +"${JUST}" build -L '["env", "PATH='"${PATH}"'"]' -C "${CONF}" --local-build-root="${LBRDIR_1}" ${ARGS} 2>&1 # Build remotely REMOTE_EXECUTION_ARGS="-r ${REMOTE_EXECUTION_ADDRESS}" @@ -67,7 +67,7 @@ if [ "${REMOTE_EXECUTION_PROPERTIES:-}" != "" ]; then REMOTE_EXECUTION_ARGS="${REMOTE_EXECUTION_ARGS} --remote-execution-property ${REMOTE_EXECUTION_PROPERTIES}" fi -"${JUST}" build -C "${CONF}" --local-build-root="${LBRDIR_1}" ${ARGS} ${REMOTE_EXECUTION_ARGS} 2>&1 +"${JUST}" build -L '["env", "PATH='"${PATH}"'"]' -C "${CONF}" --local-build-root="${LBRDIR_1}" ${ARGS} ${REMOTE_EXECUTION_ARGS} 2>&1 echo === ignore_special root === @@ -84,7 +84,7 @@ fi # Build locally export CONF="$(realpath repos.json)" -"${JUST}" build -C "${CONF}" --local-build-root="${LBRDIR_2}" ${ARGS} 2>&1 +"${JUST}" build -L '["env", "PATH='"${PATH}"'"]' -C "${CONF}" --local-build-root="${LBRDIR_2}" ${ARGS} 2>&1 # Build remotely REMOTE_EXECUTION_ARGS="-r ${REMOTE_EXECUTION_ADDRESS}" @@ -92,4 +92,4 @@ if [ "${REMOTE_EXECUTION_PROPERTIES:-}" != "" ]; then REMOTE_EXECUTION_ARGS="${REMOTE_EXECUTION_ARGS} --remote-execution-property ${REMOTE_EXECUTION_PROPERTIES}" fi -"${JUST}" build -C "${CONF}" --local-build-root="${LBRDIR_2}" ${ARGS} ${REMOTE_EXECUTION_ARGS} 2>&1 +"${JUST}" build -L '["env", "PATH='"${PATH}"'"]' -C "${CONF}" --local-build-root="${LBRDIR_2}" ${ARGS} ${REMOTE_EXECUTION_ARGS} 2>&1 diff --git a/test/end-to-end/serve-service/serve_export_deps.sh b/test/end-to-end/serve-service/serve_export_deps.sh index 64886a4c..e5889505 100644 --- a/test/end-to-end/serve-service/serve_export_deps.sh +++ b/test/end-to-end/serve-service/serve_export_deps.sh @@ -84,9 +84,9 @@ EOF echo "local repos configuration:" cat repos.json -CONF=$("${JUST_MR}" --norc --local-build-root "${SERVE_LBR}" setup) +CONF=$("${JUST_MR}" -L '["env", "PATH='"${PATH}"'"]' --norc --local-build-root "${SERVE_LBR}" setup) cat "${CONF}" -"${JUST}" build --local-build-root "${SERVE_LBR}" -C "${CONF}" -r ${REMOTE_EXECUTION_ADDRESS} ${COMPAT} main +"${JUST}" build -L '["env", "PATH='"${PATH}"'"]' --local-build-root "${SERVE_LBR}" -C "${CONF}" -r ${REMOTE_EXECUTION_ADDRESS} ${COMPAT} main ) # Set up local repository @@ -154,15 +154,17 @@ echo rm "${GENERATOR}" -CONF=$("${JUST_MR}" --norc --local-build-root "${LBR}" ${COMPAT} setup --all) +CONF=$("${JUST_MR}" -L '["env", "PATH='"${PATH}"'"]' --norc --local-build-root "${LBR}" ${COMPAT} setup --all) cat "${CONF}" echo # test that we can successfully compile using just serve "${JUST}" build --main local --local-build-root "${LBR}" -C "${CONF}" \ + -L '["env", "PATH='"${PATH}"'"]' \ --remote-serve-address ${SERVE} \ -r ${REMOTE_EXECUTION_ADDRESS} ${COMPAT} main "${JUST}" build --main local --local-build-root "${LBR}" -C "${CONF}" \ + -L '["env", "PATH='"${PATH}"'"]' \ --remote-serve-address ${SERVE} \ -r ${REMOTE_EXECUTION_ADDRESS} ${COMPAT} main ) diff --git a/test/end-to-end/serve-service/serve_start_execute_sharding.sh b/test/end-to-end/serve-service/serve_start_execute_sharding.sh index ff5a4481..d6486841 100644 --- a/test/end-to-end/serve-service/serve_start_execute_sharding.sh +++ b/test/end-to-end/serve-service/serve_start_execute_sharding.sh @@ -94,7 +94,7 @@ EOF echo "local repos configuration:" cat repos.json echo -CONF=$("${JUST_MR}" --norc --local-build-root "${SERVE_LBR}" setup) +CONF=$("${JUST_MR}" -L '["env", "PATH='"${PATH}"'"]' --norc --local-build-root "${SERVE_LBR}" setup) echo "generated conf": cat "${CONF}" @@ -102,6 +102,7 @@ echo "${JUST}" build \ --local-build-root "${SERVE_LBR}" \ + -L '["env", "PATH='"${PATH}"'"]' \ -C "${CONF}" \ main ) @@ -169,13 +170,14 @@ echo "absent repos configuration:" cat repos.json echo -CONF=$("${JUST_MR}" --norc --local-build-root "${LBR}" setup) +CONF=$("${JUST_MR}" -L '["env", "PATH='"${PATH}"'"]' --norc --local-build-root "${LBR}" setup) cat "${CONF}" echo "${JUST}" build \ --local-build-root "${LBR}" \ --remote-serve-address 127.0.0.1:${PORT} \ + -L '["env", "PATH='"${PATH}"'"]' \ -C "${CONF}" \ main ) diff --git a/test/end-to-end/serve-service/serve_target_cache_hit.sh b/test/end-to-end/serve-service/serve_target_cache_hit.sh index 51ced326..ab20ef07 100644 --- a/test/end-to-end/serve-service/serve_target_cache_hit.sh +++ b/test/end-to-end/serve-service/serve_target_cache_hit.sh @@ -99,7 +99,7 @@ EOF echo "local repos configuration:" cat repos.json echo -CONF=$("${JUST_MR}" --norc --local-build-root "${SERVE_LBR}" setup) +CONF=$("${JUST_MR}" -L '["env", "PATH='"${PATH}"'"]' --norc --local-build-root "${SERVE_LBR}" setup) echo "generated conf": cat "${CONF}" @@ -107,6 +107,7 @@ echo "${JUST}" build \ --local-build-root "${SERVE_LBR}" \ + -L '["env", "PATH='"${PATH}"'"]' \ -C "${CONF}" \ -r "${REMOTE_EXECUTION_ADDRESS}" \ ${COMPAT} \ @@ -140,7 +141,7 @@ echo rm "${GENERATOR}" -CONF=$("${JUST_MR}" --norc --local-build-root "${LBR}" setup) +CONF=$("${JUST_MR}" -L '["env", "PATH='"${PATH}"'"]' --norc --local-build-root "${LBR}" setup) cat "${CONF}" echo # test that it fails without using just serve @@ -151,6 +152,7 @@ echo "failed as expected" # one used by just-serve "${JUST}" analyse \ --local-build-root "${LBR}" \ + -L '["env", "PATH='"${PATH}"'"]' \ --remote-serve-address "${SERVE}" \ -C "${CONF}" \ -r "${SERVE}" \ @@ -162,6 +164,7 @@ echo "failed as expected" # test that we can successfully compile using just serve "${JUST}" build \ --local-build-root "${LBR}" \ + -L '["env", "PATH='"${PATH}"'"]' \ --remote-serve-address "${SERVE}" \ -C "${CONF}" \ -r "${REMOTE_EXECUTION_ADDRESS}" \ diff --git a/test/end-to-end/symlinks/stage-links.sh b/test/end-to-end/symlinks/stage-links.sh index b8234d2a..9b3bbf63 100644 --- a/test/end-to-end/symlinks/stage-links.sh +++ b/test/end-to-end/symlinks/stage-links.sh @@ -49,7 +49,7 @@ if [ "${REMOTE_EXECUTION_PROPERTIES:-}" != "" ]; then fi echo "test staging locally" -${JUST} build ${ARGS} stage-links +${JUST} build -L '["env", "PATH='"${PATH}"'"]' ${ARGS} stage-links echo "test staging remotely" -${JUST} build ${ARGS} ${REMOTE_EXECUTION_ARGS} stage-links +${JUST} build -L '["env", "PATH='"${PATH}"'"]' ${ARGS} ${REMOTE_EXECUTION_ARGS} stage-links diff --git a/test/end-to-end/target-cache/TARGETS b/test/end-to-end/target-cache/TARGETS index ffdeea3c..5a2b0412 100644 --- a/test/end-to-end/target-cache/TARGETS +++ b/test/end-to-end/target-cache/TARGETS @@ -29,6 +29,17 @@ , "TESTS": { "type": "install" , "tainted": ["test"] - , "deps": ["target-cache-hit", "artifacts-sync"] + , "arguments_config": ["TEST_BOOTSTRAP_JUST_MR"] + , "deps": + { "type": "++" + , "$1": + [ ["target-cache-hit"] + , { "type": "if" + , "cond": {"type": "var", "name": "TEST_BOOTSTRAP_JUST_MR"} + , "then": [] + , "else": ["artifacts-sync"] + } + ] + } } } diff --git a/test/end-to-end/target-cache/artifacts-sync.sh b/test/end-to-end/target-cache/artifacts-sync.sh index 35374ede..32c794f5 100644 --- a/test/end-to-end/target-cache/artifacts-sync.sh +++ b/test/end-to-end/target-cache/artifacts-sync.sh @@ -39,6 +39,7 @@ readonly TCDIR="$FIRST_GEN/tc" # Start local remote execution server # ------------------------------------------------------------------------------ "${JUST}" execute --info-file "${INFOFILE}" --pid-file "${PIDFILE}" \ + -L '["env", "PATH='"${PATH}"'"]' \ --local-build-root "${REMOTE_CACHE}" ${ARGS} 2>&1 & for _ in `seq 1 60`; do @@ -87,6 +88,7 @@ sed -i "s|<RULES_PATH>|${RULES_DIR}|" repos.json # Build greetlib remotely "${JUST_MR}" --norc --just "${JUST}" --local-build-root "${LOCAL_CACHE}" \ + -L '["env", "PATH='"${PATH}"'"]' \ build ${ARGS} -r localhost:${PORT} --dump-graph graph.json main 2>&1 # Count actions without tc @@ -105,6 +107,7 @@ rm -rf "${REMOTE_CACHE}" # Build greetlib remotely "${JUST_MR}" --norc --just "${JUST}" --local-build-root "${LOCAL_CACHE}" \ + -L '["env", "PATH='"${PATH}"'"]' \ build ${ARGS} -r localhost:${PORT} --dump-graph graph-tc.json main 2>&1 # Count actions with tc @@ -122,6 +125,7 @@ rm -rf "${REMOTE_CACHE}" # Build pydicts remotely "${JUST_MR}" --norc --just "${JUST}" --local-build-root "${LOCAL_CACHE}" \ + -L '["env", "PATH='"${PATH}"'"]' \ build ${ARGS} -r localhost:${PORT} json_from_py 2>&1 # Clear remote cache @@ -129,4 +133,5 @@ rm -rf "${REMOTE_CACHE}" # Build pydicts remotely "${JUST_MR}" --norc --just "${JUST}" --local-build-root "${LOCAL_CACHE}" \ + -L '["env", "PATH='"${PATH}"'"]' \ build ${ARGS} -r localhost:${PORT} json_from_py 2>&1 diff --git a/test/end-to-end/target-cache/target-cache-hit.sh b/test/end-to-end/target-cache/target-cache-hit.sh index 6ff97418..d2e3381a 100644 --- a/test/end-to-end/target-cache/target-cache-hit.sh +++ b/test/end-to-end/target-cache/target-cache-hit.sh @@ -56,8 +56,8 @@ fi # build project twice locally to trigger a target cache hit export CONF="$("$JUST_MR" --norc -C repos.json --local-build-root="$LBRDIR" setup main)" -"$JUST" build -C "$CONF" main --local-build-root="$LBRDIR" $ARGS 2>&1 -"$JUST" build -C "$CONF" main --local-build-root="$LBRDIR" $ARGS 2>&1 +"$JUST" build -L '["env", "PATH='"${PATH}"'"]' -C "$CONF" main --local-build-root="$LBRDIR" $ARGS 2>&1 +"$JUST" build -L '["env", "PATH='"${PATH}"'"]' -C "$CONF" main --local-build-root="$LBRDIR" $ARGS 2>&1 REMOTE_EXECUTION_ARGS="" if [ "${REMOTE_EXECUTION_ADDRESS:-}" != "" ]; then @@ -68,5 +68,5 @@ if [ "${REMOTE_EXECUTION_ADDRESS:-}" != "" ]; then fi # build project twice remotely to trigger a target cache hit -"$JUST" build -C "$CONF" main --local-build-root="$LBRDIR" $ARGS $REMOTE_EXECUTION_ARGS 2>&1 -"$JUST" build -C "$CONF" main --local-build-root="$LBRDIR" $ARGS $REMOTE_EXECUTION_ARGS 2>&1 +"$JUST" build -L '["env", "PATH='"${PATH}"'"]' -C "$CONF" main --local-build-root="$LBRDIR" $ARGS $REMOTE_EXECUTION_ARGS 2>&1 +"$JUST" build -L '["env", "PATH='"${PATH}"'"]' -C "$CONF" main --local-build-root="$LBRDIR" $ARGS $REMOTE_EXECUTION_ARGS 2>&1 diff --git a/test/end-to-end/target-tests/glob.sh b/test/end-to-end/target-tests/glob.sh index f655b3e3..131d533e 100755 --- a/test/end-to-end/target-tests/glob.sh +++ b/test/end-to-end/target-tests/glob.sh @@ -129,7 +129,7 @@ EOI do_test() { echo === Enumeration refres to targets === - ${TOOL} install -C ${CONF} --local-build-root ${BUILDROOT} -o ${OUTDIR}/enum enumeration 2>&1 + ${TOOL} install -L '["env", "PATH='"${PATH}"'"]' -C ${CONF} --local-build-root ${BUILDROOT} -o ${OUTDIR}/enum enumeration 2>&1 cat ${OUTDIR}/enum/keys.txt echo @@ -141,7 +141,7 @@ do_test() { echo === Glob always refres to files and directories are ignored === - ${TOOL} install -C ${CONF} --local-build-root ${BUILDROOT} -o ${OUTDIR}/glob glob 2>&1 + ${TOOL} install -L '["env", "PATH='"${PATH}"'"]' -C ${CONF} --local-build-root ${BUILDROOT} -o ${OUTDIR}/glob glob 2>&1 cat ${OUTDIR}/glob/keys.txt echo @@ -153,7 +153,7 @@ do_test() { echo === Globs and targets can be combined === - ${TOOL} install -C ${CONF} --local-build-root ${BUILDROOT} -o ${OUTDIR}/with_target with_target 2>&1 + ${TOOL} install -L '["env", "PATH='"${PATH}"'"]' -C ${CONF} --local-build-root ${BUILDROOT} -o ${OUTDIR}/with_target with_target 2>&1 cat ${OUTDIR}/with_target/keys.txt echo @@ -165,7 +165,7 @@ do_test() { echo === Globs only inspect the top-level directory of the module === - ${TOOL} install -C ${CONF} --local-build-root ${BUILDROOT} -o ${OUTDIR}/not_top_level not_top_level 2>&1 + ${TOOL} install -L '["env", "PATH='"${PATH}"'"]' -C ${CONF} --local-build-root ${BUILDROOT} -o ${OUTDIR}/not_top_level not_top_level 2>&1 cat ${OUTDIR}/not_top_level/keys.txt echo diff --git a/test/end-to-end/target-tests/repo_names.sh b/test/end-to-end/target-tests/repo_names.sh index aec5996a..65929674 100755 --- a/test/end-to-end/target-tests/repo_names.sh +++ b/test/end-to-end/target-tests/repo_names.sh @@ -88,7 +88,7 @@ EOF mkdir -p .root echo == Building in A == -./bin/tool-under-test install -C bindings.json -o . --local-build-root .root --main A . back 2>&1 +./bin/tool-under-test install -L '["env", "PATH='"${PATH}"'"]' -C bindings.json -o . --local-build-root .root --main A . back 2>&1 cat back.txt grep -q 'I am A' back.txt grep -q 'This is B' back.txt @@ -96,7 +96,7 @@ grep -q 'Hello A' back.txt rm -f back.txt echo == Building in B == -./bin/tool-under-test install -C bindings.json -o . --local-build-root .root --main B . back 2>&1 +./bin/tool-under-test install -L '["env", "PATH='"${PATH}"'"]' -C bindings.json -o . --local-build-root .root --main B . back 2>&1 cat back.txt grep -q 'I am B' back.txt grep -q 'This is A' back.txt diff --git a/test/end-to-end/target-tests/tree-inputs.sh b/test/end-to-end/target-tests/tree-inputs.sh index edbe7f7e..7a0398b8 100755 --- a/test/end-to-end/target-tests/tree-inputs.sh +++ b/test/end-to-end/target-tests/tree-inputs.sh @@ -38,6 +38,7 @@ cat > src/TARGETS <<'EOF' EOF ./bin/tool-under-test install -o out --workspace-root src \ + -L '["env", "PATH='"${PATH}"'"]' \ --local-build-root .root . read_trees 2>&1 grep SUCCESS out/result diff --git a/test/end-to-end/target-tests/upwards.sh b/test/end-to-end/target-tests/upwards.sh index fb700588..d196a8e8 100755 --- a/test/end-to-end/target-tests/upwards.sh +++ b/test/end-to-end/target-tests/upwards.sh @@ -38,6 +38,7 @@ cat > src/TARGETS <<'EOF' EOF ./bin/tool-under-test install -o out --workspace-root src \ + -L '["env", "PATH='"${PATH}"'"]' \ --local-build-root .root . it 2>&1 grep OK out/out @@ -61,6 +62,7 @@ EOF ./bin/tool-under-test install -o out2 --workspace-root src \ + -L '["env", "PATH='"${PATH}"'"]' \ --local-build-root .root deep 'OK up' 2>&1 grep OK out2/out |