~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_config.py

  • Committer: John Arbash Meinel
  • Date: 2010-02-17 17:11:16 UTC
  • mfrom: (4797.2.17 2.1)
  • mto: (4797.2.18 2.1)
  • mto: This revision was merged to the branch mainline in revision 5055.
  • Revision ID: john@arbash-meinel.com-20100217171116-h7t9223ystbnx5h8
merge bzr.2.1 in preparation for NEWS entry.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005, 2006, 2008, 2009 Canonical Ltd
 
1
# Copyright (C) 2005-2010 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
25
25
    branch,
26
26
    bzrdir,
27
27
    config,
 
28
    diff,
28
29
    errors,
29
30
    osutils,
30
31
    mail_client,
42
43
[DEFAULT]
43
44
email=Erik B\u00e5gfors <erik@bagfors.nu>
44
45
editor=vim
 
46
change_editor=vimdiff -of @new_path @old_path
45
47
gpg_signing_command=gnome-gpg
46
48
log_format=short
47
49
user_global_option=something
208
210
        self._calls.append('_get_signature_checking')
209
211
        return self._signatures
210
212
 
 
213
    def _get_change_editor(self):
 
214
        self._calls.append('_get_change_editor')
 
215
        return 'vimdiff -fo @new_path @old_path'
 
216
 
211
217
 
212
218
bool_config = """[DEFAULT]
213
219
active = true
314
320
        my_config = config.Config()
315
321
        self.assertEqual('long', my_config.log_format())
316
322
 
 
323
    def test_get_change_editor(self):
 
324
        my_config = InstrumentedConfig()
 
325
        change_editor = my_config.get_change_editor('old_tree', 'new_tree')
 
326
        self.assertEqual(['_get_change_editor'], my_config._calls)
 
327
        self.assertIs(diff.DiffFromTool, change_editor.__class__)
 
328
        self.assertEqual(['vimdiff', '-fo', '@new_path', '@old_path'],
 
329
                         change_editor.command_template)
 
330
 
317
331
 
318
332
class TestConfigPath(tests.TestCase):
319
333
 
355
369
 
356
370
class TestIniConfig(tests.TestCase):
357
371
 
 
372
    def make_config_parser(self, s):
 
373
        conf = config.IniBasedConfig(None)
 
374
        parser = conf._get_parser(file=StringIO(s.encode('utf-8')))
 
375
        return conf, parser
 
376
 
 
377
 
 
378
class TestIniConfigBuilding(TestIniConfig):
 
379
 
358
380
    def test_contructs(self):
359
381
        my_config = config.IniBasedConfig("nothing")
360
382
 
371
393
        parser = my_config._get_parser(file=config_file)
372
394
        self.failUnless(my_config._get_parser() is parser)
373
395
 
 
396
 
 
397
class TestGetUserOptionAs(TestIniConfig):
 
398
 
374
399
    def test_get_user_option_as_bool(self):
375
 
        config_file = StringIO("""
 
400
        conf, parser = self.make_config_parser("""
376
401
a_true_bool = true
377
402
a_false_bool = 0
378
403
an_invalid_bool = maybe
379
 
a_list = hmm, who knows ? # This interpreted as a list !
380
 
""".encode('utf-8'))
381
 
        my_config = config.IniBasedConfig(None)
382
 
        parser = my_config._get_parser(file=config_file)
383
 
        get_option = my_config.get_user_option_as_bool
384
 
        self.assertEqual(True, get_option('a_true_bool'))
385
 
        self.assertEqual(False, get_option('a_false_bool'))
386
 
        self.assertIs(None, get_option('an_invalid_bool'))
387
 
        self.assertIs(None, get_option('not_defined_in_this_config'))
 
404
a_list = hmm, who knows ? # This is interpreted as a list !
 
405
""")
 
406
        get_bool = conf.get_user_option_as_bool
 
407
        self.assertEqual(True, get_bool('a_true_bool'))
 
408
        self.assertEqual(False, get_bool('a_false_bool'))
 
409
        self.assertIs(None, get_bool('an_invalid_bool'))
 
410
        self.assertIs(None, get_bool('not_defined_in_this_config'))
 
411
 
 
412
 
 
413
    def test_get_user_option_as_list(self):
 
414
        conf, parser = self.make_config_parser("""
 
415
a_list = a,b,c
 
416
length_1 = 1,
 
417
one_item = x
 
418
""")
 
419
        get_list = conf.get_user_option_as_list
 
420
        self.assertEqual(['a', 'b', 'c'], get_list('a_list'))
 
421
        self.assertEqual(['1'], get_list('length_1'))
 
422
        self.assertEqual('x', conf.get_user_option('one_item'))
 
423
        # automatically cast to list
 
424
        self.assertEqual(['x'], get_list('one_item'))
 
425
 
 
426
 
 
427
class TestSupressWarning(TestIniConfig):
 
428
 
 
429
    def make_warnings_config(self, s):
 
430
        conf, parser = self.make_config_parser(s)
 
431
        return conf.suppress_warning
 
432
 
 
433
    def test_suppress_warning_unknown(self):
 
434
        suppress_warning = self.make_warnings_config('')
 
435
        self.assertEqual(False, suppress_warning('unknown_warning'))
 
436
 
 
437
    def test_suppress_warning_known(self):
 
438
        suppress_warning = self.make_warnings_config('suppress_warnings=a,b')
 
439
        self.assertEqual(False, suppress_warning('c'))
 
440
        self.assertEqual(True, suppress_warning('a'))
 
441
        self.assertEqual(True, suppress_warning('b'))
 
442
 
388
443
 
389
444
class TestGetConfig(tests.TestCase):
390
445
 
625
680
        my_config = self._get_sample_config()
626
681
        self.assertEqual(sample_long_alias, my_config.get_alias('ll'))
627
682
 
 
683
    def test_get_change_editor(self):
 
684
        my_config = self._get_sample_config()
 
685
        change_editor = my_config.get_change_editor('old', 'new')
 
686
        self.assertIs(diff.DiffFromTool, change_editor.__class__)
 
687
        self.assertEqual('vimdiff -of @new_path @old_path',
 
688
                         ' '.join(change_editor.command_template))
 
689
 
 
690
    def test_get_no_change_editor(self):
 
691
        my_config = self._get_empty_config()
 
692
        change_editor = my_config.get_change_editor('old', 'new')
 
693
        self.assertIs(None, change_editor)
 
694
 
628
695
 
629
696
class TestGlobalConfigSavingOptions(tests.TestCaseInTempDir):
630
697
 
1574
1641
        self.assertEquals(entered_password,
1575
1642
                          conf.get_password('ssh', 'bar.org', user='jim'))
1576
1643
        self.assertContainsRe(
1577
 
            self._get_log(keep_log_file=True),
 
1644
            self.get_log(),
1578
1645
            'password ignored in section \[ssh with password\]')
1579
1646
 
1580
1647
    def test_ssh_without_password_doesnt_emit_warning(self):
1599
1666
        # No warning shoud be emitted since there is no password. We are only
1600
1667
        # providing "user".
1601
1668
        self.assertNotContainsRe(
1602
 
            self._get_log(keep_log_file=True),
 
1669
            self.get_log(),
1603
1670
            'password ignored in section \[ssh with password\]')
1604
1671
 
1605
1672
    def test_uses_fallback_stores(self):