Skip to content

Commit

Permalink
reftest: add download test, to test OPAMFETCH & OPAMCURL handling
Browse files Browse the repository at this point in the history
  • Loading branch information
rjbou committed Sep 12, 2023
1 parent 92b2bba commit 667b6ed
Show file tree
Hide file tree
Showing 3 changed files with 169 additions and 0 deletions.
1 change: 1 addition & 0 deletions master_changes.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ users)
* Add several checksum & cache validation checks for archive, extra-source section, and extra-file field [#5560 @rjbou]
* Move local-cache into archive-field-checks test [#5560 @rjbou]
* Admin: add `admin add-extrafiles` test cases [#5647 @rjbou]
* Add download test, to check `OPAMCURL/OPAMFETCH` handling [#5607 @rjbou]

### Engine
* With real path resolved for all opam temp dir, remove `/private` from mac temp dir regexp [#5654 @rjbou]
Expand Down
150 changes: 150 additions & 0 deletions tests/reftests/download.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
N0REP0
### ::::::::::::::::::::::::::::::::::
### :I: OPAMFETCH & OPAMCURL variables
### ::::::::::::::::::::::::::::::::::
### OPAMVERBOSE=2
### opam --version >$ OPAMVERSION
### <pkg:foo.1>
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 "^+-" | ".*\(curl\|wget\).* \"--\"" -> 'curl-or-wget --' | sed-cmd tar
The following actions will be performed:
=== install 1 package
- install foo 1

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
Processing 1/1: [foo.1: http]
curl-or-wget -- "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 | "${OPAMVERSION}" -> "current"
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/current" "--" "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 | "${OPAMVERSION}" -> "current"
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/current" "-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
### <bin/curl>
#!/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 | "${OPAMVERSION}" -> "current"
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/current" "-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 | "${OPAMVERSION}" -> "current"
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/current" "--" "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
18 changes: 18 additions & 0 deletions tests/reftests/dune.inc
Original file line number Diff line number Diff line change
Expand Up @@ -359,6 +359,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
Expand Down

0 comments on commit 667b6ed

Please sign in to comment.