/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_options.py

  • Committer: Martin von Gagern
  • Date: 2010-04-20 08:47:38 UTC
  • mfrom: (5167 +trunk)
  • mto: This revision was merged to the branch mainline in revision 5195.
  • Revision ID: martin.vgagern@gmx.net-20100420084738-ygymnqmdllzrhpfn
merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
import re
18
18
 
42
42
        # to cmd_commit, when they are meant to be about option parsing in
43
43
        # general.
44
44
        self.assertEqual(parse_args(cmd_commit(), ['--help']),
45
 
           ([], {'exclude': [], 'fixes': [], 'help': True}))
 
45
           ([], {'author': [], 'exclude': [], 'fixes': [], 'help': True}))
46
46
        self.assertEqual(parse_args(cmd_commit(), ['--message=biter']),
47
 
           ([], {'exclude': [], 'fixes': [], 'message': 'biter'}))
 
47
           ([], {'author': [], 'exclude': [], 'fixes': [], 'message': 'biter'}))
48
48
 
49
49
    def test_no_more_opts(self):
50
50
        """Terminated options"""
51
51
        self.assertEqual(parse_args(cmd_commit(), ['--', '-file-with-dashes']),
52
 
                          (['-file-with-dashes'], {'exclude': [], 'fixes': []}))
 
52
                          (['-file-with-dashes'], {'author': [], 'exclude': [], 'fixes': []}))
53
53
 
54
54
    def test_option_help(self):
55
55
        """Options have help strings."""
102
102
        self.assertRaises(errors.BzrCommandError, self.parse, options,
103
103
                          ['--no-number'])
104
104
 
 
105
    def test_is_hidden(self):
 
106
        self.assertTrue(option.Option('foo', hidden=True).is_hidden('foo'))
 
107
        self.assertFalse(option.Option('foo', hidden=False).is_hidden('foo'))
 
108
 
105
109
    def test_registry_conversion(self):
106
110
        registry = bzrdir.BzrDirFormatRegistry()
107
111
        registry.register_metadir('one', 'RepositoryFormat7', 'one help')
151
155
        self.assertIsInstance(opts.format.repository_format,
152
156
                              knitrepo.RepositoryFormatKnit1)
153
157
 
 
158
    def test_lazy_registry(self):
 
159
        options = [option.RegistryOption('format', '',
 
160
                   lazy_registry=('bzrlib.bzrdir','format_registry'),
 
161
                   converter=str)]
 
162
        opts, args = self.parse(options, ['--format', 'knit'])
 
163
        self.assertEqual({'format': 'knit'}, opts)
 
164
        self.assertRaises(
 
165
            errors.BadOptionValue, self.parse, options, ['--format', 'BAD'])
 
166
 
154
167
    def test_from_kwargs(self):
155
168
        my_option = option.RegistryOption.from_kwargs('my-option',
156
169
            help='test option', short='be short', be_long='go long')
318
331
 
319
332
    def get_builtin_command_options(self):
320
333
        g = []
321
 
        for cmd_name, cmd_class in sorted(commands.get_all_cmds()):
322
 
            cmd = cmd_class()
 
334
        for cmd_name in sorted(commands.all_command_names()):
 
335
            cmd = commands.get_cmd_object(cmd_name)
323
336
            for opt_name, opt in sorted(cmd.options().items()):
324
337
                g.append((cmd_name, opt))
325
338
        return g
332
345
        g = dict(option.Option.OPTIONS.items())
333
346
        used_globals = {}
334
347
        msgs = []
335
 
        for cmd_name, cmd_class in sorted(commands.get_all_cmds()):
336
 
            for option_or_name in sorted(cmd_class.takes_options):
 
348
        for cmd_name in sorted(commands.all_command_names()):
 
349
            cmd = commands.get_cmd_object(cmd_name)
 
350
            for option_or_name in sorted(cmd.takes_options):
337
351
                if not isinstance(option_or_name, basestring):
338
352
                    self.assertIsInstance(option_or_name, option.Option)
339
353
                elif not option_or_name in g:
340
354
                    msgs.append("apparent reference to undefined "
341
355
                        "global option %r from %r"
342
 
                        % (option_or_name, cmd_class))
 
356
                        % (option_or_name, cmd))
343
357
                else:
344
358
                    used_globals.setdefault(option_or_name, []).append(cmd_name)
345
359
        unused_globals = set(g.keys()) - set(used_globals.keys())
360
374
        # period and be all on a single line, because the display code will
361
375
        # wrap it.
362
376
        option_re = re.compile(r'^[A-Z][^\n]+\.$')
363
 
        for scope, option in self.get_builtin_command_options():
364
 
            if not option.help:
365
 
                msgs.append('%-16s %-16s %s' %
366
 
                       ((scope or 'GLOBAL'), option.name, 'NO HELP'))
367
 
            elif not option_re.match(option.help):
368
 
                msgs.append('%-16s %-16s %s' %
369
 
                        ((scope or 'GLOBAL'), option.name, option.help))
 
377
        for scope, opt in self.get_builtin_command_options():
 
378
            if not opt.help:
 
379
                msgs.append('%-16s %-16s %s' %
 
380
                       ((scope or 'GLOBAL'), opt.name, 'NO HELP'))
 
381
            elif not option_re.match(opt.help):
 
382
                msgs.append('%-16s %-16s %s' %
 
383
                        ((scope or 'GLOBAL'), opt.name, opt.help))
370
384
        if msgs:
371
385
            self.fail("The following options don't match the style guide:\n"
372
386
                    + '\n'.join(msgs))