From 44db6d3d22a3c791d589700e44a3f17736c6c3d1 Mon Sep 17 00:00:00 2001 From: Mathias Lang Date: Tue, 26 Dec 2023 22:16:32 +0100 Subject: [PATCH] [WIP] Fix #1217: Configuration-only dependencies are global --- source/dub/test/dependencies.d | 38 ++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/source/dub/test/dependencies.d b/source/dub/test/dependencies.d index d9f78ed65..53e1dc473 100644 --- a/source/dub/test/dependencies.d +++ b/source/dub/test/dependencies.d @@ -131,3 +131,41 @@ dependency "b" version="*" assert(dub.project.getDependency("b", true), "Missing 'b' dependency"); assert(dub.project.getDependency("no", true) is null, "Returned unexpected dependency"); } + +// https://github.com/dlang/dub/issues/1217 +version (none) unittest +{ + // Project + const a = `name "a" +dependency "b" version="*" +configuration "unittest" { + dependency "c" version="==1.0.0" +}`; + // Intermediate dependency + const b = `name "b" +configuration "unittest" { + dependency "c" version="==2.0.0" +} +`; + // Leaf dependency + const c = `name "unit-threaded"`; + + enableLogging(); + scope(exit) disableLogging(); + + scope dub = new TestDub(); + dub.createTestPackage(c, Version("1.0.0"), PackageFormat.sdl); + dub.createTestPackage(b, Version("1.0.0"), PackageFormat.sdl); + dub.loadPackage(dub.createTestPackage(a, Version("1.0.0"), PackageFormat.sdl)); + + dub.upgrade(UpgradeOptions.select); + + // Check that dependencies have been populated + assert(dub.project.hasAllDependencies(), "project has missing dependencies"); + auto bd = dub.project.getDependency("b", true); + assert(bd !is null, "dependencies have not been propagated"); + + // But not unittest-only dependency + auto cd = dub.project.getDependency("c", true); + assert(cd is null, "unittest-only dependency shouldn't be present!"); +}