Mercurial > hg
comparison tests/test-subrepo-svn.t @ 17033:0413f68da85c
tests: cleanup of svn url handling
The subversion tests used different tricks to create properly encoded URLs,
partly due to partial support for different ways of running the tests on
windows. Now we only need/support one way of running the tests on windows.
Windows URLs should look like 'file:///c:/foo%20bar' and on Unix platforms
like 'file:///tmp/baz'.
'pwd' in the test framework will on Windows emit paths like 'c:/foo bar'.
Explicit handling of backslashes in paths is thus no longer needed and is
removed. Paths on windows do however need an extra '/' compared to other
platforms.
This change makes test-subrepo-svn.t pass on windows with msys. Other tests
might need more work.
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Tue, 26 Jun 2012 03:35:22 +0200 |
parents | 7dd82e0c43ea |
children | 1894dac619de |
comparison
equal
deleted
inserted
replaced
17032:7dd82e0c43ea | 17033:0413f68da85c |
---|---|
1 $ "$TESTDIR/hghave" svn15 || exit 80 | 1 $ "$TESTDIR/hghave" svn15 || exit 80 |
2 | 2 |
3 $ fix_path() | 3 $ SVNREPOPATH=`pwd`/svn-repo |
4 > { | 4 #if windows |
5 > tr '\\' / | 5 $ SVNREPOURL=file:///`python -c "import urllib, sys; sys.stdout.write(urllib.quote(sys.argv[1]))" "$SVNREPOPATH"` |
6 > } | 6 #else |
7 | 7 $ SVNREPOURL=file://`python -c "import urllib, sys; sys.stdout.write(urllib.quote(sys.argv[1]))" "$SVNREPOPATH"` |
8 SVN wants all paths to start with a slash. Unfortunately, Windows ones | 8 #endif |
9 don't. Handle that. | |
10 | |
11 $ escapedwd=`pwd | fix_path` | |
12 $ expr "$escapedwd" : '\/' > /dev/null || escapedwd="/$escapedwd" | |
13 $ escapedwd=`python -c "import urllib, sys; sys.stdout.write(urllib.quote(sys.argv[1]))" "$escapedwd"` | |
14 | 9 |
15 create subversion repo | 10 create subversion repo |
16 | 11 |
17 $ SVNREPO="file://$escapedwd/svn-repo" | |
18 $ WCROOT="`pwd`/svn-wc" | 12 $ WCROOT="`pwd`/svn-wc" |
19 $ svnadmin create svn-repo | 13 $ svnadmin create svn-repo |
20 $ svn co "$SVNREPO" svn-wc | 14 $ svn co "$SVNREPOURL" svn-wc |
21 Checked out revision 0. | 15 Checked out revision 0. |
22 $ cd svn-wc | 16 $ cd svn-wc |
23 $ mkdir src | 17 $ mkdir src |
24 $ echo alpha > src/alpha | 18 $ echo alpha > src/alpha |
25 $ svn add src | 19 $ svn add src |
36 Adding src | 30 Adding src |
37 Adding src/alpha (glob) | 31 Adding src/alpha (glob) |
38 Transmitting file data .. | 32 Transmitting file data .. |
39 Committed revision 1. | 33 Committed revision 1. |
40 $ svn up -q | 34 $ svn up -q |
41 $ echo "externals -r1 $SVNREPO/externals" > extdef | 35 $ echo "externals -r1 $SVNREPOURL/externals" > extdef |
42 $ svn propset -F extdef svn:externals src | 36 $ svn propset -F extdef svn:externals src |
43 property 'svn:externals' set on 'src' | 37 property 'svn:externals' set on 'src' |
44 $ svn ci -m 'Setting externals' | 38 $ svn ci -m 'Setting externals' |
45 Sending src | 39 Sending src |
46 | 40 |
60 $ hg ci -Am0 | 54 $ hg ci -Am0 |
61 adding a | 55 adding a |
62 | 56 |
63 add first svn sub with leading whitespaces | 57 add first svn sub with leading whitespaces |
64 | 58 |
65 $ echo "s = [svn] $SVNREPO/src" >> .hgsub | 59 $ echo "s = [svn] $SVNREPOURL/src" >> .hgsub |
66 $ echo "subdir/s = [svn] $SVNREPO/src" >> .hgsub | 60 $ echo "subdir/s = [svn] $SVNREPOURL/src" >> .hgsub |
67 $ svn co --quiet "$SVNREPO"/src s | 61 $ svn co --quiet "$SVNREPOURL"/src s |
68 $ mkdir subdir | 62 $ mkdir subdir |
69 $ svn co --quiet "$SVNREPO"/src subdir/s | 63 $ svn co --quiet "$SVNREPOURL"/src subdir/s |
70 $ hg add .hgsub | 64 $ hg add .hgsub |
71 $ hg ci -m1 | 65 $ hg ci -m1 |
72 | 66 |
73 make sure we avoid empty commits (issue2445) | 67 make sure we avoid empty commits (issue2445) |
74 | 68 |
130 $ svn revert s/alpha > /dev/null | 124 $ svn revert s/alpha > /dev/null |
131 | 125 |
132 add an unrelated revision in svn and update the subrepo to without | 126 add an unrelated revision in svn and update the subrepo to without |
133 bringing any changes. | 127 bringing any changes. |
134 | 128 |
135 $ svn mkdir "$SVNREPO/unrelated" -m 'create unrelated' | 129 $ svn mkdir "$SVNREPOURL/unrelated" -m 'create unrelated' |
136 | 130 |
137 Committed revision 4. | 131 Committed revision 4. |
138 $ svn up -q s | 132 $ svn up -q s |
139 $ hg sum | 133 $ hg sum |
140 parent: 2:* tip (glob) | 134 parent: 2:* tip (glob) |
149 | 143 |
150 $ hg st | 144 $ hg st |
151 | 145 |
152 add a commit from svn | 146 add a commit from svn |
153 | 147 |
154 $ cd "$WCROOT"/src | 148 $ cd "$WCROOT/src" |
155 $ svn up -q | 149 $ svn up -q |
156 $ echo xyz >> alpha | 150 $ echo xyz >> alpha |
157 $ svn propset svn:mime-type 'text/xml' alpha | 151 $ svn propset svn:mime-type 'text/xml' alpha |
158 property 'svn:mime-type' set on 'alpha' | 152 property 'svn:mime-type' set on 'alpha' |
159 $ svn ci -m 'amend a from svn' | 153 $ svn ci -m 'amend a from svn' |
213 $ svn revert -q s/externals/other | 207 $ svn revert -q s/externals/other |
214 | 208 |
215 clone | 209 clone |
216 | 210 |
217 $ cd .. | 211 $ cd .. |
218 $ hg clone t tc | fix_path | 212 $ hg clone t tc |
219 updating to branch default | 213 updating to branch default |
220 A tc/s/alpha | 214 A tc/s/alpha (glob) |
221 U tc/s | 215 U tc/s (glob) |
222 | 216 |
223 Fetching external item into 'tc/s/externals'* (glob) | 217 Fetching external item into 'tc/s/externals'* (glob) |
224 A tc/s/externals/other | 218 A tc/s/externals/other (glob) |
225 Checked out external at revision 1. | 219 Checked out external at revision 1. |
226 | 220 |
227 Checked out revision 3. | 221 Checked out revision 3. |
228 A tc/subdir/s/alpha | 222 A tc/subdir/s/alpha (glob) |
229 U tc/subdir/s | 223 U tc/subdir/s (glob) |
230 | 224 |
231 Fetching external item into 'tc/subdir/s/externals'* (glob) | 225 Fetching external item into 'tc/subdir/s/externals'* (glob) |
232 A tc/subdir/s/externals/other | 226 A tc/subdir/s/externals/other (glob) |
233 Checked out external at revision 1. | 227 Checked out external at revision 1. |
234 | 228 |
235 Checked out revision 2. | 229 Checked out revision 2. |
236 3 files updated, 0 files merged, 0 files removed, 0 files unresolved | 230 3 files updated, 0 files merged, 0 files removed, 0 files unresolved |
237 $ cd tc | 231 $ cd tc |
256 $ hg up null | 250 $ hg up null |
257 0 files updated, 0 files merged, 3 files removed, 0 files unresolved | 251 0 files updated, 0 files merged, 3 files removed, 0 files unresolved |
258 $ ls | 252 $ ls |
259 | 253 |
260 Check hg update --clean | 254 Check hg update --clean |
261 $ cd $TESTTMP/sub/t | 255 $ cd "$TESTTMP/sub/t" |
262 $ cd s | 256 $ cd s |
263 $ echo c0 > alpha | 257 $ echo c0 > alpha |
264 $ echo c1 > f1 | 258 $ echo c1 > f1 |
265 $ echo c1 > f2 | 259 $ echo c1 > f2 |
266 $ svn add f1 -q | 260 $ svn add f1 -q |
288 ? * f2 (glob) | 282 ? * f2 (glob) |
289 Performing status on external item at 'externals'* (glob) | 283 Performing status on external item at 'externals'* (glob) |
290 X * externals (glob) | 284 X * externals (glob) |
291 | 285 |
292 Sticky subrepositories, no changes | 286 Sticky subrepositories, no changes |
293 $ cd $TESTTMP/sub/t | 287 $ cd "$TESTTMP/sub/t" |
294 $ hg id -n | 288 $ hg id -n |
295 2 | 289 2 |
296 $ cd s | 290 $ cd s |
297 $ svnversion | 291 $ svnversion |
298 3 | 292 3 |
419 $ cd .. | 413 $ cd .. |
420 | 414 |
421 Test case where subversion would fail to update the subrepo because there | 415 Test case where subversion would fail to update the subrepo because there |
422 are unknown directories being replaced by tracked ones (happens with rebase). | 416 are unknown directories being replaced by tracked ones (happens with rebase). |
423 | 417 |
424 $ cd $WCROOT/src | 418 $ cd "$WCROOT/src" |
425 $ mkdir dir | 419 $ mkdir dir |
426 $ echo epsilon.py > dir/epsilon.py | 420 $ echo epsilon.py > dir/epsilon.py |
427 $ svn add dir | 421 $ svn add dir |
428 A dir | 422 A dir |
429 A dir/epsilon.py (glob) | 423 A dir/epsilon.py (glob) |
433 Transmitting file data . | 427 Transmitting file data . |
434 Committed revision 6. | 428 Committed revision 6. |
435 $ cd ../.. | 429 $ cd ../.. |
436 $ hg init rebaserepo | 430 $ hg init rebaserepo |
437 $ cd rebaserepo | 431 $ cd rebaserepo |
438 $ svn co -r5 --quiet "$SVNREPO"/src s | 432 $ svn co -r5 --quiet "$SVNREPOURL"/src s |
439 $ echo "s = [svn] $SVNREPO/src" >> .hgsub | 433 $ echo "s = [svn] $SVNREPOURL/src" >> .hgsub |
440 $ hg add .hgsub | 434 $ hg add .hgsub |
441 $ hg ci -m addsub | 435 $ hg ci -m addsub |
442 $ echo a > a | 436 $ echo a > a |
443 $ hg ci -Am adda | 437 $ hg ci -Am adda |
444 adding a | 438 adding a |
460 | 454 |
461 Modify one of the externals to point to a different path so we can | 455 Modify one of the externals to point to a different path so we can |
462 test having obstructions when switching branches on checkout: | 456 test having obstructions when switching branches on checkout: |
463 $ hg checkout tip | 457 $ hg checkout tip |
464 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | 458 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
465 $ echo "obstruct = [svn] $SVNREPO/externals" >> .hgsub | 459 $ echo "obstruct = [svn] $SVNREPOURL/externals" >> .hgsub |
466 $ svn co -r5 --quiet "$SVNREPO"/externals obstruct | 460 $ svn co -r5 --quiet "$SVNREPOURL"/externals obstruct |
467 $ hg commit -m 'Start making obstructed working copy' | 461 $ hg commit -m 'Start making obstructed working copy' |
468 $ hg book other | 462 $ hg book other |
469 $ hg co -r 'p1(tip)' | 463 $ hg co -r 'p1(tip)' |
470 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 464 2 files updated, 0 files merged, 0 files removed, 0 files unresolved |
471 $ echo "obstruct = [svn] $SVNREPO/src" >> .hgsub | 465 $ echo "obstruct = [svn] $SVNREPOURL/src" >> .hgsub |
472 $ svn co -r5 --quiet "$SVNREPO"/src obstruct | 466 $ svn co -r5 --quiet "$SVNREPOURL"/src obstruct |
473 $ hg commit -m 'Other branch which will be obstructed' | 467 $ hg commit -m 'Other branch which will be obstructed' |
474 created new head | 468 created new head |
475 | 469 |
476 Switching back to the head where we have another path mapped to the | 470 Switching back to the head where we have another path mapped to the |
477 same subrepo should work if the subrepo is clean. | 471 same subrepo should work if the subrepo is clean. |
493 committing subrepository obstruct | 487 committing subrepository obstruct |
494 Sending obstruct/other (glob) | 488 Sending obstruct/other (glob) |
495 Transmitting file data . | 489 Transmitting file data . |
496 Committed revision 7. | 490 Committed revision 7. |
497 At revision 7. | 491 At revision 7. |
498 $ svn mkdir -m "baseline" $SVNREPO/trunk | 492 $ svn mkdir -m "baseline" $SVNREPOURL/trunk |
499 | 493 |
500 Committed revision 8. | 494 Committed revision 8. |
501 $ svn copy -m "initial branch" $SVNREPO/trunk $SVNREPO/branch | 495 $ svn copy -m "initial branch" $SVNREPOURL/trunk $SVNREPOURL/branch |
502 | 496 |
503 Committed revision 9. | 497 Committed revision 9. |
504 $ svn co --quiet "$SVNREPO"/branch tempwc | 498 $ svn co --quiet "$SVNREPOURL"/branch tempwc |
505 $ cd tempwc | 499 $ cd tempwc |
506 $ echo "something old" > somethingold | 500 $ echo "something old" > somethingold |
507 $ svn add somethingold | 501 $ svn add somethingold |
508 A somethingold | 502 A somethingold |
509 $ svn ci -m 'Something old' | 503 $ svn ci -m 'Something old' |
510 Adding somethingold | 504 Adding somethingold |
511 Transmitting file data . | 505 Transmitting file data . |
512 Committed revision 10. | 506 Committed revision 10. |
513 $ svn rm -m "remove branch" $SVNREPO/branch | 507 $ svn rm -m "remove branch" $SVNREPOURL/branch |
514 | 508 |
515 Committed revision 11. | 509 Committed revision 11. |
516 $ svn copy -m "recreate branch" $SVNREPO/trunk $SVNREPO/branch | 510 $ svn copy -m "recreate branch" $SVNREPOURL/trunk $SVNREPOURL/branch |
517 | 511 |
518 Committed revision 12. | 512 Committed revision 12. |
519 $ svn up -q | 513 $ svn up -q |
520 $ echo "something new" > somethingnew | 514 $ echo "something new" > somethingnew |
521 $ svn add somethingnew | 515 $ svn add somethingnew |
524 Adding somethingnew | 518 Adding somethingnew |
525 Transmitting file data . | 519 Transmitting file data . |
526 Committed revision 13. | 520 Committed revision 13. |
527 $ cd .. | 521 $ cd .. |
528 $ rm -rf tempwc | 522 $ rm -rf tempwc |
529 $ svn co "$SVNREPO/branch"@10 recreated | 523 $ svn co "$SVNREPOURL/branch"@10 recreated |
530 A recreated/somethingold (glob) | 524 A recreated/somethingold (glob) |
531 Checked out revision 10. | 525 Checked out revision 10. |
532 $ echo "recreated = [svn] $SVNREPO/branch" >> .hgsub | 526 $ echo "recreated = [svn] $SVNREPOURL/branch" >> .hgsub |
533 $ hg ci -m addsub | 527 $ hg ci -m addsub |
534 $ cd recreated | 528 $ cd recreated |
535 $ svn up -q | 529 $ svn up -q |
536 $ cd .. | 530 $ cd .. |
537 $ hg ci -m updatesub | 531 $ hg ci -m updatesub |
571 | 565 |
572 Test a subrepo referencing a just moved svn path. Last commit rev will | 566 Test a subrepo referencing a just moved svn path. Last commit rev will |
573 be different from the revision, and the path will be different as | 567 be different from the revision, and the path will be different as |
574 well. | 568 well. |
575 | 569 |
576 $ cd $WCROOT | 570 $ cd "$WCROOT" |
577 $ svn up > /dev/null | 571 $ svn up > /dev/null |
578 $ mkdir trunk/subdir branches | 572 $ mkdir trunk/subdir branches |
579 $ echo a > trunk/subdir/a | 573 $ echo a > trunk/subdir/a |
580 $ svn add trunk/subdir branches | 574 $ svn add trunk/subdir branches |
581 A trunk/subdir (glob) | 575 A trunk/subdir (glob) |
585 Adding branches | 579 Adding branches |
586 Adding trunk/subdir (glob) | 580 Adding trunk/subdir (glob) |
587 Adding trunk/subdir/a (glob) | 581 Adding trunk/subdir/a (glob) |
588 Transmitting file data . | 582 Transmitting file data . |
589 Committed revision 14. | 583 Committed revision 14. |
590 $ svn cp -m branchtrunk $SVNREPO/trunk $SVNREPO/branches/somebranch | 584 $ svn cp -m branchtrunk $SVNREPOURL/trunk $SVNREPOURL/branches/somebranch |
591 | 585 |
592 Committed revision 15. | 586 Committed revision 15. |
593 $ cd .. | 587 $ cd .. |
594 | 588 |
595 $ hg init repo2 | 589 $ hg init repo2 |
596 $ cd repo2 | 590 $ cd repo2 |
597 $ svn co $SVNREPO/branches/somebranch/subdir | 591 $ svn co $SVNREPOURL/branches/somebranch/subdir |
598 A subdir/a (glob) | 592 A subdir/a (glob) |
599 Checked out revision 15. | 593 Checked out revision 15. |
600 $ echo "subdir = [svn] $SVNREPO/branches/somebranch/subdir" > .hgsub | 594 $ echo "subdir = [svn] $SVNREPOURL/branches/somebranch/subdir" > .hgsub |
601 $ hg add .hgsub | 595 $ hg add .hgsub |
602 $ hg ci -m addsub | 596 $ hg ci -m addsub |
603 $ hg up null | 597 $ hg up null |
604 0 files updated, 0 files merged, 2 files removed, 0 files unresolved | 598 0 files updated, 0 files merged, 2 files removed, 0 files unresolved |
605 $ hg up | 599 $ hg up |