~xnox/ubuntu-dev-tools/py3k

« back to all changes in this revision

Viewing changes to ubuntutools/test/test_config.py

  • Committer: Dimitri John Ledkov
  • Date: 2014-12-19 22:37:04 UTC
  • mfrom: (1421.1.33 ubuntu-dev-tools)
  • Revision ID: dimitri.j.ledkov@intel.com-20141219223704-bi23kp10gcfl6wht
Port ubuntutools module to python3.

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16
16
# PERFORMANCE OF THIS SOFTWARE.
17
17
 
18
 
import __builtin__
 
18
try:
 
19
    import builtins
 
20
except ImportError:
 
21
    import __builtin__
19
22
import os
20
23
import sys
21
24
import locale
22
 
from StringIO import StringIO
 
25
try:
 
26
    from StringIO import StringIO
 
27
except:
 
28
    from io import StringIO
23
29
 
24
 
import mox
 
30
import mock
25
31
 
26
32
from ubuntutools.config import UDTConfig, ubu_email
27
33
from ubuntutools.logger import Logger
28
34
from ubuntutools.test import unittest
29
35
 
30
 
class ConfigTestCase(mox.MoxTestBase, unittest.TestCase):
 
36
class ConfigTestCase(unittest.TestCase):
31
37
    _config_files = {
32
38
        'system': '',
33
39
        'user': '',
46
52
 
47
53
    def setUp(self):
48
54
        super(ConfigTestCase, self).setUp()
49
 
        self.mox.stubs.Set(__builtin__, 'open', self._fake_open)
 
55
        if sys.version_info[0] < 3:
 
56
            self.assertRegex = self.assertRegexpMatches
 
57
        m = mock.mock_open()
 
58
        m.side_effect = self._fake_open
 
59
        if sys.version_info[0] >= 3:
 
60
            target = 'builtins.open'
 
61
        else:
 
62
            target = '__builtin__.open'
 
63
        patcher = mock.patch(target, m)
 
64
        self.addCleanup(patcher.stop)
 
65
        patcher.start()
 
66
        
50
67
        Logger.stdout = StringIO()
51
68
        Logger.stderr = StringIO()
52
69
 
63
80
    def clean_environment(self):
64
81
        self._config_files['system'] = ''
65
82
        self._config_files['user'] = ''
66
 
        for k in os.environ.keys():
 
83
        for k in list(os.environ.keys()):
67
84
            if k.startswith(('UBUNTUTOOLS_', 'TEST_')):
68
85
                del os.environ[k]
69
86
 
97
114
        errs = Logger.stderr.getvalue().strip()
98
115
        Logger.stderr = StringIO()
99
116
        self.assertEqual(len(errs.splitlines()), 1)
100
 
        self.assertRegexpMatches(errs,
101
 
                                r'Warning: Cannot parse.*\bCOMMAND_EXECUTION=a')
 
117
        self.assertRegex(errs,
 
118
                         r'Warning: Cannot parse.*\bCOMMAND_EXECUTION=a')
102
119
 
103
120
    def get_value(self, *args, **kwargs):
104
121
        config = UDTConfig(prefix='TEST')
137
154
        errs = Logger.stderr.getvalue().strip()
138
155
        Logger.stderr = StringIO()
139
156
        self.assertEqual(len(errs.splitlines()), 1)
140
 
        self.assertRegexpMatches(errs,
141
 
                                 r'deprecated.*\bCOMPATFOOBAR\b.*\bTEST_QUX\b')
 
157
        self.assertRegex(errs,
 
158
                         r'deprecated.*\bCOMPATFOOBAR\b.*\bTEST_QUX\b')
142
159
 
143
160
    def test_boolean(self):
144
161
        self._config_files['user'] = "TEST_BOOLEAN=yes"
150
167
 
151
168
    def test_nonpackagewide(self):
152
169
        self._config_files['user'] = 'UBUNTUTOOLS_FOOBAR=a'
153
 
        self.assertEquals(self.get_value('FOOBAR'), None)
 
170
        self.assertEqual(self.get_value('FOOBAR'), None)
154
171
 
155
172
 
156
173
class UbuEmailTestCase(unittest.TestCase):
217
234
        encoding = locale.getdefaultlocale()[1]
218
235
        if not encoding:
219
236
            encoding = 'utf-8'
220
 
        name = 'Jöe Déveloper'.decode('utf-8')
221
 
        os.environ['DEBFULLNAME'] = name.encode(encoding)
 
237
        name = 'Jöe Déveloper'
 
238
        env_name = name
 
239
        if isinstance(name, bytes):
 
240
            name = 'Jöe Déveloper'.decode('utf-8')
 
241
            env_name = name.encode(encoding)
 
242
        os.environ['DEBFULLNAME'] = env_name
222
243
        os.environ['DEBEMAIL']    = email = 'joe@example.net'
223
244
        self.assertEqual(ubu_email(), (name, email))