[Aptitude-svn-commit] r3955 - in branches/aptitude-0.3/aptitude: . tests

Daniel Burrows dburrows at costa.debian.org
Thu Aug 25 22:16:20 UTC 2005


Author: dburrows
Date: Thu Aug 25 22:16:17 2005
New Revision: 3955

Modified:
   branches/aptitude-0.3/aptitude/ChangeLog
   branches/aptitude-0.3/aptitude/tests/test_apt_universe.cc
Log:
Do a less intense solves() test of the whole archive, limiting the
(expensive) full-spectrum test to just a few dependencies.

Modified: branches/aptitude-0.3/aptitude/ChangeLog
==============================================================================
--- branches/aptitude-0.3/aptitude/ChangeLog	(original)
+++ branches/aptitude-0.3/aptitude/ChangeLog	Thu Aug 25 22:16:17 2005
@@ -2,6 +2,11 @@
 
 	* tests/test_apt_universe.cc:
 
+	  Instead of completely ceasing tests after a certain amount of
+	  time, just test the rest of the archive less aggressively.
+
+	* tests/test_apt_universe.cc:
+
 	  Arbitrarily limit testSolves() so that it terminates in a
 	  reasonable amount of time.
 

Modified: branches/aptitude-0.3/aptitude/tests/test_apt_universe.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/tests/test_apt_universe.cc	(original)
+++ branches/aptitude-0.3/aptitude/tests/test_apt_universe.cc	Thu Aug 25 22:16:17 2005
@@ -62,9 +62,10 @@
    *
    *  NB: so that this test terminates before the end of the
    *  millenium, I placed a limit on the number of dependencies to
-   *  check.  This limit is high enough that it should test a pretty
-   *  good swathe of the dependency set; nonetheless, it is far from a
-   *  guarantee that all is well in the (current) universe.
+   *  check thoroughly.  That number of dependencies are checked in
+   *  the fullest way possible; the remainder are subjected to a more
+   *  cursory check that should nevertheless detect the most likely
+   *  source of problems.
    */
   void testSolves()
   {
@@ -72,10 +73,10 @@
 
     aptitude_universe u(*apt_cache_file);
 
-    int dep_count = 1000;
+    int dep_count = 500;
 
     for(aptitude_universe::dep_iterator di = u.deps_begin();
-	!di.end() && dep_count > 0; ++di, --dep_count)
+	!di.end(); ++di, dep_count = dep_count > 0 ? dep_count-1 : dep_count)
       {
 	aptitude_universe::dep d = *di;
 	std::set<aptitude_universe::version> solvers;
@@ -97,69 +98,91 @@
 	    solvers.insert(*si);
 	  }
 
-	for(aptitude_universe::package_iterator pi
-	      = u.packages_begin(); !pi.end(); ++pi)
-	  for(aptitude_universe::package::version_iterator vi
-		= (*pi).versions_begin(); !vi.end(); ++vi)
-	    {
-	      if((*pi) == d.get_source().get_package())
+	if(dep_count > 0)
+	  {
+	    for(aptitude_universe::package_iterator pi
+		  = u.packages_begin(); !pi.end(); ++pi)
+	      for(aptitude_universe::package::version_iterator vi
+		    = (*pi).versions_begin(); !vi.end(); ++vi)
 		{
-		  if(*vi == d.get_source())
+		  if((*pi) == d.get_source().get_package())
 		    {
-		      if(d.solved_by(*vi))
+		      if(*vi == d.get_source())
+			{
+			  if(d.solved_by(*vi))
+			    {
+			      std::ostringstream out;
+
+			      out << "Dependency source "
+				  << (*vi).get_package().get_name() << " "
+				  << (*vi).get_name()
+				  << " unexpectedly solves " << d;
+
+			      CPPUNIT_FAIL(out.str());
+			    }
+			}
+		      else if(!d.solved_by(*vi))
 			{
 			  std::ostringstream out;
 
-			  out << "Dependency source "
+			  out << "Dependency source removal "
 			      << (*vi).get_package().get_name() << " "
 			      << (*vi).get_name()
-			      << " unexpectedly solves " << d;
+			      << " unexpectedly doesn't solve " << d;
 
 			  CPPUNIT_FAIL(out.str());
 			}
 		    }
-		  else if(!d.solved_by(*vi))
+		  else if(solvers.find(*vi) == solvers.end())
 		    {
-		      std::ostringstream out;
-
-		      out << "Dependency source removal "
-			  << (*vi).get_package().get_name() << " "
-			  << (*vi).get_name()
-			  << " unexpectedly doesn't solve " << d;
-
-		      CPPUNIT_FAIL(out.str());
-		    }
-		}
-	      else if(solvers.find(*vi) == solvers.end())
-		{
-		  if(d.solved_by(*vi))
-		    {
-		      std::ostringstream out;
+		      if(d.solved_by(*vi))
+			{
+			  std::ostringstream out;
 
-		      out << (*vi).get_package().get_name() << " "
-			  << (*vi).get_name()
-			  << " unexpectedly solves "
-			  << d;
+			  out << (*vi).get_package().get_name() << " "
+			      << (*vi).get_name()
+			      << " unexpectedly solves "
+			      << d;
 
-		      CPPUNIT_FAIL(out.str());
+			  CPPUNIT_FAIL(out.str());
+			}
 		    }
+		  else
+		    solvers.erase(*vi);
 		}
-	      else
-		solvers.erase(*vi);
-	    }
 
-	if(!solvers.empty())
-	  {
-	    std::ostringstream out;
+	    if(!solvers.empty())
+	      {
+		std::ostringstream out;
 
-	    for(std::set<aptitude_universe::version>::const_iterator
-		  si = solvers.begin(); si != solvers.end(); ++si)
-	      out << "Solver " << (*si).get_package().get_name()
-		  << " " << (*si).get_name() << " of dependency "
-		  << d << " does not appear in the global list of versions!";
+		for(std::set<aptitude_universe::version>::const_iterator
+		      si = solvers.begin(); si != solvers.end(); ++si)
+		  out << "Solver " << (*si).get_package().get_name()
+		      << " " << (*si).get_name() << " of dependency "
+		      << d << " does not appear in the global list of versions!";
 
-	    CPPUNIT_FAIL(out.str());
+		CPPUNIT_FAIL(out.str());
+	      }
 	  }
+	else
+	  for(std::set<aptitude_universe::version>::const_iterator si
+		= solvers.begin(); si != solvers.end(); ++si)
+	    for(aptitude_universe::package::version_iterator vi
+		  = (*si).get_package().versions_begin();
+		!vi.end(); ++vi)
+	      {
+		if(solvers.find(*vi) == solvers.end() &&
+		   (*di).solved_by(*vi))
+		  {
+		    std::ostringstream out;
+
+		    out << (*vi).get_package().get_name() << " "
+			<< (*vi).get_name() << " should not solve "
+			<< d << " but does.";
+
+		    CPPUNIT_FAIL(out.str());
+		  }
+	      }
       }
   }
 
@@ -178,6 +201,17 @@
       for(aptitude_universe::dep::solver_iterator si
 	    = (*di).solvers_begin(); !si.end(); ++si)
 	{
+	  if(!(*di).solved_by(*si))
+	    {
+	      std::ostringstream out;
+
+	      out << (*si).get_package().get_name() << " "
+		  << (*si).get_name() << " should solve "
+		  << *di << " but doesn't.";
+
+	      CPPUNIT_FAIL(out.str());
+	    }
+
 	  bool found = false;
 
 	  for(aptitude_universe::version::revdep_iterator rdi
@@ -188,8 +222,9 @@
 	  if(found)
 	    continue;
 
-	  // If the above fails, then one of the other versions of the
-	  // package must have this dep as a revdep.
+	  // If the above fails, then each of the other versions of
+	  // the package should either solve this dep or have this dep
+	  // as a revdep.
 
 	  for(aptitude_universe::package::version_iterator vi
 		= (*si).get_package().versions_begin(); !vi.end(); ++vi)



More information about the Aptitude-svn-commit mailing list