/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/selftest/testconfig.py

  • Committer: Robert Collins
  • Date: 2005-10-11 07:00:25 UTC
  • mto: This revision was merged to the branch mainline in revision 1443.
  • Revision ID: robertc@robertcollins.net-20051011070025-bac6b53cb6186dfd
create a config module - there is enough config logic to make this worthwhile, and start testing config processing.

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 
18
18
"""Tests for finding and reading the bzr config file[s]."""
19
19
# import system imports here
 
20
from ConfigParser import ConfigParser
 
21
from cStringIO import StringIO
20
22
import os
21
23
import sys
22
24
 
25
27
from bzrlib.selftest import TestCase, TestCaseInTempDir
26
28
 
27
29
 
 
30
sample_config_text = ("[DEFAULT]\n"
 
31
                      "email=Robert Collins <robertc@example.com>\n"
 
32
                      "editor=vim\n"
 
33
                      "gpg_signing_command=gnome-gpg\n")
 
34
 
 
35
class InstrumentedConfigParser(object):
 
36
    """A config parser look-enough-alike to record calls made to it."""
 
37
 
 
38
    def __init__(self):
 
39
        self._calls = []
 
40
 
 
41
    def read(self, filenames):
 
42
        self._calls.append(('read', filenames))
 
43
 
 
44
 
28
45
class TestConfigPath(TestCase):
29
46
 
 
47
    def setUp(self):
 
48
        super(TestConfigPath, self).setUp()
 
49
        self.oldenv = os.environ.get('HOME', None)
 
50
        os.environ['HOME'] = '/home/bogus'
 
51
 
 
52
    def tearDown(self):
 
53
        os.environ['HOME'] = self.oldenv
 
54
    
30
55
    def test_config_dir(self):
31
 
        oldenv = os.environ.get('HOME', None)
32
 
        os.environ['HOME'] = '/home/bogus'
33
 
        self.assertEqual(config.config_dir(), '/home/bogus/.bazaar.conf')
 
56
        self.assertEqual(config.config_dir(), '/home/bogus/.bazaar')
 
57
 
 
58
    def test_config_filename(self):
 
59
        self.assertEqual(config.config_filename(),
 
60
                         '/home/bogus/.bazaar/bazaar.conf')
 
61
 
 
62
 
 
63
class TestGetConfig(TestCase):
 
64
 
 
65
    def test_from_fp(self):
 
66
        config_file = StringIO(sample_config_text)
 
67
        self.failUnless(isinstance(config._get_config_parser(file=config_file),
 
68
                        ConfigParser))
 
69
 
 
70
    def test_calls_read_filenames(self):
 
71
        # note the monkey patching. if config access was via a class instance,
 
72
        # we would not have to - if this changes in future, be sure to stop 
 
73
        # monkey patching RBC 20051011
 
74
        oldparserclass = config.ConfigParser
 
75
        config.ConfigParser = InstrumentedConfigParser
 
76
        try:
 
77
            parser = config._get_config_parser()
 
78
        finally:
 
79
            config.ConfigParser = oldparserclass
 
80
        self.failUnless(isinstance(parser, InstrumentedConfigParser))
 
81
        self.assertEqual(parser._calls, [('read', [config.config_filename()])])
 
82
 
 
83
 
 
84
class TestConfigItems(TestCase):
 
85
 
 
86
    def setUp(self):
 
87
        super(TestConfigItems, self).setUp()
 
88
        self.bzr_email = os.environ.get('BZREMAIL')
 
89
        if self.bzr_email is not None:
 
90
            del os.environ['BZREMAIL']
 
91
        self.email = os.environ.get('EMAIL')
 
92
        if self.email is not None:
 
93
            del os.environ['EMAIL']
 
94
        self.oldenv = os.environ.get('HOME', None)
 
95
        os.environ['HOME'] = os.getcwd()
 
96
 
 
97
    def tearDown(self):
 
98
        os.environ['HOME'] = self.oldenv
 
99
        if self.bzr_email is not None:
 
100
            os.environ['BZREMAIL'] = bzr_email
 
101
        if self.email is not None:
 
102
            os.environ['EMAIL'] = email
 
103
        super(TestConfigItems, self).tearDown()
 
104
 
 
105
    def test_user_id(self):
 
106
        config_file = StringIO(sample_config_text)
 
107
        parser = config._get_config_parser(file=config_file)
 
108
        self.assertEqual("Robert Collins <robertc@example.com>",
 
109
                         config._get_user_id(parser = parser))
 
110
 
 
111
    def test_absent_user_id(self):
 
112
        config_file = StringIO("")
 
113
        parser = config._get_config_parser(file=config_file)
 
114
        self.assertEqual(None,
 
115
                         config._get_user_id(parser = parser))