It's DUB's "optional": true broken ?

Zardoz luis.panadero at gmail.com
Sun Mar 28 15:52:43 UTC 2021


So, we get this dub.json :

{
   "name": "example",
   "configurations": [
     {
       "name": "example",
       "targetType": "library"
     },
     {
       "name": "unittest",
       "targetType": "library",
       "importPaths": ["source", "tests"],
       "sourcePaths": ["source", "tests"],
       "dependencies": {
         "silly": "~>1.0.2",
         "dshould": "~>1.4.3"
       }
     }
   ]
}

Where "dshould have a dependency to unit-threaded marked as 
"optional", and not have any "default" set to true. DUB 
documentation says that the proyect not must pick the optional 
dependency if I not edit manualy dub.selections.json to pick 
unit-threaded.

Well.. DUB ignores and picks unit-threaded as I can show here :

$ dub build
Performing "debug" build using /usr/bin/dmd for x86_64.
sybok ~master: building configuration "sybok"...
$ dub test
Generating test runner configuration 'sybok-test-unittest' for 
'unittest' (library).
Performing "unittest" build using /usr/bin/dmd for x86_64.
prettyprint 1.0.7: building configuration "library"...
unit-threaded:from 1.0.14: building configuration "library"...
unit-threaded:exception 1.0.14: building configuration 
"library"...
unit-threaded:assertions 1.0.14: building configuration 
"library"...
unit-threaded:integration 1.0.14: building configuration 
"library"...
unit-threaded:mocks 1.0.14: building configuration "library"...
unit-threaded:property 1.0.14: building configuration "default"...
unit-threaded:runner 1.0.14: building configuration "library"...
unit-threaded 1.0.14: building configuration "library"...
dshould 1.4.3: building configuration "library"...
sybok ~master: building configuration "sybok-test-unittest"...
Linking...
To force a rebuild of up-to-date targets, run again with --force.
Running ./sybok-test-unittest
  ✓ sybok_spec Sybock test

Summary: 1 passed, 0 failed in 0 ms

And dub.selections.json show this :

{
         "fileVersion": 1,
         "versions": {
                 "dshould": "1.4.3",
                 "prettyprint": "1.0.7",
                 "silly": "1.0.2",
                 "unit-threaded": "1.0.14"
         }
}

Plus, If edit dub.selections.json to remove unit-threaded , every 
time that I launch dub test, overwrites dub.selections.json and 
picks again unit-threaded.

 From my point of view, or documentation it's wrong, or there it's 
something really broken about this functionality.




More information about the Digitalmars-d-learn mailing list