+ pkg::RootRef root(new pkg::Root(rootPath, "8.1.2"));
+ root->setHTTPClient(cl);
+
+ {
+ pkg::CatalogRef c = pkg::Catalog::createFromUrl(root.ptr(), "http://localhost:2000/catalogTest1/catalog.xml");
+ waitForUpdateComplete(cl, root);
+ }
+
+ {
+ pkg::PackageRef p1 = root->getPackageById("org.flightgear.test.catalog1.c172p");
+ pkg::InstallRef ins = p1->install();
+
+ pkg::PackageRef p2 = root->getPackageById("org.flightgear.test.catalog1.alpha");
+ pkg::InstallRef ins2 = p2->install();
+
+ waitForUpdateComplete(cl, root);
+
+ VERIFY(p1->isInstalled());
+ VERIFY(p2->isInstalled());
+ }
+
+ VERIFY(root->packagesNeedingUpdate().empty());
+
+ global_catalogVersion = 2;
+
+ VERIFY(!cl->hasActiveRequests());
+ root->refresh();
+
+ // should be a no-op due to catalog age testing
+ VERIFY(!cl->hasActiveRequests());
+
+ // force it this time
+ root->refresh(true);
+ VERIFY(cl->hasActiveRequests());
+ waitForUpdateComplete(cl, root);
+
+ pkg::CatalogRef c = root->getCatalogById("org.flightgear.test.catalog1");
+ COMPARE(c->ageInSeconds(), 0);
+
+ VERIFY(root->getPackageById("dc3") != pkg::PackageRef());
+ COMPARE(root->packagesNeedingUpdate().size(), 2);
+
+ pkg::PackageList needingUpdate = root->packagesNeedingUpdate();
+ VERIFY(contains(needingUpdate, root->getPackageById("common-sounds")));
+ VERIFY(contains(needingUpdate, root->getPackageById("org.flightgear.test.catalog1.alpha")));
+
+ pkg::InstallRef ins = root->getPackageById("alpha")->existingInstall();
+ VERIFY(ins->hasUpdate());
+
+ for (pkg::PackageList::const_iterator it = needingUpdate.begin();
+ it != needingUpdate.end(); ++it)
+ {
+ root->scheduleToUpdate((*it)->existingInstall());
+ }
+
+ waitForUpdateComplete(cl, root);
+
+ VERIFY(root->packagesNeedingUpdate().empty());
+ COMPARE(root->getPackageById("common-sounds")->revision(), 11);