Skip to content

Commit 998faa3

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

File tree

8 files changed

+172
-330
lines changed

8 files changed

+172
-330
lines changed
File renamed without changes.
File renamed without changes.

tests/test_parser_raise.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
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)
19+
20+

tests/test_patcher.py

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
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(TEST_FILES, parser.COMPILATION_MODE.ALL_AT_ONCE)
22+
config.xml_generator_from_xml_file = project_reader.xml_generator_from_xml_file
23+
config.__cxx_std = utils.cxx_standard(config.cflags)
24+
25+
26+
@pytest.fixture
27+
def global_ns():
28+
global_ns = declarations.get_global_namespace(decls)
29+
return global_ns
30+
31+
32+
def test_enum_patcher(global_ns):
33+
fix_enum = global_ns.free_function("fix_enum")
34+
default_val = fix_enum.arguments[0].default_value
35+
if config.__cxx_std.is_cxx11_or_greater:
36+
val = "::ns1::ns2::fruit::apple"
37+
else:
38+
val = "::ns1::ns2::apple"
39+
assert default_val == val
40+
41+
fix_enum2 = global_ns.free_function("fix_enum2")
42+
default_val = fix_enum2.arguments[0].default_value
43+
assert default_val == val
44+
45+
ns1 = global_ns.namespace("ns1")
46+
ns2 = ns1.namespace("ns2")
47+
fix_enum2 = ns2.free_function("fix_enum2")
48+
default_val = fix_enum2.arguments[0].default_value
49+
assert default_val == val
50+
51+
fix_enum3 = global_ns.free_function("fix_enum3")
52+
default_val = fix_enum3.arguments[0].default_value
53+
val = val.replace("apple", "orange")
54+
assert default_val == val
55+
56+
if config.__cxx_std.is_cxx11_or_greater:
57+
fix_enum4 = global_ns.free_function("fix_enum4")
58+
default_val = fix_enum4.arguments[0].default_value
59+
assert default_val == "::ns4::color::blue"
60+
61+
fix_enum5 = global_ns.free_function("fix_enum5")
62+
default_val = fix_enum5.arguments[0].default_value
63+
assert default_val == "::ns4::color::blue"
64+
65+
lpe = global_ns.free_function("log_priority_enabled")
66+
default_val = lpe.arguments[0].default_value
67+
if config.__cxx_std.is_cxx11_or_greater:
68+
val = "(long int)" + \
69+
"(::ACE_Log_Priority_Index::LM_INVALID_BIT_INDEX)"
70+
else:
71+
val = "(long int)(::LM_INVALID_BIT_INDEX)"
72+
assert default_val == val
73+
74+
def test_numeric_patcher(global_ns):
75+
fix_numeric = global_ns.free_function("fix_numeric")
76+
generator = config.xml_generator_from_xml_file
77+
if generator.is_castxml1 or \
78+
float(generator.xml_output_version) >= 1.137:
79+
val = "(unsigned long long)-1"
80+
else:
81+
val = "(ull)-1"
82+
assert fix_numeric.arguments[0].default_value == val
83+
84+
def test_unqualified_integral_patcher(global_ns):
85+
# For this check to be removed, patcher_tester_64bit.xml
86+
# will need to be updated for CastXML
87+
return
88+
89+
ns1 = global_ns.namespace("ns1")
90+
st1 = ns1.class_("st1")
91+
fun1 = st1.member_function("fun1")
92+
output_verion = xml_generator_from_xml_file.xml_output_version
93+
if xml_generator_from_xml_file.is_castxml1 or \
94+
float(output_verion) >= 1.137:
95+
val1 = "ns1::DEFAULT_1"
96+
val2 = "ns1::st1::DEFAULT_2"
97+
else:
98+
val1 = "::ns1::DEFAULT_1"
99+
val2 = "::ns1::st1::DEFAULT_2"
100+
assertEqual(
101+
fun1.arguments[0].default_value, val1)
102+
assertEqual(
103+
fun1.arguments[1].default_value, val2)
104+
105+
fun2 = global_ns.free_function("fun2")
106+
assertEqual(
107+
fun2.arguments[0].default_value,
108+
"::DEFAULT_1")
109+
output_verion = xml_generator_from_xml_file.xml_output_version
110+
if xml_generator_from_xml_file.is_castxml1 or \
111+
float(output_verion) >= 1.137:
112+
val1 = "ns1::DEFAULT_1"
113+
val2 = "ns1::st1::DEFAULT_2"
114+
else:
115+
# Before XML output version 1.137, the following two
116+
# were unpatched and were identical to the text in
117+
# matcher.hpp
118+
val1 = "ns1::DEFAULT_1"
119+
val2 = "::ns1::st1::DEFAULT_2"
120+
assertEqual(
121+
fun2.arguments[1].default_value, val1)
122+
assertEqual(
123+
fun2.arguments[2].default_value, val2)
124+
125+
def test_unnamed_enum_patcher(global_ns):
126+
fix_unnamed = global_ns.free_function("fix_unnamed")
127+
assert fix_unnamed.arguments[0].default_value == "int(::fx::unnamed)"
128+
129+
def test_function_call_patcher(global_ns):
130+
fix_function_call = global_ns.free_function("fix_function_call")
131+
default_val = fix_function_call.arguments[0].default_value
132+
output_verion = config.xml_generator_from_xml_file.xml_output_version
133+
if config.xml_generator_from_xml_file.is_castxml1 or \
134+
float(output_verion) >= 1.137:
135+
val = "function_call::calc(1, 2, 3)"
136+
else:
137+
val = "calc(1, 2, 3)"
138+
assert default_val == val
139+
140+
def test_fundamental_patcher(global_ns):
141+
fcall = global_ns.free_function("fix_fundamental")
142+
if config.__cxx_std.is_cxx11_or_greater:
143+
val = "(unsigned int)(::fundamental::spam::eggs)"
144+
else:
145+
val = "(unsigned int)(::fundamental::eggs)"
146+
assert fcall.arguments[0].default_value == val
147+
148+
def test_constructor_patcher(global_ns):
149+
typedef__func = global_ns.free_function("typedef__func")
150+
default_val = typedef__func.arguments[0].default_value
151+
val = "typedef_::alias()"
152+
assert default_val == val
File renamed without changes.

unittests/gccxml_runner_tester.py

Lines changed: 0 additions & 41 deletions
This file was deleted.

0 commit comments

Comments
 (0)