def main(): test_cases, _ = gtest_fake_base.parse_args(TESTS, 0) for test_case in test_cases: print gtest_fake_base.get_test_output(test_case, False) print gtest_fake_base.get_footer(len(test_cases), len(test_cases)) return 1
def main(): test_cases, args = gtest_fake_base.parse_args(TESTS, 1) duration = int(args[0]) for i in test_cases: time.sleep(float(duration) / 1000.) print gtest_fake_base.get_test_output(i, False, duration=str(duration)) print gtest_fake_base.get_footer(len(test_cases), len(test_cases)) return 0
def main(): test_cases, _ = gtest_fake_base.parse_args(TESTS, 0) result = 0 for test_case in test_cases: # Make Baz.Fail fail. should_fail = test_case == 'Baz.Fail' result = result or int(should_fail) print gtest_fake_base.get_test_output(test_case, should_fail) print gtest_fake_base.get_footer(len(test_cases), len(test_cases)) return result
def main(): test_cases, args = gtest_fake_base.parse_args(TESTS, 1) temp_dir = args[0] result = 0 for test_case in test_cases: filename = os.path.join(temp_dir, test_case) # Fails on first run, succeeds on the second. should_fail = not os.path.isfile(filename) result = result or int(should_fail) print gtest_fake_base.get_test_output(test_case, should_fail) if should_fail: with open(filename, 'wb') as f: f.write('bang') print gtest_fake_base.get_footer(len(test_cases), len(test_cases)) return result
def main(): test_cases, args = gtest_fake_base.parse_args(TESTS, 1) temp_dir = args[0] result = 0 for test_case in test_cases: filename = os.path.join(temp_dir, test_case) # Fails on first run, succeeds on the second. should_fail = not os.path.isfile(filename) # But it still prints it succeeded. print gtest_fake_base.get_test_output(test_case, False) result = result or int(should_fail) if should_fail: with open(filename, 'wb') as f: f.write('bang') print gtest_fake_base.get_footer(len(test_cases), len(test_cases)) if result: print('OMG I crashed') print('Here\'s a stack trace') return result
def main(): test_cases, args = gtest_fake_base.parse_args(TESTS, 1) temp_dir = args[0] result = 0 for test_case in test_cases: if test_case == 'Foo.Bar2': # Never run it, don't fail either. continue should_fail = False if test_case == 'Foo.Bar1': filename = os.path.join(temp_dir, test_case) should_fail = not os.path.isfile(filename) result = result or int(should_fail) print gtest_fake_base.get_test_output(test_case, should_fail) if should_fail: with open(filename, 'wb') as f: f.write('bang') print gtest_fake_base.get_footer(len(test_cases), len(test_cases)) return result
def test_simple(self): file_handle, self.temp_file = tempfile.mkstemp( prefix='trace_test_cases_test') os.close(file_handle) cmd = [ sys.executable, os.path.join(GOOGLETEST_DIR, 'trace_test_cases.py'), # Forces 4 parallel jobs. '--jobs', '4', '--out', self.temp_file, ] if VERBOSE: cmd.extend(['-v'] * 3) cmd.append(TARGET_PATH) logging.debug(' '.join(cmd)) proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, cwd=GOOGLETEST_DIR) out, err = proc.communicate() or ('', '') # pylint is confused. self.assertEqual(0, proc.returncode, (out, err)) lines = out.splitlines() expected_out_re = [ r'Tracing\.\.\.', r'\[0/4\] +\d+\.\d\ds ', r'\[1/4\] +\d+\.\d\ds .+', r'\[2/4\] +\d+\.\d\ds .+', r'\[3/4\] +\d+\.\d\ds .+', r'\[4/4\] +\d+\.\d\ds .+', r'Reading trace logs\.\.\.', ] self.assertEqual(len(expected_out_re), len(lines), lines) for index in range(len(expected_out_re)): self.assertTrue( re.match('^%s$' % expected_out_re[index], lines[index]), '%d: %s\n%r\n%s' % (index, expected_out_re[index], lines[index], out)) # Junk is printed on win32. if sys.platform != 'win32' and not VERBOSE: self.assertEqual('', err) with open(self.temp_file, 'r') as f: content = f.read() try: result = json.loads(content) except: print repr(content) raise test_cases = { 'Baz.Fail': 1, 'Foo.Bar1': 0, 'Foo.Bar2': 0, 'Foo.Bar3': 0, } self.assertEqual(dict, result.__class__) self.assertEqual(sorted(test_cases), sorted(result)) for index, test_case in enumerate(sorted(result)): actual = result[test_case] self.assertEqual([u'duration', u'output', u'returncode', u'trace'], sorted(actual)) self.assertGreater(actual['duration'], 0.0000001) self.assertEqual(test_cases[test_case], actual['returncode']) expected_output = ('Note: Google Test filter = %s\n' % test_case + '\n' + gtest_fake_base.get_test_output( test_case, 'Fail' in test_case) + '\n' + gtest_fake_base.get_footer(1, 1) + '\n') # On Windows, actual['output'] is unprocessed so it will contain CRLF. output = actual['output'] if sys.platform == 'win32': output = output.replace('\r\n', '\n') self.assertEqual(expected_output, output, repr(output)) expected_trace = { u'root': { u'children': [], u'command': [ self.executable, TARGET_PATH, '--gtest_filter=' + test_case, ], u'executable': file_path.get_native_path_case(unicode(self.executable)), u'initial_cwd': GOOGLETEST_DIR, }, } if sys.platform == 'win32': expected_trace['root']['initial_cwd'] = None self.assertGreater(actual['trace']['root'].pop('pid'), 1) self.assertGreater(len(actual['trace']['root'].pop('files')), 10) self.assertEqual(expected_trace, actual['trace'])
def get_footer_re(nb): return [ re.escape(i) for i in gtest_fake_base.get_footer(nb, nb).splitlines() ] + ['']