This PR adds a module resolution procedure to Lake to disambiguate modules that are defined in multiple packages. On an `import`, Lake will now check if multiple packages within the workspace define the module. If so, it will verify that modules have sufficiently similar definitions (i.e., artifacts with the same content hashes). If not, Lake will report an error. This verification is currently only done for direct imports. Transitive imports are not checked for consistency. An overhaul of transitive imports will come later.
17 lines
574 B
Bash
Executable file
17 lines
574 B
Bash
Executable file
#!/usr/bin/env bash
|
|
source ../../lake/tests/common.sh
|
|
|
|
# This test covers importing modules which are defined in multiple packages
|
|
# (with the same original package name).
|
|
|
|
./clean.sh
|
|
test_run resolve-deps
|
|
|
|
# Test that importing a module with multiple identical candidates works
|
|
test_run build Test.ImportSame
|
|
|
|
# Test that importing a module with multiple sufficiently similar candidates works
|
|
test_run build Test.ImportSimilar
|
|
|
|
# Test that importing a module with multiple distinct candidates fails
|
|
test_err 'could not disambiguate the module `Diff`' build Test.ImportDiff
|