validate_failures.py: Record ordinal with TestResult.
authorDoug Evans <dje@google.com>
Wed, 28 Nov 2012 19:23:31 +0000 (19:23 +0000)
committerDoug Evans <devans@gcc.gnu.org>
Wed, 28 Nov 2012 19:23:31 +0000 (19:23 +0000)
* testsuite-management/validate_failures.py: Record ordinal with
TestResult.

From-SVN: r193903

contrib/ChangeLog
contrib/testsuite-management/validate_failures.py

index c789984..8bf6add 100644 (file)
@@ -1,3 +1,8 @@
+2012-11-28  Doug Evans  <dje@google.com>
+
+       * testsuite-management/validate_failures.py: Record ordinal with
+       TestResult.
+
 2012-11-19  Mike Stump  <mikestump@comcast.net>
 
        * compare_tests: Add export LC_ALL=C to make sort happier.
index 7391937..d78a54f 100755 (executable)
@@ -91,9 +91,12 @@ class TestResult(object):
     state: One of UNRESOLVED, XPASS or FAIL.
     name: File name for the test.
     description: String describing the test (flags used, dejagnu message, etc)
+    ordinal: Monotonically increasing integer.
+             It is used to keep results for one .exp file sorted
+             by the order the tests were run.
   """
 
-  def __init__(self, summary_line):
+  def __init__(self, summary_line, ordinal=-1):
     try:
       self.attrs = ''
       if '|' in summary_line:
@@ -109,6 +112,7 @@ class TestResult(object):
       self.attrs = self.attrs.strip()
       self.state = self.state.strip()
       self.description = self.description.strip()
+      self.ordinal = ordinal
     except ValueError:
       Error('Cannot parse summary line "%s"' % summary_line)
 
@@ -117,7 +121,8 @@ class TestResult(object):
             self.state, summary_line, self))
 
   def __lt__(self, other):
-    return self.name < other.name
+    return (self.name < other.name or
+            (self.name == other.name and self.ordinal < other.ordinal))
 
   def __hash__(self):
     return hash(self.state) ^ hash(self.name) ^ hash(self.description)
@@ -196,10 +201,14 @@ def IsInterestingResult(line):
 def ParseSummary(sum_fname):
   """Create a set of TestResult instances from the given summary file."""
   result_set = set()
+  # ordinal is used when sorting the results so that tests within each
+  # .exp file are kept sorted.
+  ordinal=0
   sum_file = open(sum_fname)
   for line in sum_file:
     if IsInterestingResult(line):
-      result = TestResult(line)
+      result = TestResult(line, ordinal)
+      ordinal += 1
       if result.HasExpired():
         # Tests that have expired are not added to the set of expected
         # results. If they are still present in the set of actual results,