From 1a9a2b743616a6c8e3ebaa67f48509b6693c2c49 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 3 Mar 2020 23:55:25 +0000 Subject: [PATCH 1/2] Split all the vlib tests Signed-off-by: Rudi Grinberg --- test/blackbox-tests/dune.inc | 220 ++++++++++- test/blackbox-tests/gen_tests.ml | 2 +- .../{vlib => }/double-implementation/dune | 0 .../double-implementation/dune-project | 0 .../{vlib => }/double-implementation/foo.ml | 0 .../double-implementation/impl1/dune | 0 .../double-implementation/impl1/vlib.ml | 0 .../double-implementation/impl2/dune | 0 .../double-implementation/impl2/vlib.ml | 0 .../double-implementation/run.t | 10 + .../double-implementation/vlib/dune | 0 .../double-implementation/vlib/vlib.mli | 0 .../{vlib => }/dune-package-info/dune | 0 .../{vlib => }/dune-package-info/dune-project | 0 .../{vlib => }/dune-package-info/foo.opam | 0 .../{vlib => }/dune-package-info/impl/dune | 0 .../{vlib => }/dune-package-info/impl/vmod.ml | 0 .../virtual-libraries/dune-package-info/run.t | 53 +++ .../{vlib => }/dune-package-info/vlib/dune | 0 .../dune-package-info/vlib/vmod.mli | 0 .../impl-lib-interface-module/dune-project | 0 .../impl-lib-interface-module/impl/dune | 0 .../impl-lib-interface-module/impl/foo.ml | 0 .../impl-lib-interface-module/impl/vlib.ml | 0 .../impl-lib-interface-module/run.t | 14 + .../impl-lib-interface-module/vlib/dune | 0 .../impl-lib-interface-module/vlib/foo.mli | 0 .../{vlib => }/impl-not-virtual-external/dune | 0 .../impl-not-virtual-external/dune-project | 0 .../impl-not-virtual-external/run.t | 9 + .../{vlib => }/impl-not-virtual/dune | 0 .../{vlib => }/impl-not-virtual/dune-project | 0 .../{vlib => }/impl-not-virtual/impl/dune | 0 .../{vlib => }/impl-not-virtual/lib/dune | 0 .../virtual-libraries/impl-not-virtual/run.t | 8 + .../{vlib => }/impl-private-modules/dune | 0 .../impl-private-modules/dune-project | 0 .../impl-private-modules/impl/bar.ml | 0 .../{vlib => }/impl-private-modules/impl/dune | 0 .../impl-private-modules/impl/priv.ml | 0 .../impl-private-modules/impl/priv.mli | 0 .../impl-private-modules/run.t | 5 + .../{vlib => }/impl-private-modules/test.ml | 0 .../impl-private-modules/vlib/bar.mli | 0 .../{vlib => }/impl-private-modules/vlib/dune | 0 .../impl-public-modules/dune-project | 0 .../impl-public-modules/impl/bar.ml | 0 .../impl-public-modules/impl/baz.ml | 0 .../{vlib => }/impl-public-modules/impl/dune | 0 .../impl-public-modules/run.t | 12 + .../impl-public-modules/vlib/bar.mli | 0 .../{vlib => }/impl-public-modules/vlib/dune | 0 .../{vlib => }/impl-using-vlib-modules/dune | 0 .../impl-using-vlib-modules/dune-project | 0 .../impl-using-vlib-modules/impl/dune | 0 .../impl-using-vlib-modules/impl/foo.ml | 0 .../impl-using-vlib-modules/run.t | 5 + .../impl-using-vlib-modules/test.ml | 0 .../impl-using-vlib-modules/vlib/bar.ml | 0 .../impl-using-vlib-modules/vlib/dune | 0 .../impl-using-vlib-modules/vlib/foo.mli | 0 .../implements-external/impl-intf-only/dune | 0 .../impl-intf-only/dune-project | 0 .../implements-external/impl-intf-only/run.ml | 0 .../impl-intf-only/vlib_intfonly.ml | 0 .../implements-external/impl-native-only/dune | 0 .../impl-native-only/dune-project | 0 .../impl-native-only/run.ml | 0 .../impl-native-only/virt_module.ml | 0 .../impl-private-module/dune | 0 .../impl-private-module/dune-project | 0 .../impl-private-module/run.ml | 0 .../impl-private-module/virt_module.ml | 0 .../{vlib => }/implements-external/impl/dune | 0 .../implements-external/impl/dune-project | 0 .../implements-external/impl/impl-lib/dune | 0 .../implements-external/impl/impl-lib/foo.ml | 0 .../implements-external/impl/test.ml | 0 .../implements-external/run.t | 31 ++ .../implements-external/vlib/bar.ml | 0 .../{vlib => }/implements-external/vlib/dune | 0 .../implements-external/vlib/dune-project | 0 .../implements-external/vlib/foo.mli | 0 .../implements-external/vlib/intfonly/dune | 0 .../implements-external/vlib/intfonly/foo.mli | 0 .../vlib/intfonly/vlib_intfonly.mli | 0 .../implements-external/vlib/nativeonly/dune | 0 .../vlib/nativeonly/virt_module.mli | 0 .../vlib/nativeonly/vlib_native_only.ml | 0 .../vlib/nativeonly/vlib_native_only.mli | 0 .../vlib/privatemodule/dune | 0 .../vlib/privatemodule/privatemodule.ml | 0 .../vlib/privatemodule/virt_module.mli | 0 .../vlib/privatemodule/vlib_privatemodule.ml | 0 .../vlib/privatemodule/vlib_privatemodule.mli | 0 .../implements-external/vlib/vlib.opam | 0 .../{vlib => }/install-file/dune | 0 .../{vlib => }/install-file/dune-project | 0 .../{vlib => }/install-file/impl.opam | 0 .../{vlib => }/install-file/impl/dune | 0 .../{vlib => }/install-file/impl/foo.ml | 0 .../virtual-libraries/install-file/run.t | 33 ++ .../{vlib => }/install-file/vlib.opam | 0 .../{vlib => }/install-file/vlib/dune | 0 .../{vlib => }/install-file/vlib/foo.mli | 0 .../{vlib => }/invalid-virtual-lib/bar.mli | 0 .../{vlib => }/invalid-virtual-lib/dune | 0 .../invalid-virtual-lib/dune-project | 0 .../{vlib => }/invalid-virtual-lib/foo.ml | 0 .../{vlib => }/invalid-virtual-lib/foo.mli | 0 .../invalid-virtual-lib/run.t | 10 + .../{vlib => }/missing-implementation/dune | 0 .../missing-implementation/dune-project | 0 .../{vlib => }/missing-implementation/foo.ml | 0 .../missing-implementation/run.t | 6 + .../missing-implementation/vlib/dune | 0 .../missing-implementation/vlib/vlib.mli | 0 .../virtual-libraries/module-fields/run.t | 104 +++++ .../{vlib => }/module-fields/test.ml | 0 .../{vlib => }/no-vlib-present/dune | 0 .../{vlib => }/no-vlib-present/dune-project | 0 .../virtual-libraries/no-vlib-present/run.t | 8 + .../{vlib => }/preprocess/dune | 0 .../{vlib => }/preprocess/dune-project | 0 .../{vlib => }/preprocess/impl/dune | 0 .../{vlib => }/preprocess/impl/foo.ml | 0 .../{vlib => }/preprocess/pp/dune | 0 .../{vlib => }/preprocess/pp/mypp.ml | 0 .../virtual-libraries/preprocess/run.t | 4 + .../{vlib => }/preprocess/test.ml | 0 .../{vlib => }/preprocess/vlib/dune | 0 .../{vlib => }/preprocess/vlib/foo.mli | 0 .../private-modules-overlapping-names/dune | 0 .../dune-project | 0 .../private-modules-overlapping-names/foo.ml | 0 .../impl/dune | 0 .../impl/priv.ml | 0 .../impl/vlib.ml | 0 .../private-modules-overlapping-names/run.t | 6 + .../vlib/dune | 0 .../vlib/priv.ml | 0 .../vlib/vlib.mli | 0 .../{vlib => }/unwrapped/dune | 0 .../{vlib => }/unwrapped/dune-project | 0 .../{vlib => }/unwrapped/impl/bin/dune | 0 .../unwrapped/impl/bin/dune-project | 0 .../{vlib => }/unwrapped/impl/bin/foo.ml | 0 .../{vlib => }/unwrapped/impl/dune | 0 .../{vlib => }/unwrapped/impl/dune-project | 0 .../unwrapped/impl/impl_wrapped.opam | 0 .../{vlib => }/unwrapped/impl/vlib.ml | 0 .../virtual-libraries/unwrapped/run.t | 14 + .../{vlib => }/unwrapped/vlib/dune | 0 .../{vlib => }/unwrapped/vlib/dune-project | 0 .../{vlib => }/unwrapped/vlib/vlib.mli | 0 .../{vlib => }/unwrapped/vlib/vlib_more.ml | 0 .../unwrapped/vlib/vlib_wrapped.opam | 0 .../{vlib => }/variants-simple/dune | 0 .../{vlib => }/variants-simple/dune-project | 0 .../{vlib => }/variants-simple/foo.ml | 0 .../{vlib => }/variants-simple/impl/dune | 0 .../{vlib => }/variants-simple/impl/vlib.ml | 0 .../virtual-libraries/variants-simple/run.t | 4 + .../{vlib => }/variants-simple/vlib/dune | 0 .../{vlib => }/variants-simple/vlib/vlib.mli | 0 .../{vlib => }/variants-sub-module/dune | 0 .../variants-sub-module/dune-project | 0 .../{vlib => }/variants-sub-module/impl/dune | 0 .../variants-sub-module/impl/vmod.ml | 0 .../{vlib => }/variants-sub-module/run.ml | 0 .../variants-sub-module/run.t | 4 + .../{vlib => }/variants-sub-module/vlib/dune | 0 .../variants-sub-module/vlib/vmod.mli | 0 .../test-cases/virtual-libraries/vlib/run.t | 374 ------------------ 174 files changed, 556 insertions(+), 380 deletions(-) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/double-implementation/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/double-implementation/dune-project (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/double-implementation/foo.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/double-implementation/impl1/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/double-implementation/impl1/vlib.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/double-implementation/impl2/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/double-implementation/impl2/vlib.ml (100%) create mode 100644 test/blackbox-tests/test-cases/virtual-libraries/double-implementation/run.t rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/double-implementation/vlib/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/double-implementation/vlib/vlib.mli (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/dune-package-info/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/dune-package-info/dune-project (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/dune-package-info/foo.opam (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/dune-package-info/impl/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/dune-package-info/impl/vmod.ml (100%) create mode 100644 test/blackbox-tests/test-cases/virtual-libraries/dune-package-info/run.t rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/dune-package-info/vlib/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/dune-package-info/vlib/vmod.mli (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-lib-interface-module/dune-project (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-lib-interface-module/impl/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-lib-interface-module/impl/foo.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-lib-interface-module/impl/vlib.ml (100%) create mode 100644 test/blackbox-tests/test-cases/virtual-libraries/impl-lib-interface-module/run.t rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-lib-interface-module/vlib/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-lib-interface-module/vlib/foo.mli (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-not-virtual-external/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-not-virtual-external/dune-project (100%) create mode 100644 test/blackbox-tests/test-cases/virtual-libraries/impl-not-virtual-external/run.t rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-not-virtual/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-not-virtual/dune-project (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-not-virtual/impl/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-not-virtual/lib/dune (100%) create mode 100644 test/blackbox-tests/test-cases/virtual-libraries/impl-not-virtual/run.t rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-private-modules/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-private-modules/dune-project (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-private-modules/impl/bar.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-private-modules/impl/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-private-modules/impl/priv.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-private-modules/impl/priv.mli (100%) create mode 100644 test/blackbox-tests/test-cases/virtual-libraries/impl-private-modules/run.t rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-private-modules/test.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-private-modules/vlib/bar.mli (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-private-modules/vlib/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-public-modules/dune-project (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-public-modules/impl/bar.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-public-modules/impl/baz.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-public-modules/impl/dune (100%) create mode 100644 test/blackbox-tests/test-cases/virtual-libraries/impl-public-modules/run.t rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-public-modules/vlib/bar.mli (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-public-modules/vlib/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-using-vlib-modules/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-using-vlib-modules/dune-project (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-using-vlib-modules/impl/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-using-vlib-modules/impl/foo.ml (100%) create mode 100644 test/blackbox-tests/test-cases/virtual-libraries/impl-using-vlib-modules/run.t rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-using-vlib-modules/test.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-using-vlib-modules/vlib/bar.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-using-vlib-modules/vlib/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/impl-using-vlib-modules/vlib/foo.mli (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/impl-intf-only/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/impl-intf-only/dune-project (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/impl-intf-only/run.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/impl-intf-only/vlib_intfonly.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/impl-native-only/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/impl-native-only/dune-project (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/impl-native-only/run.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/impl-native-only/virt_module.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/impl-private-module/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/impl-private-module/dune-project (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/impl-private-module/run.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/impl-private-module/virt_module.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/impl/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/impl/dune-project (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/impl/impl-lib/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/impl/impl-lib/foo.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/impl/test.ml (100%) create mode 100644 test/blackbox-tests/test-cases/virtual-libraries/implements-external/run.t rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/vlib/bar.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/vlib/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/vlib/dune-project (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/vlib/foo.mli (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/vlib/intfonly/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/vlib/intfonly/foo.mli (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/vlib/intfonly/vlib_intfonly.mli (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/vlib/nativeonly/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/vlib/nativeonly/virt_module.mli (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/vlib/nativeonly/vlib_native_only.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/vlib/nativeonly/vlib_native_only.mli (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/vlib/privatemodule/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/vlib/privatemodule/privatemodule.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/vlib/privatemodule/virt_module.mli (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/vlib/privatemodule/vlib_privatemodule.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/vlib/privatemodule/vlib_privatemodule.mli (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/implements-external/vlib/vlib.opam (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/install-file/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/install-file/dune-project (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/install-file/impl.opam (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/install-file/impl/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/install-file/impl/foo.ml (100%) create mode 100644 test/blackbox-tests/test-cases/virtual-libraries/install-file/run.t rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/install-file/vlib.opam (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/install-file/vlib/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/install-file/vlib/foo.mli (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/invalid-virtual-lib/bar.mli (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/invalid-virtual-lib/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/invalid-virtual-lib/dune-project (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/invalid-virtual-lib/foo.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/invalid-virtual-lib/foo.mli (100%) create mode 100644 test/blackbox-tests/test-cases/virtual-libraries/invalid-virtual-lib/run.t rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/missing-implementation/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/missing-implementation/dune-project (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/missing-implementation/foo.ml (100%) create mode 100644 test/blackbox-tests/test-cases/virtual-libraries/missing-implementation/run.t rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/missing-implementation/vlib/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/missing-implementation/vlib/vlib.mli (100%) create mode 100644 test/blackbox-tests/test-cases/virtual-libraries/module-fields/run.t rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/module-fields/test.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/no-vlib-present/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/no-vlib-present/dune-project (100%) create mode 100644 test/blackbox-tests/test-cases/virtual-libraries/no-vlib-present/run.t rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/preprocess/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/preprocess/dune-project (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/preprocess/impl/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/preprocess/impl/foo.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/preprocess/pp/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/preprocess/pp/mypp.ml (100%) create mode 100644 test/blackbox-tests/test-cases/virtual-libraries/preprocess/run.t rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/preprocess/test.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/preprocess/vlib/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/preprocess/vlib/foo.mli (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/private-modules-overlapping-names/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/private-modules-overlapping-names/dune-project (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/private-modules-overlapping-names/foo.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/private-modules-overlapping-names/impl/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/private-modules-overlapping-names/impl/priv.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/private-modules-overlapping-names/impl/vlib.ml (100%) create mode 100644 test/blackbox-tests/test-cases/virtual-libraries/private-modules-overlapping-names/run.t rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/private-modules-overlapping-names/vlib/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/private-modules-overlapping-names/vlib/priv.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/private-modules-overlapping-names/vlib/vlib.mli (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/unwrapped/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/unwrapped/dune-project (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/unwrapped/impl/bin/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/unwrapped/impl/bin/dune-project (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/unwrapped/impl/bin/foo.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/unwrapped/impl/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/unwrapped/impl/dune-project (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/unwrapped/impl/impl_wrapped.opam (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/unwrapped/impl/vlib.ml (100%) create mode 100644 test/blackbox-tests/test-cases/virtual-libraries/unwrapped/run.t rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/unwrapped/vlib/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/unwrapped/vlib/dune-project (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/unwrapped/vlib/vlib.mli (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/unwrapped/vlib/vlib_more.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/unwrapped/vlib/vlib_wrapped.opam (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/variants-simple/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/variants-simple/dune-project (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/variants-simple/foo.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/variants-simple/impl/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/variants-simple/impl/vlib.ml (100%) create mode 100644 test/blackbox-tests/test-cases/virtual-libraries/variants-simple/run.t rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/variants-simple/vlib/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/variants-simple/vlib/vlib.mli (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/variants-sub-module/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/variants-sub-module/dune-project (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/variants-sub-module/impl/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/variants-sub-module/impl/vmod.ml (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/variants-sub-module/run.ml (100%) create mode 100644 test/blackbox-tests/test-cases/virtual-libraries/variants-sub-module/run.t rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/variants-sub-module/vlib/dune (100%) rename test/blackbox-tests/test-cases/virtual-libraries/{vlib => }/variants-sub-module/vlib/vmod.mli (100%) delete mode 100644 test/blackbox-tests/test-cases/virtual-libraries/vlib/run.t diff --git a/test/blackbox-tests/dune.inc b/test/blackbox-tests/dune.inc index f47d60d49f5..59b91252ce2 100644 --- a/test/blackbox-tests/dune.inc +++ b/test/blackbox-tests/dune.inc @@ -2082,14 +2082,188 @@ (progn (run dune-cram run run.t) (diff? run.t run.t.corrected))))) (rule - (alias virtual-libraries-vlib) + (alias virtual-libraries-double-implementation) (deps (package dune) - (source_tree test-cases/virtual-libraries/vlib) + (source_tree test-cases/virtual-libraries/double-implementation)) + (action + (chdir + test-cases/virtual-libraries/double-implementation + (progn (run dune-cram run run.t) (diff? run.t run.t.corrected))))) + +(rule + (alias virtual-libraries-dune-package-info) + (deps + (package dune) + (source_tree test-cases/virtual-libraries/dune-package-info)) + (action + (chdir + test-cases/virtual-libraries/dune-package-info + (progn (run dune-cram run run.t) (diff? run.t run.t.corrected))))) + +(rule + (alias virtual-libraries-impl-lib-interface-module) + (deps + (package dune) + (source_tree test-cases/virtual-libraries/impl-lib-interface-module)) + (action + (chdir + test-cases/virtual-libraries/impl-lib-interface-module + (progn (run dune-cram run run.t) (diff? run.t run.t.corrected))))) + +(rule + (alias virtual-libraries-impl-not-virtual) + (deps + (package dune) + (source_tree test-cases/virtual-libraries/impl-not-virtual)) + (action + (chdir + test-cases/virtual-libraries/impl-not-virtual + (progn (run dune-cram run run.t) (diff? run.t run.t.corrected))))) + +(rule + (alias virtual-libraries-impl-not-virtual-external) + (deps + (package dune) + (source_tree test-cases/virtual-libraries/impl-not-virtual-external) (package dune-configurator)) (action (chdir - test-cases/virtual-libraries/vlib + test-cases/virtual-libraries/impl-not-virtual-external + (progn (run dune-cram run run.t) (diff? run.t run.t.corrected))))) + +(rule + (alias virtual-libraries-impl-private-modules) + (deps + (package dune) + (source_tree test-cases/virtual-libraries/impl-private-modules)) + (action + (chdir + test-cases/virtual-libraries/impl-private-modules + (progn (run dune-cram run run.t) (diff? run.t run.t.corrected))))) + +(rule + (alias virtual-libraries-impl-public-modules) + (deps + (package dune) + (source_tree test-cases/virtual-libraries/impl-public-modules)) + (action + (chdir + test-cases/virtual-libraries/impl-public-modules + (progn (run dune-cram run run.t) (diff? run.t run.t.corrected))))) + +(rule + (alias virtual-libraries-impl-using-vlib-modules) + (deps + (package dune) + (source_tree test-cases/virtual-libraries/impl-using-vlib-modules)) + (action + (chdir + test-cases/virtual-libraries/impl-using-vlib-modules + (progn (run dune-cram run run.t) (diff? run.t run.t.corrected))))) + +(rule + (alias virtual-libraries-implements-external) + (deps + (package dune) + (source_tree test-cases/virtual-libraries/implements-external)) + (action + (chdir + test-cases/virtual-libraries/implements-external + (progn (run dune-cram run run.t) (diff? run.t run.t.corrected))))) + +(rule + (alias virtual-libraries-install-file) + (deps (package dune) (source_tree test-cases/virtual-libraries/install-file)) + (action + (chdir + test-cases/virtual-libraries/install-file + (progn (run dune-cram run run.t) (diff? run.t run.t.corrected))))) + +(rule + (alias virtual-libraries-invalid-virtual-lib) + (deps + (package dune) + (source_tree test-cases/virtual-libraries/invalid-virtual-lib)) + (action + (chdir + test-cases/virtual-libraries/invalid-virtual-lib + (progn (run dune-cram run run.t) (diff? run.t run.t.corrected))))) + +(rule + (alias virtual-libraries-missing-implementation) + (deps + (package dune) + (source_tree test-cases/virtual-libraries/missing-implementation)) + (action + (chdir + test-cases/virtual-libraries/missing-implementation + (progn (run dune-cram run run.t) (diff? run.t run.t.corrected))))) + +(rule + (alias virtual-libraries-module-fields) + (deps + (package dune) + (source_tree test-cases/virtual-libraries/module-fields)) + (action + (chdir + test-cases/virtual-libraries/module-fields + (progn (run dune-cram run run.t) (diff? run.t run.t.corrected))))) + +(rule + (alias virtual-libraries-no-vlib-present) + (deps + (package dune) + (source_tree test-cases/virtual-libraries/no-vlib-present)) + (action + (chdir + test-cases/virtual-libraries/no-vlib-present + (progn (run dune-cram run run.t) (diff? run.t run.t.corrected))))) + +(rule + (alias virtual-libraries-preprocess) + (deps (package dune) (source_tree test-cases/virtual-libraries/preprocess)) + (action + (chdir + test-cases/virtual-libraries/preprocess + (progn (run dune-cram run run.t) (diff? run.t run.t.corrected))))) + +(rule + (alias virtual-libraries-private-modules-overlapping-names) + (deps + (package dune) + (source_tree test-cases/virtual-libraries/private-modules-overlapping-names)) + (action + (chdir + test-cases/virtual-libraries/private-modules-overlapping-names + (progn (run dune-cram run run.t) (diff? run.t run.t.corrected))))) + +(rule + (alias virtual-libraries-unwrapped) + (deps (package dune) (source_tree test-cases/virtual-libraries/unwrapped)) + (action + (chdir + test-cases/virtual-libraries/unwrapped + (progn (run dune-cram run run.t) (diff? run.t run.t.corrected))))) + +(rule + (alias virtual-libraries-variants-simple) + (deps + (package dune) + (source_tree test-cases/virtual-libraries/variants-simple)) + (action + (chdir + test-cases/virtual-libraries/variants-simple + (progn (run dune-cram run run.t) (diff? run.t run.t.corrected))))) + +(rule + (alias virtual-libraries-variants-sub-module) + (deps + (package dune) + (source_tree test-cases/virtual-libraries/variants-sub-module)) + (action + (chdir + test-cases/virtual-libraries/variants-sub-module (progn (run dune-cram run run.t) (diff? run.t run.t.corrected))))) (rule @@ -2446,7 +2620,25 @@ (alias vendor) (alias vendor-dash-p-and-vendored-packages) (alias vendor-do-not-install-vendored-packages) - (alias virtual-libraries-vlib) + (alias virtual-libraries-double-implementation) + (alias virtual-libraries-dune-package-info) + (alias virtual-libraries-impl-lib-interface-module) + (alias virtual-libraries-impl-not-virtual) + (alias virtual-libraries-impl-not-virtual-external) + (alias virtual-libraries-impl-private-modules) + (alias virtual-libraries-impl-public-modules) + (alias virtual-libraries-impl-using-vlib-modules) + (alias virtual-libraries-implements-external) + (alias virtual-libraries-install-file) + (alias virtual-libraries-invalid-virtual-lib) + (alias virtual-libraries-missing-implementation) + (alias virtual-libraries-module-fields) + (alias virtual-libraries-no-vlib-present) + (alias virtual-libraries-preprocess) + (alias virtual-libraries-private-modules-overlapping-names) + (alias virtual-libraries-unwrapped) + (alias virtual-libraries-variants-simple) + (alias virtual-libraries-variants-sub-module) (alias virtual-libraries-vlib-default-impl) (alias virtual-libraries-vlib-wrong-default-impl) (alias windows-diff) @@ -2679,7 +2871,25 @@ (alias vendor) (alias vendor-dash-p-and-vendored-packages) (alias vendor-do-not-install-vendored-packages) - (alias virtual-libraries-vlib) + (alias virtual-libraries-double-implementation) + (alias virtual-libraries-dune-package-info) + (alias virtual-libraries-impl-lib-interface-module) + (alias virtual-libraries-impl-not-virtual) + (alias virtual-libraries-impl-not-virtual-external) + (alias virtual-libraries-impl-private-modules) + (alias virtual-libraries-impl-public-modules) + (alias virtual-libraries-impl-using-vlib-modules) + (alias virtual-libraries-implements-external) + (alias virtual-libraries-install-file) + (alias virtual-libraries-invalid-virtual-lib) + (alias virtual-libraries-missing-implementation) + (alias virtual-libraries-module-fields) + (alias virtual-libraries-no-vlib-present) + (alias virtual-libraries-preprocess) + (alias virtual-libraries-private-modules-overlapping-names) + (alias virtual-libraries-unwrapped) + (alias virtual-libraries-variants-simple) + (alias virtual-libraries-variants-sub-module) (alias virtual-libraries-vlib-default-impl) (alias virtual-libraries-vlib-wrong-default-impl) (alias windows-diff) diff --git a/test/blackbox-tests/gen_tests.ml b/test/blackbox-tests/gen_tests.ml index bb4643f708f..d96e0a94395 100644 --- a/test/blackbox-tests/gen_tests.ml +++ b/test/blackbox-tests/gen_tests.ml @@ -247,7 +247,7 @@ let exclusions = (* for the following tests sandboxing is disabled because absolute paths end up appearing in the output if we sandbox *) ; make "env/env-bins" ~disable_sandboxing:true - ; make "virtual-libraries/vlib" + ; make "virtual-libraries/impl-not-virtual-external" ~additional_deps:[ Sexp.strings [ "package"; "dune-configurator" ] ] ; make "pkg-config-quoting" ~additional_deps:[ Sexp.strings [ "package"; "dune-configurator" ] ] diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/double-implementation/dune b/test/blackbox-tests/test-cases/virtual-libraries/double-implementation/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/double-implementation/dune rename to test/blackbox-tests/test-cases/virtual-libraries/double-implementation/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/double-implementation/dune-project b/test/blackbox-tests/test-cases/virtual-libraries/double-implementation/dune-project similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/double-implementation/dune-project rename to test/blackbox-tests/test-cases/virtual-libraries/double-implementation/dune-project diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/double-implementation/foo.ml b/test/blackbox-tests/test-cases/virtual-libraries/double-implementation/foo.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/double-implementation/foo.ml rename to test/blackbox-tests/test-cases/virtual-libraries/double-implementation/foo.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/double-implementation/impl1/dune b/test/blackbox-tests/test-cases/virtual-libraries/double-implementation/impl1/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/double-implementation/impl1/dune rename to test/blackbox-tests/test-cases/virtual-libraries/double-implementation/impl1/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/double-implementation/impl1/vlib.ml b/test/blackbox-tests/test-cases/virtual-libraries/double-implementation/impl1/vlib.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/double-implementation/impl1/vlib.ml rename to test/blackbox-tests/test-cases/virtual-libraries/double-implementation/impl1/vlib.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/double-implementation/impl2/dune b/test/blackbox-tests/test-cases/virtual-libraries/double-implementation/impl2/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/double-implementation/impl2/dune rename to test/blackbox-tests/test-cases/virtual-libraries/double-implementation/impl2/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/double-implementation/impl2/vlib.ml b/test/blackbox-tests/test-cases/virtual-libraries/double-implementation/impl2/vlib.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/double-implementation/impl2/vlib.ml rename to test/blackbox-tests/test-cases/virtual-libraries/double-implementation/impl2/vlib.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/double-implementation/run.t b/test/blackbox-tests/test-cases/virtual-libraries/double-implementation/run.t new file mode 100644 index 00000000000..081d49fcf6d --- /dev/null +++ b/test/blackbox-tests/test-cases/virtual-libraries/double-implementation/run.t @@ -0,0 +1,10 @@ +Executable that tries to use two implementations for the same virtual lib + $ dune build + Error: Conflicting implementations for virtual library "vlib" in + _build/default/vlib: + - "impl1" in _build/default/impl1 + -> required by library "bar" in _build/default + - "impl2" in _build/default/impl2 + This cannot work. + -> required by executable foo in dune:2 + [1] diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/double-implementation/vlib/dune b/test/blackbox-tests/test-cases/virtual-libraries/double-implementation/vlib/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/double-implementation/vlib/dune rename to test/blackbox-tests/test-cases/virtual-libraries/double-implementation/vlib/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/double-implementation/vlib/vlib.mli b/test/blackbox-tests/test-cases/virtual-libraries/double-implementation/vlib/vlib.mli similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/double-implementation/vlib/vlib.mli rename to test/blackbox-tests/test-cases/virtual-libraries/double-implementation/vlib/vlib.mli diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/dune-package-info/dune b/test/blackbox-tests/test-cases/virtual-libraries/dune-package-info/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/dune-package-info/dune rename to test/blackbox-tests/test-cases/virtual-libraries/dune-package-info/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/dune-package-info/dune-project b/test/blackbox-tests/test-cases/virtual-libraries/dune-package-info/dune-project similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/dune-package-info/dune-project rename to test/blackbox-tests/test-cases/virtual-libraries/dune-package-info/dune-project diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/dune-package-info/foo.opam b/test/blackbox-tests/test-cases/virtual-libraries/dune-package-info/foo.opam similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/dune-package-info/foo.opam rename to test/blackbox-tests/test-cases/virtual-libraries/dune-package-info/foo.opam diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/dune-package-info/impl/dune b/test/blackbox-tests/test-cases/virtual-libraries/dune-package-info/impl/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/dune-package-info/impl/dune rename to test/blackbox-tests/test-cases/virtual-libraries/dune-package-info/impl/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/dune-package-info/impl/vmod.ml b/test/blackbox-tests/test-cases/virtual-libraries/dune-package-info/impl/vmod.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/dune-package-info/impl/vmod.ml rename to test/blackbox-tests/test-cases/virtual-libraries/dune-package-info/impl/vmod.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/dune-package-info/run.t b/test/blackbox-tests/test-cases/virtual-libraries/dune-package-info/run.t new file mode 100644 index 00000000000..27af45e3730 --- /dev/null +++ b/test/blackbox-tests/test-cases/virtual-libraries/dune-package-info/run.t @@ -0,0 +1,53 @@ +Include variants and implementation information in dune-package + $ dune build | sed "s/(lang dune .*)/(lang dune )/" + (lang dune ) + (name foo) + (library + (name foo.impl) + (kind normal) + (archives (byte impl/impl.cma) (native impl/impl.cmxa)) + (plugins (byte impl/impl.cma) (native impl/impl.cmxs)) + (native_archives impl/impl$ext_lib) + (requires foo.vlib) + (implements foo.vlib) + (main_module_name Vlib) + (modes byte native) + (modules + (wrapped + (main_module_name Vlib) + (modules + ((name Vmod) + (obj_name vlib__Vmod) + (visibility public) + (kind impl_vmodule) + (impl))) + (alias_module + (name Vlib__impl__) + (obj_name vlib__impl__) + (visibility public) + (kind alias) + (impl)) + (wrapped true)))) + (library + (name foo.vlib) + (kind normal) + (virtual) + (native_archives vlib/vlib$ext_lib) + (main_module_name Vlib) + (modes byte native) + (modules + (wrapped + (main_module_name Vlib) + (modules + ((name Vmod) + (obj_name vlib__Vmod) + (visibility public) + (kind virtual) + (intf))) + (alias_module + (name Vlib) + (obj_name vlib) + (visibility public) + (kind alias) + (impl)) + (wrapped true)))) diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/dune-package-info/vlib/dune b/test/blackbox-tests/test-cases/virtual-libraries/dune-package-info/vlib/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/dune-package-info/vlib/dune rename to test/blackbox-tests/test-cases/virtual-libraries/dune-package-info/vlib/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/dune-package-info/vlib/vmod.mli b/test/blackbox-tests/test-cases/virtual-libraries/dune-package-info/vlib/vmod.mli similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/dune-package-info/vlib/vmod.mli rename to test/blackbox-tests/test-cases/virtual-libraries/dune-package-info/vlib/vmod.mli diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-lib-interface-module/dune-project b/test/blackbox-tests/test-cases/virtual-libraries/impl-lib-interface-module/dune-project similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-lib-interface-module/dune-project rename to test/blackbox-tests/test-cases/virtual-libraries/impl-lib-interface-module/dune-project diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-lib-interface-module/impl/dune b/test/blackbox-tests/test-cases/virtual-libraries/impl-lib-interface-module/impl/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-lib-interface-module/impl/dune rename to test/blackbox-tests/test-cases/virtual-libraries/impl-lib-interface-module/impl/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-lib-interface-module/impl/foo.ml b/test/blackbox-tests/test-cases/virtual-libraries/impl-lib-interface-module/impl/foo.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-lib-interface-module/impl/foo.ml rename to test/blackbox-tests/test-cases/virtual-libraries/impl-lib-interface-module/impl/foo.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-lib-interface-module/impl/vlib.ml b/test/blackbox-tests/test-cases/virtual-libraries/impl-lib-interface-module/impl/vlib.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-lib-interface-module/impl/vlib.ml rename to test/blackbox-tests/test-cases/virtual-libraries/impl-lib-interface-module/impl/vlib.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/impl-lib-interface-module/run.t b/test/blackbox-tests/test-cases/virtual-libraries/impl-lib-interface-module/run.t new file mode 100644 index 00000000000..0e7b12ef8a5 --- /dev/null +++ b/test/blackbox-tests/test-cases/virtual-libraries/impl-lib-interface-module/run.t @@ -0,0 +1,14 @@ +Implementations may not provide a library interface module unless it is virtual. +There should be an error message that clarifies this. + + $ dune build + File "impl/dune", line 1, characters 0-41: + 1 | (library + 2 | (name impl) + 3 | (implements vlib)) + Error: Implementations of wrapped libraries cannot introduce new public + modules. + The following modules: + - Vlib + must all be marked as private using the (private_modules ..) field. + [1] diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-lib-interface-module/vlib/dune b/test/blackbox-tests/test-cases/virtual-libraries/impl-lib-interface-module/vlib/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-lib-interface-module/vlib/dune rename to test/blackbox-tests/test-cases/virtual-libraries/impl-lib-interface-module/vlib/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-lib-interface-module/vlib/foo.mli b/test/blackbox-tests/test-cases/virtual-libraries/impl-lib-interface-module/vlib/foo.mli similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-lib-interface-module/vlib/foo.mli rename to test/blackbox-tests/test-cases/virtual-libraries/impl-lib-interface-module/vlib/foo.mli diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-not-virtual-external/dune b/test/blackbox-tests/test-cases/virtual-libraries/impl-not-virtual-external/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-not-virtual-external/dune rename to test/blackbox-tests/test-cases/virtual-libraries/impl-not-virtual-external/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-not-virtual-external/dune-project b/test/blackbox-tests/test-cases/virtual-libraries/impl-not-virtual-external/dune-project similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-not-virtual-external/dune-project rename to test/blackbox-tests/test-cases/virtual-libraries/impl-not-virtual-external/dune-project diff --git a/test/blackbox-tests/test-cases/virtual-libraries/impl-not-virtual-external/run.t b/test/blackbox-tests/test-cases/virtual-libraries/impl-not-virtual-external/run.t new file mode 100644 index 00000000000..9d37538b66f --- /dev/null +++ b/test/blackbox-tests/test-cases/virtual-libraries/impl-not-virtual-external/run.t @@ -0,0 +1,9 @@ +Test that trying to implement external libraries that aren't virtual results in +an appropriate error message. + $ dune build + File "dune", line 7, characters 13-30: + 7 | (implements dune.configurator)) + ^^^^^^^^^^^^^^^^^ + Error: Library "dune-configurator" is not virtual. It cannot be implemented + by "foobar". + [1] diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-not-virtual/dune b/test/blackbox-tests/test-cases/virtual-libraries/impl-not-virtual/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-not-virtual/dune rename to test/blackbox-tests/test-cases/virtual-libraries/impl-not-virtual/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-not-virtual/dune-project b/test/blackbox-tests/test-cases/virtual-libraries/impl-not-virtual/dune-project similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-not-virtual/dune-project rename to test/blackbox-tests/test-cases/virtual-libraries/impl-not-virtual/dune-project diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-not-virtual/impl/dune b/test/blackbox-tests/test-cases/virtual-libraries/impl-not-virtual/impl/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-not-virtual/impl/dune rename to test/blackbox-tests/test-cases/virtual-libraries/impl-not-virtual/impl/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-not-virtual/lib/dune b/test/blackbox-tests/test-cases/virtual-libraries/impl-not-virtual/lib/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-not-virtual/lib/dune rename to test/blackbox-tests/test-cases/virtual-libraries/impl-not-virtual/lib/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/impl-not-virtual/run.t b/test/blackbox-tests/test-cases/virtual-libraries/impl-not-virtual/run.t new file mode 100644 index 00000000000..4d1656edd8a --- /dev/null +++ b/test/blackbox-tests/test-cases/virtual-libraries/impl-not-virtual/run.t @@ -0,0 +1,8 @@ +Test that trying to implement libraries that aren't virtual results in an +appropriate error message. + $ dune build + File "impl/dune", line 3, characters 13-16: + 3 | (implements lib)) + ^^^ + Error: Library "lib" is not virtual. It cannot be implemented by "impl". + [1] diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-private-modules/dune b/test/blackbox-tests/test-cases/virtual-libraries/impl-private-modules/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-private-modules/dune rename to test/blackbox-tests/test-cases/virtual-libraries/impl-private-modules/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-private-modules/dune-project b/test/blackbox-tests/test-cases/virtual-libraries/impl-private-modules/dune-project similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-private-modules/dune-project rename to test/blackbox-tests/test-cases/virtual-libraries/impl-private-modules/dune-project diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-private-modules/impl/bar.ml b/test/blackbox-tests/test-cases/virtual-libraries/impl-private-modules/impl/bar.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-private-modules/impl/bar.ml rename to test/blackbox-tests/test-cases/virtual-libraries/impl-private-modules/impl/bar.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-private-modules/impl/dune b/test/blackbox-tests/test-cases/virtual-libraries/impl-private-modules/impl/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-private-modules/impl/dune rename to test/blackbox-tests/test-cases/virtual-libraries/impl-private-modules/impl/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-private-modules/impl/priv.ml b/test/blackbox-tests/test-cases/virtual-libraries/impl-private-modules/impl/priv.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-private-modules/impl/priv.ml rename to test/blackbox-tests/test-cases/virtual-libraries/impl-private-modules/impl/priv.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-private-modules/impl/priv.mli b/test/blackbox-tests/test-cases/virtual-libraries/impl-private-modules/impl/priv.mli similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-private-modules/impl/priv.mli rename to test/blackbox-tests/test-cases/virtual-libraries/impl-private-modules/impl/priv.mli diff --git a/test/blackbox-tests/test-cases/virtual-libraries/impl-private-modules/run.t b/test/blackbox-tests/test-cases/virtual-libraries/impl-private-modules/run.t new file mode 100644 index 00000000000..38e22f51c77 --- /dev/null +++ b/test/blackbox-tests/test-cases/virtual-libraries/impl-private-modules/run.t @@ -0,0 +1,5 @@ +They can only introduce private modules: + $ dune build --debug-dependency-path + test alias default + Private module Baz + implementing bar diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-private-modules/test.ml b/test/blackbox-tests/test-cases/virtual-libraries/impl-private-modules/test.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-private-modules/test.ml rename to test/blackbox-tests/test-cases/virtual-libraries/impl-private-modules/test.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-private-modules/vlib/bar.mli b/test/blackbox-tests/test-cases/virtual-libraries/impl-private-modules/vlib/bar.mli similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-private-modules/vlib/bar.mli rename to test/blackbox-tests/test-cases/virtual-libraries/impl-private-modules/vlib/bar.mli diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-private-modules/vlib/dune b/test/blackbox-tests/test-cases/virtual-libraries/impl-private-modules/vlib/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-private-modules/vlib/dune rename to test/blackbox-tests/test-cases/virtual-libraries/impl-private-modules/vlib/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-public-modules/dune-project b/test/blackbox-tests/test-cases/virtual-libraries/impl-public-modules/dune-project similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-public-modules/dune-project rename to test/blackbox-tests/test-cases/virtual-libraries/impl-public-modules/dune-project diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-public-modules/impl/bar.ml b/test/blackbox-tests/test-cases/virtual-libraries/impl-public-modules/impl/bar.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-public-modules/impl/bar.ml rename to test/blackbox-tests/test-cases/virtual-libraries/impl-public-modules/impl/bar.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-public-modules/impl/baz.ml b/test/blackbox-tests/test-cases/virtual-libraries/impl-public-modules/impl/baz.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-public-modules/impl/baz.ml rename to test/blackbox-tests/test-cases/virtual-libraries/impl-public-modules/impl/baz.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-public-modules/impl/dune b/test/blackbox-tests/test-cases/virtual-libraries/impl-public-modules/impl/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-public-modules/impl/dune rename to test/blackbox-tests/test-cases/virtual-libraries/impl-public-modules/impl/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/impl-public-modules/run.t b/test/blackbox-tests/test-cases/virtual-libraries/impl-public-modules/run.t new file mode 100644 index 00000000000..0406f7f91f0 --- /dev/null +++ b/test/blackbox-tests/test-cases/virtual-libraries/impl-public-modules/run.t @@ -0,0 +1,12 @@ +Implementations cannot introduce new modules to the library's interface + $ dune build + File "impl/dune", line 1, characters 0-44: + 1 | (library + 2 | (name foo_impl) + 3 | (implements foo)) + Error: Implementations of wrapped libraries cannot introduce new public + modules. + The following modules: + - Baz + must all be marked as private using the (private_modules ..) field. + [1] diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-public-modules/vlib/bar.mli b/test/blackbox-tests/test-cases/virtual-libraries/impl-public-modules/vlib/bar.mli similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-public-modules/vlib/bar.mli rename to test/blackbox-tests/test-cases/virtual-libraries/impl-public-modules/vlib/bar.mli diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-public-modules/vlib/dune b/test/blackbox-tests/test-cases/virtual-libraries/impl-public-modules/vlib/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-public-modules/vlib/dune rename to test/blackbox-tests/test-cases/virtual-libraries/impl-public-modules/vlib/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-using-vlib-modules/dune b/test/blackbox-tests/test-cases/virtual-libraries/impl-using-vlib-modules/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-using-vlib-modules/dune rename to test/blackbox-tests/test-cases/virtual-libraries/impl-using-vlib-modules/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-using-vlib-modules/dune-project b/test/blackbox-tests/test-cases/virtual-libraries/impl-using-vlib-modules/dune-project similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-using-vlib-modules/dune-project rename to test/blackbox-tests/test-cases/virtual-libraries/impl-using-vlib-modules/dune-project diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-using-vlib-modules/impl/dune b/test/blackbox-tests/test-cases/virtual-libraries/impl-using-vlib-modules/impl/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-using-vlib-modules/impl/dune rename to test/blackbox-tests/test-cases/virtual-libraries/impl-using-vlib-modules/impl/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-using-vlib-modules/impl/foo.ml b/test/blackbox-tests/test-cases/virtual-libraries/impl-using-vlib-modules/impl/foo.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-using-vlib-modules/impl/foo.ml rename to test/blackbox-tests/test-cases/virtual-libraries/impl-using-vlib-modules/impl/foo.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/impl-using-vlib-modules/run.t b/test/blackbox-tests/test-cases/virtual-libraries/impl-using-vlib-modules/run.t new file mode 100644 index 00000000000..b6d31676d32 --- /dev/null +++ b/test/blackbox-tests/test-cases/virtual-libraries/impl-using-vlib-modules/run.t @@ -0,0 +1,5 @@ +Implementations may refer to virtual library's modules + $ dune build + test alias default + bar from vlib + Foo.run implemented diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-using-vlib-modules/test.ml b/test/blackbox-tests/test-cases/virtual-libraries/impl-using-vlib-modules/test.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-using-vlib-modules/test.ml rename to test/blackbox-tests/test-cases/virtual-libraries/impl-using-vlib-modules/test.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-using-vlib-modules/vlib/bar.ml b/test/blackbox-tests/test-cases/virtual-libraries/impl-using-vlib-modules/vlib/bar.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-using-vlib-modules/vlib/bar.ml rename to test/blackbox-tests/test-cases/virtual-libraries/impl-using-vlib-modules/vlib/bar.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-using-vlib-modules/vlib/dune b/test/blackbox-tests/test-cases/virtual-libraries/impl-using-vlib-modules/vlib/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-using-vlib-modules/vlib/dune rename to test/blackbox-tests/test-cases/virtual-libraries/impl-using-vlib-modules/vlib/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-using-vlib-modules/vlib/foo.mli b/test/blackbox-tests/test-cases/virtual-libraries/impl-using-vlib-modules/vlib/foo.mli similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/impl-using-vlib-modules/vlib/foo.mli rename to test/blackbox-tests/test-cases/virtual-libraries/impl-using-vlib-modules/vlib/foo.mli diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl-intf-only/dune b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl-intf-only/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl-intf-only/dune rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl-intf-only/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl-intf-only/dune-project b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl-intf-only/dune-project similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl-intf-only/dune-project rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl-intf-only/dune-project diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl-intf-only/run.ml b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl-intf-only/run.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl-intf-only/run.ml rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl-intf-only/run.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl-intf-only/vlib_intfonly.ml b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl-intf-only/vlib_intfonly.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl-intf-only/vlib_intfonly.ml rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl-intf-only/vlib_intfonly.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl-native-only/dune b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl-native-only/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl-native-only/dune rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl-native-only/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl-native-only/dune-project b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl-native-only/dune-project similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl-native-only/dune-project rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl-native-only/dune-project diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl-native-only/run.ml b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl-native-only/run.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl-native-only/run.ml rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl-native-only/run.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl-native-only/virt_module.ml b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl-native-only/virt_module.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl-native-only/virt_module.ml rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl-native-only/virt_module.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl-private-module/dune b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl-private-module/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl-private-module/dune rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl-private-module/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl-private-module/dune-project b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl-private-module/dune-project similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl-private-module/dune-project rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl-private-module/dune-project diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl-private-module/run.ml b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl-private-module/run.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl-private-module/run.ml rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl-private-module/run.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl-private-module/virt_module.ml b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl-private-module/virt_module.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl-private-module/virt_module.ml rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl-private-module/virt_module.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl/dune b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl/dune rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl/dune-project b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl/dune-project similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl/dune-project rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl/dune-project diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl/impl-lib/dune b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl/impl-lib/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl/impl-lib/dune rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl/impl-lib/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl/impl-lib/foo.ml b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl/impl-lib/foo.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl/impl-lib/foo.ml rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl/impl-lib/foo.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl/test.ml b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl/test.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/impl/test.ml rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/impl/test.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/implements-external/run.t b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/run.t new file mode 100644 index 00000000000..b8fc8ba8cd2 --- /dev/null +++ b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/run.t @@ -0,0 +1,31 @@ +Test that we can implement external libraries. + +First we create an external library + $ dune build --root vlib @install + Entering directory 'vlib' + +Then we make sure that we can implement it + $ env OCAMLPATH=vlib/_build/install/default/lib dune build --root impl --debug-dependency-path + Entering directory 'impl' + test alias default + bar from vlib + Foo.run implemented + +Make sure that we can also implement native only variants + $ env OCAMLPATH=vlib/_build/install/default/lib dune build --root impl-native-only --debug-dependency-path + Entering directory 'impl-native-only' + run alias default + implement virtual module + +We can implement external variants with mli only modules + $ env OCAMLPATH=vlib/_build/install/default/lib dune build --root impl-intf-only --debug-dependency-path + Entering directory 'impl-intf-only' + run alias default + implemented mli only + magic number: 42 + +Implement external virtual libraries with private modules + $ env OCAMLPATH=vlib/_build/install/default/lib dune build --root impl-private-module --debug-dependency-path + Entering directory 'impl-private-module' + run alias default + Name: implement virtual module. Magic number: 42 diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/bar.ml b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/bar.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/bar.ml rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/bar.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/dune b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/dune rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/dune-project b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/dune-project similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/dune-project rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/dune-project diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/foo.mli b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/foo.mli similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/foo.mli rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/foo.mli diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/intfonly/dune b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/intfonly/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/intfonly/dune rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/intfonly/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/intfonly/foo.mli b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/intfonly/foo.mli similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/intfonly/foo.mli rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/intfonly/foo.mli diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/intfonly/vlib_intfonly.mli b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/intfonly/vlib_intfonly.mli similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/intfonly/vlib_intfonly.mli rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/intfonly/vlib_intfonly.mli diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/nativeonly/dune b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/nativeonly/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/nativeonly/dune rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/nativeonly/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/nativeonly/virt_module.mli b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/nativeonly/virt_module.mli similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/nativeonly/virt_module.mli rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/nativeonly/virt_module.mli diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/nativeonly/vlib_native_only.ml b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/nativeonly/vlib_native_only.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/nativeonly/vlib_native_only.ml rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/nativeonly/vlib_native_only.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/nativeonly/vlib_native_only.mli b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/nativeonly/vlib_native_only.mli similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/nativeonly/vlib_native_only.mli rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/nativeonly/vlib_native_only.mli diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/privatemodule/dune b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/privatemodule/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/privatemodule/dune rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/privatemodule/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/privatemodule/privatemodule.ml b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/privatemodule/privatemodule.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/privatemodule/privatemodule.ml rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/privatemodule/privatemodule.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/privatemodule/virt_module.mli b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/privatemodule/virt_module.mli similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/privatemodule/virt_module.mli rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/privatemodule/virt_module.mli diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/privatemodule/vlib_privatemodule.ml b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/privatemodule/vlib_privatemodule.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/privatemodule/vlib_privatemodule.ml rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/privatemodule/vlib_privatemodule.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/privatemodule/vlib_privatemodule.mli b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/privatemodule/vlib_privatemodule.mli similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/privatemodule/vlib_privatemodule.mli rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/privatemodule/vlib_privatemodule.mli diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/vlib.opam b/test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/vlib.opam similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/implements-external/vlib/vlib.opam rename to test/blackbox-tests/test-cases/virtual-libraries/implements-external/vlib/vlib.opam diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/install-file/dune b/test/blackbox-tests/test-cases/virtual-libraries/install-file/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/install-file/dune rename to test/blackbox-tests/test-cases/virtual-libraries/install-file/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/install-file/dune-project b/test/blackbox-tests/test-cases/virtual-libraries/install-file/dune-project similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/install-file/dune-project rename to test/blackbox-tests/test-cases/virtual-libraries/install-file/dune-project diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/install-file/impl.opam b/test/blackbox-tests/test-cases/virtual-libraries/install-file/impl.opam similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/install-file/impl.opam rename to test/blackbox-tests/test-cases/virtual-libraries/install-file/impl.opam diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/install-file/impl/dune b/test/blackbox-tests/test-cases/virtual-libraries/install-file/impl/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/install-file/impl/dune rename to test/blackbox-tests/test-cases/virtual-libraries/install-file/impl/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/install-file/impl/foo.ml b/test/blackbox-tests/test-cases/virtual-libraries/install-file/impl/foo.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/install-file/impl/foo.ml rename to test/blackbox-tests/test-cases/virtual-libraries/install-file/impl/foo.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/install-file/run.t b/test/blackbox-tests/test-cases/virtual-libraries/install-file/run.t new file mode 100644 index 00000000000..d06e3108337 --- /dev/null +++ b/test/blackbox-tests/test-cases/virtual-libraries/install-file/run.t @@ -0,0 +1,33 @@ +Install files for implemenations and virtual libs have all the artifacts: + $ dune build + lib: [ + "_build/install/default/lib/vlib/META" + "_build/install/default/lib/vlib/dune-package" + "_build/install/default/lib/vlib/foo.mli" + "_build/install/default/lib/vlib/opam" + "_build/install/default/lib/vlib/vlib.cmi" + "_build/install/default/lib/vlib/vlib.cmo" + "_build/install/default/lib/vlib/vlib.cmt" + "_build/install/default/lib/vlib/vlib.cmx" + "_build/install/default/lib/vlib/vlib.ml" + "_build/install/default/lib/vlib/vlib$ext_obj" + "_build/install/default/lib/vlib/vlib__Foo.cmi" + "_build/install/default/lib/vlib/vlib__Foo.cmti" + ] + lib: [ + "_build/install/default/lib/impl/META" + "_build/install/default/lib/impl/dune-package" + "_build/install/default/lib/impl/foo.ml" + "_build/install/default/lib/impl/impl$ext_lib" + "_build/install/default/lib/impl/impl.cma" + "_build/install/default/lib/impl/impl.cmxa" + "_build/install/default/lib/impl/impl.cmxs" + "_build/install/default/lib/impl/opam" + "_build/install/default/lib/impl/vlib__Foo.cmi" + "_build/install/default/lib/impl/vlib__Foo.cmt" + "_build/install/default/lib/impl/vlib__Foo.cmx" + "_build/install/default/lib/impl/vlib__impl__.cmi" + "_build/install/default/lib/impl/vlib__impl__.cmt" + "_build/install/default/lib/impl/vlib__impl__.cmx" + "_build/install/default/lib/impl/vlib__impl__.ml" + ] diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/install-file/vlib.opam b/test/blackbox-tests/test-cases/virtual-libraries/install-file/vlib.opam similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/install-file/vlib.opam rename to test/blackbox-tests/test-cases/virtual-libraries/install-file/vlib.opam diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/install-file/vlib/dune b/test/blackbox-tests/test-cases/virtual-libraries/install-file/vlib/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/install-file/vlib/dune rename to test/blackbox-tests/test-cases/virtual-libraries/install-file/vlib/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/install-file/vlib/foo.mli b/test/blackbox-tests/test-cases/virtual-libraries/install-file/vlib/foo.mli similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/install-file/vlib/foo.mli rename to test/blackbox-tests/test-cases/virtual-libraries/install-file/vlib/foo.mli diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/invalid-virtual-lib/bar.mli b/test/blackbox-tests/test-cases/virtual-libraries/invalid-virtual-lib/bar.mli similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/invalid-virtual-lib/bar.mli rename to test/blackbox-tests/test-cases/virtual-libraries/invalid-virtual-lib/bar.mli diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/invalid-virtual-lib/dune b/test/blackbox-tests/test-cases/virtual-libraries/invalid-virtual-lib/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/invalid-virtual-lib/dune rename to test/blackbox-tests/test-cases/virtual-libraries/invalid-virtual-lib/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/invalid-virtual-lib/dune-project b/test/blackbox-tests/test-cases/virtual-libraries/invalid-virtual-lib/dune-project similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/invalid-virtual-lib/dune-project rename to test/blackbox-tests/test-cases/virtual-libraries/invalid-virtual-lib/dune-project diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/invalid-virtual-lib/foo.ml b/test/blackbox-tests/test-cases/virtual-libraries/invalid-virtual-lib/foo.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/invalid-virtual-lib/foo.ml rename to test/blackbox-tests/test-cases/virtual-libraries/invalid-virtual-lib/foo.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/invalid-virtual-lib/foo.mli b/test/blackbox-tests/test-cases/virtual-libraries/invalid-virtual-lib/foo.mli similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/invalid-virtual-lib/foo.mli rename to test/blackbox-tests/test-cases/virtual-libraries/invalid-virtual-lib/foo.mli diff --git a/test/blackbox-tests/test-cases/virtual-libraries/invalid-virtual-lib/run.t b/test/blackbox-tests/test-cases/virtual-libraries/invalid-virtual-lib/run.t new file mode 100644 index 00000000000..426e4e938a1 --- /dev/null +++ b/test/blackbox-tests/test-cases/virtual-libraries/invalid-virtual-lib/run.t @@ -0,0 +1,10 @@ +virtual libraries may not implement their virtual modules + + $ dune build + File "dune", line 3, characters 18-21: + 3 | (virtual_modules foo bar)) + ^^^ + Error: The following modules have an implementation, they cannot be listed as + virtual: + - Foo + [1] diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/missing-implementation/dune b/test/blackbox-tests/test-cases/virtual-libraries/missing-implementation/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/missing-implementation/dune rename to test/blackbox-tests/test-cases/virtual-libraries/missing-implementation/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/missing-implementation/dune-project b/test/blackbox-tests/test-cases/virtual-libraries/missing-implementation/dune-project similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/missing-implementation/dune-project rename to test/blackbox-tests/test-cases/virtual-libraries/missing-implementation/dune-project diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/missing-implementation/foo.ml b/test/blackbox-tests/test-cases/virtual-libraries/missing-implementation/foo.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/missing-implementation/foo.ml rename to test/blackbox-tests/test-cases/virtual-libraries/missing-implementation/foo.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/missing-implementation/run.t b/test/blackbox-tests/test-cases/virtual-libraries/missing-implementation/run.t new file mode 100644 index 00000000000..26425324a63 --- /dev/null +++ b/test/blackbox-tests/test-cases/virtual-libraries/missing-implementation/run.t @@ -0,0 +1,6 @@ +Executable that tries to build against a virtual library without an implementation + $ dune build + Error: No implementation found for virtual library "vlib" in + _build/default/vlib. + -> required by executable foo in dune:2 + [1] diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/missing-implementation/vlib/dune b/test/blackbox-tests/test-cases/virtual-libraries/missing-implementation/vlib/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/missing-implementation/vlib/dune rename to test/blackbox-tests/test-cases/virtual-libraries/missing-implementation/vlib/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/missing-implementation/vlib/vlib.mli b/test/blackbox-tests/test-cases/virtual-libraries/missing-implementation/vlib/vlib.mli similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/missing-implementation/vlib/vlib.mli rename to test/blackbox-tests/test-cases/virtual-libraries/missing-implementation/vlib/vlib.mli diff --git a/test/blackbox-tests/test-cases/virtual-libraries/module-fields/run.t b/test/blackbox-tests/test-cases/virtual-libraries/module-fields/run.t new file mode 100644 index 00000000000..adf0c18f1fb --- /dev/null +++ b/test/blackbox-tests/test-cases/virtual-libraries/module-fields/run.t @@ -0,0 +1,104 @@ + $ ocaml test.ml + impl: true. modules_without_implementation: true. virtual_modules: true. private_modules: true + File "dune", line 4, characters 18-19: + 4 | (virtual_modules m) + ^ + Error: The following modules are declared as virtual and private: + - M + This is not possible. + ------------------------- + impl: true. modules_without_implementation: true. virtual_modules: false. private_modules: true + File "dune", line 3, characters 33-34: + 3 | (modules_without_implementation m) + ^ + Error: The following modules have an implementation, they cannot be listed as + modules_without_implementation: + - M + ------------------------- + impl: true. modules_without_implementation: false. virtual_modules: true. private_modules: true + File "dune", line 3, characters 18-19: + 3 | (virtual_modules m) + ^ + Error: The following modules are declared as virtual and private: + - M + This is not possible. + ------------------------- + impl: true. modules_without_implementation: false. virtual_modules: false. private_modules: true + ------------------------- + impl: false. modules_without_implementation: true. virtual_modules: true. private_modules: true + File "dune", line 4, characters 18-19: + 4 | (virtual_modules m) + ^ + Error: The following modules are declared as virtual and private: + - M + This is not possible. + ------------------------- + impl: false. modules_without_implementation: true. virtual_modules: false. private_modules: true + ------------------------- + impl: false. modules_without_implementation: false. virtual_modules: true. private_modules: true + File "dune", line 3, characters 18-19: + 3 | (virtual_modules m) + ^ + Error: The following modules are declared as virtual and private: + - M + This is not possible. + ------------------------- + impl: false. modules_without_implementation: false. virtual_modules: false. private_modules: true + File "dune", line 1, characters 0-42: + 1 | (library + 2 | (name foo) + 3 | (private_modules m)) + Error: Some modules don't have an implementation. + You need to add the following field to this stanza: + + (modules_without_implementation m) + ------------------------- + impl: true. modules_without_implementation: true. virtual_modules: true. private_modules: false + File "dune", line 4, characters 18-19: + 4 | (virtual_modules m)) + ^ + Error: These modules appear in the virtual_libraries and + modules_without_implementation fields: + - M + This is not possible. + ------------------------- + impl: true. modules_without_implementation: true. virtual_modules: false. private_modules: false + File "dune", line 3, characters 33-34: + 3 | (modules_without_implementation m)) + ^ + Error: The following modules have an implementation, they cannot be listed as + modules_without_implementation: + - M + ------------------------- + impl: true. modules_without_implementation: false. virtual_modules: true. private_modules: false + File "dune", line 3, characters 18-19: + 3 | (virtual_modules m)) + ^ + Error: The following modules have an implementation, they cannot be listed as + virtual: + - M + ------------------------- + impl: true. modules_without_implementation: false. virtual_modules: false. private_modules: false + ------------------------- + impl: false. modules_without_implementation: true. virtual_modules: true. private_modules: false + File "dune", line 4, characters 18-19: + 4 | (virtual_modules m)) + ^ + Error: These modules appear in the virtual_libraries and + modules_without_implementation fields: + - M + This is not possible. + ------------------------- + impl: false. modules_without_implementation: true. virtual_modules: false. private_modules: false + ------------------------- + impl: false. modules_without_implementation: false. virtual_modules: true. private_modules: false + ------------------------- + impl: false. modules_without_implementation: false. virtual_modules: false. private_modules: false + File "dune", line 1, characters 0-21: + 1 | (library + 2 | (name foo)) + Error: Some modules don't have an implementation. + You need to add the following field to this stanza: + + (modules_without_implementation m) + ------------------------- diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/module-fields/test.ml b/test/blackbox-tests/test-cases/virtual-libraries/module-fields/test.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/module-fields/test.ml rename to test/blackbox-tests/test-cases/virtual-libraries/module-fields/test.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/no-vlib-present/dune b/test/blackbox-tests/test-cases/virtual-libraries/no-vlib-present/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/no-vlib-present/dune rename to test/blackbox-tests/test-cases/virtual-libraries/no-vlib-present/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/no-vlib-present/dune-project b/test/blackbox-tests/test-cases/virtual-libraries/no-vlib-present/dune-project similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/no-vlib-present/dune-project rename to test/blackbox-tests/test-cases/virtual-libraries/no-vlib-present/dune-project diff --git a/test/blackbox-tests/test-cases/virtual-libraries/no-vlib-present/run.t b/test/blackbox-tests/test-cases/virtual-libraries/no-vlib-present/run.t new file mode 100644 index 00000000000..79c52240b7d --- /dev/null +++ b/test/blackbox-tests/test-cases/virtual-libraries/no-vlib-present/run.t @@ -0,0 +1,8 @@ +Test that implementing vlibs that aren't present is impossible + $ dune build + File "dune", line 3, characters 13-27: + 3 | (implements foobar12312414)) + ^^^^^^^^^^^^^^ + Error: Library "foobar12312414" not found. + Hint: try: dune external-lib-deps --missing @@default + [1] diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/preprocess/dune b/test/blackbox-tests/test-cases/virtual-libraries/preprocess/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/preprocess/dune rename to test/blackbox-tests/test-cases/virtual-libraries/preprocess/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/preprocess/dune-project b/test/blackbox-tests/test-cases/virtual-libraries/preprocess/dune-project similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/preprocess/dune-project rename to test/blackbox-tests/test-cases/virtual-libraries/preprocess/dune-project diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/preprocess/impl/dune b/test/blackbox-tests/test-cases/virtual-libraries/preprocess/impl/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/preprocess/impl/dune rename to test/blackbox-tests/test-cases/virtual-libraries/preprocess/impl/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/preprocess/impl/foo.ml b/test/blackbox-tests/test-cases/virtual-libraries/preprocess/impl/foo.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/preprocess/impl/foo.ml rename to test/blackbox-tests/test-cases/virtual-libraries/preprocess/impl/foo.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/preprocess/pp/dune b/test/blackbox-tests/test-cases/virtual-libraries/preprocess/pp/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/preprocess/pp/dune rename to test/blackbox-tests/test-cases/virtual-libraries/preprocess/pp/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/preprocess/pp/mypp.ml b/test/blackbox-tests/test-cases/virtual-libraries/preprocess/pp/mypp.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/preprocess/pp/mypp.ml rename to test/blackbox-tests/test-cases/virtual-libraries/preprocess/pp/mypp.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/preprocess/run.t b/test/blackbox-tests/test-cases/virtual-libraries/preprocess/run.t new file mode 100644 index 00000000000..7e541715580 --- /dev/null +++ b/test/blackbox-tests/test-cases/virtual-libraries/preprocess/run.t @@ -0,0 +1,4 @@ +Virtual libraries and preprocessed source + $ dune build + test alias default + foo diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/preprocess/test.ml b/test/blackbox-tests/test-cases/virtual-libraries/preprocess/test.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/preprocess/test.ml rename to test/blackbox-tests/test-cases/virtual-libraries/preprocess/test.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/preprocess/vlib/dune b/test/blackbox-tests/test-cases/virtual-libraries/preprocess/vlib/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/preprocess/vlib/dune rename to test/blackbox-tests/test-cases/virtual-libraries/preprocess/vlib/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/preprocess/vlib/foo.mli b/test/blackbox-tests/test-cases/virtual-libraries/preprocess/vlib/foo.mli similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/preprocess/vlib/foo.mli rename to test/blackbox-tests/test-cases/virtual-libraries/preprocess/vlib/foo.mli diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/private-modules-overlapping-names/dune b/test/blackbox-tests/test-cases/virtual-libraries/private-modules-overlapping-names/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/private-modules-overlapping-names/dune rename to test/blackbox-tests/test-cases/virtual-libraries/private-modules-overlapping-names/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/private-modules-overlapping-names/dune-project b/test/blackbox-tests/test-cases/virtual-libraries/private-modules-overlapping-names/dune-project similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/private-modules-overlapping-names/dune-project rename to test/blackbox-tests/test-cases/virtual-libraries/private-modules-overlapping-names/dune-project diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/private-modules-overlapping-names/foo.ml b/test/blackbox-tests/test-cases/virtual-libraries/private-modules-overlapping-names/foo.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/private-modules-overlapping-names/foo.ml rename to test/blackbox-tests/test-cases/virtual-libraries/private-modules-overlapping-names/foo.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/private-modules-overlapping-names/impl/dune b/test/blackbox-tests/test-cases/virtual-libraries/private-modules-overlapping-names/impl/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/private-modules-overlapping-names/impl/dune rename to test/blackbox-tests/test-cases/virtual-libraries/private-modules-overlapping-names/impl/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/private-modules-overlapping-names/impl/priv.ml b/test/blackbox-tests/test-cases/virtual-libraries/private-modules-overlapping-names/impl/priv.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/private-modules-overlapping-names/impl/priv.ml rename to test/blackbox-tests/test-cases/virtual-libraries/private-modules-overlapping-names/impl/priv.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/private-modules-overlapping-names/impl/vlib.ml b/test/blackbox-tests/test-cases/virtual-libraries/private-modules-overlapping-names/impl/vlib.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/private-modules-overlapping-names/impl/vlib.ml rename to test/blackbox-tests/test-cases/virtual-libraries/private-modules-overlapping-names/impl/vlib.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/private-modules-overlapping-names/run.t b/test/blackbox-tests/test-cases/virtual-libraries/private-modules-overlapping-names/run.t new file mode 100644 index 00000000000..961b59f3df9 --- /dev/null +++ b/test/blackbox-tests/test-cases/virtual-libraries/private-modules-overlapping-names/run.t @@ -0,0 +1,6 @@ +Implementations may have private modules that have overlapping names with the +virtual lib + $ dune build + foo alias default + impl's own Priv.run + implementation of foo diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/private-modules-overlapping-names/vlib/dune b/test/blackbox-tests/test-cases/virtual-libraries/private-modules-overlapping-names/vlib/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/private-modules-overlapping-names/vlib/dune rename to test/blackbox-tests/test-cases/virtual-libraries/private-modules-overlapping-names/vlib/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/private-modules-overlapping-names/vlib/priv.ml b/test/blackbox-tests/test-cases/virtual-libraries/private-modules-overlapping-names/vlib/priv.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/private-modules-overlapping-names/vlib/priv.ml rename to test/blackbox-tests/test-cases/virtual-libraries/private-modules-overlapping-names/vlib/priv.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/private-modules-overlapping-names/vlib/vlib.mli b/test/blackbox-tests/test-cases/virtual-libraries/private-modules-overlapping-names/vlib/vlib.mli similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/private-modules-overlapping-names/vlib/vlib.mli rename to test/blackbox-tests/test-cases/virtual-libraries/private-modules-overlapping-names/vlib/vlib.mli diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/dune b/test/blackbox-tests/test-cases/virtual-libraries/unwrapped/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/dune rename to test/blackbox-tests/test-cases/virtual-libraries/unwrapped/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/dune-project b/test/blackbox-tests/test-cases/virtual-libraries/unwrapped/dune-project similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/dune-project rename to test/blackbox-tests/test-cases/virtual-libraries/unwrapped/dune-project diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/impl/bin/dune b/test/blackbox-tests/test-cases/virtual-libraries/unwrapped/impl/bin/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/impl/bin/dune rename to test/blackbox-tests/test-cases/virtual-libraries/unwrapped/impl/bin/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/impl/bin/dune-project b/test/blackbox-tests/test-cases/virtual-libraries/unwrapped/impl/bin/dune-project similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/impl/bin/dune-project rename to test/blackbox-tests/test-cases/virtual-libraries/unwrapped/impl/bin/dune-project diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/impl/bin/foo.ml b/test/blackbox-tests/test-cases/virtual-libraries/unwrapped/impl/bin/foo.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/impl/bin/foo.ml rename to test/blackbox-tests/test-cases/virtual-libraries/unwrapped/impl/bin/foo.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/impl/dune b/test/blackbox-tests/test-cases/virtual-libraries/unwrapped/impl/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/impl/dune rename to test/blackbox-tests/test-cases/virtual-libraries/unwrapped/impl/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/impl/dune-project b/test/blackbox-tests/test-cases/virtual-libraries/unwrapped/impl/dune-project similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/impl/dune-project rename to test/blackbox-tests/test-cases/virtual-libraries/unwrapped/impl/dune-project diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/impl/impl_wrapped.opam b/test/blackbox-tests/test-cases/virtual-libraries/unwrapped/impl/impl_wrapped.opam similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/impl/impl_wrapped.opam rename to test/blackbox-tests/test-cases/virtual-libraries/unwrapped/impl/impl_wrapped.opam diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/impl/vlib.ml b/test/blackbox-tests/test-cases/virtual-libraries/unwrapped/impl/vlib.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/impl/vlib.ml rename to test/blackbox-tests/test-cases/virtual-libraries/unwrapped/impl/vlib.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/unwrapped/run.t b/test/blackbox-tests/test-cases/virtual-libraries/unwrapped/run.t new file mode 100644 index 00000000000..283eee6b2a3 --- /dev/null +++ b/test/blackbox-tests/test-cases/virtual-libraries/unwrapped/run.t @@ -0,0 +1,14 @@ +Unwrapped virtual library + $ dune build + foo alias default + Running from vlib_more + running implementation + +Unwrapped virtual library + $ dune build @install --root vlib + Entering directory 'vlib' + $ env OCAMLPATH=vlib/_build/install/default/lib dune build --root impl --debug-dependency-path + Entering directory 'impl' + foo alias default + Running from vlib_more + running implementation diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/vlib/dune b/test/blackbox-tests/test-cases/virtual-libraries/unwrapped/vlib/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/vlib/dune rename to test/blackbox-tests/test-cases/virtual-libraries/unwrapped/vlib/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/vlib/dune-project b/test/blackbox-tests/test-cases/virtual-libraries/unwrapped/vlib/dune-project similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/vlib/dune-project rename to test/blackbox-tests/test-cases/virtual-libraries/unwrapped/vlib/dune-project diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/vlib/vlib.mli b/test/blackbox-tests/test-cases/virtual-libraries/unwrapped/vlib/vlib.mli similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/vlib/vlib.mli rename to test/blackbox-tests/test-cases/virtual-libraries/unwrapped/vlib/vlib.mli diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/vlib/vlib_more.ml b/test/blackbox-tests/test-cases/virtual-libraries/unwrapped/vlib/vlib_more.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/vlib/vlib_more.ml rename to test/blackbox-tests/test-cases/virtual-libraries/unwrapped/vlib/vlib_more.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/vlib/vlib_wrapped.opam b/test/blackbox-tests/test-cases/virtual-libraries/unwrapped/vlib/vlib_wrapped.opam similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/unwrapped/vlib/vlib_wrapped.opam rename to test/blackbox-tests/test-cases/virtual-libraries/unwrapped/vlib/vlib_wrapped.opam diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-simple/dune b/test/blackbox-tests/test-cases/virtual-libraries/variants-simple/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-simple/dune rename to test/blackbox-tests/test-cases/virtual-libraries/variants-simple/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-simple/dune-project b/test/blackbox-tests/test-cases/virtual-libraries/variants-simple/dune-project similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-simple/dune-project rename to test/blackbox-tests/test-cases/virtual-libraries/variants-simple/dune-project diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-simple/foo.ml b/test/blackbox-tests/test-cases/virtual-libraries/variants-simple/foo.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-simple/foo.ml rename to test/blackbox-tests/test-cases/virtual-libraries/variants-simple/foo.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-simple/impl/dune b/test/blackbox-tests/test-cases/virtual-libraries/variants-simple/impl/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-simple/impl/dune rename to test/blackbox-tests/test-cases/virtual-libraries/variants-simple/impl/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-simple/impl/vlib.ml b/test/blackbox-tests/test-cases/virtual-libraries/variants-simple/impl/vlib.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-simple/impl/vlib.ml rename to test/blackbox-tests/test-cases/virtual-libraries/variants-simple/impl/vlib.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/variants-simple/run.t b/test/blackbox-tests/test-cases/virtual-libraries/variants-simple/run.t new file mode 100644 index 00000000000..fd0d65469b0 --- /dev/null +++ b/test/blackbox-tests/test-cases/virtual-libraries/variants-simple/run.t @@ -0,0 +1,4 @@ +Virtual library with a single module + $ dune build + foo alias default + running implementation diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-simple/vlib/dune b/test/blackbox-tests/test-cases/virtual-libraries/variants-simple/vlib/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-simple/vlib/dune rename to test/blackbox-tests/test-cases/virtual-libraries/variants-simple/vlib/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-simple/vlib/vlib.mli b/test/blackbox-tests/test-cases/virtual-libraries/variants-simple/vlib/vlib.mli similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-simple/vlib/vlib.mli rename to test/blackbox-tests/test-cases/virtual-libraries/variants-simple/vlib/vlib.mli diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-sub-module/dune b/test/blackbox-tests/test-cases/virtual-libraries/variants-sub-module/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-sub-module/dune rename to test/blackbox-tests/test-cases/virtual-libraries/variants-sub-module/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-sub-module/dune-project b/test/blackbox-tests/test-cases/virtual-libraries/variants-sub-module/dune-project similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-sub-module/dune-project rename to test/blackbox-tests/test-cases/virtual-libraries/variants-sub-module/dune-project diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-sub-module/impl/dune b/test/blackbox-tests/test-cases/virtual-libraries/variants-sub-module/impl/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-sub-module/impl/dune rename to test/blackbox-tests/test-cases/virtual-libraries/variants-sub-module/impl/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-sub-module/impl/vmod.ml b/test/blackbox-tests/test-cases/virtual-libraries/variants-sub-module/impl/vmod.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-sub-module/impl/vmod.ml rename to test/blackbox-tests/test-cases/virtual-libraries/variants-sub-module/impl/vmod.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-sub-module/run.ml b/test/blackbox-tests/test-cases/virtual-libraries/variants-sub-module/run.ml similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-sub-module/run.ml rename to test/blackbox-tests/test-cases/virtual-libraries/variants-sub-module/run.ml diff --git a/test/blackbox-tests/test-cases/virtual-libraries/variants-sub-module/run.t b/test/blackbox-tests/test-cases/virtual-libraries/variants-sub-module/run.t new file mode 100644 index 00000000000..1bbc086996f --- /dev/null +++ b/test/blackbox-tests/test-cases/virtual-libraries/variants-sub-module/run.t @@ -0,0 +1,4 @@ +Virtual library where a wrapped module is virtual + $ dune build + run alias default + Impl's Vmd.run () diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-sub-module/vlib/dune b/test/blackbox-tests/test-cases/virtual-libraries/variants-sub-module/vlib/dune similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-sub-module/vlib/dune rename to test/blackbox-tests/test-cases/virtual-libraries/variants-sub-module/vlib/dune diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-sub-module/vlib/vmod.mli b/test/blackbox-tests/test-cases/virtual-libraries/variants-sub-module/vlib/vmod.mli similarity index 100% rename from test/blackbox-tests/test-cases/virtual-libraries/vlib/variants-sub-module/vlib/vmod.mli rename to test/blackbox-tests/test-cases/virtual-libraries/variants-sub-module/vlib/vmod.mli diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib/run.t b/test/blackbox-tests/test-cases/virtual-libraries/vlib/run.t deleted file mode 100644 index 6f6e78a0aa2..00000000000 --- a/test/blackbox-tests/test-cases/virtual-libraries/vlib/run.t +++ /dev/null @@ -1,374 +0,0 @@ -virtual libraries may not implement their virtual modules - - $ dune build --root invalid-virtual-lib - Entering directory 'invalid-virtual-lib' - File "dune", line 3, characters 18-21: - 3 | (virtual_modules foo bar)) - ^^^ - Error: The following modules have an implementation, they cannot be listed as - virtual: - - Foo - [1] - - $ (cd module-fields && ocaml test.ml) - impl: true. modules_without_implementation: true. virtual_modules: true. private_modules: true - File "dune", line 4, characters 18-19: - 4 | (virtual_modules m) - ^ - Error: The following modules are declared as virtual and private: - - M - This is not possible. - ------------------------- - impl: true. modules_without_implementation: true. virtual_modules: false. private_modules: true - File "dune", line 3, characters 33-34: - 3 | (modules_without_implementation m) - ^ - Error: The following modules have an implementation, they cannot be listed as - modules_without_implementation: - - M - ------------------------- - impl: true. modules_without_implementation: false. virtual_modules: true. private_modules: true - File "dune", line 3, characters 18-19: - 3 | (virtual_modules m) - ^ - Error: The following modules are declared as virtual and private: - - M - This is not possible. - ------------------------- - impl: true. modules_without_implementation: false. virtual_modules: false. private_modules: true - ------------------------- - impl: false. modules_without_implementation: true. virtual_modules: true. private_modules: true - File "dune", line 4, characters 18-19: - 4 | (virtual_modules m) - ^ - Error: The following modules are declared as virtual and private: - - M - This is not possible. - ------------------------- - impl: false. modules_without_implementation: true. virtual_modules: false. private_modules: true - ------------------------- - impl: false. modules_without_implementation: false. virtual_modules: true. private_modules: true - File "dune", line 3, characters 18-19: - 3 | (virtual_modules m) - ^ - Error: The following modules are declared as virtual and private: - - M - This is not possible. - ------------------------- - impl: false. modules_without_implementation: false. virtual_modules: false. private_modules: true - File "dune", line 1, characters 0-42: - 1 | (library - 2 | (name foo) - 3 | (private_modules m)) - Error: Some modules don't have an implementation. - You need to add the following field to this stanza: - - (modules_without_implementation m) - ------------------------- - impl: true. modules_without_implementation: true. virtual_modules: true. private_modules: false - File "dune", line 4, characters 18-19: - 4 | (virtual_modules m)) - ^ - Error: These modules appear in the virtual_libraries and - modules_without_implementation fields: - - M - This is not possible. - ------------------------- - impl: true. modules_without_implementation: true. virtual_modules: false. private_modules: false - File "dune", line 3, characters 33-34: - 3 | (modules_without_implementation m)) - ^ - Error: The following modules have an implementation, they cannot be listed as - modules_without_implementation: - - M - ------------------------- - impl: true. modules_without_implementation: false. virtual_modules: true. private_modules: false - File "dune", line 3, characters 18-19: - 3 | (virtual_modules m)) - ^ - Error: The following modules have an implementation, they cannot be listed as - virtual: - - M - ------------------------- - impl: true. modules_without_implementation: false. virtual_modules: false. private_modules: false - ------------------------- - impl: false. modules_without_implementation: true. virtual_modules: true. private_modules: false - File "dune", line 4, characters 18-19: - 4 | (virtual_modules m)) - ^ - Error: These modules appear in the virtual_libraries and - modules_without_implementation fields: - - M - This is not possible. - ------------------------- - impl: false. modules_without_implementation: true. virtual_modules: false. private_modules: false - ------------------------- - impl: false. modules_without_implementation: false. virtual_modules: true. private_modules: false - ------------------------- - impl: false. modules_without_implementation: false. virtual_modules: false. private_modules: false - File "dune", line 1, characters 0-21: - 1 | (library - 2 | (name foo)) - Error: Some modules don't have an implementation. - You need to add the following field to this stanza: - - (modules_without_implementation m) - ------------------------- - -Implementations cannot introduce new modules to the library's interface - $ dune build --root impl-public-modules - Entering directory 'impl-public-modules' - File "impl/dune", line 1, characters 0-44: - 1 | (library - 2 | (name foo_impl) - 3 | (implements foo)) - Error: Implementations of wrapped libraries cannot introduce new public - modules. - The following modules: - - Baz - must all be marked as private using the (private_modules ..) field. - [1] - -They can only introduce private modules: - $ dune build --root impl-private-modules --debug-dependency-path - Entering directory 'impl-private-modules' - test alias default - Private module Baz - implementing bar - -Virtual library with a single module - $ dune build --root variants-simple - Entering directory 'variants-simple' - foo alias default - running implementation - -Virtual library where a wrapped module is virtual - $ dune build --root variants-sub-module - Entering directory 'variants-sub-module' - run alias default - Impl's Vmd.run () - -Executable that tries to build against a virtual library without an implementation - $ dune build --root missing-implementation - Entering directory 'missing-implementation' - Error: No implementation found for virtual library "vlib" in - _build/default/vlib. - -> required by executable foo in dune:2 - [1] - -Executable that tries to use two implementations for the same virtual lib - $ dune build --root double-implementation - Entering directory 'double-implementation' - Error: Conflicting implementations for virtual library "vlib" in - _build/default/vlib: - - "impl1" in _build/default/impl1 - -> required by library "bar" in _build/default - - "impl2" in _build/default/impl2 - This cannot work. - -> required by executable foo in dune:2 - [1] - -Install files for implemenations and virtual libs have all the artifacts: - $ dune build --root install-file - Entering directory 'install-file' - lib: [ - "_build/install/default/lib/vlib/META" - "_build/install/default/lib/vlib/dune-package" - "_build/install/default/lib/vlib/foo.mli" - "_build/install/default/lib/vlib/opam" - "_build/install/default/lib/vlib/vlib.cmi" - "_build/install/default/lib/vlib/vlib.cmo" - "_build/install/default/lib/vlib/vlib.cmt" - "_build/install/default/lib/vlib/vlib.cmx" - "_build/install/default/lib/vlib/vlib.ml" - "_build/install/default/lib/vlib/vlib$ext_obj" - "_build/install/default/lib/vlib/vlib__Foo.cmi" - "_build/install/default/lib/vlib/vlib__Foo.cmti" - ] - lib: [ - "_build/install/default/lib/impl/META" - "_build/install/default/lib/impl/dune-package" - "_build/install/default/lib/impl/foo.ml" - "_build/install/default/lib/impl/impl$ext_lib" - "_build/install/default/lib/impl/impl.cma" - "_build/install/default/lib/impl/impl.cmxa" - "_build/install/default/lib/impl/impl.cmxs" - "_build/install/default/lib/impl/opam" - "_build/install/default/lib/impl/vlib__Foo.cmi" - "_build/install/default/lib/impl/vlib__Foo.cmt" - "_build/install/default/lib/impl/vlib__Foo.cmx" - "_build/install/default/lib/impl/vlib__impl__.cmi" - "_build/install/default/lib/impl/vlib__impl__.cmt" - "_build/install/default/lib/impl/vlib__impl__.cmx" - "_build/install/default/lib/impl/vlib__impl__.ml" - ] - -Implementations may refer to virtual library's modules - $ dune build --root impl-using-vlib-modules - Entering directory 'impl-using-vlib-modules' - test alias default - bar from vlib - Foo.run implemented - -Implementations may have private modules that have overlapping names with the -virtual lib - $ dune build --root private-modules-overlapping-names - Entering directory 'private-modules-overlapping-names' - foo alias default - impl's own Priv.run - implementation of foo - -Unwrapped virtual library - $ dune build --root unwrapped - Entering directory 'unwrapped' - foo alias default - Running from vlib_more - running implementation - -Unwrapped virtual library - $ dune build @install --root unwrapped/vlib - Entering directory 'unwrapped/vlib' - $ env OCAMLPATH=unwrapped/vlib/_build/install/default/lib dune build --root unwrapped/impl --debug-dependency-path - Entering directory 'unwrapped/impl' - foo alias default - Running from vlib_more - running implementation - -Implementations may not provide a library interface module unless it is virtual. -There should be an error message that clarifies this. - $ dune build --root impl-lib-interface-module @all - Entering directory 'impl-lib-interface-module' - File "impl/dune", line 1, characters 0-41: - 1 | (library - 2 | (name impl) - 3 | (implements vlib)) - Error: Implementations of wrapped libraries cannot introduce new public - modules. - The following modules: - - Vlib - must all be marked as private using the (private_modules ..) field. - [1] - -Test that implementing vlibs that aren't present is impossible - $ dune build --root no-vlib-present - Entering directory 'no-vlib-present' - File "dune", line 3, characters 13-27: - 3 | (implements foobar12312414)) - ^^^^^^^^^^^^^^ - Error: Library "foobar12312414" not found. - Hint: try: dune external-lib-deps --missing --root no-vlib-present @@default - [1] - -Test that trying to implement libraries that aren't virtual results in an -appropriate error message. - $ dune build --root impl-not-virtual - Entering directory 'impl-not-virtual' - File "impl/dune", line 3, characters 13-16: - 3 | (implements lib)) - ^^^ - Error: Library "lib" is not virtual. It cannot be implemented by "impl". - [1] - -Test that trying to implement external libraries that aren't virtual results in -an appropriate error message. - $ dune build --root impl-not-virtual-external - Entering directory 'impl-not-virtual-external' - File "dune", line 7, characters 13-30: - 7 | (implements dune.configurator)) - ^^^^^^^^^^^^^^^^^ - Error: Library "dune-configurator" is not virtual. It cannot be implemented - by "foobar". - [1] - -Test that we can implement external libraries. - -First we create an external library - $ dune build --root implements-external/vlib @install - Entering directory 'implements-external/vlib' - -Then we make sure that we can implement it - $ env OCAMLPATH=implements-external/vlib/_build/install/default/lib dune build --root implements-external/impl --debug-dependency-path - Entering directory 'implements-external/impl' - test alias default - bar from vlib - Foo.run implemented - -Make sure that we can also implement native only variants - $ env OCAMLPATH=implements-external/vlib/_build/install/default/lib dune build --root implements-external/impl-native-only --debug-dependency-path - Entering directory 'implements-external/impl-native-only' - run alias default - implement virtual module - -We can implement external variants with mli only modules - $ env OCAMLPATH=implements-external/vlib/_build/install/default/lib dune build --root implements-external/impl-intf-only --debug-dependency-path - Entering directory 'implements-external/impl-intf-only' - run alias default - implemented mli only - magic number: 42 - -Implement external virtual libraries with private modules - $ env OCAMLPATH=implements-external/vlib/_build/install/default/lib dune build --root implements-external/impl-private-module --debug-dependency-path - Entering directory 'implements-external/impl-private-module' - run alias default - Name: implement virtual module. Magic number: 42 - -Include variants and implementation information in dune-package - $ dune build --root dune-package-info | sed "s/(lang dune .*)/(lang dune )/" - Entering directory 'dune-package-info' - (lang dune ) - (name foo) - (library - (name foo.impl) - (kind normal) - (archives (byte impl/impl.cma) (native impl/impl.cmxa)) - (plugins (byte impl/impl.cma) (native impl/impl.cmxs)) - (native_archives impl/impl$ext_lib) - (requires foo.vlib) - (implements foo.vlib) - (main_module_name Vlib) - (modes byte native) - (modules - (wrapped - (main_module_name Vlib) - (modules - ((name Vmod) - (obj_name vlib__Vmod) - (visibility public) - (kind impl_vmodule) - (impl))) - (alias_module - (name Vlib__impl__) - (obj_name vlib__impl__) - (visibility public) - (kind alias) - (impl)) - (wrapped true)))) - (library - (name foo.vlib) - (kind normal) - (virtual) - (native_archives vlib/vlib$ext_lib) - (main_module_name Vlib) - (modes byte native) - (modules - (wrapped - (main_module_name Vlib) - (modules - ((name Vmod) - (obj_name vlib__Vmod) - (visibility public) - (kind virtual) - (intf))) - (alias_module - (name Vlib) - (obj_name vlib) - (visibility public) - (kind alias) - (impl)) - (wrapped true)))) - -Virtual libraries and preprocessed source - $ dune build --root preprocess - Entering directory 'preprocess' - test alias default - foo From 2fb49953e650e75fcf1b58ac4abfbfffec26bca9 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Wed, 4 Mar 2020 10:24:04 +0000 Subject: [PATCH 2/2] Reproduce #2896 Signed-off-by: Rudi Grinberg --- test/blackbox-tests/dune.inc | 10 ++++++ .../virtual-libraries/github2896/run.t | 31 +++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 test/blackbox-tests/test-cases/virtual-libraries/github2896/run.t diff --git a/test/blackbox-tests/dune.inc b/test/blackbox-tests/dune.inc index 59b91252ce2..0ca8f84ef55 100644 --- a/test/blackbox-tests/dune.inc +++ b/test/blackbox-tests/dune.inc @@ -2101,6 +2101,14 @@ test-cases/virtual-libraries/dune-package-info (progn (run dune-cram run run.t) (diff? run.t run.t.corrected))))) +(rule + (alias virtual-libraries-github2896) + (deps (package dune) (source_tree test-cases/virtual-libraries/github2896)) + (action + (chdir + test-cases/virtual-libraries/github2896 + (progn (run dune-cram run run.t) (diff? run.t run.t.corrected))))) + (rule (alias virtual-libraries-impl-lib-interface-module) (deps @@ -2622,6 +2630,7 @@ (alias vendor-do-not-install-vendored-packages) (alias virtual-libraries-double-implementation) (alias virtual-libraries-dune-package-info) + (alias virtual-libraries-github2896) (alias virtual-libraries-impl-lib-interface-module) (alias virtual-libraries-impl-not-virtual) (alias virtual-libraries-impl-not-virtual-external) @@ -2873,6 +2882,7 @@ (alias vendor-do-not-install-vendored-packages) (alias virtual-libraries-double-implementation) (alias virtual-libraries-dune-package-info) + (alias virtual-libraries-github2896) (alias virtual-libraries-impl-lib-interface-module) (alias virtual-libraries-impl-not-virtual) (alias virtual-libraries-impl-not-virtual-external) diff --git a/test/blackbox-tests/test-cases/virtual-libraries/github2896/run.t b/test/blackbox-tests/test-cases/virtual-libraries/github2896/run.t new file mode 100644 index 00000000000..36b4bd7dfcc --- /dev/null +++ b/test/blackbox-tests/test-cases/virtual-libraries/github2896/run.t @@ -0,0 +1,31 @@ +Reproduction of the issue in #2896 + +We have a dependency cycle of the form impl <- lib <- vlib + +where vlib is a virtual library, and impl implements this library. + + $ echo "(lang dune 2.3)" > dune-project + $ mkdir vlib impl lib + $ touch impl/vlib.ml + $ echo "val run : unit -> unit" > vlib/vlib.mli + $ cat >vlib/dune < (library (name vlib) (virtual_modules vlib)) + > EOF + $ echo "let bar () = Vlib.run ();;" > lib/lib.ml + $ cat >lib/dune < (library (name lib) (libraries vlib)) + > EOF + $ echo "let run () = Lib.bar ();;" > impl/vlib.ml + $ cat >impl/dune < (library (name impl) (implements vlib) (libraries lib)) + > EOF + +The implementation impl was built, but it's not usable: + + $ echo 'Vlib.run ()' > foo.ml + $ echo "(executable (name foo) (libraries impl))" > dune + $ dune exec ./foo.exe + File "_none_", line 1: + Error: No implementations provided for the following modules: + Vlib referenced from lib/lib.cmxa(Lib) + [1]