summaryrefslogtreecommitdiff
path: root/tests
Commit message (Collapse)AuthorAgeFilesLines
* Feature/add pragma support (#487)Jordy Ruiz2023-01-082-3/+19
| | | | | | | | | * Support _Pragma, a C99 alternative to #pragma See https://gcc.gnu.org/onlinedocs/cpp/Pragmas.html * Test cases for _Pragma * Add explanatory comment for _PRAGMA and PPPRAGMA
* Update test_examples.py to use subTest now that we have modern PythonsEli Bendersky2023-01-071-15/+5
| | | | simplify it to use f-strings while we're at it
* More removal of code specific for Python 2Eli Bendersky2023-01-071-4/+1
|
* Fix #479 (multi-pragma/single statement blocks) (#480)ldore2022-11-102-2/+11
|
* Improve error reporting from test_examplesEli Bendersky2022-01-252-5/+5
| | | | Emit stderr as well as stdout from the example in case of failure
* Don't run cpp/gcc-needing tests on Darwin: not all Macs have the toolsEli Bendersky2021-10-291-1/+1
|
* Only run example tests on Linux, since many require cppEli Bendersky2021-10-291-1/+2
|
* Add test that runs all examples and makes sure they don't crashEli Bendersky2021-10-292-0/+56
|
* Fix typos (#443)Kian Meng Ang2021-10-183-5/+5
| | | | | * Fix typos * Revert changes in vendor module
* Fix Flake8 Errors (#442)Eisuke Kawashima2021-10-154-8/+2
| | | | | | | | | * Fix PEP8 [E101](https://github.com/PyCQA/pycodestyle/blob/2.8.0/docs/intro.rst#error-codes) * Fix PEP8 [E711](https://github.com/PyCQA/pycodestyle/blob/2.8.0/docs/intro.rst#error-codes) * Fix E999 (python2) * Fix PEP8 [F401](https://flake8.pycqa.org/en/4.0.1/user/error-codes.html)
* Implement C23 _Static_assert without message (#440)Vitaly Cheptsov2021-10-053-1/+8
| | | Co-authored-by: vit9696 <vit9696@users.noreply.github.com>
* Implement u8, u, and U strings from C11 (#439)Vitaly Cheptsov2021-10-052-0/+17
| | | | | | | * Implement u8, u, and U strings from C11 * Also add u8, u, and U chars from C11 and C23 Co-authored-by: vit9696 <vit9696@users.noreply.github.com>
* Improve recursive comparison of ASTs in test_c_generator and enable testsEli Bendersky2021-10-041-31/+48
| | | | This lets us re-enable that were commented out in #435
* Implement _Alignas and _Alignof support with tests (#435)Vitaly Cheptsov2021-10-044-3/+59
| | | | | | | | | | | | | | | * Implement _Alignas and _Alignof support with tests * Improve testing and avoid unnecessary alignas for typedef * Add more tests * Drop legacy artifact * Remove extra _add_declaration_specifier call * Drop custom equality comparators for now Co-authored-by: vit9696 <vit9696@users.noreply.github.com>
* Clean up some commentsEli Bendersky2021-09-201-5/+1
|
* Improve _Atomic support and add more tests (#431)Vitaly Cheptsov2021-09-203-31/+74
| | | | | | | | | * Improve _Atomic support with more tests and fix typedef handling * Remove duplicated tests and check the generated code for typedefs * Add typedef testing to parser as well Co-authored-by: vit9696 <vit9696@users.noreply.github.com>
* Fix declname for _Atomic specifiers, and add c-to-c testsEli Bendersky2021-09-141-0/+25
| | | | Updates #430
* A different, more robust appoach to fix _Atomic specifiers.Eli Bendersky2021-09-131-3/+18
| | | | | Now the ASTs produced are more correct, and more complex cases work like nested _Atomic(...) specifiers.
* Implement atomic specifiers like _Atomic(int*).Eli Bendersky2021-09-131-0/+12
| | | | | Based on #431 by vit9696 Updates #430
* Support _Atomic as a qualifierEli Bendersky2021-09-133-1/+17
| | | | | | | This adds initial implementation for the _Atomic keyword in C11, only focusing on the use as qualifier (spec section 6.7.3) Based on #431 by vit9696. Updates #430
* Add comments and clean up whitespaceEli Bendersky2021-08-312-1/+16
|
* Introduce partial C11 support (#429)Vitaly Cheptsov2021-08-315-18/+100
| | | | | | | | | | * Introduce partial C11 support Implemented _Noreturn, _Static_assert, _Thread_local. Also fixed tests with preprocessor on macOS. * Add more tests Co-authored-by: vit9696 <vit9696@users.noreply.github.com>
* Add a tricky test, and reformat some commentsEli Bendersky2021-08-281-0/+12
|
* Add thornier tests for nested pointers with qualifiers in declarationsEli Bendersky2021-08-281-0/+18
|
* Clean whitespaceEli Bendersky2021-08-281-1/+1
|
* c_parser: support parenthesized compounds (#423)Jordan Yates2021-07-071-0/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * c_parser: support parenthesized compounds Support parenthesized compound statements as described here: https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html Signed-off-by: Jordan Yates <jordan.yates@data61.csiro.au> * test_c_parser: support additional initializers Add support to `expand_init` for additional `c_ast` types. If a type is not explicitly handled, return the type name instead of `None`. Signed-off-by: Jordan Yates <jordan.yates@data61.csiro.au> * test_c_parser: test parenthesized compounds Add parsing tests for various situations of parenthesized compound statements. The complete tree generated by the test string is: ``` FileAST: FuncDef: Decl: foo, [], [], [] FuncDecl: TypeDecl: foo, [] IdentifierType: ['void'] Compound: Decl: a, [], [], [] TypeDecl: a, [] IdentifierType: ['int'] Compound: Compound: Constant: int, 1 Compound: Constant: int, 1 Constant: int, 2 Decl: b, [], [], [] TypeDecl: b, [] IdentifierType: ['int'] Compound: Constant: int, 1 Decl: c, [], [], [] TypeDecl: c, [] IdentifierType: ['int'] Decl: d, [], [], [] TypeDecl: d, [] IdentifierType: ['int'] Compound: Decl: x, [], [], [] TypeDecl: x, [] IdentifierType: ['int'] Constant: int, 1 BinaryOp: + ID: x Constant: int, 2 Assignment: = ID: a Compound: Decl: x, [], [], [] TypeDecl: x, [] IdentifierType: ['int'] Constant: int, 1 BinaryOp: * Constant: int, 2 ID: x ``` Signed-off-by: Jordan Yates <jordan.yates@data61.csiro.au>
* Extra line breaks when c_ast.If are chained (#401)Patricio Inzaghi2020-12-091-0/+16
|
* Simplify test execution (#400)Jon Dufresne2020-12-083-21/+1
| | | | | | | | | | | | Use the stdlib standard entry point for running tests through the command: python -m unittest discover Docs: https://docs.python.org/3/library/unittest.html#unittest-test-discovery This automatically looks for files with the test_ prefix and runs them as tests. This removes the need for the custom test entry point script, all_tests.py.
* Rename test and add lower-level testingEli Bendersky2020-10-051-1/+7
|
* Clean up commentsEli Bendersky2020-10-051-3/+0
|
* Added flattening of abundant parenthesis in CGenerator (#394)Julian2020-10-051-5/+28
|
* Add test for https://github.com/eliben/pycparser/issues/392Eli Bendersky2020-09-301-0/+10
| | | | [no fix yet]
* Fix #349: convert to raw strings in lexer tests (#389)hodbn2020-08-181-2/+2
|
* Fix issues #378, #379, #385 (#387)Zecong Hu2020-07-182-0/+46
| | | | | | | | | | | | * Fix #385: generate code with nested sizeofs * Fix #378: replace assertion with check Only the assertion inside `_build_function_definition` is replaced. The assertion is not appropriate because there are possible inputs that would trigger the assertion, they're just grammatically incorrect. Thus, it is replaced with a check that raises `ParseError` on failure. * Fix #379: parse struct with nested enum
* Fix #363 incorrect AST when parsing offsetof (#364)Zecong Hu2020-03-031-0/+24
|
* Recognize integer multicharacter constants like 'ABCD' (#350)yaroslav-o2019-09-251-4/+8
| | | | | | | | | | | | | Recognize integer multicharacter constants like 'ABCD' The feature I am adding is defined here - 5th case. https://en.cppreference.com/w/c/language/character_constant Also here: 6.4.4.4.10 of C99. Put simply, pycparser thought a statement like this is an error: int a = 'ABCD'; However it is not. It is likely possible to just modify char_const regular expression in c_lexer.py:240 to allow longer characters, but the way it is done in this PR - multicharacter constants are clearly separated. I am also limiting the length of multicharacter const integers to 4 characters - this matches VS compiler behavior (gcc allows any length with a warning) and lets pycparser NOT consider lengthy single-quoted strings as integers - these would be nonsensical anyway.
* Fix slow backtracking when parsing strings (no external deps) (#347)Tyson Andre2019-08-261-1/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Fix slow backtracking when parsing strings (no external deps) Fixes #61 This uses negative lookaheads to avoid ambiguity in how string should be parsed by the regex. - https://docs.python.org/2/library/re.html#regular-expression-syntax - Previously, if it didn't immediately succeed at parsing an escape sequence such as `\123`, it would have to try `\1`+`23`, `\12` + `3`, and `\123`, which multiplied the time taken by 3 per additional escape sequence. This solves that by only allowing `\123` - The same fix was added for hex escapes. Also fix a test that relied on the incorrect handling of regexes. The implementation documentation says that it intends to allow **decimal** escapes permissively. * WIP debug * Fix ambiguity caused by allowing #path directives Solve this by allowing "\x" when not followed by hex, in the regular string literal. In the previous commits, `\x12` could be parsed both as `\x`+`12` and `\x12`, which caused exponential options for backtracking. * Document changes to lexer, remove debug code * Optimize this for strings
* Fix error transforming an empty switch (#346)Tyson Andre2019-08-211-0/+14
| | | | | | | | | | | | | * Fix error transforming an empty switch The parser would crash on that line for `switch(1) {}` because NoneType is not iterable. Fixes #345 * Add a test of empty switch statements * Address review comments
* Clean up extra whitespaceEli Bendersky2019-06-271-1/+0
|
* Fix issue #99: parser for FuncDecl incorrectly sets declname attribute on ↵Saullo Carvalho Castelo Branco2019-06-271-2/+40
| | | | return type (#329)
* Fix issue #314: Failed parsing unnamed function parameters with array dim ↵Saullo Carvalho Castelo Branco2019-06-011-0/+25
| | | | | qualifiers (#327) Fixes #314
* Fix issue #324: u/l constant integer suffix (#326)Kevin2019-05-091-1/+17
|
* Generate pointer types correctly (#315)Amir Gonnen2019-03-271-2/+16
| | | | | | | | | | | | * Add visit_PtrDecl to generate ptr types correctly Also removed code duplication from visit_ArrayDecl and visit_TypeDecl by calling _generate_type instead, without emitting the declname. Added tests for ptr type generation * Truncate lines longer than 80 characters per https://github.com/eliben/pycparser/pull/315/files#r269553083
* Fix array type generation (#312) (#313)Amir Gonnen2019-03-261-0/+6
| | | | | | | | | | | | | | | * Fix array type generation (#312) Also added dim_quals handling to _generate_type Exmaple: >>> ast = parser.parse('int g(const int a[const 20]){}') >>> gen.visit(ast.ext[0].decl.type.args.params[0]) 'const int a[const 20]' >>> gen.visit(ast.ext[0].decl.type.args.params[0].type) 'int[const 20]' * Added TypeDecl generation. Added tests
* Fix crash when file starts with a semicolon (#310)Simon Lindholm2019-03-061-0/+22
|
* extended and cleaned up #pragma testcases (#297)Julian2018-12-071-5/+15
|
* Add test for parsing a hex float constant to the right typeEli Bendersky2018-08-311-0/+3
|
* Correct Parsing of Floating Point Literals, issue #253 (#277)Robbert Harms2018-08-311-0/+21
| | | | | | * Corrects the type attribute of a constant node when parsing doubles. This sets the type attribute to either 'float', 'long double' or 'double' depending on if 'f|F', 'l|L' or '' is specified at the end of the constant definition. * Add tests for previous changes.
* Merge branch 'master' of github.com:eliben/pycparserEli Bendersky2018-07-253-64/+65
|\
| * Use more specific assertIsInstance in tests (#268)Jon Dufresne2018-06-263-64/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When running tests with Python warnings enabled, warnings of the following form appear: DeprecationWarning: Please use assertTrue instead. self.failUnless(isinstance(...)) Use assertIsInstance instead to fix these warnings. Using a more specific assert also has the advantage of more informative error reporting upon failure. https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertTrue > This method should also be avoided when more specific methods are > available (e.g. assertEqual(a, b) instead of assertTrue(a == b)), > because they provide a better error message in case of failure.