changeset 605:6dc7e067bafc trunk

fix 'input_dirs' option for setuptools integration (#232, initial patch by ?tienne Bersac)
author fschwarz
date Thu, 23 Aug 2012 09:48:21 +0000
parents bf5d10a56bbe
children c5dd3752bf2a
files ChangeLog babel/messages/frontend.py babel/messages/tests/frontend.py
diffstat 3 files changed, 27 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -55,6 +55,8 @@
  * add babel.support.NullTranslations class similar to gettext.NullTranslations
    but with all of Babel's new *gettext methods (#277)
  * "init" and "update" commands support "--width" option (#284)
+ * fix 'input_dirs' option for setuptools integration (#232, initial patch by 
+   Étienne Bersac)
 
 
 Version 0.9.6
--- a/babel/messages/frontend.py
+++ b/babel/messages/frontend.py
@@ -23,6 +23,7 @@
 import logging
 from optparse import OptionParser
 import os
+import re
 import shutil
 from StringIO import StringIO
 import sys
@@ -224,7 +225,8 @@
         ('strip-comments', None,
          'strip the comment TAGs from the comments.'),
         ('input-dirs=', None,
-         'directories that should be scanned for messages'),
+         'directories that should be scanned for messages. Separate multiple '
+         'directories with commas(,)'),
     ]
     boolean_options = [
         'no-default-keywords', 'no-location', 'omit-header', 'no-wrap',
@@ -274,7 +276,9 @@
             raise DistutilsOptionError("'--sort-output' and '--sort-by-file' "
                                        "are mutually exclusive")
 
-        if not self.input_dirs:
+        if self.input_dirs:
+            self.input_dirs = re.split(',\s*', self.input_dirs)
+        else:
             self.input_dirs = dict.fromkeys([k.split('.',1)[0]
                 for k in self.distribution.packages
             ]).keys()
--- a/babel/messages/tests/frontend.py
+++ b/babel/messages/tests/frontend.py
@@ -28,6 +28,7 @@
 from babel.dates import format_datetime
 from babel.messages import frontend
 from babel.util import LOCALTZ
+from babel.messages.pofile import read_po
 
 
 this_dir = os.path.abspath(os.path.dirname(__file__))
@@ -108,6 +109,24 @@
         self.cmd.sort_by_file = True
         self.assertRaises(DistutilsOptionError, self.cmd.finalize_options)
 
+    def test_input_dirs_is_treated_as_list(self):
+        self.cmd.input_dirs = self.datadir
+        self.cmd.output_file = self._pot_file()
+        self.cmd.finalize_options()
+        self.cmd.run()
+        
+        catalog = read_po(open(self._pot_file(), 'U'))
+        msg = catalog.get('bar')
+        self.assertEqual(1, len(msg.locations))
+        self.assertTrue('file1.py' in msg.locations[0][0])
+
+    def test_input_dirs_handle_spaces_after_comma(self):
+        self.cmd.input_dirs = 'foo,  bar'
+        self.cmd.output_file = self._pot_file()
+        self.cmd.finalize_options()
+        
+        self.assertEqual(['foo', 'bar'], self.cmd.input_dirs)
+
     def test_extraction_with_default_mapping(self):
         self.cmd.copyright_holder = 'FooBar, Inc.'
         self.cmd.msgid_bugs_address = 'bugs.address@email.tld'
Copyright (C) 2012-2017 Edgewall Software