290
290
self.assertExecutable(branch, revtree2, path, False)
293
class TestModifyTricky(TestCaseForGenericProcessor):
295
def file_command_iter(self, path1, path2, kind='file'):
296
# Revno 1: create a file or symlink in a directory
297
# Revno 2: create a second file that implicitly deletes the
298
# first one because either:
299
# * the new file is a in directory with the old file name
300
# * the new file has the same name as the directory of the first
302
author = ['', 'bugs@a.com', time.time(), time.timezone]
303
committer = ['', 'elmer@a.com', time.time(), time.timezone]
305
yield commands.FileModifyCommand(path1, kind, False,
307
yield commands.CommitCommand('head', '1', author,
308
committer, "commit 1", None, [], files_one)
310
yield commands.FileModifyCommand(path2, kind, False,
312
yield commands.CommitCommand('head', '2', author,
313
committer, "commit 2", ":1", [], files_two)
317
def test_modify_file_becomes_directory(self):
318
handler, branch = self.get_handler()
321
handler.process(self.file_command_iter(path1, path2))
322
revtree0, revtree1 = self.assertChanges(branch, 1,
323
expected_added=[('a',), (path1,)])
324
revtree1, revtree2 = self.assertChanges(branch, 2,
325
expected_added=[(path2,)],
326
expected_kind_changed=[(path1, 'file', 'directory')])
327
self.assertContent(branch, revtree1, path1, "aaa")
328
self.assertContent(branch, revtree2, path2, "bbb")
330
def test_modify_directory_becomes_file(self):
331
handler, branch = self.get_handler()
334
handler.process(self.file_command_iter(path1, path2))
335
revtree0, revtree1 = self.assertChanges(branch, 1,
336
expected_added=[('a',), ('a/b',), (path1,)])
337
revtree1, revtree2 = self.assertChanges(branch, 2,
338
expected_removed=[(path1,),],
339
expected_kind_changed=[(path2, 'directory', 'file')])
340
self.assertContent(branch, revtree1, path1, "aaa")
341
self.assertContent(branch, revtree2, path2, "bbb")
343
def test_modify_symlink_becomes_directory(self):
344
handler, branch = self.get_handler()
347
handler.process(self.file_command_iter(path1, path2, 'symlink'))
348
revtree0, revtree1 = self.assertChanges(branch, 1,
349
expected_added=[('a',), (path1,)])
350
revtree1, revtree2 = self.assertChanges(branch, 2,
351
expected_added=[(path2,)],
352
expected_kind_changed=[(path1, 'symlink', 'directory')])
353
self.assertSymlinkTarget(branch, revtree1, path1, "aaa")
354
self.assertSymlinkTarget(branch, revtree2, path2, "bbb")
356
def test_modify_directory_becomes_symlink(self):
357
handler, branch = self.get_handler()
360
handler.process(self.file_command_iter(path1, path2, 'symlink'))
361
revtree0, revtree1 = self.assertChanges(branch, 1,
362
expected_added=[('a',), ('a/b',), (path1,)])
363
revtree1, revtree2 = self.assertChanges(branch, 2,
364
expected_removed=[(path1,),],
365
expected_kind_changed=[(path2, 'directory', 'symlink')])
366
self.assertSymlinkTarget(branch, revtree1, path1, "aaa")
367
self.assertSymlinkTarget(branch, revtree2, path2, "bbb")
293
370
class TestDelete(TestCaseForGenericProcessor):
295
372
def file_command_iter(self, path, kind='file'):