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