diff --git a/source/dub/project.d b/source/dub/project.d index fb006c2..5eadb2e 100644 --- a/source/dub/project.d +++ b/source/dub/project.d @@ -284,12 +284,13 @@ Dependency vspec = dep.spec; Package p; - // non-optional and optional-default dependencies (if no selections file exists) - // need to be satisfied - bool is_desired = !vspec.optional || (vspec.default_ && m_selections.bare); - auto basename = getBasePackageName(dep.name); auto subname = getSubPackageName(dep.name); + + // non-optional and optional-default dependencies (if no selections file exists) + // need to be satisfied + bool is_desired = !vspec.optional || m_selections.hasSelectedVersion(basename) || (vspec.default_ && m_selections.bare); + if (dep.name == m_rootPackage.basePackage.name) { vspec = Dependency(m_rootPackage.version_); p = m_rootPackage.basePackage; diff --git a/test/issue990-download-optional-selected.sh b/test/issue990-download-optional-selected.sh new file mode 100755 index 0000000..1d5355c --- /dev/null +++ b/test/issue990-download-optional-selected.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +cd ${CURR_DIR}/issue990-download-optional-selected +rm -rf b/.dub +${DUB} remove gitcompatibledubpackage -n --version=* +${DUB} run || exit 1 diff --git a/test/issue990-download-optional-selected/.no_build b/test/issue990-download-optional-selected/.no_build new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/issue990-download-optional-selected/.no_build diff --git a/test/issue990-download-optional-selected/dub.sdl b/test/issue990-download-optional-selected/dub.sdl new file mode 100644 index 0000000..79e0e11 --- /dev/null +++ b/test/issue990-download-optional-selected/dub.sdl @@ -0,0 +1,2 @@ +name "b" +dependency "gitcompatibledubpackage" version="1.0.2" optional=true diff --git a/test/issue990-download-optional-selected/dub.selections.json b/test/issue990-download-optional-selected/dub.selections.json new file mode 100644 index 0000000..7c04270 --- /dev/null +++ b/test/issue990-download-optional-selected/dub.selections.json @@ -0,0 +1,6 @@ +{ + "fileVersion": 1, + "versions": { + "gitcompatibledubpackage": "1.0.2" + } +} diff --git a/test/issue990-download-optional-selected/source/app.d b/test/issue990-download-optional-selected/source/app.d new file mode 100644 index 0000000..49eeacb --- /dev/null +++ b/test/issue990-download-optional-selected/source/app.d @@ -0,0 +1,6 @@ +import gitcompatibledubpackage.subdir.file; + +void main() +{ + assert(!hasTheWorldExploded); +}