~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to testbzr

  • Committer: Martin Pool
  • Date: 2005-05-09 03:03:55 UTC
  • Revision ID: mbp@sourcefrog.net-20050509030355-ad6ab558d1362959
- Don't give an error if the trace file can't be opened

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
This replaces the previous test.sh which was not very portable."""
26
26
 
27
27
import sys, os, traceback
 
28
from os import mkdir
 
29
from os.path import exists
 
30
 
 
31
TESTDIR = "testbzr.tmp"
 
32
 
 
33
LOGFILENAME = 'testbzr.log'
28
34
 
29
35
try:
30
36
    import shutil
46
52
    else:
47
53
        logfile.write('$ %r\n' % cmd)
48
54
 
 
55
    if cmd[0] == 'bzr':
 
56
        cmd[0] = BZRPATH
 
57
 
49
58
    return cmd
50
59
 
51
60
 
104
113
    logfile.write('   at %s:%d\n' % stack[:2])
105
114
 
106
115
 
107
 
TESTDIR = "testbzr.tmp"
108
116
 
109
117
# prepare an empty scratch directory
110
118
if os.path.exists(TESTDIR):
111
119
    shutil.rmtree(TESTDIR)
112
120
 
113
121
 
114
 
logfile = open('testbzr.log', 'wt', buffering=1)
 
122
logfile = open(LOGFILENAME, 'wt', buffering=1)
115
123
 
116
124
 
117
125
try:
 
126
    mypath = os.path.abspath(sys.argv[0])
 
127
    print 'running tests from', mypath
 
128
 
 
129
    global BZRPATH
 
130
 
 
131
    if len(sys.argv) > 1:
 
132
        BZRPATH = sys.argv[1]
 
133
    else:
 
134
        BZRPATH = os.path.join(os.path.split(mypath)[0], 'bzr')
 
135
 
 
136
    print 'against bzr', BZRPATH
 
137
    print
 
138
    print backtick([BZRPATH, 'version'])
 
139
    
118
140
    runcmd(['mkdir', TESTDIR])
119
141
    cd(TESTDIR)
120
142
 
121
143
    progress("introductory commands")
122
144
    runcmd("bzr version")
 
145
    runcmd("bzr --version")
123
146
    runcmd("bzr help")
124
147
    runcmd("bzr --help")
125
148
 
 
149
    progress("internal tests")
 
150
    runcmd("bzr selftest")
 
151
 
126
152
    progress("user identity")
127
153
    # this should always identify something, if only "john@localhost"
128
154
    runcmd("bzr whoami")
132
158
    progress("invalid commands")
133
159
    runcmd("bzr pants", retcode=1)
134
160
    runcmd("bzr --pants off", retcode=1)
 
161
    runcmd("bzr diff --message foo", retcode=1)
135
162
 
136
163
    progress("basic branch creation")
137
164
    runcmd(['mkdir', 'branch1'])
153
180
    out = backtick("bzr status --all")
154
181
    assert out == "?       test.txt\n"
155
182
 
 
183
    progress("command aliases")
 
184
    out = backtick("bzr st --all")
 
185
    assert out == "?       test.txt\n"
 
186
    out = backtick("bzr stat")
 
187
    assert out == "?       test.txt\n"
 
188
 
 
189
    progress("command help")
 
190
    runcmd("bzr help st")
 
191
    runcmd("bzr help")
 
192
    runcmd("bzr help commands")
 
193
    runcmd("bzr help slartibartfast", 1)
 
194
 
 
195
    out = backtick("bzr help ci")
 
196
    out.index('aliases: ')
 
197
 
156
198
    progress("can't rename unversioned file")
157
199
    runcmd("bzr rename test.txt new-test.txt", 1)
158
200
 
169
211
 
170
212
    assert backtick("bzr revno") == '0\n'
171
213
 
 
214
    progress("add first revision")
 
215
    runcmd(["bzr", "commit", "-m", 'add first revision'])
 
216
 
 
217
    progress("more complex renames")
 
218
    os.mkdir("sub1")
 
219
    runcmd("bzr rename hello.txt sub1", 1)
 
220
    runcmd("bzr rename hello.txt sub1/hello.txt", 1)
 
221
    runcmd("bzr move hello.txt sub1", 1)
 
222
 
 
223
    runcmd("bzr add sub1")
 
224
    runcmd("bzr rename sub1 sub2")
 
225
    runcmd("bzr move hello.txt sub2")
 
226
    assert backtick("bzr relpath sub2/hello.txt") == "sub2/hello.txt\n"
 
227
 
 
228
    assert exists("sub2")
 
229
    assert exists("sub2/hello.txt")
 
230
    assert not exists("sub1")
 
231
    assert not exists("hello.txt")
 
232
 
 
233
    runcmd(['bzr', 'commit', '-m', 'commit with some things moved to subdirs'])
 
234
 
 
235
    mkdir("sub1")
 
236
    runcmd('bzr add sub1')
 
237
    runcmd('bzr move sub2/hello.txt sub1')
 
238
    assert not exists('sub2/hello.txt')
 
239
    assert exists('sub1/hello.txt')
 
240
    runcmd('bzr move sub2 sub1')
 
241
    assert not exists('sub2')
 
242
    assert exists('sub1/sub2')
 
243
 
 
244
    runcmd(['bzr', 'commit', '-m', 'rename nested subdirectories'])
 
245
 
 
246
    cd('sub1/sub2')
 
247
    runcmd('bzr move ../hello.txt .')
 
248
    assert exists('./hello.txt')
 
249
    assert backtick('bzr relpath hello.txt') == 'sub1/sub2/hello.txt\n'
 
250
    assert backtick('bzr relpath ../../sub1/sub2/hello.txt') == 'sub1/sub2/hello.txt\n'
 
251
    runcmd(['bzr', 'commit', '-m', 'move to parent directory'])
 
252
    cd('..')
 
253
    assert backtick('bzr relpath sub2/hello.txt') == 'sub1/sub2/hello.txt\n'
 
254
 
 
255
    runcmd('bzr move sub2/hello.txt .')
 
256
    assert exists('hello.txt')
 
257
 
 
258
    f = file('hello.txt', 'wt')
 
259
    f.write('some nice new content\n')
 
260
    f.close()
 
261
 
 
262
    f = file('msg.tmp', 'wt')
 
263
    f.write('this is my new commit\n')
 
264
    f.close()
 
265
 
 
266
    runcmd('bzr commit -F msg.tmp')
 
267
 
 
268
    assert backtick('bzr revno') == '5\n'
 
269
    runcmd('bzr export -r 5 export-5.tmp')
 
270
    runcmd('bzr export export.tmp')
 
271
    
172
272
    cd('..')
173
273
 
174
274
    progress("all tests passed!")
175
275
except Exception, e:
176
276
    sys.stderr.write('*' * 50 + '\n'
177
277
                     + 'testbzr: tests failed\n'
178
 
                     + 'see testbzr.log for more information\n'
 
278
                     + 'see ' + LOGFILENAME + ' for more information\n'
179
279
                     + '*' * 50 + '\n')
180
280
    logfile.write('tests failed!\n')
181
281
    traceback.print_exc(None, logfile)