This commit is contained in:
parent
aa2ff7b2f0
commit
2f3113f55d
11742 changed files with 1223940 additions and 0 deletions
|
|
@ -0,0 +1,222 @@
|
|||
Demonstrate our support for pin-depends.
|
||||
|
||||
$ . ../git-helpers.sh
|
||||
$ . ./helpers.sh
|
||||
|
||||
$ add_mock_repo_if_needed
|
||||
$ cat >dune-project <<EOF
|
||||
> (lang dune 3.13)
|
||||
> EOF
|
||||
$ mkrepo
|
||||
$ mkpkg bar 0.0.1
|
||||
|
||||
$ runtest() {
|
||||
> cat >foo.opam <<EOF
|
||||
> opam-version: "2.0"
|
||||
> depends: [ "bar" ]
|
||||
> pin-depends: [ "bar.1.0.0" "$1" ]
|
||||
> EOF
|
||||
> dune pkg lock && {
|
||||
> local pkg="dune.lock/bar.pkg";
|
||||
> grep version $pkg;
|
||||
> grep dev $pkg;
|
||||
> print_source "bar";
|
||||
> }
|
||||
> }
|
||||
|
||||
Local pinned source.
|
||||
|
||||
"opam" file at the root
|
||||
|
||||
$ dir=_bar_file
|
||||
$ mkdir $dir
|
||||
$ cat >$dir/opam <<EOF
|
||||
> opam-version: "2.0"
|
||||
> EOF
|
||||
$ runtest "file://$PWD/$dir"
|
||||
Solution for dune.lock:
|
||||
- bar.1.0.0
|
||||
(version 1.0.0)
|
||||
(dev)
|
||||
(source (fetch (url file://PWD/_bar_file))) (dev)
|
||||
|
||||
"opam" directory at the root
|
||||
|
||||
$ dir=_bar_file_opam_dir
|
||||
$ mkdir -p $dir/opam
|
||||
$ cat >$dir/opam/bar.opam <<EOF
|
||||
> opam-version: "2.0"
|
||||
> EOF
|
||||
$ runtest "file://$PWD/$dir"
|
||||
Solution for dune.lock:
|
||||
- bar.1.0.0
|
||||
(version 1.0.0)
|
||||
(dev)
|
||||
(source (fetch (url file://PWD/_bar_file_opam_dir))) (dev)
|
||||
|
||||
"bar.opam" file at the root
|
||||
|
||||
$ dir=_bar_named_opam_root
|
||||
$ mkdir $dir
|
||||
$ cat >$dir/bar.opam <<EOF
|
||||
> opam-version: "2.0"
|
||||
> EOF
|
||||
$ runtest "file://$PWD/$dir"
|
||||
Solution for dune.lock:
|
||||
- bar.1.0.0
|
||||
(version 1.0.0)
|
||||
(dev)
|
||||
(source (fetch (url file://PWD/_bar_named_opam_root))) (dev)
|
||||
|
||||
"bar.opam" file at opam/
|
||||
|
||||
$ dir=_bar_named_opam_subdir
|
||||
$ mkdir -p $dir/opam
|
||||
$ cat >$dir/opam/bar.opam <<EOF
|
||||
> opam-version: "2.0"
|
||||
> EOF
|
||||
$ runtest "file://$PWD/$dir"
|
||||
Solution for dune.lock:
|
||||
- bar.1.0.0
|
||||
(version 1.0.0)
|
||||
(dev)
|
||||
(source (fetch (url file://PWD/_bar_named_opam_subdir))) (dev)
|
||||
|
||||
Git pinned source:
|
||||
|
||||
$ dir=_bar_git
|
||||
$ mkdir $dir
|
||||
$ cd $dir
|
||||
$ git init --quiet
|
||||
$ cat >opam <<EOF
|
||||
> opam-version: "2.0"
|
||||
> EOF
|
||||
$ git add -A
|
||||
$ git commit --quiet -m "Initial commit"
|
||||
$ cd ..
|
||||
$ runtest "git+file://$PWD/$dir"
|
||||
Solution for dune.lock:
|
||||
- bar.1.0.0
|
||||
(version 1.0.0)
|
||||
(dev)
|
||||
(source (fetch (url git+file://PWD/_bar_git))) (dev)
|
||||
|
||||
Git pinned source with toplevel opam file:
|
||||
|
||||
$ dir=_bar_opam_git
|
||||
$ mkdir $dir
|
||||
$ cd $dir
|
||||
$ git init --quiet
|
||||
$ cat >bar.opam <<EOF
|
||||
> opam-version: "2.0"
|
||||
> EOF
|
||||
$ git add -A
|
||||
$ git commit --quiet -m "Initial commit"
|
||||
$ cd ..
|
||||
$ runtest "git+file://$PWD/$dir"
|
||||
Solution for dune.lock:
|
||||
- bar.1.0.0
|
||||
(version 1.0.0)
|
||||
(dev)
|
||||
(source (fetch (url git+file://PWD/_bar_opam_git))) (dev)
|
||||
|
||||
Git pinned source with toplevel opam dir 1
|
||||
|
||||
$ dir=_bar_opam_dir_git1
|
||||
$ mkdir $dir
|
||||
$ cd $dir
|
||||
$ git init --quiet
|
||||
$ mkdir opam
|
||||
$ cat >opam/opam <<EOF
|
||||
> opam-version: "2.0"
|
||||
> EOF
|
||||
$ git add -A
|
||||
$ git commit --quiet -m "Initial commit"
|
||||
$ cd ..
|
||||
$ runtest "git+file://$PWD/$dir"
|
||||
Solution for dune.lock:
|
||||
- bar.1.0.0
|
||||
(version 1.0.0)
|
||||
(dev)
|
||||
(source (fetch (url git+file://PWD/_bar_opam_dir_git1))) (dev)
|
||||
|
||||
Git pinned source with toplevel opam dir 2
|
||||
|
||||
$ dir=_bar_opam_dir_git2
|
||||
$ mkdir $dir
|
||||
$ cd $dir
|
||||
$ git init --quiet
|
||||
$ mkdir opam
|
||||
$ cat >opam/foo.opam <<EOF
|
||||
> opam-version: "2.0"
|
||||
> EOF
|
||||
$ git add -A
|
||||
$ git commit --quiet -m "Initial commit"
|
||||
$ cd ..
|
||||
$ runtest "git+file://$PWD/$dir"
|
||||
File "foo.opam", line 1, characters 0-0:
|
||||
Error: unable to discover an opam file for package bar
|
||||
[1]
|
||||
|
||||
Pin to something that doesn't have an opam file
|
||||
|
||||
$ dir=_no_opam; mkdir $dir
|
||||
$ runtest "file://$PWD/$dir"
|
||||
File "foo.opam", line 1, characters 0-0:
|
||||
Error: unable to discover an opam file for package bar
|
||||
[1]
|
||||
|
||||
Pin to an invalid opam file
|
||||
|
||||
$ dir=_invalid_opam; mkdir $dir
|
||||
$ touch $dir/opam
|
||||
$ runtest "file://$PWD/$dir"
|
||||
File "$TESTCASE_ROOT/_invalid_opam/opam", line 1, characters 0-0:
|
||||
Error: unexpected version
|
||||
unsupported or missing file format version; should be 2.0 or older
|
||||
[1]
|
||||
|
||||
Pin to an HTTP archive work
|
||||
|
||||
$ mkdir _source/
|
||||
$ cat > _source/bar.opam << EOF
|
||||
> opam-version: "2.0"
|
||||
> EOF
|
||||
$ tar cf tarball.tar -C _source bar.opam
|
||||
$ MD5_CHECKSUM=$(md5sum tarball.tar | cut -f1 -d' ')
|
||||
$ echo tarball.tar > fake-curls
|
||||
$ PORT=1
|
||||
$ runtest "http://0.0.0.0:$PORT/tarball.tar" > output
|
||||
Solution for dune.lock:
|
||||
- bar.1.0.0
|
||||
$ grep "md5=$MD5_CHECKSUM" output 2>&1 > /dev/null && echo "Checksum matches"
|
||||
Checksum matches
|
||||
|
||||
Pin to an HTTP archive detects wrong hash
|
||||
|
||||
$ cat << EOF > dune
|
||||
> (library
|
||||
> (name foo)
|
||||
> (libraries bar))
|
||||
> EOF
|
||||
$ sed -i.tmp "s/$MD5_CHECKSUM/92449184682b45b5f07e811fdd61d35f/g" dune.lock/bar.pkg
|
||||
$ rm -rf already-served
|
||||
$ dune build 2>&1 | grep -v "md5"
|
||||
File "dune.lock/bar.pkg", line 6, characters 12-48:
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
Error: Invalid checksum, got
|
||||
|
||||
Pin to an HTTP archive needs `dune pkg lock` to download and compute the hash
|
||||
of the target again
|
||||
|
||||
$ rm tarball.tar already-served
|
||||
$ echo "update checksum" > _source/random_file
|
||||
$ tar cf tarball.tar -C _source bar.opam random_file
|
||||
$ MD5_CHECKSUM=$(md5sum tarball.tar | cut -f1 -d' ')
|
||||
$ echo tarball.tar > fake-curls
|
||||
$ runtest "http://0.0.0.0:$PORT/tarball.tar" > output
|
||||
Solution for dune.lock:
|
||||
- bar.1.0.0
|
||||
$ grep "md5=$MD5_CHECKSUM" output 2>&1 > /dev/null && echo "Checksum matches"
|
||||
Checksum matches
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue