~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_config.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2010-07-16 20:52:54 UTC
  • mfrom: (5193.5.9 cleanup)
  • Revision ID: pqm@pqm.ubuntu.com-20100716205254-j0m65wckb90rj54w
(vila) Cleanup some bogus rest constructs in the doc. (Vincent Ladeuil)

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
 
320
334
    def setUp(self):
321
335
        super(TestConfigPath, self).setUp()
322
336
        os.environ['HOME'] = '/home/bogus'
 
337
        os.environ['XDG_CACHE_DIR'] = ''
323
338
        if sys.platform == 'win32':
324
339
            os.environ['BZR_HOME'] = \
325
340
                r'C:\Documents and Settings\bogus\Application Data'
347
362
        self.assertEqual(config.authentication_config_filename(),
348
363
                         self.bzr_home + '/authentication.conf')
349
364
 
 
365
    def test_xdg_cache_dir(self):
 
366
        self.assertEqual(config.xdg_cache_dir(),
 
367
            '/home/bogus/.cache')
 
368
 
350
369
 
351
370
class TestIniConfig(tests.TestCase):
352
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
 
353
380
    def test_contructs(self):
354
381
        my_config = config.IniBasedConfig("nothing")
355
382
 
366
393
        parser = my_config._get_parser(file=config_file)
367
394
        self.failUnless(my_config._get_parser() is parser)
368
395
 
 
396
 
 
397
class TestGetUserOptionAs(TestIniConfig):
 
398
 
369
399
    def test_get_user_option_as_bool(self):
370
 
        config_file = StringIO("""
 
400
        conf, parser = self.make_config_parser("""
371
401
a_true_bool = true
372
402
a_false_bool = 0
373
403
an_invalid_bool = maybe
374
 
a_list = hmm, who knows ? # This interpreted as a list !
375
 
""".encode('utf-8'))
376
 
        my_config = config.IniBasedConfig(None)
377
 
        parser = my_config._get_parser(file=config_file)
378
 
        get_option = my_config.get_user_option_as_bool
379
 
        self.assertEqual(True, get_option('a_true_bool'))
380
 
        self.assertEqual(False, get_option('a_false_bool'))
381
 
        self.assertIs(None, get_option('an_invalid_bool'))
382
 
        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
        warnings = []
 
410
        def warning(*args):
 
411
            warnings.append(args[0] % args[1:])
 
412
        self.overrideAttr(trace, 'warning', warning)
 
413
        msg = 'Value "%s" is not a boolean for "%s"'
 
414
        self.assertIs(None, get_bool('an_invalid_bool'))
 
415
        self.assertEquals(msg % ('maybe', 'an_invalid_bool'), warnings[0])
 
416
        warnings = []
 
417
        self.assertIs(None, get_bool('not_defined_in_this_config'))
 
418
        self.assertEquals([], warnings)
 
419
 
 
420
    def test_get_user_option_as_list(self):
 
421
        conf, parser = self.make_config_parser("""
 
422
a_list = a,b,c
 
423
length_1 = 1,
 
424
one_item = x
 
425
""")
 
426
        get_list = conf.get_user_option_as_list
 
427
        self.assertEqual(['a', 'b', 'c'], get_list('a_list'))
 
428
        self.assertEqual(['1'], get_list('length_1'))
 
429
        self.assertEqual('x', conf.get_user_option('one_item'))
 
430
        # automatically cast to list
 
431
        self.assertEqual(['x'], get_list('one_item'))
 
432
 
 
433
 
 
434
class TestSupressWarning(TestIniConfig):
 
435
 
 
436
    def make_warnings_config(self, s):
 
437
        conf, parser = self.make_config_parser(s)
 
438
        return conf.suppress_warning
 
439
 
 
440
    def test_suppress_warning_unknown(self):
 
441
        suppress_warning = self.make_warnings_config('')
 
442
        self.assertEqual(False, suppress_warning('unknown_warning'))
 
443
 
 
444
    def test_suppress_warning_known(self):
 
445
        suppress_warning = self.make_warnings_config('suppress_warnings=a,b')
 
446
        self.assertEqual(False, suppress_warning('c'))
 
447
        self.assertEqual(True, suppress_warning('a'))
 
448
        self.assertEqual(True, suppress_warning('b'))
 
449
 
383
450
 
384
451
class TestGetConfig(tests.TestCase):
385
452
 
620
687
        my_config = self._get_sample_config()
621
688
        self.assertEqual(sample_long_alias, my_config.get_alias('ll'))
622
689
 
 
690
    def test_get_change_editor(self):
 
691
        my_config = self._get_sample_config()
 
692
        change_editor = my_config.get_change_editor('old', 'new')
 
693
        self.assertIs(diff.DiffFromTool, change_editor.__class__)
 
694
        self.assertEqual('vimdiff -of @new_path @old_path',
 
695
                         ' '.join(change_editor.command_template))
 
696
 
 
697
    def test_get_no_change_editor(self):
 
698
        my_config = self._get_empty_config()
 
699
        change_editor = my_config.get_change_editor('old', 'new')
 
700
        self.assertIs(None, change_editor)
 
701
 
623
702
 
624
703
class TestGlobalConfigSavingOptions(tests.TestCaseInTempDir):
625
704
 
1569
1648
        self.assertEquals(entered_password,
1570
1649
                          conf.get_password('ssh', 'bar.org', user='jim'))
1571
1650
        self.assertContainsRe(
1572
 
            self._get_log(keep_log_file=True),
 
1651
            self.get_log(),
1573
1652
            'password ignored in section \[ssh with password\]')
1574
1653
 
1575
1654
    def test_ssh_without_password_doesnt_emit_warning(self):
1594
1673
        # No warning shoud be emitted since there is no password. We are only
1595
1674
        # providing "user".
1596
1675
        self.assertNotContainsRe(
1597
 
            self._get_log(keep_log_file=True),
 
1676
            self.get_log(),
1598
1677
            'password ignored in section \[ssh with password\]')
1599
1678
 
1600
1679
    def test_uses_fallback_stores(self):
1601
 
        self._old_cs_registry = config.credential_store_registry
1602
 
        def restore():
1603
 
            config.credential_store_registry = self._old_cs_registry
1604
 
        self.addCleanup(restore)
1605
 
        config.credential_store_registry = config.CredentialStoreRegistry()
 
1680
        self.overrideAttr(config, 'credential_store_registry',
 
1681
                          config.CredentialStoreRegistry())
1606
1682
        store = StubCredentialStore()
1607
1683
        store.add_credentials("http", "example.com", "joe", "secret")
1608
1684
        config.credential_store_registry.register("stub", store, fallback=True)