Mercurial > hgsubversion
view tests/test_push_dirs.py @ 430:2851b81c65ce
maps: make sure AuthorMaps don't overwrite themselves, fix overriding
Author maps for the Python repo got truncated because of the author map stupidly
writing upon itself. This patch implements a better and faster scenario, where
entries will only be written to the saved author map if they're not coming from that
file. They're also now streamed into the file directly, instead of having to re-open
the file on every entry, and formatting is preserved.
author | Dirkjan Ochtman <dirkjan@ochtman.nl> |
---|---|
date | Mon, 15 Jun 2009 16:09:27 +0200 |
parents | 067914ecb4eb |
children | d2ef7220a079 |
line wrap: on
line source
import unittest import test_util class TestPushDirectories(test_util.TestBase): def setUp(self): test_util.TestBase.setUp(self) test_util.load_fixture_and_fetch('emptyrepo.svndump', self.repo_path, self.wc_path) def test_push_dirs(self): changes = [ # Single file in single directory ('d1/a', 'd1/a', 'a\n'), # Two files in one directory ('d2/a', 'd2/a', 'a\n'), ('d2/b', 'd2/b', 'a\n'), # Single file in empty directory hierarchy ('d31/d32/d33/d34/a', 'd31/d32/d33/d34/a', 'a\n'), ('d31/d32/a', 'd31/d32/a', 'a\n'), ] self.commitchanges(changes) self.pushrevisions() self.assertEqual(self.svnls('trunk'), ['d1', 'd1/a', 'd2', 'd2/a', 'd2/b', 'd31', 'd31/d32', 'd31/d32/a', 'd31/d32/d33', 'd31/d32/d33/d34', 'd31/d32/d33/d34/a']) # Add one revision with changed files only, no directory addition # or deletion. changes = [ ('d1/a', 'd1/a', 'aa\n'), ('d2/a', 'd2/a', 'aa\n'), ] self.commitchanges(changes) self.pushrevisions() changes = [ # Remove single file in single directory ('d1/a', None, None), # Remove one file out of two ('d2/a', None, None), # Removing this file should remove one empty parent dir too ('d31/d32/d33/d34/a', None, None), ] self.commitchanges(changes) self.pushrevisions() self.assertEqual(self.svnls('trunk'), ['d2', 'd2/b', 'd31', 'd31/d32', 'd31/d32/a', ]) class TestPushDirsNotAtRoot(test_util.TestBase): def test_push_new_dir_project_root_not_repo_root(self): test_util.load_fixture_and_fetch('fetch_missing_files_subdir.svndump', self.repo_path, self.wc_path, subdir='foo') changes = [('magic_new/a', 'magic_new/a', 'ohai', ), ] self.commitchanges(changes) self.pushrevisions() self.assertEqual(self.svnls('foo/trunk'), ['bar', 'bar/alpha', 'bar/beta', 'bar/delta', 'bar/gamma', 'foo', 'magic_new', 'magic_new/a']) def test_push_new_file_existing_dir_root_not_repo_root(self): test_util.load_fixture_and_fetch('empty_dir_in_trunk_not_repo_root.svndump', self.repo_path, self.wc_path, subdir='project') changes = [('narf/a', 'narf/a', 'ohai', ), ] self.commitchanges(changes) self.assertEqual(self.svnls('project/trunk'), ['a', 'narf',]) self.pushrevisions() self.assertEqual(self.svnls('project/trunk'), ['a', 'narf', 'narf/a']) changes = [('narf/a', None, None, ), ] self.commitchanges(changes) self.pushrevisions() self.assertEqual(self.svnls('project/trunk'), ['a' ,]) def suite(): all = [unittest.TestLoader().loadTestsFromTestCase(TestPushDirectories), ] return unittest.TestSuite(all)