| OLD | NEW |
| 1 # Copyright 2012 the V8 project authors. All rights reserved. | 1 # Copyright 2012 the V8 project authors. All rights reserved. |
| 2 # Redistribution and use in source and binary forms, with or without | 2 # Redistribution and use in source and binary forms, with or without |
| 3 # modification, are permitted provided that the following conditions are | 3 # modification, are permitted provided that the following conditions are |
| 4 # met: | 4 # met: |
| 5 # | 5 # |
| 6 # * Redistributions of source code must retain the above copyright | 6 # * Redistributions of source code must retain the above copyright |
| 7 # notice, this list of conditions and the following disclaimer. | 7 # notice, this list of conditions and the following disclaimer. |
| 8 # * Redistributions in binary form must reproduce the above | 8 # * Redistributions in binary form must reproduce the above |
| 9 # copyright notice, this list of conditions and the following | 9 # copyright notice, this list of conditions and the following |
| 10 # disclaimer in the documentation and/or other materials provided | 10 # disclaimer in the documentation and/or other materials provided |
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 241 | 241 |
| 242 # Rerun this test. | 242 # Rerun this test. |
| 243 test.duration = None | 243 test.duration = None |
| 244 test.output = None | 244 test.output = None |
| 245 test.run += 1 | 245 test.run += 1 |
| 246 pool.add([TestJob(test)]) | 246 pool.add([TestJob(test)]) |
| 247 self.remaining += 1 | 247 self.remaining += 1 |
| 248 self.total += 1 | 248 self.total += 1 |
| 249 | 249 |
| 250 def _ProcessTestNormal(self, test, result, pool): | 250 def _ProcessTestNormal(self, test, result, pool): |
| 251 self.indicator.AboutToRun(test) | |
| 252 test.output = result[1] | 251 test.output = result[1] |
| 253 test.duration = result[2] | 252 test.duration = result[2] |
| 254 has_unexpected_output = test.suite.HasUnexpectedOutput(test) | 253 has_unexpected_output = test.suite.HasUnexpectedOutput(test) |
| 255 if has_unexpected_output: | 254 if has_unexpected_output: |
| 256 self.failed.append(test) | 255 self.failed.append(test) |
| 257 if test.output.HasCrashed(): | 256 if test.output.HasCrashed(): |
| 258 self.crashed += 1 | 257 self.crashed += 1 |
| 259 else: | 258 else: |
| 260 self.succeeded += 1 | 259 self.succeeded += 1 |
| 261 self.remaining -= 1 | 260 self.remaining -= 1 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 278 self.printed_allocations = True | 277 self.printed_allocations = True |
| 279 return line | 278 return line |
| 280 return "" | 279 return "" |
| 281 return (AllocationStr(output1.stdout) != AllocationStr(output2.stdout)) | 280 return (AllocationStr(output1.stdout) != AllocationStr(output2.stdout)) |
| 282 | 281 |
| 283 # Always pass the test duration for the database update. | 282 # Always pass the test duration for the database update. |
| 284 test.duration = result[2] | 283 test.duration = result[2] |
| 285 if test.run == 1 and result[1].HasTimedOut(): | 284 if test.run == 1 and result[1].HasTimedOut(): |
| 286 # If we get a timeout in the first run, we are already in an | 285 # If we get a timeout in the first run, we are already in an |
| 287 # unpredictable state. Just report it as a failure and don't rerun. | 286 # unpredictable state. Just report it as a failure and don't rerun. |
| 288 self.indicator.AboutToRun(test) | |
| 289 test.output = result[1] | 287 test.output = result[1] |
| 290 self.remaining -= 1 | 288 self.remaining -= 1 |
| 291 self.failed.append(test) | 289 self.failed.append(test) |
| 292 self.indicator.HasRun(test, True) | 290 self.indicator.HasRun(test, True) |
| 293 if test.run > 1 and HasDifferentAllocations(test.output, result[1]): | 291 if test.run > 1 and HasDifferentAllocations(test.output, result[1]): |
| 294 # From the second run on, check for different allocations. If a | 292 # From the second run on, check for different allocations. If a |
| 295 # difference is found, call the indicator twice to report both tests. | 293 # difference is found, call the indicator twice to report both tests. |
| 296 # All runs of each test are counted as one for the statistic. | 294 # All runs of each test are counted as one for the statistic. |
| 297 self.indicator.AboutToRun(test) | |
| 298 self.remaining -= 1 | 295 self.remaining -= 1 |
| 299 self.failed.append(test) | 296 self.failed.append(test) |
| 300 self.indicator.HasRun(test, True) | 297 self.indicator.HasRun(test, True) |
| 301 self.indicator.AboutToRun(test) | |
| 302 test.output = result[1] | 298 test.output = result[1] |
| 303 self.indicator.HasRun(test, True) | 299 self.indicator.HasRun(test, True) |
| 304 elif test.run >= 3: | 300 elif test.run >= 3: |
| 305 # No difference on the third run -> report a success. | 301 # No difference on the third run -> report a success. |
| 306 self.indicator.AboutToRun(test) | |
| 307 self.remaining -= 1 | 302 self.remaining -= 1 |
| 308 self.succeeded += 1 | 303 self.succeeded += 1 |
| 309 test.output = result[1] | 304 test.output = result[1] |
| 310 self.indicator.HasRun(test, False) | 305 self.indicator.HasRun(test, False) |
| 311 else: | 306 else: |
| 312 # No difference yet and less than three runs -> add another run and | 307 # No difference yet and less than three runs -> add another run and |
| 313 # remember the output for comparison. | 308 # remember the output for comparison. |
| 314 test.run += 1 | 309 test.run += 1 |
| 315 test.output = result[1] | 310 test.output = result[1] |
| 316 pool.add([TestJob(test)]) | 311 pool.add([TestJob(test)]) |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 385 if self.context.verbose: | 380 if self.context.verbose: |
| 386 print text | 381 print text |
| 387 sys.stdout.flush() | 382 sys.stdout.flush() |
| 388 | 383 |
| 389 | 384 |
| 390 class BreakNowException(Exception): | 385 class BreakNowException(Exception): |
| 391 def __init__(self, value): | 386 def __init__(self, value): |
| 392 self.value = value | 387 self.value = value |
| 393 def __str__(self): | 388 def __str__(self): |
| 394 return repr(self.value) | 389 return repr(self.value) |
| OLD | NEW |