Newer
Older
dub_jkp / source / dub / test / subpackages.d
  1. /*******************************************************************************
  2.  
  3. Test for subpackages
  4.  
  5. Subpackages are packages that are part of a 'main' packages. Their version
  6. is that of their main (parent) package. They are referenced using a column,
  7. e.g. `mainpkg:subpkg`. Nested subpackages are disallowed.
  8.  
  9. *******************************************************************************/
  10.  
  11. module dub.test.subpackages;
  12.  
  13. version(unittest):
  14.  
  15. import dub.test.base;
  16.  
  17. /// Test of the PackageManager APIs
  18. unittest
  19. {
  20. scope dub = new TestDub((scope FSEntry root) {
  21. root.writeFile(TestDub.ProjectPath ~ "dub.json",
  22. `{ "name": "a", "dependencies": { "b:a": "~>1.0", "b:b": "~>1.0" } }`);
  23. root.writePackageFile("b", "1.0.0",
  24. `{ "name": "b", "version": "1.0.0", "subPackages": [ { "name": "a" }, { "name": "b" } ] }`);
  25. });
  26. dub.loadPackage();
  27.  
  28. dub.upgrade(UpgradeOptions.select);
  29.  
  30. assert(dub.project.hasAllDependencies(), "project has missing dependencies");
  31. assert(dub.project.getDependency("b:b", true), "Missing 'b:b' dependency");
  32. assert(dub.project.getDependency("b:a", true), "Missing 'b:a' dependency");
  33. assert(dub.project.getDependency("no", true) is null, "Returned unexpected dependency");
  34.  
  35. assert(dub.packageManager().getPackage(PackageName("b:a"), Version("1.0.0")).name == "b:a");
  36. assert(dub.packageManager().getPackage(PackageName("b:b"), Version("1.0.0")).name == "b:b");
  37. assert(dub.packageManager().getPackage(PackageName("b"), Version("1.0.0")).name == "b");
  38.  
  39. assert(!dub.packageManager().getPackage(PackageName("b:b"), Version("1.1.0")));
  40. }