/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/blackbox/test_whoami.py

  • Committer: Martin
  • Date: 2011-05-21 16:43:19 UTC
  • mto: This revision was merged to the branch mainline in revision 5907.
  • Revision ID: gzlist@googlemail.com-20110521164319-5ua6aoazejsvef0w
Avoid implicit str casting in trace methods by calling unicode() on conflict objects first

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006 Canonical Ltd
 
1
# Copyright (C) 2006, 2007, 2009, 2010, 2011 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
17
17
 
18
18
"""Black-box tests for bzr whoami."""
19
19
 
20
 
import os
21
 
 
22
20
import bzrlib
23
 
from bzrlib import osutils
24
 
from bzrlib.branch import Branch
25
 
from bzrlib.tests.blackbox import ExternalBase
26
 
 
27
 
 
28
 
class TestWhoami(ExternalBase):
 
21
from bzrlib import (
 
22
    config,
 
23
    )
 
24
from bzrlib.tests import TestCaseWithTransport
 
25
 
 
26
 
 
27
class TestWhoami(TestCaseWithTransport):
29
28
 
30
29
    def test_whoami(self):
31
30
        # this should always identify something, if only "john@localhost"
37
36
        self.assertTrue(len(out) > 0)
38
37
        self.assertEquals(1, out.count('@'))
39
38
 
 
39
    def test_whoami_email_arg(self):
 
40
        # whoami --email is mutually exclusive with any arguments
 
41
        out = self.run_bzr("whoami --email 'foo <foo@example.com>'", 3)[0]
 
42
        self.assertEquals("", out)
 
43
 
40
44
    def test_whoami_branch(self):
41
45
        """branch specific user identity works."""
42
46
        wt = self.make_branch_and_tree('.')
43
47
        b = bzrlib.branch.Branch.open('.')
44
48
        b.get_config().set_user_option('email',
45
49
                                       'Branch Identity <branch@identi.ty>')
46
 
        bzr_email = os.environ.get('BZR_EMAIL')
47
 
        if bzr_email is not None:
48
 
            del os.environ['BZR_EMAIL']
49
 
        try:
50
 
            whoami = self.run_bzr("whoami")[0]
51
 
            self.assertEquals('Branch Identity <branch@identi.ty>\n', whoami)
52
 
            whoami_email = self.run_bzr("whoami --email")[0]
53
 
            self.assertEquals('branch@identi.ty\n', whoami_email)
 
50
        whoami = self.run_bzr("whoami")[0]
 
51
        self.assertEquals('Branch Identity <branch@identi.ty>\n', whoami)
 
52
        whoami_email = self.run_bzr("whoami --email")[0]
 
53
        self.assertEquals('branch@identi.ty\n', whoami_email)
54
54
 
55
 
            # Verify that the environment variable overrides the value
56
 
            # in the file
57
 
            os.environ['BZR_EMAIL'] = 'Different ID <other@environ.ment>'
58
 
            whoami = self.run_bzr("whoami")[0]
59
 
            self.assertEquals('Different ID <other@environ.ment>\n', whoami)
60
 
            whoami_email = self.run_bzr("whoami --email")[0]
61
 
            self.assertEquals('other@environ.ment\n', whoami_email)
62
 
            del os.environ['BZR_EMAIL']
63
 
        finally:
64
 
            if bzr_email is not None:
65
 
                os.environ['BZR_EMAIL'] = bzr_email
 
55
        # Verify that the environment variable overrides the value
 
56
        # in the file
 
57
        self.overrideEnv('BZR_EMAIL', 'Different ID <other@environ.ment>')
 
58
        whoami = self.run_bzr("whoami")[0]
 
59
        self.assertEquals('Different ID <other@environ.ment>\n', whoami)
 
60
        whoami_email = self.run_bzr("whoami --email")[0]
 
61
        self.assertEquals('other@environ.ment\n', whoami_email)
66
62
 
67
63
    def test_whoami_utf8(self):
68
64
        """verify that an identity can be in utf-8."""
69
65
        wt = self.make_branch_and_tree('.')
70
66
        self.run_bzr(['whoami', u'Branch Identity \u20ac <branch@identi.ty>'],
71
67
                     encoding='utf-8')
72
 
        bzr_email = os.environ.get('BZR_EMAIL')
73
 
        if bzr_email is not None:
74
 
            del os.environ['BZR_EMAIL']
75
 
        try:
76
 
            whoami = self.run_bzr("whoami", encoding='utf-8')[0]
77
 
            self.assertEquals('Branch Identity \xe2\x82\xac ' +
78
 
                              '<branch@identi.ty>\n', whoami)
79
 
            whoami_email = self.run_bzr("whoami --email",
80
 
                                        encoding='utf-8')[0]
81
 
            self.assertEquals('branch@identi.ty\n', whoami_email)
82
 
        finally:
83
 
            if bzr_email is not None:
84
 
                os.environ['BZR_EMAIL'] = bzr_email
 
68
        whoami = self.run_bzr("whoami", encoding='utf-8')[0]
 
69
        self.assertEquals('Branch Identity \xe2\x82\xac ' +
 
70
                          '<branch@identi.ty>\n', whoami)
 
71
        whoami_email = self.run_bzr("whoami --email", encoding='utf-8')[0]
 
72
        self.assertEquals('branch@identi.ty\n', whoami_email)
85
73
 
86
74
    def test_whoami_ascii(self):
87
75
        """
92
80
        b = bzrlib.branch.Branch.open('.')
93
81
        b.get_config().set_user_option('email', u'Branch Identity \u20ac ' +
94
82
                                       '<branch@identi.ty>')
95
 
        bzr_email = os.environ.get('BZR_EMAIL')
96
 
        if bzr_email is not None:
97
 
            del os.environ['BZR_EMAIL']
98
 
        try:
99
 
            whoami = self.run_bzr("whoami", encoding='ascii')[0]
100
 
            self.assertEquals('Branch Identity ? <branch@identi.ty>\n', whoami)
101
 
            whoami_email = self.run_bzr("whoami --email",
102
 
                                        encoding='ascii')[0]
103
 
            self.assertEquals('branch@identi.ty\n', whoami_email)
104
 
        finally:
105
 
            if bzr_email is not None:
106
 
                os.environ['BZR_EMAIL'] = bzr_email
 
83
        whoami = self.run_bzr("whoami", encoding='ascii')[0]
 
84
        self.assertEquals('Branch Identity ? <branch@identi.ty>\n', whoami)
 
85
        whoami_email = self.run_bzr("whoami --email", encoding='ascii')[0]
 
86
        self.assertEquals('branch@identi.ty\n', whoami_email)
107
87
 
108
88
    def test_warning(self):
109
89
        """verify that a warning is displayed if no email is given."""
114
94
                          'recommended.\n', display)
115
95
 
116
96
    def test_whoami_not_set(self):
117
 
        """Ensure whoami error if username is not set.
 
97
        """Ensure whoami error if username is not set and not inferred.
118
98
        """
119
 
        osutils.set_or_unset_env('EMAIL', None)
120
 
        osutils.set_or_unset_env('BZR_EMAIL', None)
 
99
        self.overrideEnv('EMAIL', None)
 
100
        self.overrideEnv('BZR_EMAIL', None)
 
101
        # Also, make sure that it's not inferred from mailname.
 
102
        self.overrideAttr(config, '_auto_user_id',
 
103
            lambda: (None, None))
121
104
        out, err = self.run_bzr(['whoami'], 3)
122
105
        self.assertContainsRe(err, 'Unable to determine your name')
 
106
 
 
107
    def test_whoami_directory(self):
 
108
        """Test --directory option."""
 
109
        wt = self.make_branch_and_tree('subdir')
 
110
        c = wt.branch.get_config()
 
111
        c.set_user_option('email', 'Branch Identity <branch@identi.ty>')
 
112
        out, err = self.run_bzr("whoami --directory subdir")
 
113
        self.assertEquals('Branch Identity <branch@identi.ty>\n', out)
 
114
        self.run_bzr(['whoami', '--directory', 'subdir', '--branch',
 
115
                      'Changed Identity <changed@identi.ty>'])
 
116
        self.assertEquals('Changed Identity <changed@identi.ty>',
 
117
                          c.get_user_option('email'))
 
118
 
 
119
    def test_whoami_remote_directory(self):
 
120
        """Test --directory option with a remote directory."""
 
121
        wt = self.make_branch_and_tree('subdir')
 
122
        c = wt.branch.get_config()
 
123
        c.set_user_option('email', 'Branch Identity <branch@identi.ty>')
 
124
        url = self.get_readonly_url() + '/subdir'
 
125
        out, err = self.run_bzr(['whoami', '--directory', url])
 
126
        self.assertEquals('Branch Identity <branch@identi.ty>\n', out)
 
127
        url = self.get_url('subdir')
 
128
        self.run_bzr(['whoami', '--directory', url, '--branch',
 
129
                      'Changed Identity <changed@identi.ty>'])
 
130
        # The identity has been set in the branch config (but not the global
 
131
        # config)
 
132
        self.assertEquals('Changed Identity <changed@identi.ty>',
 
133
                          c.get_user_option('email'))
 
134
        global_conf = config.GlobalConfig()
 
135
        self.assertEquals(None, global_conf.get_user_option('email'))
 
136
 
 
137
    def test_whoami_nonbranch_directory(self):
 
138
        """Test --directory mentioning a non-branch directory."""
 
139
        wt = self.build_tree(['subdir/'])
 
140
        out, err = self.run_bzr("whoami --directory subdir", retcode=3)
 
141
        self.assertContainsRe(err, 'ERROR: Not a branch')