Skip to content

Commit

Permalink
Fix macOS tests
Browse files Browse the repository at this point in the history
Attempt to fix tests on macOS
  • Loading branch information
iMichka committed Aug 7, 2023
1 parent 3a5534b commit 9f4efce
Show file tree
Hide file tree
Showing 7 changed files with 104 additions and 88 deletions.
6 changes: 3 additions & 3 deletions pygccxml/declarations/pattern_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,11 +192,11 @@ def join(self, name, args, arg_separator=None):
args = [_f for _f in args if _f]

if not args:
args_str = ' '
args_str = ''
elif len(args) == 1:
args_str = ' ' + args[0] + ' '
args_str = args[0]
else:
args_str = ' ' + arg_separator.join(args) + ' '
args_str = arg_separator.join(args)

return ''.join([name, self.__begin, args_str, self.__end])

Expand Down
15 changes: 15 additions & 0 deletions pygccxml/parser/patcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -303,3 +303,18 @@ def update_unnamed_class(decls):
if referent.name or not isinstance(referent, declarations.class_t):
continue
referent.name = decl.name


def remove_spaces_from_template_names(decls):
"""
Cleanup names that can have different spaces at different places.
This depends on the compiler / platform, so just remove spaces.
Examples:
before hash<std::vector<int> >
after hash<std::vector<int>>
"""
for decl in decls:
if isinstance(decl, declarations.declaration_t):
decl.name = decl.name.replace(" >", ">").replace("< ", "<")
1 change: 1 addition & 0 deletions pygccxml/parser/source_reader.py
Original file line number Diff line number Diff line change
Expand Up @@ -420,6 +420,7 @@ def __parse_xml_file(self, xml_file):
patcher.update_unnamed_class(decls.values())
patcher.fix_calldef_decls(
scanner_.calldefs(), scanner_.enums(), self.__cxx_std)
patcher.remove_spaces_from_template_names(decls.values())

decls = [inst for inst in iter(decls.values()) if self.__check(inst)]
return decls, list(files.values())
Expand Down
2 changes: 1 addition & 1 deletion unittests/call_invocation_tester.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ def test_split_on_map(self):

def test_join_on_vector(self):
self.assertTrue(
"vector( int, std::allocator(int) )" ==
"vector(int, std::allocator(int))" ==
declarations.call_invocation.join(
"vector", ("int", "std::allocator(int)")))

Expand Down
40 changes: 20 additions & 20 deletions unittests/find_container_traits_tester.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,96 +68,96 @@ def __cmp_traits(self, typedef, expected, partial_name, key_type=None):
self.assertTrue(traits.is_sequence(typedef))

def test_find_traits(self):
self.__cmp_traits('v_int', declarations.vector_traits, "vector< int >")
self.__cmp_traits('l_int', declarations.list_traits, "list< int >")
self.__cmp_traits('v_int', declarations.vector_traits, "vector<int>")
self.__cmp_traits('l_int', declarations.list_traits, "list<int>")
self.__cmp_traits(
'd_v_int',
declarations.deque_traits,
"deque< std::vector< int > >")
self.__cmp_traits('q_int', declarations.queue_traits, "queue< int >")
"deque<std::vector<int>>")
self.__cmp_traits('q_int', declarations.queue_traits, "queue<int>")
self.__cmp_traits(
'pq_int',
declarations.priority_queue_traits,
"priority_queue< int >")
"priority_queue<int>")
self.__cmp_traits(
's_v_int',
declarations.set_traits,
"set< std::vector< int > >")
"set<std::vector<int>>")
self.__cmp_traits(
'ms_v_int',
declarations.multiset_traits,
"multiset< std::vector< int > >")
"multiset<std::vector<int>>")
self.__cmp_traits(
'm_i2d',
declarations.map_traits,
"map< int, double >",
"map<int, double>",
'int')
self.__cmp_traits(
'mm_i2d',
declarations.multimap_traits,
"multimap< int, double >",
"multimap<int, double>",
'int')

if self.xml_generator_from_xml_file.is_castxml:
self.__cmp_traits(
'hs_v_int',
declarations.unordered_set_traits,
"unordered_set< std::vector< int > >")
"unordered_set<std::vector<int>>")
else:
self.__cmp_traits(
'hs_v_int',
declarations.hash_set_traits,
"hash_set< std::vector< int > >")
"hash_set<std::vector<int>>")

if self.xml_generator_from_xml_file.is_castxml:
self.__cmp_traits(
'mhs_v_int',
declarations.unordered_multiset_traits,
"unordered_multiset< std::vector< int > >")
"unordered_multiset<std::vector<int>>")
else:
self.__cmp_traits(
'mhs_v_int',
declarations.hash_multiset_traits,
"hash_multiset< std::vector< int > >")
"hash_multiset<std::vector<int>>")

if self.xml_generator_from_xml_file.is_castxml:
self.__cmp_traits(
'hm_i2d',
declarations.unordered_map_traits,
"unordered_map< int, double >",
"unordered_map<int, double>",
'int')
else:
self.__cmp_traits(
'hm_i2d',
declarations.hash_map_traits,
"hash_map< int, double >",
"hash_map<int, double>",
'int')

if self.xml_generator_from_xml_file.is_castxml:
self.__cmp_traits(
'hmm_i2d',
declarations.unordered_multimap_traits,
"unordered_multimap< int, double >",
"unordered_multimap<int, double>",
'int')
else:
self.__cmp_traits(
'hmm_i2d',
declarations.hash_multimap_traits,
"hash_multimap< int, double >",
"hash_multimap<int, double>",
'int')

def test_multimap(self):
m = self.global_ns.class_(
lambda decl: decl.name.startswith('multimap'))
declarations.find_container_traits(m)
self.assertTrue(m.partial_name == 'multimap< int, int >')
self.assertTrue(m.partial_name == 'multimap<int, int>')

def test_recursive_partial_name(self):
f1 = self.global_ns.free_function('f1')
t1 = declarations.class_traits.get_declaration(
f1.arguments[0].decl_type)
self.assertTrue(
'type< std::set< std::vector< int > > >' == t1.partial_name)
'type<std::set<std::vector<int>>>' == t1.partial_name)

def test_remove_defaults_partial_name_namespace(self):
f2 = self.global_ns.free_function('f2')
Expand All @@ -182,7 +182,7 @@ def test_from_ogre():
'map<std::string, bool (*)(std::string&, ' +
'Ogre::MaterialScriptContext&), std::less<std::string>, ' +
'std::allocator<std::pair<std::string const, bool (*)' +
'(std::string&, Ogre::MaterialScriptContext&)> > >')
'(std::string&, Ogre::MaterialScriptContext&)>>>')
ct = declarations.find_container_traits(x)
ct.remove_defaults(x)

Expand Down
Loading

0 comments on commit 9f4efce

Please sign in to comment.