# HG changeset patch # User fschwarz # Date 1345715301 0 # Node ID 6dc7e067bafc249a8f76cb942ff1780c5c435ebf # Parent bf5d10a56bbecdc5f0fc002ecade8497e45b5e5b fix 'input_dirs' option for setuptools integration (#232, initial patch by ?tienne Bersac) diff --git a/ChangeLog b/ChangeLog --- 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 diff --git a/babel/messages/frontend.py b/babel/messages/frontend.py --- 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() diff --git a/babel/messages/tests/frontend.py b/babel/messages/tests/frontend.py --- 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'