summaryrefslogtreecommitdiff
path: root/tests/scanner/test_transformer.py
diff options
context:
space:
mode:
authorSimon Feltman <sfeltman@src.gnome.org>2013-12-29 05:29:24 -0800
committerSimon Feltman <sfeltman@src.gnome.org>2014-06-03 13:06:32 -0700
commita882381f83f0acc6aaf7bfa03e1faa1c41a7ba00 (patch)
treeb697160893d04f93a805f6ddd82cd66758834409 /tests/scanner/test_transformer.py
parentdd0af8ef0145b1b1a323b06206c8e5528c6f8e1c (diff)
downloadgobject-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.py30
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