def _(p=passing, f=failing): in_tests = [p, f] out_tests = rewrite_assertions_in_tests(in_tests) def meta(test): return test.description, test.id, test.module_name, test.fn.ward_meta assert [meta(test) for test in in_tests] == [meta(test) for test in out_tests]
def test( ctx: click.Context, config: str, config_path: Optional[Path], path: Tuple[str], exclude: Tuple[str], search: Optional[str], tags: Optional[Expression], fail_limit: Optional[int], test_output_style: str, order: str, capture_output: bool, show_slowest: int, show_diff_symbols: bool, dry_run: bool, ): """Run tests.""" start_run = default_timer() paths = [Path(p) for p in path] mod_infos = get_info_for_modules(paths, exclude) modules = list(load_modules(mod_infos)) unfiltered_tests = get_tests_in_modules(modules, capture_output) filtered_tests = list( filter_tests( unfiltered_tests, query=search, tag_expr=tags, )) # Rewrite assertions in each test tests = rewrite_assertions_in_tests(filtered_tests) time_to_collect = default_timer() - start_run suite = Suite(tests=tests) test_results = suite.generate_test_runs(order=order, dry_run=dry_run) writer = SimpleTestResultWrite( suite=suite, test_output_style=test_output_style, config_path=config_path, show_diff_symbols=show_diff_symbols, ) writer.output_header(time_to_collect=time_to_collect) results = writer.output_all_test_results(test_results, fail_limit=fail_limit) time_taken = default_timer() - start_run writer.output_test_result_summary(results, time_taken, show_slowest) exit_code = get_exit_code(results) sys.exit(exit_code.value)
def _(): @testable_test def _(x=each(lambda: 5)): assert x == 5 t = Test(fn=_, module_name="m") rewritten = rewrite_assertions_in_tests([t])[0] # https://github.com/darrenburns/ward/issues/169 # The assertion rewriter thought the lambda function stored in co_consts was the test function, # so it was rebuilding the test function using the lambda as the test instead of the original function. assert rewritten.fn.__code__.co_name != "<lambda>"
def run( ctx: click.Context, path: Tuple[str], exclude: Tuple[str], search: Optional[str], fail_limit: Optional[int], test_output_style: str, order: str, capture_output: bool, config: str, show_slowest: int, dry_run: bool, ): start_run = default_timer() paths = [Path(p) for p in path] mod_infos = get_info_for_modules(paths, exclude) modules = list(load_modules(mod_infos)) unfiltered_tests = get_tests_in_modules(modules, capture_output) tests = list(search_generally(unfiltered_tests, query=search)) # Rewrite assertions in each test tests = rewrite_assertions_in_tests(tests) time_to_collect = default_timer() - start_run suite = Suite(tests=tests) test_results = suite.generate_test_runs(order=order, dry_run=dry_run) writer = SimpleTestResultWrite(suite=suite, test_output_style=test_output_style) results = writer.output_all_test_results(test_results, time_to_collect=time_to_collect, fail_limit=fail_limit) time_taken = default_timer() - start_run writer.output_test_result_summary(results, time_taken, show_slowest) exit_code = get_exit_code(results) sys.exit(exit_code.value)
def test( ctx: click.Context, config: str, config_path: Optional[Path], path: Tuple[str], exclude: Tuple[str], search: Optional[str], tags: Optional[Expression], fail_limit: Optional[int], test_output_style: str, progress_style: List[str], order: str, capture_output: bool, show_slowest: int, show_diff_symbols: bool, dry_run: bool, ): """Run tests.""" progress_styles = [TestProgressStyle(ps) for ps in progress_style] if TestProgressStyle.BAR in progress_styles and test_output_style in { "dots-global", "dots-module", }: raise click.BadOptionUsage( "progress_style", f"The '{TestProgressStyle.BAR}' progress style cannot be used with dots-based test output styles (you asked for '{test_output_style}').", ) init_breakpointhooks(pdb, sys) start_run = default_timer() paths = [Path(p) for p in path] mod_infos = get_info_for_modules(paths, exclude) modules = list(load_modules(mod_infos)) unfiltered_tests = get_tests_in_modules(modules, capture_output) filtered_tests = list( filter_tests( unfiltered_tests, query=search, tag_expr=tags, )) tests = rewrite_assertions_in_tests(filtered_tests) time_to_collect = default_timer() - start_run suite = Suite(tests=tests) test_results = suite.generate_test_runs(order=order, dry_run=dry_run) writer = SimpleTestResultWrite( suite=suite, test_output_style=test_output_style, progress_styles=progress_styles, config_path=config_path, show_diff_symbols=show_diff_symbols, ) writer.output_header(time_to_collect=time_to_collect) results = writer.output_all_test_results(test_results, fail_limit=fail_limit) time_taken = default_timer() - start_run writer.output_test_result_summary(results, time_taken, show_slowest) exit_code = get_exit_code(results) sys.exit(exit_code.value)