comparison 2.00/testcases.py @ 39:2b459f9743b4

Test groups are now supported
author Oleg Oshmyan <chortos@inbox.lv>
date Fri, 03 Dec 2010 02:46:06 +0000
parents dc4be35d17e0
children 164395af969d
comparison
equal deleted inserted replaced
38:a6d554679ce8 39:2b459f9743b4
486 486
487 def load_problem(prob, _types={'batch' : BatchTestCase, 487 def load_problem(prob, _types={'batch' : BatchTestCase,
488 'outonly' : OutputOnlyTestCase, 488 'outonly' : OutputOnlyTestCase,
489 'bestout' : BestOutputTestCase, 489 'bestout' : BestOutputTestCase,
490 'reactive': ReactiveTestCase}): 490 'reactive': ReactiveTestCase}):
491 # We will need to iterate over these configuration variables twice
492 try:
493 len(prob.config.dummies)
494 except Exception:
495 prob.config.dummies = tuple(prob.config.dummies)
496 try:
497 len(prob.config.tests)
498 except Exception:
499 prob.config.tests = tuple(prob.config.tests)
500
491 if options.legacy: 501 if options.legacy:
492 prob.config.usegroups = False 502 prob.config.usegroups = False
493 prob.config.tests = list(prob.config.tests) 503 prob.config.tests = list(prob.config.tests)
494 for i, name in enumerate(prob.config.tests): 504 for i, name in enumerate(prob.config.tests):
505 # Same here; we'll need to iterate over them twice
495 try: 506 try:
496 if len(name) > 1: 507 l = len(name)
497 prob.config.usegroups = True
498 break
499 elif len(name):
500 prob.config.tests[i] = name[0]
501 except Exception: 508 except Exception:
502 try: 509 try:
503 # Try to retrieve the first two test case ID's and cache them on success 510 name = tuple(name)
504 prob.config.tests[i] = name = iter(name)
505 except TypeError: 511 except TypeError:
506 continue 512 name = (name,)
507 try: 513 l = len(name)
508 try: 514 if len(name) > 1:
509 first = next(name) 515 prob.config.usegroups = True
510 except NameError: 516 break
511 # Python 2.5 lacks the next() built-in 517 elif not len(name):
512 first = name.next() 518 prob.config.tests[i] = (name,)
513 except StopIteration: 519
514 prob.config.tests[i] = () 520 # First get prob.cache.padoutput right,
515 else: 521 # then yield the actual test cases
516 try: 522 for i in prob.config.dummies:
517 try: 523 s = 'sample ' + str(i).zfill(prob.config.paddummies)
518 second = next(name) 524 prob.cache.padoutput = max(prob.cache.padoutput, len(s))
519 except NameError:
520 second = name.next()
521 except StopIteration:
522 prob.config.tests[i] = first
523 else:
524 prob.config.tests[i] = itertools.chain((first, second), name)
525 prob.config.usegroups = True
526 break
527 if prob.config.usegroups: 525 if prob.config.usegroups:
528 # FIXME: test groups should again be supported! 526 for group in prob.config.tests:
529 pass 527 for i in group:
528 s = str(i).zfill(prob.config.padtests)
529 prob.cache.padoutput = max(prob.cache.padoutput, len(s))
530 for i in prob.config.dummies:
531 s = str(i).zfill(prob.config.paddummies)
532 yield _types[prob.config.kind](prob, s, True, 0)
533 for group in prob.config.tests:
534 yield problem.TestGroup()
535 for i in group:
536 s = str(i).zfill(prob.config.padtests)
537 yield _types[prob.config.kind](prob, s, False, prob.config.pointmap.get(i, prob.config.pointmap.get(None, prob.config.maxexitcode if prob.config.maxexitcode else 1)))
538 yield problem.test_context_end
530 else: 539 else:
531 # We will need to iterate over these configuration variables twice
532 try:
533 len(prob.config.dummies)
534 except Exception:
535 prob.config.dummies = tuple(prob.config.dummies)
536 try:
537 len(prob.config.tests)
538 except Exception:
539 prob.config.tests = tuple(prob.config.tests)
540 # First get prob.cache.padoutput right
541 for i in prob.config.dummies:
542 s = 'sample ' + str(i).zfill(prob.config.paddummies)
543 prob.cache.padoutput = max(prob.cache.padoutput, len(s))
544 for i in prob.config.tests: 540 for i in prob.config.tests:
545 s = str(i).zfill(prob.config.padtests) 541 s = str(i).zfill(prob.config.padtests)
546 prob.cache.padoutput = max(prob.cache.padoutput, len(s)) 542 prob.cache.padoutput = max(prob.cache.padoutput, len(s))
547 # Now yield the actual test cases
548 for i in prob.config.dummies: 543 for i in prob.config.dummies:
549 s = str(i).zfill(prob.config.paddummies) 544 s = str(i).zfill(prob.config.paddummies)
550 yield _types[prob.config.kind](prob, s, True, 0) 545 yield _types[prob.config.kind](prob, s, True, 0)
551 for i in prob.config.tests: 546 for i in prob.config.tests:
552 s = str(i).zfill(prob.config.padtests) 547 s = str(i).zfill(prob.config.padtests)