From c51c93702d26e67120872bad4dc7ee5d25d09655 Mon Sep 17 00:00:00 2001 From: Raja Boujbel Date: Wed, 19 Jul 2023 12:50:21 +0200 Subject: [PATCH] reftest: add download test, to test OPAMFETCH & OPAMCURL handling --- tests/reftests/download.test | 149 +++++++++++++++++++++++++++++++++++ tests/reftests/dune.inc | 18 +++++ 2 files changed, 167 insertions(+) create mode 100644 tests/reftests/download.test diff --git a/tests/reftests/download.test b/tests/reftests/download.test new file mode 100644 index 00000000000..c019ab1ef4a --- /dev/null +++ b/tests/reftests/download.test @@ -0,0 +1,149 @@ +N0REP0 +### :::::::::::::::::::::::::::::::::: +### :I: OPAMFETCH & OPAMCURL variables +### :::::::::::::::::::::::::::::::::: +### OPAMVERBOSE=2 +### +opam-version: "2.0" +url { + src: "https://github.com/UnixJunkie/get_line/archive/v1.0.0.tar.gz" + checksum: "md5=c9c157af4229fbb45d3f59f0d6d75dbe" +} +### opam switch create download --empty +### opam install foo --download-only | grep -v "^+-" | sed-cmd curl | sed-cmd tar +The following actions will be performed: +=== install 1 package + - install foo 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/1: [foo.1: http] +curl "--write-out" "%{http_code}\n" "--retry" "3" "--retry-delay" "2" "--user-agent" "opam/2.2.0~alpha" "-L" "-o" "${BASEDIR}/OPAM/download/.opam-switch/sources/foo.1/v1.0.0.tar.gz.part" "--" "https://github.com/UnixJunkie/get_line/archive/v1.0.0.tar.gz" +Processing 1/1: +tar "xfz" "${OPAMTMP}/v1.0.0.tar.gz" "-C" "${OPAMTMP}" +Done. +### opam clean -c +Clearing cache of downloaded files +### :I:a: FETCH wget +### OPAMFETCH=wget +### opam install foo --download-only | grep -v "^+-" | sed-cmd wget | sed-cmd tar +The following actions will be performed: +=== install 1 package + - install foo 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/1: [foo.1: http] +wget "--content-disposition" "-t" "3" "-O" "${BASEDIR}/OPAM/download/.opam-switch/sources/foo.1/v1.0.0.tar.gz.part" "-U" "opam/2.2.0~alpha" "--" "https://github.com/UnixJunkie/get_line/archive/v1.0.0.tar.gz" +Processing 1/1: +tar "xfz" "${OPAMTMP}/v1.0.0.tar.gz" "-C" "${OPAMTMP}" +Done. +### opam clean -c +Clearing cache of downloaded files +### :I:b: FETCH curl +### OPAMFETCH=curl +### opam install foo --download-only | grep -v "^+-" | sed-cmd curl | sed-cmd tar +The following actions will be performed: +=== install 1 package + - install foo 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/1: [foo.1: http] +curl "--write-out" "%{http_code}\n" "--retry" "3" "--retry-delay" "2" "--user-agent" "opam/2.2.0~alpha" "-L" "-o" "${BASEDIR}/OPAM/download/.opam-switch/sources/foo.1/v1.0.0.tar.gz.part" "--" "https://github.com/UnixJunkie/get_line/archive/v1.0.0.tar.gz" +Processing 1/1: +tar "xfz" "${OPAMTMP}/v1.0.0.tar.gz" "-C" "${OPAMTMP}" +Done. +### opam clean -c +Clearing cache of downloaded files +### :I:c: FETCH curl with args +### OPAMFETCH="curl --another-args %{retry}%" +### opam install foo --download-only | grep -v "^+-" | sed-cmd curl +The following actions will be performed: +=== install 1 package + - install foo 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/1: [foo.1: http] +curl "--another-args" "3" +[ERROR] Failed to get sources of foo.1: Curl failed + +OpamSolution.Fetch_fail("https://github.com/UnixJunkie/get_line/archive/v1.0.0.tar.gz (Curl failed: curl --another-args 3\" exited with code 2)") + + +<><> Error report <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> +'${OPAM} install foo --download-only' failed. +# Return code 40 # +### opam clean -c +Clearing cache of downloaded files +### +#!/usr/bin/env bash +echo "***The curl is a lie*** [args: $@]" +### chmod +x bin/curl +### :I:d: local curl +### OPAMCURL=$BASEDIR/bin/curl +### opam install foo --download-only | grep -v "^+-" | sed-cmd curl +The following actions will be performed: +=== install 1 package + - install foo 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/1: [foo.1: http] +curl "--another-args" "3" +[ERROR] Failed to get sources of foo.1: Curl failed + +OpamSolution.Fetch_fail("https://github.com/UnixJunkie/get_line/archive/v1.0.0.tar.gz (Curl failed: curl --another-args 3\" exited with code 2)") + + +<><> Error report <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> +'${OPAM} install foo --download-only' failed. +# Return code 40 # +### opam clean -c +Clearing cache of downloaded files +### :I:e: FETCH curl & local curl +### OPAMFETCH=curl OPAMCURL=$BASEDIR/bin/curl +### opam install foo --download-only | grep -v "^+-" | sed-cmd curl | sed-cmd tar +The following actions will be performed: +=== install 1 package + - install foo 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/1: [foo.1: http] +curl "--write-out" "%{http_code}\n" "--retry" "3" "--retry-delay" "2" "--user-agent" "opam/2.2.0~alpha" "-L" "-o" "${BASEDIR}/OPAM/download/.opam-switch/sources/foo.1/v1.0.0.tar.gz.part" "--" "https://github.com/UnixJunkie/get_line/archive/v1.0.0.tar.gz" +Processing 1/1: +tar "xfz" "${OPAMTMP}/v1.0.0.tar.gz" "-C" "${OPAMTMP}" +Done. +### opam clean -c +Clearing cache of downloaded files +### :I:f: FETCH curl with args & local curl +### OPAMFETCH="curl --another-args %{retry}%" OPAMCURL=$BASEDIR/bin/curl +### opam install foo --download-only | grep -v "^+-" | sed-cmd curl +The following actions will be performed: +=== install 1 package + - install foo 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/1: [foo.1: http] +curl "--another-args" "3" +[ERROR] Failed to get sources of foo.1: Curl failed + +OpamSolution.Fetch_fail("https://github.com/UnixJunkie/get_line/archive/v1.0.0.tar.gz (Curl failed: curl --another-args 3\" exited with code 2)") + + +<><> Error report <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> +'${OPAM} install foo --download-only' failed. +# Return code 40 # +### opam clean -c +Clearing cache of downloaded files +### :I:g: FETCH wget & local curl +### OPAMFETCH=wget OPAMCURL=$BASEDIR/bin/curl +### opam install foo --download-only | grep -v "^+-" | sed-cmd wget | sed-cmd tar +The following actions will be performed: +=== install 1 package + - install foo 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/1: [foo.1: http] +wget "--content-disposition" "-t" "3" "-O" "${BASEDIR}/OPAM/download/.opam-switch/sources/foo.1/v1.0.0.tar.gz.part" "-U" "opam/2.2.0~alpha" "--" "https://github.com/UnixJunkie/get_line/archive/v1.0.0.tar.gz" +Processing 1/1: +tar "xfz" "${OPAMTMP}/v1.0.0.tar.gz" "-C" "${OPAMTMP}" +Done. +### opam clean -c +Clearing cache of downloaded files diff --git a/tests/reftests/dune.inc b/tests/reftests/dune.inc index eeefb8bc9d3..5216a1daebd 100644 --- a/tests/reftests/dune.inc +++ b/tests/reftests/dune.inc @@ -341,6 +341,24 @@ %{targets} (run ./run.exe %{exe:../../src/client/opamMain.exe.exe} %{dep:dot-install.test} %{read-lines:testing-env})))) +(rule + (alias reftest-download) + (action + (diff download.test download.out))) + +(alias + (name reftest) + (deps (alias reftest-download))) + +(rule + (targets download.out) + (deps root-N0REP0) + (package opam) + (action + (with-stdout-to + %{targets} + (run ./run.exe %{exe:../../src/client/opamMain.exe.exe} %{dep:download.test} %{read-lines:testing-env})))) + (rule (alias reftest-empty-conflicts-001) (action