From 32f49711399ef29ffe3443d0bf981b52afdb02ba Mon Sep 17 00:00:00 2001 From: Stephen Sherratt Date: Mon, 15 May 2023 23:26:19 +1000 Subject: [PATCH] Add basic tests of lockfile generation Signed-off-by: Stephen Sherratt --- .../packages/bar/bar.0.0.1/opam | 1 + .../packages/bar/bar.0.4.0/opam | 1 + .../packages/bar/bar.0.5.0/opam | 1 + .../packages/baz/baz.0.0.1/opam | 1 + .../packages/baz/baz.0.1.0/opam | 1 + .../packages/foo/foo.0.0.1/opam | 5 ++ .../pkg/lockfile-generation.t/run.t | 85 +++++++++++++++++++ 7 files changed, 95 insertions(+) create mode 100644 test/blackbox-tests/test-cases/pkg/lockfile-generation.t/mock-opam-repository/packages/bar/bar.0.0.1/opam create mode 100644 test/blackbox-tests/test-cases/pkg/lockfile-generation.t/mock-opam-repository/packages/bar/bar.0.4.0/opam create mode 100644 test/blackbox-tests/test-cases/pkg/lockfile-generation.t/mock-opam-repository/packages/bar/bar.0.5.0/opam create mode 100644 test/blackbox-tests/test-cases/pkg/lockfile-generation.t/mock-opam-repository/packages/baz/baz.0.0.1/opam create mode 100644 test/blackbox-tests/test-cases/pkg/lockfile-generation.t/mock-opam-repository/packages/baz/baz.0.1.0/opam create mode 100644 test/blackbox-tests/test-cases/pkg/lockfile-generation.t/mock-opam-repository/packages/foo/foo.0.0.1/opam create mode 100644 test/blackbox-tests/test-cases/pkg/lockfile-generation.t/run.t diff --git a/test/blackbox-tests/test-cases/pkg/lockfile-generation.t/mock-opam-repository/packages/bar/bar.0.0.1/opam b/test/blackbox-tests/test-cases/pkg/lockfile-generation.t/mock-opam-repository/packages/bar/bar.0.0.1/opam new file mode 100644 index 000000000000..013b84db6175 --- /dev/null +++ b/test/blackbox-tests/test-cases/pkg/lockfile-generation.t/mock-opam-repository/packages/bar/bar.0.0.1/opam @@ -0,0 +1 @@ +opam-version: "2.0" diff --git a/test/blackbox-tests/test-cases/pkg/lockfile-generation.t/mock-opam-repository/packages/bar/bar.0.4.0/opam b/test/blackbox-tests/test-cases/pkg/lockfile-generation.t/mock-opam-repository/packages/bar/bar.0.4.0/opam new file mode 100644 index 000000000000..013b84db6175 --- /dev/null +++ b/test/blackbox-tests/test-cases/pkg/lockfile-generation.t/mock-opam-repository/packages/bar/bar.0.4.0/opam @@ -0,0 +1 @@ +opam-version: "2.0" diff --git a/test/blackbox-tests/test-cases/pkg/lockfile-generation.t/mock-opam-repository/packages/bar/bar.0.5.0/opam b/test/blackbox-tests/test-cases/pkg/lockfile-generation.t/mock-opam-repository/packages/bar/bar.0.5.0/opam new file mode 100644 index 000000000000..013b84db6175 --- /dev/null +++ b/test/blackbox-tests/test-cases/pkg/lockfile-generation.t/mock-opam-repository/packages/bar/bar.0.5.0/opam @@ -0,0 +1 @@ +opam-version: "2.0" diff --git a/test/blackbox-tests/test-cases/pkg/lockfile-generation.t/mock-opam-repository/packages/baz/baz.0.0.1/opam b/test/blackbox-tests/test-cases/pkg/lockfile-generation.t/mock-opam-repository/packages/baz/baz.0.0.1/opam new file mode 100644 index 000000000000..013b84db6175 --- /dev/null +++ b/test/blackbox-tests/test-cases/pkg/lockfile-generation.t/mock-opam-repository/packages/baz/baz.0.0.1/opam @@ -0,0 +1 @@ +opam-version: "2.0" diff --git a/test/blackbox-tests/test-cases/pkg/lockfile-generation.t/mock-opam-repository/packages/baz/baz.0.1.0/opam b/test/blackbox-tests/test-cases/pkg/lockfile-generation.t/mock-opam-repository/packages/baz/baz.0.1.0/opam new file mode 100644 index 000000000000..013b84db6175 --- /dev/null +++ b/test/blackbox-tests/test-cases/pkg/lockfile-generation.t/mock-opam-repository/packages/baz/baz.0.1.0/opam @@ -0,0 +1 @@ +opam-version: "2.0" diff --git a/test/blackbox-tests/test-cases/pkg/lockfile-generation.t/mock-opam-repository/packages/foo/foo.0.0.1/opam b/test/blackbox-tests/test-cases/pkg/lockfile-generation.t/mock-opam-repository/packages/foo/foo.0.0.1/opam new file mode 100644 index 000000000000..990146824636 --- /dev/null +++ b/test/blackbox-tests/test-cases/pkg/lockfile-generation.t/mock-opam-repository/packages/foo/foo.0.0.1/opam @@ -0,0 +1,5 @@ +opam-version: "2.0" +depends: [ + "baz" {>= "0.1"} + "bar" {>= "0.2"} +] diff --git a/test/blackbox-tests/test-cases/pkg/lockfile-generation.t/run.t b/test/blackbox-tests/test-cases/pkg/lockfile-generation.t/run.t new file mode 100644 index 000000000000..ef91027b5efc --- /dev/null +++ b/test/blackbox-tests/test-cases/pkg/lockfile-generation.t/run.t @@ -0,0 +1,85 @@ +Simple example of generating a lock file with Dune + +Generate a `dune-project` file. + $ cat >dune-project < (lang dune 3.8) + > (package + > (name lockfile_generation_test) + > (depends + > foo + > (bar (>= "0.3")) + > )) + > EOF + +Run the solver and generate a lock directory. + $ dune pkg lock --opam-env=pure --opam-repository=mock-opam-repository + Selected the following packages: + bar.0.4.0 + baz.0.1.0 + foo.0.0.1 + lockfile_generation_test.LOCAL + +Print the name and contents of each file in the lock directory separated by +"---", sorting by filename for consistency. + $ find dune.lock -type f | sort | xargs -I{} sh -c "printf '{}:\n\n'; cat {}; printf '\n\n---\n\n'" + dune.lock/bar: + + (version 0.4.0) + (dev false) + + --- + + dune.lock/baz: + + (version 0.1.0) + (dev false) + + --- + + dune.lock/foo: + + (version 0.0.1) + (deps baz bar) + (dev false) + + --- + + dune.lock/lock.dune: + + (lang package 0.1) + + --- + + dune.lock/lockfile_generation_test: + + (version LOCAL) + (deps foo bar) + (dev true) + + --- + + +Regenerate the `dune-project` file introducing an unsatisfiable constraint. + $ cat >dune-project < (lang dune 3.8) + > (package + > (name lockfile_generation_test) + > (depends + > foo + > (bar (>= "0.6")) + > )) + > EOF + +Run the solver again. This time it will fail. + $ dune pkg lock --opam-env=pure --opam-repository=mock-opam-repository + Error: Can't find all required versions. + Selected: baz.0.1.0 foo.0.0.1 lockfile_generation_test.LOCAL + - bar -> (problem) + foo 0.0.1 requires >= 0.2 + lockfile_generation_test LOCAL requires >= 0.6 + Rejected candidates: + bar.0.5.0: Incompatible with restriction: >= 0.6 + bar.0.4.0: Incompatible with restriction: >= 0.6 + bar.0.0.1: Incompatible with restriction: >= 0.2 + [1] +