Mercurial > hgsubversion
comparison tests/test_externals.py @ 764:bc5c176b63eb
svnexternals: support pushing subrepo based externals
| author | Patrick Mezard <pmezard@gmail.com> |
|---|---|
| date | Thu, 25 Nov 2010 21:55:21 +0100 |
| parents | 6463b34bbcb6 |
| children | f025d00bfc4a |
comparison
equal
deleted
inserted
replaced
| 763:6463b34bbcb6 | 764:bc5c176b63eb |
|---|---|
| 240 checkdeps(ui, repo, 3, ['subdir/deps/project1', 'deps/project2'], | 240 checkdeps(ui, repo, 3, ['subdir/deps/project1', 'deps/project2'], |
| 241 ['subdir2/deps/project1']) | 241 ['subdir2/deps/project1']) |
| 242 checkdeps(ui, repo, 4, ['subdir/deps/project1'], ['deps/project2']) | 242 checkdeps(ui, repo, 4, ['subdir/deps/project1'], ['deps/project2']) |
| 243 | 243 |
| 244 class TestPushExternals(test_util.TestBase): | 244 class TestPushExternals(test_util.TestBase): |
| 245 def setUp(self): | 245 def test_push_externals(self, stupid=False): |
| 246 test_util.TestBase.setUp(self) | |
| 247 test_util.load_fixture_and_fetch('pushexternals.svndump', | 246 test_util.load_fixture_and_fetch('pushexternals.svndump', |
| 248 self.repo_path, | 247 self.repo_path, |
| 249 self.wc_path) | 248 self.wc_path) |
| 250 | |
| 251 def test_push_externals(self, stupid=False): | |
| 252 # Add a new reference on an existing and non-existing directory | 249 # Add a new reference on an existing and non-existing directory |
| 253 changes = [ | 250 changes = [ |
| 254 ('.hgsvnexternals', '.hgsvnexternals', | 251 ('.hgsvnexternals', '.hgsvnexternals', |
| 255 """[dir] | 252 """[dir] |
| 256 ../externals/project2 deps/project2 | 253 ../externals/project2 deps/project2 |
| 293 self.assertchanges(changes, self.repo['tip']) | 290 self.assertchanges(changes, self.repo['tip']) |
| 294 | 291 |
| 295 def test_push_externals_stupid(self): | 292 def test_push_externals_stupid(self): |
| 296 self.test_push_externals(True) | 293 self.test_push_externals(True) |
| 297 | 294 |
| 295 def test_push_hgsub(self, stupid=False): | |
| 296 if subrepo is None: | |
| 297 return | |
| 298 | |
| 299 test_util.load_fixture_and_fetch('pushexternals.svndump', | |
| 300 self.repo_path, | |
| 301 self.wc_path, | |
| 302 externals='subrepos') | |
| 303 # Add a new reference on an existing and non-existing directory | |
| 304 changes = [ | |
| 305 ('.hgsub', '.hgsub', """\ | |
| 306 dir/deps/project2 = [hgsubversion] dir:^/externals/project2 deps/project2 | |
| 307 subdir1/deps/project1 = [hgsubversion] subdir1:^/externals/project1 deps/project1 | |
| 308 subdir2/deps/project2 = [hgsubversion] subdir2:^/externals/project2 deps/project2 | |
| 309 """), | |
| 310 ('.hgsubstate', '.hgsubstate', """\ | |
| 311 HEAD dir/deps/project2 | |
| 312 HEAD subdir1/deps/project1 | |
| 313 HEAD subdir2/deps/project2 | |
| 314 """), | |
| 315 ('subdir1/a', 'subdir1/a', 'a'), | |
| 316 ('subdir2/a', 'subdir2/a', 'a'), | |
| 317 ] | |
| 318 self.svnco('externals/project2', '2', 'dir/deps/project2') | |
| 319 self.svnco('externals/project1', '2', 'subdir1/deps/project1') | |
| 320 self.svnco('externals/project2', '2', 'subdir2/deps/project2') | |
| 321 self.commitchanges(changes) | |
| 322 self.pushrevisions(stupid) | |
| 323 self.assertchanges(changes, self.repo['tip']) | |
| 324 | |
| 325 # Check .hgsub and .hgsubstate were not pushed | |
| 326 self.assertEqual(['dir', 'subdir1', 'subdir1/a','subdir2', | |
| 327 'subdir2/a'], self.svnls('trunk')) | |
| 328 | |
| 329 # Remove all references from one directory, add a new one | |
| 330 # to the other (test multiline entries) | |
| 331 changes = [ | |
| 332 ('.hgsub', '.hgsub', """\ | |
| 333 subdir1/deps/project1 = [hgsubversion] subdir1:^/externals/project1 deps/project1 | |
| 334 subdir1/deps/project2 = [hgsubversion] subdir1:^/externals/project2 deps/project2 | |
| 335 """), | |
| 336 ('.hgsubstate', '.hgsubstate', """\ | |
| 337 HEAD subdir1/deps/project1 | |
| 338 HEAD subdir1/deps/project2 | |
| 339 """), | |
| 340 # This removal used to trigger the parent directory removal | |
| 341 ('subdir1/a', None, None), | |
| 342 ] | |
| 343 self.svnco('externals/project1', '2', 'subdir1/deps/project1') | |
| 344 self.svnco('externals/project2', '2', 'subdir1/deps/project2') | |
| 345 self.commitchanges(changes) | |
| 346 self.pushrevisions(stupid) | |
| 347 self.assertchanges(changes, self.repo['tip']) | |
| 348 # Check subdir2/a is still there even if the externals were removed | |
| 349 self.assertTrue('subdir2/a' in self.repo['tip']) | |
| 350 self.assertTrue('subdir1/a' not in self.repo['tip']) | |
| 351 | |
| 352 # Test externals removal | |
| 353 changes = [ | |
| 354 ('.hgsub', None, None), | |
| 355 ('.hgsubstate', None, None), | |
| 356 ] | |
| 357 self.commitchanges(changes) | |
| 358 self.pushrevisions(stupid) | |
| 359 self.assertchanges(changes, self.repo['tip']) | |
| 298 | 360 |
| 299 def suite(): | 361 def suite(): |
| 300 all = [unittest.TestLoader().loadTestsFromTestCase(TestFetchExternals), | 362 all = [unittest.TestLoader().loadTestsFromTestCase(TestFetchExternals), |
| 301 unittest.TestLoader().loadTestsFromTestCase(TestPushExternals), | 363 unittest.TestLoader().loadTestsFromTestCase(TestPushExternals), |
| 302 ] | 364 ] |
