243
224
self.assertFileEqual(LINES_AJ, 'tree/foo')
246
class TestApplyReporter(TestShelver):
248
def test_shelve_not_diff(self):
249
self.thisFailsStrictLockCheck()
250
tree = self.create_shelvable_tree()
251
shelver = ExpectShelver(tree, tree.basis_tree(),
252
reporter=shelf_ui.ApplyReporter())
253
shelver.expect('Apply change? [yNfq?]', 'n')
254
shelver.expect('Apply change? [yNfq?]', 'n')
255
# No final shelving prompt because no changes were selected
257
self.assertFileEqual(LINES_ZY, 'tree/foo')
259
def test_shelve_diff_no(self):
260
self.thisFailsStrictLockCheck()
261
tree = self.create_shelvable_tree()
262
shelver = ExpectShelver(tree, tree.basis_tree(),
263
reporter=shelf_ui.ApplyReporter())
264
shelver.expect('Apply change? [yNfq?]', 'y')
265
shelver.expect('Apply change? [yNfq?]', 'y')
266
shelver.expect('Apply 2 change(s)? [yNfq?]', 'n')
268
self.assertFileEqual(LINES_ZY, 'tree/foo')
270
def test_shelve_diff(self):
271
self.thisFailsStrictLockCheck()
272
tree = self.create_shelvable_tree()
273
shelver = ExpectShelver(tree, tree.basis_tree(),
274
reporter=shelf_ui.ApplyReporter())
275
shelver.expect('Apply change? [yNfq?]', 'y')
276
shelver.expect('Apply change? [yNfq?]', 'y')
277
shelver.expect('Apply 2 change(s)? [yNfq?]', 'y')
279
self.assertFileEqual(LINES_AJ, 'tree/foo')
281
def test_shelve_binary_change(self):
282
self.thisFailsStrictLockCheck()
283
tree = self.create_shelvable_tree()
284
self.build_tree_contents([('tree/foo', '\x00')])
285
shelver = ExpectShelver(tree, tree.basis_tree(),
286
reporter=shelf_ui.ApplyReporter())
287
shelver.expect('Apply binary changes? [yNfq?]', 'y')
288
shelver.expect('Apply 1 change(s)? [yNfq?]', 'y')
290
self.assertFileEqual(LINES_AJ, 'tree/foo')
292
def test_shelve_rename(self):
293
self.thisFailsStrictLockCheck()
294
tree = self.create_shelvable_tree()
295
tree.rename_one('foo', 'bar')
296
shelver = ExpectShelver(tree, tree.basis_tree(),
297
reporter=shelf_ui.ApplyReporter())
298
shelver.expect('Rename "bar" => "foo"? [yNfq?]', 'y')
299
shelver.expect('Apply change? [yNfq?]', 'y')
300
shelver.expect('Apply change? [yNfq?]', 'y')
301
shelver.expect('Apply 3 change(s)? [yNfq?]', 'y')
303
self.assertFileEqual(LINES_AJ, 'tree/foo')
305
def test_shelve_deletion(self):
306
self.thisFailsStrictLockCheck()
307
tree = self.create_shelvable_tree()
308
os.unlink('tree/foo')
309
shelver = ExpectShelver(tree, tree.basis_tree(),
310
reporter=shelf_ui.ApplyReporter())
311
shelver.expect('Add file "foo"? [yNfq?]', 'y')
312
shelver.expect('Apply 1 change(s)? [yNfq?]', 'y')
314
self.assertFileEqual(LINES_AJ, 'tree/foo')
316
def test_shelve_creation(self):
317
self.thisFailsStrictLockCheck()
318
tree = self.make_branch_and_tree('tree')
319
tree.commit('add tree root')
320
self.build_tree(['tree/foo'])
322
shelver = ExpectShelver(tree, tree.basis_tree(),
323
reporter=shelf_ui.ApplyReporter())
324
shelver.expect('Delete file "foo"? [yNfq?]', 'y')
325
shelver.expect('Apply 1 change(s)? [yNfq?]', 'y')
327
self.failIfExists('tree/foo')
329
def test_shelve_kind_change(self):
330
self.thisFailsStrictLockCheck()
331
tree = self.create_shelvable_tree()
332
os.unlink('tree/foo')
334
shelver = ExpectShelver(tree, tree.basis_tree(),
335
reporter=shelf_ui.ApplyReporter())
336
shelver.expect('Change "foo" from directory to a file? [yNfq?]', 'y')
337
shelver.expect('Apply 1 change(s)? [yNfq?]', 'y')
339
def test_shelve_modify_target(self):
340
self.thisFailsStrictLockCheck()
341
self.requireFeature(tests.SymlinkFeature)
342
tree = self.create_shelvable_tree()
343
os.symlink('bar', 'tree/baz')
344
tree.add('baz', 'baz-id')
345
tree.commit("Add symlink")
346
os.unlink('tree/baz')
347
os.symlink('vax', 'tree/baz')
348
shelver = ExpectShelver(tree, tree.basis_tree(),
349
reporter=shelf_ui.ApplyReporter())
350
shelver.expect('Change target of "baz" from "vax" to "bar"? [yNfq?]',
352
shelver.expect('Apply 1 change(s)? [yNfq?]', 'y')
354
self.assertEqual('bar', os.readlink('tree/baz'))
357
227
class TestUnshelver(tests.TestCaseWithTransport):
359
229
def create_tree_with_shelf(self):
376
245
self.assertFileEqual(LINES_ZY, 'tree/foo')
378
247
def test_unshelve_args(self):
379
self.thisFailsStrictLockCheck()
380
248
tree = self.create_tree_with_shelf()
381
249
shelf_ui.Unshelver.from_args(directory='tree').run()
382
250
self.assertFileEqual(LINES_ZY, 'tree/foo')
383
251
self.assertIs(None, tree.get_shelf_manager().last_shelf())
385
253
def test_unshelve_args_dry_run(self):
386
self.thisFailsStrictLockCheck()
387
254
tree = self.create_tree_with_shelf()
388
255
shelf_ui.Unshelver.from_args(directory='tree', action='dry-run').run()
389
256
self.assertFileEqual(LINES_AJ, 'tree/foo')
390
257
self.assertEqual(1, tree.get_shelf_manager().last_shelf())
392
259
def test_unshelve_args_delete_only(self):
393
self.thisFailsStrictLockCheck()
394
260
tree = self.make_branch_and_tree('tree')
395
261
manager = tree.get_shelf_manager()
396
262
shelf_file = manager.new_shelf()[1]