diff options
author | Simon Feltman <sfeltman@src.gnome.org> | 2013-12-29 05:29:24 -0800 |
---|---|---|
committer | Simon Feltman <sfeltman@src.gnome.org> | 2014-06-03 13:06:32 -0700 |
commit | a882381f83f0acc6aaf7bfa03e1faa1c41a7ba00 (patch) | |
tree | b697160893d04f93a805f6ddd82cd66758834409 /tests/scanner/test_transformer.py | |
parent | dd0af8ef0145b1b1a323b06206c8e5528c6f8e1c (diff) | |
download | gobject-introspection-a882381f83f0acc6aaf7bfa03e1faa1c41a7ba00.tar.gz |
scanner: Add --identifier-filter-cmd
Add the command line flag --identifier-filter-cmd to g-ir-scanner which
allows running identifier names through a filtering shell command. The
identifier is sent as stdin to the filter command and expects a filtered
result written to stdout.
https://bugzilla.gnome.org/show_bug.cgi?706898
Diffstat (limited to 'tests/scanner/test_transformer.py')
-rw-r--r-- | tests/scanner/test_transformer.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/scanner/test_transformer.py b/tests/scanner/test_transformer.py index 39c54a4d..37dbce91 100644 --- a/tests/scanner/test_transformer.py +++ b/tests/scanner/test_transformer.py @@ -36,6 +36,36 @@ def load_namespace_from_source_string(namespace, source): xformer.parse(ss.get_symbols()) +class TestIdentifierFilter(unittest.TestCase): + def test_underscore_t_sed_filter(self): + cmd = r"sed " \ + r"-e 's/^test_t$/TestContext/' " \ + r"-e 's/\(.*\)_t$/\1/' " \ + r"-e 's/^test_/Test_/' " \ + r"-e 's/_\([a-z]\)/\u\1/g'" + + namespace = ast.Namespace('Test', '1.0') + xformer = Transformer(namespace, identifier_filter_cmd=cmd) + + self.assertEqual(xformer.strip_identifier('test_t'), 'Context') + self.assertEqual(xformer.strip_identifier('test_foo_t'), 'Foo') + self.assertEqual(xformer.strip_identifier('test_foot'), 'Foot') + self.assertEqual(xformer.strip_identifier('test_foo_bart'), 'FooBart') + self.assertEqual(xformer.strip_identifier('test_foo_tart'), 'FooTart') + + def test_invalid_command(self): + cmd = r'this-is-not-a-real-command' + namespace = ast.Namespace('Test', '1.0') + xformer = Transformer(namespace, identifier_filter_cmd=cmd) + self.assertRaises(ValueError, xformer.strip_identifier, 'test_t') + + def test_invalid_argument(self): + cmd = r'sed --not-a-valid-argument' + namespace = ast.Namespace('Test', '1.0') + xformer = Transformer(namespace, identifier_filter_cmd=cmd) + self.assertRaises(ValueError, xformer.strip_identifier, 'test_t') + + class TestStructTypedefs(unittest.TestCase): def setUp(self): # Hack to set logging singleton |