Skip to content

Conversation

bityob
Copy link
Contributor

@bityob bityob commented Jul 19, 2023

Before -

C:\cpython> python -m unittest test.test_peg_generator.test_c_parser.TestCParser.test_c_parser -v
Running Debug|x64 interpreter...

Run: C:\Users\yonatan.bitton\Code\cpython-latest-win\cpython\PCbuild\amd64\python_d.exe -X dev -m venv venv

Run: C:\Users\yonatan.bitton\Code\cpython-latest-win\cpython\tempcwd\venv\Scripts\python_d.exe -X dev -m pip install 
.
.
.
test_c_parser (test.test_peg_generator.test_c_parser.TestCParser.test_c_parser) ... Python-ast.c
asdl.c
tokenizer.c
pegen.c
pegen_errors.c
action_helpers.c
string_parser.c
peg_extension.c
Microsoft (R) Library Manager Version 14.36.32535.0
Copyright (C) Microsoft Corporation.  All rights reserved.

parse.c
   Creating library .\Debug\parse_d.cp313-win_amd64.lib and object .\Debug\parse_d.cp313-win_amd64.exp
ok

----------------------------------------------------------------------
Ran 1 test in 36.970s

OK

After -

C:\cpython>python -m unittest test.test_peg_generator.test_c_parser.TestCParser.test_c_parser -v
Running Debug|x64 interpreter...

Run: C:\Users\yonatan.bitton\Code\cpython-latest-win\cpython\PCbuild\amd64\python_d.exe -X dev -m venv venv

Run: C:\Users\yonatan.bitton\Code\cpython-latest-win\cpython\tempcwd\venv\Scripts\python_d.exe -X dev -m pip install 
.
.
.
test_c_parser (test.test_peg_generator.test_c_parser.TestCParser.test_c_parser) ... ok

----------------------------------------------------------------------
Ran 1 test in 43.038s

OK

@terryjreedy What do you think?

@bityob
Copy link
Contributor Author

bityob commented Aug 31, 2023

Hey @terryjreedy @pablogsal @lysnikolaou,
Can you review the PR?
Thank you

@lysnikolaou
Copy link
Member

lysnikolaou commented Sep 7, 2023

On macOS, I'm getting the following:

Without this PR (current main)
cpython on main via C v14.0.3-clang via 🐍 pyenv 3.11.3 took 35s 
❯ ./python.exe -m test test_peg_generator -u cpu                 
0:00:00 load avg: 4.33 Run tests sequentially
0:00:00 load avg: 4.33 [1/1] test_peg_generator
/Users/lysnikolaou/repos/python/cpython/build/test_python_99089æ/tempcwd/venv/lib/python3.13/site-packages/pip/_internal/metadata/importlib/_envs.py:111: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
  from pip._vendor.pkg_resources import find_distributions
Processing /Users/lysnikolaou/repos/python/cpython/Lib/test/setuptools-67.6.1-py3-none-any.whl
/Users/lysnikolaou/repos/python/cpython/build/test_python_99089æ/tempcwd/venv/lib/python3.13/site-packages/pip/_internal/metadata/importlib/_dists.py:74: DeprecationWarning: Unimplemented abstract methods {'locate_file'}
  return cls(files, info_location)
Processing /Users/lysnikolaou/repos/python/cpython/Lib/test/wheel-0.40.0-py3-none-any.whl
Installing collected packages: wheel, setuptools
/Users/lysnikolaou/repos/python/cpython/build/test_python_99089æ/tempcwd/venv/lib/python3.13/site-packages/pip/_internal/metadata/importlib/_dists.py:74: DeprecationWarning: Unimplemented abstract methods {'locate_file'}
  return cls(files, info_location)
Successfully installed setuptools-67.6.1 wheel-0.40.0
/Users/lysnikolaou/repos/python/cpython/build/test_python_99089æ/tempcwd/venv/lib/python3.13/site-packages/pip/_internal/self_outdated_check.py:232: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
  current_time=datetime.datetime.utcnow(),
test_peg_generator passed in 32.7 sec

== Tests result: SUCCESS ==

1 test OK.

Total duration: 32.7 sec
Total tests: run=91
Total test files: run=1/1
Result: SUCCESS

cpython on main via C v14.0.3-clang via 🐍 pyenv 3.11.3 took 33s 
❯ ./python.exe -m test test_peg_generator -u cpu -v
== CPython 3.13.0a0 (heads/main:3e53ac9903, Sep 7 2023, 11:58:28) [Clang 14.0.3 (clang-1403.0.22.14.1)]
== macOS-13.5.1-arm64-arm-64bit little-endian
== Python build: debug
== cwd: /Users/lysnikolaou/repos/python/cpython/build/test_python_99355æ
== CPU count: 10
== encodings: locale=UTF-8, FS=utf-8
0:00:00 load avg: 3.49 Run tests sequentially
0:00:00 load avg: 3.49 [1/1] test_peg_generator

Run: /Users/lysnikolaou/repos/python/cpython/python.exe -X dev -m venv venv

Run: /Users/lysnikolaou/repos/python/cpython/build/test_python_99355æ/tempcwd/venv/bin/python.exe -X dev -m pip install /Users/lysnikolaou/repos/python/cpython/Lib/test/setuptools-67.6.1-py3-none-any.whl /Users/lysnikolaou/repos/python/cpython/Lib/test/wheel-0.40.0-py3-none-any.whl
/Users/lysnikolaou/repos/python/cpython/build/test_python_99355æ/tempcwd/venv/lib/python3.13/site-packages/pip/_internal/metadata/importlib/_envs.py:111: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
  from pip._vendor.pkg_resources import find_distributions
Processing /Users/lysnikolaou/repos/python/cpython/Lib/test/setuptools-67.6.1-py3-none-any.whl
/Users/lysnikolaou/repos/python/cpython/build/test_python_99355æ/tempcwd/venv/lib/python3.13/site-packages/pip/_internal/metadata/importlib/_dists.py:74: DeprecationWarning: Unimplemented abstract methods {'locate_file'}
  return cls(files, info_location)
Processing /Users/lysnikolaou/repos/python/cpython/Lib/test/wheel-0.40.0-py3-none-any.whl
Installing collected packages: wheel, setuptools
/Users/lysnikolaou/repos/python/cpython/build/test_python_99355æ/tempcwd/venv/lib/python3.13/site-packages/pip/_internal/metadata/importlib/_dists.py:74: DeprecationWarning: Unimplemented abstract methods {'locate_file'}
  return cls(files, info_location)
Successfully installed setuptools-67.6.1 wheel-0.40.0
/Users/lysnikolaou/repos/python/cpython/build/test_python_99355æ/tempcwd/venv/lib/python3.13/site-packages/pip/_internal/self_outdated_check.py:232: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
  current_time=datetime.datetime.utcnow(),
test_advanced_left_recursive (test.test_peg_generator.test_c_parser.TestCParser.test_advanced_left_recursive) ... ok
test_c_parser (test.test_peg_generator.test_c_parser.TestCParser.test_c_parser) ... ok
test_cut (test.test_peg_generator.test_c_parser.TestCParser.test_cut) ... ok
test_error_in_rules (test.test_peg_generator.test_c_parser.TestCParser.test_error_in_rules) ... ok
test_forced (test.test_peg_generator.test_c_parser.TestCParser.test_forced) ... ok
test_forced_with_group (test.test_peg_generator.test_c_parser.TestCParser.test_forced_with_group) ... ok
test_gather (test.test_peg_generator.test_c_parser.TestCParser.test_gather) ... ok
test_gather_action_ast (test.test_peg_generator.test_c_parser.TestCParser.test_gather_action_ast) ... ok
test_headers_and_trailer (test.test_peg_generator.test_c_parser.TestCParser.test_headers_and_trailer) ... ok
test_if_stmt_action (test.test_peg_generator.test_c_parser.TestCParser.test_if_stmt_action) ... ok
test_left_recursion (test.test_peg_generator.test_c_parser.TestCParser.test_left_recursion) ... ok
test_lookahead (test.test_peg_generator.test_c_parser.TestCParser.test_lookahead) ... ok
test_mutually_left_recursive (test.test_peg_generator.test_c_parser.TestCParser.test_mutually_left_recursive) ... ok
test_nasty_mutually_left_recursive (test.test_peg_generator.test_c_parser.TestCParser.test_nasty_mutually_left_recursive) ... ok
test_negative_lookahead (test.test_peg_generator.test_c_parser.TestCParser.test_negative_lookahead) ... ok
test_no_soft_keywords (test.test_peg_generator.test_c_parser.TestCParser.test_no_soft_keywords) ... ok
test_pass_stmt_action (test.test_peg_generator.test_c_parser.TestCParser.test_pass_stmt_action) ... ok
test_return_stmt_noexpr_action (test.test_peg_generator.test_c_parser.TestCParser.test_return_stmt_noexpr_action) ... ok
test_same_name_different_types (test.test_peg_generator.test_c_parser.TestCParser.test_same_name_different_types) ... ok
test_soft_keywords (test.test_peg_generator.test_c_parser.TestCParser.test_soft_keywords) ... ok
test_soft_keywords_lookahead (test.test_peg_generator.test_c_parser.TestCParser.test_soft_keywords_lookahead) ... ok
test_soft_keywords_parse (test.test_peg_generator.test_c_parser.TestCParser.test_soft_keywords_parse) ... ok
test_syntax_error_for_string (test.test_peg_generator.test_c_parser.TestCParser.test_syntax_error_for_string) ... ok
test_ternary_operator (test.test_peg_generator.test_c_parser.TestCParser.test_ternary_operator) ... ok
test_with_stmt_with_paren (test.test_peg_generator.test_c_parser.TestCParser.test_with_stmt_with_paren) ... ok
test_advance_left_recursion (test.test_peg_generator.test_first_sets.TestFirstSets.test_advance_left_recursion) ... ok
test_alternatives (test.test_peg_generator.test_first_sets.TestFirstSets.test_alternatives) ... ok
test_epsilon_production_in_start_rule (test.test_peg_generator.test_first_sets.TestFirstSets.test_epsilon_production_in_start_rule) ... ok
test_gather (test.test_peg_generator.test_first_sets.TestFirstSets.test_gather) ... ok
test_left_recursion (test.test_peg_generator.test_first_sets.TestFirstSets.test_left_recursion) ... ok
test_multiple_nullable_rules (test.test_peg_generator.test_first_sets.TestFirstSets.test_multiple_nullable_rules) ... ok
test_mutual_left_recursion (test.test_peg_generator.test_first_sets.TestFirstSets.test_mutual_left_recursion) ... ok
test_nasty_left_recursion (test.test_peg_generator.test_first_sets.TestFirstSets.test_nasty_left_recursion) ... ok
test_negative_lookahead (test.test_peg_generator.test_first_sets.TestFirstSets.test_negative_lookahead) ... ok
test_nullable_rule (test.test_peg_generator.test_first_sets.TestFirstSets.test_nullable_rule) ... ok
test_optional_after (test.test_peg_generator.test_first_sets.TestFirstSets.test_optional_after) ... ok
test_optional_before (test.test_peg_generator.test_first_sets.TestFirstSets.test_optional_before) ... ok
test_optional_literal (test.test_peg_generator.test_first_sets.TestFirstSets.test_optional_literal) ... ok
test_optional_operator (test.test_peg_generator.test_first_sets.TestFirstSets.test_optional_operator) ... ok
test_optionals (test.test_peg_generator.test_first_sets.TestFirstSets.test_optionals) ... ok
test_positive_lookahead (test.test_peg_generator.test_first_sets.TestFirstSets.test_positive_lookahead) ... ok
test_repeat_0 (test.test_peg_generator.test_first_sets.TestFirstSets.test_repeat_0) ... ok
test_repeat_0_with_group (test.test_peg_generator.test_first_sets.TestFirstSets.test_repeat_0_with_group) ... ok
test_repeat_1 (test.test_peg_generator.test_first_sets.TestFirstSets.test_repeat_1) ... ok
test_repeat_1_with_group (test.test_peg_generator.test_first_sets.TestFirstSets.test_repeat_1_with_group) ... ok
test_repeat_with_separator (test.test_peg_generator.test_first_sets.TestFirstSets.test_repeat_with_separator) ... ok
test_rule_with_collision_after_some_other_rules (test.test_peg_generator.test_grammar_validator.TestPegen.test_rule_with_collision_after_some_other_rules) ... ok
test_rule_with_no_collision (test.test_peg_generator.test_grammar_validator.TestPegen.test_rule_with_no_collision) ... ok
test_rule_with_simple_collision (test.test_peg_generator.test_grammar_validator.TestPegen.test_rule_with_simple_collision) ... ok
test_deep_nested_rule (test.test_peg_generator.test_pegen.TestGrammarVisualizer.test_deep_nested_rule) ... ok
test_multiple_rules (test.test_peg_generator.test_pegen.TestGrammarVisualizer.test_multiple_rules) ... ok
test_simple_rule (test.test_peg_generator.test_pegen.TestGrammarVisualizer.test_simple_rule) ... ok
test_advanced_left_recursive (test.test_peg_generator.test_pegen.TestPegen.test_advanced_left_recursive) ... ok
test_alt_optional_operator (test.test_peg_generator.test_pegen.TestPegen.test_alt_optional_operator) ... ok
test_bad_token_reference (test.test_peg_generator.test_pegen.TestPegen.test_bad_token_reference) ... ok
test_cut (test.test_peg_generator.test_pegen.TestPegen.test_cut) ... ok
test_dangling_reference (test.test_peg_generator.test_pegen.TestPegen.test_dangling_reference) ... ok
test_expr_grammar (test.test_peg_generator.test_pegen.TestPegen.test_expr_grammar) ... ok
test_forced (test.test_peg_generator.test_pegen.TestPegen.test_forced) ... ok
test_forced_with_group (test.test_peg_generator.test_pegen.TestPegen.test_forced_with_group) ... ok
test_gather (test.test_peg_generator.test_pegen.TestPegen.test_gather) ... ok
test_invalid_rule_name (test.test_peg_generator.test_pegen.TestPegen.test_invalid_rule_name) ... ok
test_invalid_variable_name (test.test_peg_generator.test_pegen.TestPegen.test_invalid_variable_name) ... ok
test_invalid_variable_name_in_temporal_rule (test.test_peg_generator.test_pegen.TestPegen.test_invalid_variable_name_in_temporal_rule) ... ok
test_left_recursion_too_complex (test.test_peg_generator.test_pegen.TestPegen.test_left_recursion_too_complex) ... ok
test_left_recursive (test.test_peg_generator.test_pegen.TestPegen.test_left_recursive) ... ok
test_locations_in_alt_action_and_group (test.test_peg_generator.test_pegen.TestPegen.test_locations_in_alt_action_and_group) ... ok
test_long_rule_str (test.test_peg_generator.test_pegen.TestPegen.test_long_rule_str) ... ok
test_lookahead (test.test_peg_generator.test_pegen.TestPegen.test_lookahead) ... ok
test_missing_start (test.test_peg_generator.test_pegen.TestPegen.test_missing_start) ... ok
test_mutually_left_recursive (test.test_peg_generator.test_pegen.TestPegen.test_mutually_left_recursive) ... ok
test_named_lookahead_error (test.test_peg_generator.test_pegen.TestPegen.test_named_lookahead_error) ... ok
test_nasty_mutually_left_recursive (test.test_peg_generator.test_pegen.TestPegen.test_nasty_mutually_left_recursive) ... ok
test_nullable (test.test_peg_generator.test_pegen.TestPegen.test_nullable) ... ok
test_opt_sequence (test.test_peg_generator.test_pegen.TestPegen.test_opt_sequence) ... ok
test_optional_literal (test.test_peg_generator.test_pegen.TestPegen.test_optional_literal) ... ok
test_optional_operator (test.test_peg_generator.test_pegen.TestPegen.test_optional_operator) ... ok
test_parse_grammar (test.test_peg_generator.test_pegen.TestPegen.test_parse_grammar) ... ok
test_python_expr (test.test_peg_generator.test_pegen.TestPegen.test_python_expr) ... ok
test_repeat_0_complex (test.test_peg_generator.test_pegen.TestPegen.test_repeat_0_complex) ... ok
test_repeat_0_simple (test.test_peg_generator.test_pegen.TestPegen.test_repeat_0_simple) ... ok
test_repeat_1_complex (test.test_peg_generator.test_pegen.TestPegen.test_repeat_1_complex) ... ok
test_repeat_1_simple (test.test_peg_generator.test_pegen.TestPegen.test_repeat_1_simple) ... ok
test_repeat_with_sep_simple (test.test_peg_generator.test_pegen.TestPegen.test_repeat_with_sep_simple) ... ok
test_soft_keyword (test.test_peg_generator.test_pegen.TestPegen.test_soft_keyword) ... ok
test_start_leader (test.test_peg_generator.test_pegen.TestPegen.test_start_leader) ... ok
test_typed_rules (test.test_peg_generator.test_pegen.TestPegen.test_typed_rules) ... ok
test_unreachable_explicit (test.test_peg_generator.test_pegen.TestPegen.test_unreachable_explicit) ... ok
test_unreachable_implicit1 (test.test_peg_generator.test_pegen.TestPegen.test_unreachable_implicit1) ... ok
test_unreachable_implicit2 (test.test_peg_generator.test_pegen.TestPegen.test_unreachable_implicit2) ... ok
test_unreachable_implicit3 (test.test_peg_generator.test_pegen.TestPegen.test_unreachable_implicit3) ... ok

----------------------------------------------------------------------
Ran 91 tests in 29.705s

OK

== Tests result: SUCCESS ==

1 test OK.

Total duration: 29.9 sec
Total tests: run=91
Total test files: run=1/1
Result: SUCCESS
With this PR
cpython on gh-86248-fix-eliminate-test_peg_generator-redundant-output via C v14.0.3-clang via 🐍 pyenv 3.11.3 took 1m40s 
❯ ./python.exe -m test test_peg_generator -u cpu
0:00:00 load avg: 5.38 Run tests sequentially
0:00:00 load avg: 5.38 [1/1] test_peg_generator
Processing /Users/lysnikolaou/repos/python/cpython/Lib/test/setuptools-67.6.1-py3-none-any.whl
/Users/lysnikolaou/repos/python/cpython/build/test_python_33991æ/tempcwd/venv/lib/python3.13/site-packages/pip/_internal/metadata/importlib/_dists.py:74: DeprecationWarning: Unimplemented abstract methods {'locate_file'}
  return cls(files, info_location)
Processing /Users/lysnikolaou/repos/python/cpython/Lib/test/wheel-0.40.0-py3-none-any.whl
Installing collected packages: wheel, setuptools
/Users/lysnikolaou/repos/python/cpython/build/test_python_33991æ/tempcwd/venv/lib/python3.13/site-packages/pip/_internal/metadata/importlib/_dists.py:74: DeprecationWarning: Unimplemented abstract methods {'locate_file'}
  return cls(files, info_location)
Successfully installed setuptools-67.6.1 wheel-0.40.0
/Users/lysnikolaou/repos/python/cpython/build/test_python_33991æ/tempcwd/venv/lib/python3.13/site-packages/pip/_internal/self_outdated_check.py:232: DeprecationWarning: datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.now(datetime.UTC).
  current_time=datetime.datetime.utcnow(),

[notice] A new release of pip is available: 23.1.2 -> 23.2.1
[notice] To update, run: /Users/lysnikolaou/repos/python/cpython/build/test_python_33991æ/tempcwd/venv/bin/python.exe -m pip install --upgrade pip
/Users/lysnikolaou/repos/python/cpython/build/test_python_33991æ/tempcwd/venv/lib/python3.13/site-packages/pip/_internal/utils/misc.py:130: DeprecationWarning: onerror argument is deprecated, use onexc instead
  shutil.rmtree(dir, ignore_errors=ignore_errors, onerror=rmtree_errorhandler)
test_peg_generator passed in 30.7 sec

== Tests result: SUCCESS ==

1 test OK.

Total duration: 30.8 sec
Tests result: SUCCESS

cpython on gh-86248-fix-eliminate-test_peg_generator-redundant-output via C v14.0.3-clang via 🐍 pyenv 3.11.3 took 31s 
❯ ./python.exe -m test test_peg_generator -u cpu -v
== CPython 3.13.0a0 (heads/gh-86248-fix-eliminate-test_peg_generator-redundant-output:1f52667482, Sep) [Clang 14.0.3 (clang-1403.0.22.14.1)]
== macOS-13.5.1-arm64-arm-64bit little-endian
== Python build: debug
== cwd: /Users/lysnikolaou/repos/python/cpython/build/test_python_34261æ
== CPU count: 10
== encodings: locale=UTF-8, FS=utf-8
0:00:00 load avg: 4.84 Run tests sequentially
0:00:00 load avg: 4.84 [1/1] test_peg_generator

Run: /Users/lysnikolaou/repos/python/cpython/python.exe -X dev -m venv venv

Run: /Users/lysnikolaou/repos/python/cpython/build/test_python_34261æ/tempcwd/venv/bin/python.exe -X dev -m pip install /Users/lysnikolaou/repos/python/cpython/Lib/test/setuptools-67.6.1-py3-none-any.whl /Users/lysnikolaou/repos/python/cpython/Lib/test/wheel-0.40.0-py3-none-any.whl
Processing /Users/lysnikolaou/repos/python/cpython/Lib/test/setuptools-67.6.1-py3-none-any.whl
/Users/lysnikolaou/repos/python/cpython/build/test_python_34261æ/tempcwd/venv/lib/python3.13/site-packages/pip/_internal/metadata/importlib/_dists.py:74: DeprecationWarning: Unimplemented abstract methods {'locate_file'}
  return cls(files, info_location)
Processing /Users/lysnikolaou/repos/python/cpython/Lib/test/wheel-0.40.0-py3-none-any.whl
Installing collected packages: wheel, setuptools
/Users/lysnikolaou/repos/python/cpython/build/test_python_34261æ/tempcwd/venv/lib/python3.13/site-packages/pip/_internal/metadata/importlib/_dists.py:74: DeprecationWarning: Unimplemented abstract methods {'locate_file'}
  return cls(files, info_location)
Successfully installed setuptools-67.6.1 wheel-0.40.0
/Users/lysnikolaou/repos/python/cpython/build/test_python_34261æ/tempcwd/venv/lib/python3.13/site-packages/pip/_internal/self_outdated_check.py:232: DeprecationWarning: datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.now(datetime.UTC).
  current_time=datetime.datetime.utcnow(),

[notice] A new release of pip is available: 23.1.2 -> 23.2.1
[notice] To update, run: /Users/lysnikolaou/repos/python/cpython/build/test_python_34261æ/tempcwd/venv/bin/python.exe -m pip install --upgrade pip
/Users/lysnikolaou/repos/python/cpython/build/test_python_34261æ/tempcwd/venv/lib/python3.13/site-packages/pip/_internal/utils/misc.py:130: DeprecationWarning: onerror argument is deprecated, use onexc instead
  shutil.rmtree(dir, ignore_errors=ignore_errors, onerror=rmtree_errorhandler)
test_advanced_left_recursive (test.test_peg_generator.test_c_parser.TestCParser.test_advanced_left_recursive) ... ok
test_c_parser (test.test_peg_generator.test_c_parser.TestCParser.test_c_parser) ... ok
test_cut (test.test_peg_generator.test_c_parser.TestCParser.test_cut) ... ok
test_error_in_rules (test.test_peg_generator.test_c_parser.TestCParser.test_error_in_rules) ... ok
test_forced (test.test_peg_generator.test_c_parser.TestCParser.test_forced) ... ok
test_forced_with_group (test.test_peg_generator.test_c_parser.TestCParser.test_forced_with_group) ... ok
test_gather (test.test_peg_generator.test_c_parser.TestCParser.test_gather) ... ok
test_gather_action_ast (test.test_peg_generator.test_c_parser.TestCParser.test_gather_action_ast) ... ok
test_headers_and_trailer (test.test_peg_generator.test_c_parser.TestCParser.test_headers_and_trailer) ... ok
test_if_stmt_action (test.test_peg_generator.test_c_parser.TestCParser.test_if_stmt_action) ... ok
test_left_recursion (test.test_peg_generator.test_c_parser.TestCParser.test_left_recursion) ... ok
test_lookahead (test.test_peg_generator.test_c_parser.TestCParser.test_lookahead) ... ok
test_mutually_left_recursive (test.test_peg_generator.test_c_parser.TestCParser.test_mutually_left_recursive) ... ok
test_nasty_mutually_left_recursive (test.test_peg_generator.test_c_parser.TestCParser.test_nasty_mutually_left_recursive) ... ok
test_negative_lookahead (test.test_peg_generator.test_c_parser.TestCParser.test_negative_lookahead) ... ok
test_no_soft_keywords (test.test_peg_generator.test_c_parser.TestCParser.test_no_soft_keywords) ... ok
test_pass_stmt_action (test.test_peg_generator.test_c_parser.TestCParser.test_pass_stmt_action) ... ok
test_return_stmt_noexpr_action (test.test_peg_generator.test_c_parser.TestCParser.test_return_stmt_noexpr_action) ... ok
test_same_name_different_types (test.test_peg_generator.test_c_parser.TestCParser.test_same_name_different_types) ... ok
test_soft_keywords (test.test_peg_generator.test_c_parser.TestCParser.test_soft_keywords) ... ok
test_soft_keywords_lookahead (test.test_peg_generator.test_c_parser.TestCParser.test_soft_keywords_lookahead) ... ok
test_soft_keywords_parse (test.test_peg_generator.test_c_parser.TestCParser.test_soft_keywords_parse) ... ok
test_syntax_error_for_string (test.test_peg_generator.test_c_parser.TestCParser.test_syntax_error_for_string) ... ok
test_ternary_operator (test.test_peg_generator.test_c_parser.TestCParser.test_ternary_operator) ... ok
test_with_stmt_with_paren (test.test_peg_generator.test_c_parser.TestCParser.test_with_stmt_with_paren) ... ok
test_advance_left_recursion (test.test_peg_generator.test_first_sets.TestFirstSets.test_advance_left_recursion) ... ok
test_alternatives (test.test_peg_generator.test_first_sets.TestFirstSets.test_alternatives) ... ok
test_epsilon_production_in_start_rule (test.test_peg_generator.test_first_sets.TestFirstSets.test_epsilon_production_in_start_rule) ... ok
test_gather (test.test_peg_generator.test_first_sets.TestFirstSets.test_gather) ... ok
test_left_recursion (test.test_peg_generator.test_first_sets.TestFirstSets.test_left_recursion) ... ok
test_multiple_nullable_rules (test.test_peg_generator.test_first_sets.TestFirstSets.test_multiple_nullable_rules) ... ok
test_mutual_left_recursion (test.test_peg_generator.test_first_sets.TestFirstSets.test_mutual_left_recursion) ... ok
test_nasty_left_recursion (test.test_peg_generator.test_first_sets.TestFirstSets.test_nasty_left_recursion) ... ok
test_negative_lookahead (test.test_peg_generator.test_first_sets.TestFirstSets.test_negative_lookahead) ... ok
test_nullable_rule (test.test_peg_generator.test_first_sets.TestFirstSets.test_nullable_rule) ... ok
test_optional_after (test.test_peg_generator.test_first_sets.TestFirstSets.test_optional_after) ... ok
test_optional_before (test.test_peg_generator.test_first_sets.TestFirstSets.test_optional_before) ... ok
test_optional_literal (test.test_peg_generator.test_first_sets.TestFirstSets.test_optional_literal) ... ok
test_optional_operator (test.test_peg_generator.test_first_sets.TestFirstSets.test_optional_operator) ... ok
test_optionals (test.test_peg_generator.test_first_sets.TestFirstSets.test_optionals) ... ok
test_positive_lookahead (test.test_peg_generator.test_first_sets.TestFirstSets.test_positive_lookahead) ... ok
test_repeat_0 (test.test_peg_generator.test_first_sets.TestFirstSets.test_repeat_0) ... ok
test_repeat_0_with_group (test.test_peg_generator.test_first_sets.TestFirstSets.test_repeat_0_with_group) ... ok
test_repeat_1 (test.test_peg_generator.test_first_sets.TestFirstSets.test_repeat_1) ... ok
test_repeat_1_with_group (test.test_peg_generator.test_first_sets.TestFirstSets.test_repeat_1_with_group) ... ok
test_repeat_with_separator (test.test_peg_generator.test_first_sets.TestFirstSets.test_repeat_with_separator) ... ok
test_rule_with_collision_after_some_other_rules (test.test_peg_generator.test_grammar_validator.TestPegen.test_rule_with_collision_after_some_other_rules) ... ok
test_rule_with_no_collision (test.test_peg_generator.test_grammar_validator.TestPegen.test_rule_with_no_collision) ... ok
test_rule_with_simple_collision (test.test_peg_generator.test_grammar_validator.TestPegen.test_rule_with_simple_collision) ... ok
test_deep_nested_rule (test.test_peg_generator.test_pegen.TestGrammarVisualizer.test_deep_nested_rule) ... ok
test_multiple_rules (test.test_peg_generator.test_pegen.TestGrammarVisualizer.test_multiple_rules) ... ok
test_simple_rule (test.test_peg_generator.test_pegen.TestGrammarVisualizer.test_simple_rule) ... ok
test_advanced_left_recursive (test.test_peg_generator.test_pegen.TestPegen.test_advanced_left_recursive) ... ok
test_alt_optional_operator (test.test_peg_generator.test_pegen.TestPegen.test_alt_optional_operator) ... ok
test_bad_token_reference (test.test_peg_generator.test_pegen.TestPegen.test_bad_token_reference) ... ok
test_cut (test.test_peg_generator.test_pegen.TestPegen.test_cut) ... ok
test_dangling_reference (test.test_peg_generator.test_pegen.TestPegen.test_dangling_reference) ... ok
test_expr_grammar (test.test_peg_generator.test_pegen.TestPegen.test_expr_grammar) ... ok
test_forced (test.test_peg_generator.test_pegen.TestPegen.test_forced) ... ok
test_forced_with_group (test.test_peg_generator.test_pegen.TestPegen.test_forced_with_group) ... ok
test_gather (test.test_peg_generator.test_pegen.TestPegen.test_gather) ... ok
test_invalid_rule_name (test.test_peg_generator.test_pegen.TestPegen.test_invalid_rule_name) ... ok
test_invalid_variable_name (test.test_peg_generator.test_pegen.TestPegen.test_invalid_variable_name) ... ok
test_invalid_variable_name_in_temporal_rule (test.test_peg_generator.test_pegen.TestPegen.test_invalid_variable_name_in_temporal_rule) ... ok
test_left_recursion_too_complex (test.test_peg_generator.test_pegen.TestPegen.test_left_recursion_too_complex) ... ok
test_left_recursive (test.test_peg_generator.test_pegen.TestPegen.test_left_recursive) ... ok
test_locations_in_alt_action_and_group (test.test_peg_generator.test_pegen.TestPegen.test_locations_in_alt_action_and_group) ... ok
test_long_rule_str (test.test_peg_generator.test_pegen.TestPegen.test_long_rule_str) ... ok
test_lookahead (test.test_peg_generator.test_pegen.TestPegen.test_lookahead) ... ok
test_missing_start (test.test_peg_generator.test_pegen.TestPegen.test_missing_start) ... ok
test_mutually_left_recursive (test.test_peg_generator.test_pegen.TestPegen.test_mutually_left_recursive) ... ok
test_named_lookahead_error (test.test_peg_generator.test_pegen.TestPegen.test_named_lookahead_error) ... ok
test_nasty_mutually_left_recursive (test.test_peg_generator.test_pegen.TestPegen.test_nasty_mutually_left_recursive) ... ok
test_nullable (test.test_peg_generator.test_pegen.TestPegen.test_nullable) ... ok
test_opt_sequence (test.test_peg_generator.test_pegen.TestPegen.test_opt_sequence) ... ok
test_optional_literal (test.test_peg_generator.test_pegen.TestPegen.test_optional_literal) ... ok
test_optional_operator (test.test_peg_generator.test_pegen.TestPegen.test_optional_operator) ... ok
test_parse_grammar (test.test_peg_generator.test_pegen.TestPegen.test_parse_grammar) ... ok
test_python_expr (test.test_peg_generator.test_pegen.TestPegen.test_python_expr) ... ok
test_repeat_0_complex (test.test_peg_generator.test_pegen.TestPegen.test_repeat_0_complex) ... ok
test_repeat_0_simple (test.test_peg_generator.test_pegen.TestPegen.test_repeat_0_simple) ... ok
test_repeat_1_complex (test.test_peg_generator.test_pegen.TestPegen.test_repeat_1_complex) ... ok
test_repeat_1_simple (test.test_peg_generator.test_pegen.TestPegen.test_repeat_1_simple) ... ok
test_repeat_with_sep_simple (test.test_peg_generator.test_pegen.TestPegen.test_repeat_with_sep_simple) ... ok
test_soft_keyword (test.test_peg_generator.test_pegen.TestPegen.test_soft_keyword) ... ok
test_start_leader (test.test_peg_generator.test_pegen.TestPegen.test_start_leader) ... ok
test_typed_rules (test.test_peg_generator.test_pegen.TestPegen.test_typed_rules) ... ok
test_unreachable_explicit (test.test_peg_generator.test_pegen.TestPegen.test_unreachable_explicit) ... ok
test_unreachable_implicit1 (test.test_peg_generator.test_pegen.TestPegen.test_unreachable_implicit1) ... ok
test_unreachable_implicit2 (test.test_peg_generator.test_pegen.TestPegen.test_unreachable_implicit2) ... ok
test_unreachable_implicit3 (test.test_peg_generator.test_pegen.TestPegen.test_unreachable_implicit3) ... ok

----------------------------------------------------------------------
Ran 91 tests in 29.569s

OK

== Tests result: SUCCESS ==

1 test OK.

Total duration: 29.8 sec
Tests result: SUCCESS

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
awaiting review skip news tests Tests in the Lib/test dir
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants