Add tests for Babel plugin
diff --git a/setup.py b/setup.py
index 0094901..a62a301 100644
--- a/setup.py
+++ b/setup.py
@@ -47,7 +47,7 @@
       url='http://www.makotemplates.org/',
       license='MIT',
       packages=find_packages('.', exclude=['examples*', 'test*']),
-      tests_require=['nose >= 0.11', 'mock'],
+      tests_require=['nose >= 0.11', 'mock', 'Babel'],
       test_suite="nose.collector",
       zip_safe=False,
       install_requires=install_requires,
diff --git a/test/ext/__init__.py b/test/ext/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/ext/__init__.py
diff --git a/test/ext/test_babelplugin.py b/test/ext/test_babelplugin.py
new file mode 100644
index 0000000..e4b78d2
--- /dev/null
+++ b/test/ext/test_babelplugin.py
@@ -0,0 +1,48 @@
+import io
+import mock
+import unittest
+from mako.ext.babelplugin import _split_comment
+from mako.ext.babelplugin import extract
+from mako.ext.babelplugin import extract_nodes
+
+
+class Test_extract(unittest.TestCase):
+    def test_parse_and_invoke_extract_nodes(self):
+        input = io.BytesIO(b'<p>Hello world</p>')
+        with mock.patch('mako.ext.babelplugin.extract_nodes') as extract_nodes:
+            list(extract(input, [], [], {}))
+            extract_nodes.assert_called_once_with([mock.ANY], [], [], {})
+            self.assertEqual(
+                    extract_nodes.mock_calls[0][1][0][0].content,
+                    u'<p>Hello world</p>')
+
+    def test_parse_python_expression(self):
+        input = io.BytesIO(b'<p>${_("Message")}</p>')
+        messages = list(extract(input, ['_'], [], {}))
+        self.assertEqual(messages, [(1, '_', u'Message', [])])
+
+    def test_python_gettext_call(self):
+        input = io.BytesIO(b'<p>${_("Message")}</p>')
+        messages = list(extract(input, ['_'], [], {}))
+        self.assertEqual(messages, [(1, '_', u'Message', [])])
+
+    def test_translator_comment(self):
+        input = io.BytesIO(b'''
+        <p>
+          ## TRANSLATORS: This is a comment.
+          ${_("Message")}
+        </p>''')
+        messages = list(extract(input, ['_'], ['TRANSLATORS:'], {}))
+        self.assertEqual(
+                messages,
+                [(4, '_', u'Message', [u'TRANSLATORS: This is a comment.'])])
+
+
+class Test_split_comment(unittest.TestCase):
+    def test_empty_input(self):
+        self.assertEqual(_split_comment(1, ''), [])
+
+    def test_multiple_lines(self):
+        self.assertEqual(
+                _split_comment(5, 'one\ntwo\nthree'),
+                [(5, 'one'), (6, 'two'), (7, 'three')])