~bzr-pqm/bzr/bzr.dev

2052.3.2 by John Arbash Meinel
Change Copyright .. by Canonical to Copyright ... Canonical
1
# Copyright (C) 2006 Canonical Ltd
1816.2.10 by Robey Pointer
code style changes
2
#
1816.2.3 by Robey Pointer
move the whoami blackbox tests into their own file and add more tests
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
1816.2.10 by Robey Pointer
code style changes
7
#
1816.2.3 by Robey Pointer
move the whoami blackbox tests into their own file and add more tests
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
1816.2.10 by Robey Pointer
code style changes
12
#
1816.2.3 by Robey Pointer
move the whoami blackbox tests into their own file and add more tests
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
17
1816.2.10 by Robey Pointer
code style changes
18
"""Black-box tests for bzr whoami."""
1816.2.3 by Robey Pointer
move the whoami blackbox tests into their own file and add more tests
19
20
import os
21
22
import bzrlib
23
from bzrlib.branch import Branch
24
from bzrlib.tests.blackbox import ExternalBase
25
26
27
class TestWhoami(ExternalBase):
28
29
    def test_whoami(self):
30
        # this should always identify something, if only "john@localhost"
1816.2.5 by Robey Pointer
clean up whoami tests a bit
31
        out = self.run_bzr("whoami")[0]
32
        self.assertTrue(len(out) > 0)
1816.2.10 by Robey Pointer
code style changes
33
        self.assertEquals(1, out.count('@'))
1816.2.3 by Robey Pointer
move the whoami blackbox tests into their own file and add more tests
34
1816.2.5 by Robey Pointer
clean up whoami tests a bit
35
        out = self.run_bzr("whoami", "--email")[0]
36
        self.assertTrue(len(out) > 0)
1816.2.10 by Robey Pointer
code style changes
37
        self.assertEquals(1, out.count('@'))
1816.2.3 by Robey Pointer
move the whoami blackbox tests into their own file and add more tests
38
        
39
    def test_whoami_branch(self):
40
        """branch specific user identity works."""
1816.2.10 by Robey Pointer
code style changes
41
        wt = self.make_branch_and_tree('.')
1816.2.3 by Robey Pointer
move the whoami blackbox tests into their own file and add more tests
42
        b = bzrlib.branch.Branch.open('.')
1840.1.3 by Robey Pointer
fix some 80col wrapping and add a blackbox test to verify that a warning is displayed when a non-email identity is set
43
        b.get_config().set_user_option('email',
44
                                       'Branch Identity <branch@identi.ty>')
1861.4.1 by Matthieu Moy
BZREMAIL renamed to BZR_EMAIL.
45
        bzr_email = os.environ.get('BZR_EMAIL')
1816.2.3 by Robey Pointer
move the whoami blackbox tests into their own file and add more tests
46
        if bzr_email is not None:
1861.4.1 by Matthieu Moy
BZREMAIL renamed to BZR_EMAIL.
47
            del os.environ['BZR_EMAIL']
1861.4.3 by Matthieu Moy
Better test for BZREMAIL.
48
        bzremail = os.environ.get('BZREMAIL')
49
        if bzremail is not None:
50
            del os.environ['BZREMAIL']
1816.2.5 by Robey Pointer
clean up whoami tests a bit
51
        try:
52
            whoami = self.run_bzr("whoami")[0]
1816.2.10 by Robey Pointer
code style changes
53
            self.assertEquals('Branch Identity <branch@identi.ty>\n', whoami)
1816.2.5 by Robey Pointer
clean up whoami tests a bit
54
            whoami_email = self.run_bzr("whoami", "--email")[0]
1816.2.10 by Robey Pointer
code style changes
55
            self.assertEquals('branch@identi.ty\n', whoami_email)
1816.2.3 by Robey Pointer
move the whoami blackbox tests into their own file and add more tests
56
1816.2.5 by Robey Pointer
clean up whoami tests a bit
57
            # Verify that the environment variable overrides the value 
58
            # in the file
1861.4.1 by Matthieu Moy
BZREMAIL renamed to BZR_EMAIL.
59
            os.environ['BZR_EMAIL'] = 'Different ID <other@environ.ment>'
1816.2.5 by Robey Pointer
clean up whoami tests a bit
60
            whoami = self.run_bzr("whoami")[0]
1816.2.10 by Robey Pointer
code style changes
61
            self.assertEquals('Different ID <other@environ.ment>\n', whoami)
1816.2.5 by Robey Pointer
clean up whoami tests a bit
62
            whoami_email = self.run_bzr("whoami", "--email")[0]
1816.2.10 by Robey Pointer
code style changes
63
            self.assertEquals('other@environ.ment\n', whoami_email)
1861.4.3 by Matthieu Moy
Better test for BZREMAIL.
64
            del os.environ['BZR_EMAIL']
65
            os.environ['BZREMAIL'] = 'Yet Another ID <yetother@environ.ment>'
66
            whoami, warn = self.run_bzr("whoami")
67
            self.assertEquals('Yet Another ID <yetother@environ.ment>\n', whoami)
68
            self.assertTrue(len(warn) > 0)
69
            del os.environ['BZREMAIL']
1816.2.5 by Robey Pointer
clean up whoami tests a bit
70
        finally:
71
            if bzr_email is not None:
1861.4.1 by Matthieu Moy
BZREMAIL renamed to BZR_EMAIL.
72
                os.environ['BZR_EMAIL'] = bzr_email
1861.4.3 by Matthieu Moy
Better test for BZREMAIL.
73
            if bzremail is not None:
74
                os.environ['BZREMAIL'] = bzremail
1816.2.3 by Robey Pointer
move the whoami blackbox tests into their own file and add more tests
75
76
    def test_whoami_utf8(self):
77
        """verify that an identity can be in utf-8."""
1816.2.10 by Robey Pointer
code style changes
78
        wt = self.make_branch_and_tree('.')
1840.1.3 by Robey Pointer
fix some 80col wrapping and add a blackbox test to verify that a warning is displayed when a non-email identity is set
79
        self.run_bzr('whoami', u'Branch Identity \u20ac <branch@identi.ty>',
80
                     encoding='utf-8')
1861.4.1 by Matthieu Moy
BZREMAIL renamed to BZR_EMAIL.
81
        bzr_email = os.environ.get('BZR_EMAIL')
1816.2.3 by Robey Pointer
move the whoami blackbox tests into their own file and add more tests
82
        if bzr_email is not None:
1861.4.1 by Matthieu Moy
BZREMAIL renamed to BZR_EMAIL.
83
            del os.environ['BZR_EMAIL']
1816.2.5 by Robey Pointer
clean up whoami tests a bit
84
        try:
85
            whoami = self.run_bzr("whoami", encoding='utf-8')[0]
1840.1.3 by Robey Pointer
fix some 80col wrapping and add a blackbox test to verify that a warning is displayed when a non-email identity is set
86
            self.assertEquals('Branch Identity \xe2\x82\xac ' +
87
                              '<branch@identi.ty>\n', whoami)
88
            whoami_email = self.run_bzr("whoami", "--email",
89
                                        encoding='utf-8')[0]
1816.2.10 by Robey Pointer
code style changes
90
            self.assertEquals('branch@identi.ty\n', whoami_email)
1816.2.5 by Robey Pointer
clean up whoami tests a bit
91
        finally:
92
            if bzr_email is not None:
1861.4.1 by Matthieu Moy
BZREMAIL renamed to BZR_EMAIL.
93
                os.environ['BZR_EMAIL'] = bzr_email
1816.2.3 by Robey Pointer
move the whoami blackbox tests into their own file and add more tests
94
95
    def test_whoami_ascii(self):
1840.1.3 by Robey Pointer
fix some 80col wrapping and add a blackbox test to verify that a warning is displayed when a non-email identity is set
96
        """
97
        verify that whoami doesn't totally break when in utf-8, using an ascii
98
        encoding.
99
        """
1816.2.10 by Robey Pointer
code style changes
100
        wt = self.make_branch_and_tree('.')
1816.2.3 by Robey Pointer
move the whoami blackbox tests into their own file and add more tests
101
        b = bzrlib.branch.Branch.open('.')
1840.1.3 by Robey Pointer
fix some 80col wrapping and add a blackbox test to verify that a warning is displayed when a non-email identity is set
102
        b.get_config().set_user_option('email', u'Branch Identity \u20ac ' +
103
                                       '<branch@identi.ty>')
1861.4.1 by Matthieu Moy
BZREMAIL renamed to BZR_EMAIL.
104
        bzr_email = os.environ.get('BZR_EMAIL')
1816.2.3 by Robey Pointer
move the whoami blackbox tests into their own file and add more tests
105
        if bzr_email is not None:
1861.4.1 by Matthieu Moy
BZREMAIL renamed to BZR_EMAIL.
106
            del os.environ['BZR_EMAIL']
1816.2.5 by Robey Pointer
clean up whoami tests a bit
107
        try:
108
            whoami = self.run_bzr("whoami", encoding='ascii')[0]
1816.2.10 by Robey Pointer
code style changes
109
            self.assertEquals('Branch Identity ? <branch@identi.ty>\n', whoami)
1840.1.3 by Robey Pointer
fix some 80col wrapping and add a blackbox test to verify that a warning is displayed when a non-email identity is set
110
            whoami_email = self.run_bzr("whoami", "--email",
111
                                        encoding='ascii')[0]
1816.2.10 by Robey Pointer
code style changes
112
            self.assertEquals('branch@identi.ty\n', whoami_email)
1816.2.5 by Robey Pointer
clean up whoami tests a bit
113
        finally:
114
            if bzr_email is not None:
1861.4.1 by Matthieu Moy
BZREMAIL renamed to BZR_EMAIL.
115
                os.environ['BZR_EMAIL'] = bzr_email
1840.1.3 by Robey Pointer
fix some 80col wrapping and add a blackbox test to verify that a warning is displayed when a non-email identity is set
116
117
    def test_warning(self):
118
        """verify that a warning is displayed if no email is given."""
119
        self.make_branch_and_tree('.')
120
        display = self.run_bzr('whoami', 'Branch Identity')[1]
1840.1.5 by Robey Pointer
change the warning message for a 'whoami' with no email address, on jam's recommendation
121
        self.assertEquals('"Branch Identity" does not seem to contain an '
122
                          'email address.  This is allowed, but not '
123
                          'recommended.\n', display)