Skip to content

Commit 287d471

Browse files
committed
Test: move last batch of tests to pytest
1 parent a75ce71 commit 287d471

9 files changed

+179
-339
lines changed

.github/workflows/tests.yml

-9
Original file line numberDiff line numberDiff line change
@@ -99,15 +99,6 @@ jobs:
9999
if: matrix.os == 'macos-12'
100100
run: |
101101
wget -q -O - https://data.kitware.com/api/v1/file/hashsum/sha512/5d937e938f7b882a3a3e7941e68f8312d0898aaf2082e00003dd362b1ba70b98b0a08706a1be28e71652a6a0f1e66f89768b5eaa20e5a100592d5b3deefec3f0/download | tar zxf - -C ~/
102-
- name: Setup castxml config
103-
if: matrix.compiler == 'gcc' && matrix.version == '9'
104-
run: mv unittests/configs/gcc9.cfg unittests/xml_generator.cfg;
105-
- name: Run legacy tests
106-
run: |
107-
export PATH=~/castxml/bin:$PATH
108-
coverage run -m unittests.test_all
109-
coverage combine
110-
coverage xml
111102
- name: Run tests
112103
run: |
113104
export PATH=~/castxml/bin:$PATH
File renamed without changes.
File renamed without changes.

tests/test_parser_raise.py

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Copyright 2014-2017 Insight Software Consortium.
2+
# Copyright 2004-2009 Roman Yakovenko.
3+
# Distributed under the Boost Software License, Version 1.0.
4+
# See http://www.boost.org/LICENSE_1_0.txt
5+
6+
import os
7+
import pytest
8+
9+
from . import autoconfig
10+
11+
from pygccxml import parser
12+
13+
14+
def test_raise():
15+
config = autoconfig.cxx_parsers_cfg.config.clone()
16+
content = "abra cadabra " + os.linesep
17+
with pytest.raises(RuntimeError) as _:
18+
parser.parse_string(content, config)

tests/test_patcher.py

+161
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
# Copyright 2014-2017 Insight Software Consortium.
2+
# Copyright 2004-2009 Roman Yakovenko.
3+
# Distributed under the Boost Software License, Version 1.0.
4+
# See http://www.boost.org/LICENSE_1_0.txt
5+
6+
import pytest
7+
8+
from . import autoconfig
9+
10+
from pygccxml import declarations
11+
from pygccxml import parser
12+
from pygccxml import utils
13+
14+
15+
TEST_FILES = [
16+
"patcher.hpp",
17+
]
18+
19+
config = autoconfig.cxx_parsers_cfg.config.clone()
20+
project_reader = parser.project_reader_t(config=config, cache=None)
21+
decls = project_reader.read_files(
22+
TEST_FILES,
23+
parser.COMPILATION_MODE.ALL_AT_ONCE
24+
)
25+
config.xml_generator_from_xml_file = project_reader.xml_generator_from_xml_file
26+
config.__cxx_std = utils.cxx_standard(config.cflags)
27+
28+
29+
@pytest.fixture
30+
def global_ns():
31+
global_ns = declarations.get_global_namespace(decls)
32+
return global_ns
33+
34+
35+
def test_enum_patcher(global_ns):
36+
fix_enum = global_ns.free_function("fix_enum")
37+
default_val = fix_enum.arguments[0].default_value
38+
if config.__cxx_std.is_cxx11_or_greater:
39+
val = "::ns1::ns2::fruit::apple"
40+
else:
41+
val = "::ns1::ns2::apple"
42+
assert default_val == val
43+
44+
fix_enum2 = global_ns.free_function("fix_enum2")
45+
default_val = fix_enum2.arguments[0].default_value
46+
assert default_val == val
47+
48+
ns1 = global_ns.namespace("ns1")
49+
ns2 = ns1.namespace("ns2")
50+
fix_enum2 = ns2.free_function("fix_enum2")
51+
default_val = fix_enum2.arguments[0].default_value
52+
assert default_val == val
53+
54+
fix_enum3 = global_ns.free_function("fix_enum3")
55+
default_val = fix_enum3.arguments[0].default_value
56+
val = val.replace("apple", "orange")
57+
assert default_val == val
58+
59+
if config.__cxx_std.is_cxx11_or_greater:
60+
fix_enum4 = global_ns.free_function("fix_enum4")
61+
default_val = fix_enum4.arguments[0].default_value
62+
assert default_val == "::ns4::color::blue"
63+
64+
fix_enum5 = global_ns.free_function("fix_enum5")
65+
default_val = fix_enum5.arguments[0].default_value
66+
assert default_val == "::ns4::color::blue"
67+
68+
lpe = global_ns.free_function("log_priority_enabled")
69+
default_val = lpe.arguments[0].default_value
70+
if config.__cxx_std.is_cxx11_or_greater:
71+
val = "(long int)" + \
72+
"(::ACE_Log_Priority_Index::LM_INVALID_BIT_INDEX)"
73+
else:
74+
val = "(long int)(::LM_INVALID_BIT_INDEX)"
75+
assert default_val == val
76+
77+
78+
def test_numeric_patcher(global_ns):
79+
fix_numeric = global_ns.free_function("fix_numeric")
80+
generator = config.xml_generator_from_xml_file
81+
if generator.is_castxml1 or \
82+
float(generator.xml_output_version) >= 1.137:
83+
val = "(unsigned long long)-1"
84+
else:
85+
val = "(ull)-1"
86+
assert fix_numeric.arguments[0].default_value == val
87+
88+
89+
def test_unqualified_integral_patcher(global_ns):
90+
# For this check to be removed, patcher_tester_64bit.xml
91+
# will need to be updated for CastXML
92+
return
93+
94+
ns1 = global_ns.namespace("ns1")
95+
st1 = ns1.class_("st1")
96+
fun1 = st1.member_function("fun1")
97+
output_verion = xml_generator_from_xml_file.xml_output_version
98+
if xml_generator_from_xml_file.is_castxml1 or \
99+
float(output_verion) >= 1.137:
100+
val1 = "ns1::DEFAULT_1"
101+
val2 = "ns1::st1::DEFAULT_2"
102+
else:
103+
val1 = "::ns1::DEFAULT_1"
104+
val2 = "::ns1::st1::DEFAULT_2"
105+
assertEqual(
106+
fun1.arguments[0].default_value, val1)
107+
assertEqual(
108+
fun1.arguments[1].default_value, val2)
109+
110+
fun2 = global_ns.free_function("fun2")
111+
assertEqual(
112+
fun2.arguments[0].default_value,
113+
"::DEFAULT_1")
114+
output_verion = xml_generator_from_xml_file.xml_output_version
115+
if xml_generator_from_xml_file.is_castxml1 or \
116+
float(output_verion) >= 1.137:
117+
val1 = "ns1::DEFAULT_1"
118+
val2 = "ns1::st1::DEFAULT_2"
119+
else:
120+
# Before XML output version 1.137, the following two
121+
# were unpatched and were identical to the text in
122+
# matcher.hpp
123+
val1 = "ns1::DEFAULT_1"
124+
val2 = "::ns1::st1::DEFAULT_2"
125+
assertEqual(
126+
fun2.arguments[1].default_value, val1)
127+
assertEqual(
128+
fun2.arguments[2].default_value, val2)
129+
130+
131+
def test_unnamed_enum_patcher(global_ns):
132+
fix_unnamed = global_ns.free_function("fix_unnamed")
133+
assert fix_unnamed.arguments[0].default_value == "int(::fx::unnamed)"
134+
135+
136+
def test_function_call_patcher(global_ns):
137+
fix_function_call = global_ns.free_function("fix_function_call")
138+
default_val = fix_function_call.arguments[0].default_value
139+
output_verion = config.xml_generator_from_xml_file.xml_output_version
140+
if config.xml_generator_from_xml_file.is_castxml1 or \
141+
float(output_verion) >= 1.137:
142+
val = "function_call::calc(1, 2, 3)"
143+
else:
144+
val = "calc(1, 2, 3)"
145+
assert default_val == val
146+
147+
148+
def test_fundamental_patcher(global_ns):
149+
fcall = global_ns.free_function("fix_fundamental")
150+
if config.__cxx_std.is_cxx11_or_greater:
151+
val = "(unsigned int)(::fundamental::spam::eggs)"
152+
else:
153+
val = "(unsigned int)(::fundamental::eggs)"
154+
assert fcall.arguments[0].default_value == val
155+
156+
157+
def test_constructor_patcher(global_ns):
158+
typedef__func = global_ns.free_function("typedef__func")
159+
default_val = typedef__func.arguments[0].default_value
160+
val = "typedef_::alias()"
161+
assert default_val == val
File renamed without changes.

unittests/gccxml_runner_tester.py

-41
This file was deleted.

0 commit comments

Comments
 (0)