Show More
@@ -27,14 +27,20 b' required_tools = ["python", "diff", "gre' | |||||
27 | parser = optparse.OptionParser("%prog [options] [tests]") |
|
27 | parser = optparse.OptionParser("%prog [options] [tests]") | |
28 | parser.add_option("-C", "--annotate", action="store_true", |
|
28 | parser.add_option("-C", "--annotate", action="store_true", | |
29 | help="output files annotated with coverage") |
|
29 | help="output files annotated with coverage") | |
|
30 | parser.add_option("--child", type="int", | |||
|
31 | help="run as child process, summary to given fd") | |||
30 | parser.add_option("-c", "--cover", action="store_true", |
|
32 | parser.add_option("-c", "--cover", action="store_true", | |
31 | help="print a test coverage report") |
|
33 | help="print a test coverage report") | |
32 | parser.add_option("-f", "--first", action="store_true", |
|
34 | parser.add_option("-f", "--first", action="store_true", | |
33 | help="exit on the first test failure") |
|
35 | help="exit on the first test failure") | |
34 | parser.add_option("-i", "--interactive", action="store_true", |
|
36 | parser.add_option("-i", "--interactive", action="store_true", | |
35 | help="prompt to accept changed output") |
|
37 | help="prompt to accept changed output") | |
|
38 | parser.add_option("-j", "--jobs", type="int", | |||
|
39 | help="number of jobs to run in parallel") | |||
36 | parser.add_option("-R", "--restart", action="store_true", |
|
40 | parser.add_option("-R", "--restart", action="store_true", | |
37 | help="restart at last error") |
|
41 | help="restart at last error") | |
|
42 | parser.add_option("-p", "--port", type="int", | |||
|
43 | help="port on which servers should listen") | |||
38 | parser.add_option("-r", "--retest", action="store_true", |
|
44 | parser.add_option("-r", "--retest", action="store_true", | |
39 | help="retest failed tests") |
|
45 | help="retest failed tests") | |
40 | parser.add_option("-s", "--cover_stdlib", action="store_true", |
|
46 | parser.add_option("-s", "--cover_stdlib", action="store_true", | |
@@ -43,13 +49,22 b' parser.add_option("-t", "--timeout", typ' | |||||
43 | help="kill errant tests after TIMEOUT seconds") |
|
49 | help="kill errant tests after TIMEOUT seconds") | |
44 | parser.add_option("-v", "--verbose", action="store_true", |
|
50 | parser.add_option("-v", "--verbose", action="store_true", | |
45 | help="output verbose messages") |
|
51 | help="output verbose messages") | |
|
52 | parser.add_option("--with-hg", type="string", | |||
|
53 | help="test existing install at given location") | |||
46 |
|
54 | |||
47 | parser.set_defaults(timeout=180) |
|
55 | parser.set_defaults(jobs=1, port=20059, timeout=180) | |
48 | (options, args) = parser.parse_args() |
|
56 | (options, args) = parser.parse_args() | |
49 | verbose = options.verbose |
|
57 | verbose = options.verbose | |
50 | coverage = options.cover or options.cover_stdlib or options.annotate |
|
58 | coverage = options.cover or options.cover_stdlib or options.annotate | |
51 | python = sys.executable |
|
59 | python = sys.executable | |
52 |
|
60 | |||
|
61 | if options.jobs < 1: | |||
|
62 | print >> sys.stderr, 'ERROR: -j/--jobs must be positive' | |||
|
63 | sys.exit(1) | |||
|
64 | if options.interactive and options.jobs > 1: | |||
|
65 | print >> sys.stderr, 'ERROR: cannot mix -interactive and --jobs > 1' | |||
|
66 | sys.exit(1) | |||
|
67 | ||||
53 | def vlog(*msg): |
|
68 | def vlog(*msg): | |
54 | if verbose: |
|
69 | if verbose: | |
55 | for m in msg: |
|
70 | for m in msg: | |
@@ -368,10 +383,10 b' def run_one(test):' | |||||
368 | return None |
|
383 | return None | |
369 | return ret == 0 |
|
384 | return ret == 0 | |
370 |
|
385 | |||
|
386 | if not options.child: | |||
|
387 | os.umask(022) | |||
371 |
|
388 | |||
372 | os.umask(022) |
|
389 | check_required_tools() | |
373 |
|
||||
374 | check_required_tools() |
|
|||
375 |
|
390 | |||
376 | # Reset some environment variables to well-known values so that |
|
391 | # Reset some environment variables to well-known values so that | |
377 | # the tests produce repeatable output. |
|
392 | # the tests produce repeatable output. | |
@@ -380,28 +395,83 b" os.environ['TZ'] = 'GMT'" | |||||
380 |
|
395 | |||
381 | TESTDIR = os.environ["TESTDIR"] = os.getcwd() |
|
396 | TESTDIR = os.environ["TESTDIR"] = os.getcwd() | |
382 | HGTMP = os.environ["HGTMP"] = tempfile.mkdtemp("", "hgtests.") |
|
397 | HGTMP = os.environ["HGTMP"] = tempfile.mkdtemp("", "hgtests.") | |
383 | DAEMON_PIDS = os.environ["DAEMON_PIDS"] = os.path.join(HGTMP, 'daemon.pids') |
|
398 | DAEMON_PIDS = None | |
384 | HGRCPATH = os.environ["HGRCPATH"] = os.path.join(HGTMP, '.hgrc') |
|
399 | HGRCPATH = None | |
385 |
|
400 | |||
386 | os.environ["HGEDITOR"] = sys.executable + ' -c "import sys; sys.exit(0)"' |
|
401 | os.environ["HGEDITOR"] = sys.executable + ' -c "import sys; sys.exit(0)"' | |
387 | os.environ["HGMERGE"] = ('python "%s" -L my -L other' |
|
402 | os.environ["HGMERGE"] = ('python "%s" -L my -L other' | |
388 |
% os.path.join(TESTDIR, os.path.pardir, |
|
403 | % os.path.join(TESTDIR, os.path.pardir, | |
389 | 'simplemerge')) |
|
404 | 'contrib', 'simplemerge')) | |
390 | os.environ["HGUSER"] = "test" |
|
405 | os.environ["HGUSER"] = "test" | |
391 | os.environ["HGENCODING"] = "ascii" |
|
406 | os.environ["HGENCODING"] = "ascii" | |
392 | os.environ["HGENCODINGMODE"] = "strict" |
|
407 | os.environ["HGENCODINGMODE"] = "strict" | |
|
408 | os.environ["HGPORT"] = str(options.port) | |||
|
409 | os.environ["HGPORT1"] = str(options.port + 1) | |||
|
410 | os.environ["HGPORT2"] = str(options.port + 2) | |||
393 |
|
411 | |||
394 | vlog("# Using TESTDIR", TESTDIR) |
|
412 | if options.with_hg: | |
395 | vlog("# Using HGTMP", HGTMP) |
|
413 | INST = options.with_hg | |
396 |
|
414 | else: | ||
397 | INST = os.path.join(HGTMP, "install") |
|
415 | INST = os.path.join(HGTMP, "install") | |
398 | BINDIR = os.path.join(INST, "bin") |
|
416 | BINDIR = os.path.join(INST, "bin") | |
399 | PYTHONDIR = os.path.join(INST, "lib", "python") |
|
417 | PYTHONDIR = os.path.join(INST, "lib", "python") | |
400 | COVERAGE_FILE = os.path.join(TESTDIR, ".coverage") |
|
418 | COVERAGE_FILE = os.path.join(TESTDIR, ".coverage") | |
401 |
|
419 | |||
402 | try: |
|
420 | def run_children(tests): | |
|
421 | if not options.with_hg: | |||
|
422 | install_hg() | |||
|
423 | ||||
|
424 | optcopy = dict(options.__dict__) | |||
|
425 | optcopy['jobs'] = 1 | |||
|
426 | optcopy['with_hg'] = INST | |||
|
427 | opts = [] | |||
|
428 | for opt, value in optcopy.iteritems(): | |||
|
429 | name = '--' + opt.replace('_', '-') | |||
|
430 | if value is True: | |||
|
431 | opts.append(name) | |||
|
432 | elif value is not None: | |||
|
433 | opts.append(name + '=' + str(value)) | |||
|
434 | ||||
|
435 | tests.reverse() | |||
|
436 | jobs = [[] for j in xrange(options.jobs)] | |||
|
437 | while tests: | |||
|
438 | for j in xrange(options.jobs): | |||
|
439 | if not tests: break | |||
|
440 | jobs[j].append(tests.pop()) | |||
|
441 | fps = {} | |||
|
442 | for j in xrange(len(jobs)): | |||
|
443 | job = jobs[j] | |||
|
444 | if not job: | |||
|
445 | continue | |||
|
446 | rfd, wfd = os.pipe() | |||
|
447 | childopts = ['--child=%d' % wfd, '--port=%d' % (options.port + j * 3)] | |||
|
448 | cmdline = [python, sys.argv[0]] + opts + childopts + job | |||
|
449 | vlog(' '.join(cmdline)) | |||
|
450 | fps[os.spawnvp(os.P_NOWAIT, cmdline[0], cmdline)] = os.fdopen(rfd, 'r') | |||
|
451 | os.close(wfd) | |||
|
452 | failures = 0 | |||
|
453 | tested, skipped, failed = 0, 0, 0 | |||
|
454 | while fps: | |||
|
455 | pid, status = os.wait() | |||
|
456 | fp = fps.pop(pid) | |||
|
457 | test, skip, fail = map(int, fp.read().splitlines()) | |||
|
458 | tested += test | |||
|
459 | skipped += skip | |||
|
460 | failed += fail | |||
|
461 | vlog('pid %d exited, status %d' % (pid, status)) | |||
|
462 | failures |= status | |||
|
463 | print "\n# Ran %d tests, %d skipped, %d failed." % ( | |||
|
464 | tested, skipped, failed) | |||
|
465 | sys.exit(failures != 0) | |||
|
466 | ||||
|
467 | def run_tests(tests): | |||
|
468 | global DAEMON_PIDS, HGRCPATH | |||
|
469 | DAEMON_PIDS = os.environ["DAEMON_PIDS"] = os.path.join(HGTMP, 'daemon.pids') | |||
|
470 | HGRCPATH = os.environ["HGRCPATH"] = os.path.join(HGTMP, '.hgrc') | |||
|
471 | ||||
403 | try: |
|
472 | try: | |
404 | install_hg() |
|
473 | if not options.with_hg: | |
|
474 | install_hg() | |||
405 |
|
475 | |||
406 | if options.timeout > 0: |
|
476 | if options.timeout > 0: | |
407 | try: |
|
477 | try: | |
@@ -416,18 +486,6 b' try:' | |||||
416 | failed = 0 |
|
486 | failed = 0 | |
417 | skipped = 0 |
|
487 | skipped = 0 | |
418 |
|
488 | |||
419 | if len(args) == 0: |
|
|||
420 | args = os.listdir(".") |
|
|||
421 | args.sort() |
|
|||
422 |
|
||||
423 |
|
||||
424 | tests = [] |
|
|||
425 | for test in args: |
|
|||
426 | if (test.startswith("test-") and '~' not in test and |
|
|||
427 | ('.' not in test or test.endswith('.py') or |
|
|||
428 | test.endswith('.bat'))): |
|
|||
429 | tests.append(test) |
|
|||
430 |
|
||||
431 | if options.restart: |
|
489 | if options.restart: | |
432 | orig = list(tests) |
|
490 | orig = list(tests) | |
433 | while tests: |
|
491 | while tests: | |
@@ -458,15 +516,41 b' try:' | |||||
458 | break |
|
516 | break | |
459 | tested += 1 |
|
517 | tested += 1 | |
460 |
|
518 | |||
461 | print "\n# Ran %d tests, %d skipped, %d failed." % (tested, skipped, |
|
519 | if options.child: | |
462 | failed) |
|
520 | fp = os.fdopen(options.child, 'w') | |
|
521 | fp.write('%d\n%d\n%d\n' % (tested, skipped, failed)) | |||
|
522 | fp.close() | |||
|
523 | else: | |||
|
524 | print "\n# Ran %d tests, %d skipped, %d failed." % ( | |||
|
525 | tested, skipped, failed) | |||
|
526 | ||||
463 | if coverage: |
|
527 | if coverage: | |
464 | output_coverage() |
|
528 | output_coverage() | |
465 | except KeyboardInterrupt: |
|
529 | except KeyboardInterrupt: | |
466 | failed = True |
|
530 | failed = True | |
467 | print "\ninterrupted!" |
|
531 | print "\ninterrupted!" | |
|
532 | ||||
|
533 | if failed: | |||
|
534 | sys.exit(1) | |||
|
535 | ||||
|
536 | if len(args) == 0: | |||
|
537 | args = os.listdir(".") | |||
|
538 | args.sort() | |||
|
539 | ||||
|
540 | tests = [] | |||
|
541 | for test in args: | |||
|
542 | if (test.startswith("test-") and '~' not in test and | |||
|
543 | ('.' not in test or test.endswith('.py') or | |||
|
544 | test.endswith('.bat'))): | |||
|
545 | tests.append(test) | |||
|
546 | ||||
|
547 | vlog("# Using TESTDIR", TESTDIR) | |||
|
548 | vlog("# Using HGTMP", HGTMP) | |||
|
549 | ||||
|
550 | try: | |||
|
551 | if len(tests) > 1 and options.jobs > 1: | |||
|
552 | run_children(tests) | |||
|
553 | else: | |||
|
554 | run_tests(tests) | |||
468 | finally: |
|
555 | finally: | |
469 | cleanup_exit() |
|
556 | cleanup_exit() | |
470 |
|
||||
471 | if failed: |
|
|||
472 | sys.exit(1) |
|
@@ -13,16 +13,16 b" hg commit -Am 3 -d '1000000000 0'" | |||||
13 | echo "[web]" >> .hg/hgrc |
|
13 | echo "[web]" >> .hg/hgrc | |
14 | echo "name = test-archive" >> .hg/hgrc |
|
14 | echo "name = test-archive" >> .hg/hgrc | |
15 | echo "allow_archive = gz bz2, zip" >> .hg/hgrc |
|
15 | echo "allow_archive = gz bz2, zip" >> .hg/hgrc | |
16 |
hg serve -p |
|
16 | hg serve -p $HGPORT -d --pid-file=hg.pid | |
17 | cat hg.pid >> $DAEMON_PIDS |
|
17 | cat hg.pid >> $DAEMON_PIDS | |
18 |
|
18 | |||
19 | TIP=`hg id -v | cut -f1 -d' '` |
|
19 | TIP=`hg id -v | cut -f1 -d' '` | |
20 | QTIP=`hg id -q` |
|
20 | QTIP=`hg id -q` | |
21 | cat > getarchive.py <<EOF |
|
21 | cat > getarchive.py <<EOF | |
22 | import sys, urllib2 |
|
22 | import os, sys, urllib2 | |
23 | node, archive = sys.argv[1:] |
|
23 | node, archive = sys.argv[1:] | |
24 |
f = urllib2.urlopen('http://127.0.0.1: |
|
24 | f = urllib2.urlopen('http://127.0.0.1:%s/?cmd=archive;node=%s;type=%s' | |
25 | % (node, archive)) |
|
25 | % (os.environ['HGPORT'], node, archive)) | |
26 | sys.stdout.write(f.read()) |
|
26 | sys.stdout.write(f.read()) | |
27 | EOF |
|
27 | EOF | |
28 | http_proxy= python getarchive.py "$TIP" gz | gunzip | tar tf - | sed "s/$QTIP/TIP/" |
|
28 | http_proxy= python getarchive.py "$TIP" gz | gunzip | tar tf - | sed "s/$QTIP/TIP/" |
@@ -1,15 +1,15 b'' | |||||
1 | #!/bin/sh |
|
1 | #!/bin/sh | |
2 |
|
2 | |||
3 |
hg clone http://localhost: |
|
3 | hg clone http://localhost:$HGPORT/ copy | |
4 | echo $? |
|
4 | echo $? | |
5 | test -d copy || echo copy: No such file or directory |
|
5 | test -d copy || echo copy: No such file or directory | |
6 |
|
6 | |||
7 | cat > dumb.py <<EOF |
|
7 | cat > dumb.py <<EOF | |
8 | import BaseHTTPServer, SimpleHTTPServer, signal |
|
8 | import BaseHTTPServer, SimpleHTTPServer, os, signal | |
9 |
|
9 | |||
10 | def run(server_class=BaseHTTPServer.HTTPServer, |
|
10 | def run(server_class=BaseHTTPServer.HTTPServer, | |
11 | handler_class=SimpleHTTPServer.SimpleHTTPRequestHandler): |
|
11 | handler_class=SimpleHTTPServer.SimpleHTTPRequestHandler): | |
12 |
server_address = ('localhost', |
|
12 | server_address = ('localhost', int(os.environ['HGPORT'])) | |
13 | httpd = server_class(server_address, handler_class) |
|
13 | httpd = server_class(server_address, handler_class) | |
14 | httpd.serve_forever() |
|
14 | httpd.serve_forever() | |
15 |
|
15 | |||
@@ -23,7 +23,7 b' echo $! >> $DAEMON_PIDS' | |||||
23 | # give the server some time to start running |
|
23 | # give the server some time to start running | |
24 | sleep 1 |
|
24 | sleep 1 | |
25 |
|
25 | |||
26 |
http_proxy= hg clone http://localhost: |
|
26 | http_proxy= hg clone http://localhost:$HGPORT/foo copy2 2>&1 | \ | |
27 | sed -e 's/404.*/404/' -e 's/Date:.*/Date:/' |
|
27 | sed -e 's/404.*/404/' -e 's/Date:.*/Date:/' | |
28 | echo $? |
|
28 | echo $? | |
29 |
|
29 |
@@ -6,8 +6,8 b' mkdir da' | |||||
6 | echo foo > da/foo |
|
6 | echo foo > da/foo | |
7 | echo foo > foo |
|
7 | echo foo > foo | |
8 | hg ci -Ambase -d '0 0' |
|
8 | hg ci -Ambase -d '0 0' | |
9 |
hg serve -p |
|
9 | hg serve -p $HGPORT -d --pid-file=hg.pid | |
10 | echo % manifest |
|
10 | echo % manifest | |
11 |
("$TESTDIR/get-with-headers.py" localhost: |
|
11 | ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/?style=raw') | |
12 |
("$TESTDIR/get-with-headers.py" localhost: |
|
12 | ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/da?style=raw') | |
13 | kill `cat hg.pid` |
|
13 | kill `cat hg.pid` |
@@ -6,23 +6,23 b' hg init test' | |||||
6 | cd test |
|
6 | cd test | |
7 | echo foo>foo |
|
7 | echo foo>foo | |
8 | hg commit -A -d '0 0' -m 1 |
|
8 | hg commit -A -d '0 0' -m 1 | |
9 |
hg --config server.uncompressed=True serve -p |
|
9 | hg --config server.uncompressed=True serve -p $HGPORT -d --pid-file=../hg1.pid | |
10 |
hg serve -p |
|
10 | hg serve -p $HGPORT1 -d --pid-file=../hg2.pid | |
11 | # Test server address cannot be reused |
|
11 | # Test server address cannot be reused | |
12 |
hg serve -p |
|
12 | hg serve -p $HGPORT1 2>&1 | sed -e 's/abort: cannot start server:.*/abort: cannot start server:/' | |
13 | cd .. |
|
13 | cd .. | |
14 | cat hg1.pid hg2.pid >> $DAEMON_PIDS |
|
14 | cat hg1.pid hg2.pid >> $DAEMON_PIDS | |
15 |
|
15 | |||
16 | echo % clone via stream |
|
16 | echo % clone via stream | |
17 |
http_proxy= hg clone --uncompressed http://localhost: |
|
17 | http_proxy= hg clone --uncompressed http://localhost:$HGPORT/ copy 2>&1 | \ | |
18 | sed -e 's/[0-9][0-9.]*/XXX/g' -e 's/[KM]\(B\/sec\)/X\1/' |
|
18 | sed -e 's/[0-9][0-9.]*/XXX/g' -e 's/[KM]\(B\/sec\)/X\1/' | |
19 | hg verify -R copy |
|
19 | hg verify -R copy | |
20 |
|
20 | |||
21 | echo % try to clone via stream, should use pull instead |
|
21 | echo % try to clone via stream, should use pull instead | |
22 |
http_proxy= hg clone --uncompressed http://localhost: |
|
22 | http_proxy= hg clone --uncompressed http://localhost:$HGPORT1/ copy2 | |
23 |
|
23 | |||
24 | echo % clone via pull |
|
24 | echo % clone via pull | |
25 |
http_proxy= hg clone http://localhost: |
|
25 | http_proxy= hg clone http://localhost:$HGPORT1/ copy-pull | |
26 | hg verify -R copy-pull |
|
26 | hg verify -R copy-pull | |
27 |
|
27 | |||
28 | cd test |
|
28 | cd test | |
@@ -34,5 +34,5 b' echo % pull' | |||||
34 | cd copy-pull |
|
34 | cd copy-pull | |
35 | echo '[hooks]' >> .hg/hgrc |
|
35 | echo '[hooks]' >> .hg/hgrc | |
36 | echo 'changegroup = python ../printenv.py changegroup' >> .hg/hgrc |
|
36 | echo 'changegroup = python ../printenv.py changegroup' >> .hg/hgrc | |
37 | hg pull |
|
37 | hg pull | sed -e 's,:[0-9][0-9]*/,/,' | |
38 | cd .. |
|
38 | cd .. |
@@ -49,13 +49,13 b' hg debugindex .hg/store/data/fred.i' | |||||
49 | hg debugindex .hg/store/00manifest.i |
|
49 | hg debugindex .hg/store/00manifest.i | |
50 | hg verify |
|
50 | hg verify | |
51 | echo "# Starting server" |
|
51 | echo "# Starting server" | |
52 |
hg serve -p |
|
52 | hg serve -p $HGPORT -d --pid-file=../hg1.pid | |
53 | cd .. |
|
53 | cd .. | |
54 | cat hg1.pid >> $DAEMON_PIDS |
|
54 | cat hg1.pid >> $DAEMON_PIDS | |
55 |
|
55 | |||
56 | echo "# clone remote via stream" |
|
56 | echo "# clone remote via stream" | |
57 | for i in 0 1 2 3 4 5 6 7 8; do |
|
57 | for i in 0 1 2 3 4 5 6 7 8; do | |
58 |
hg clone -r "$i" http://localhost: |
|
58 | hg clone -r "$i" http://localhost:$HGPORT/ test-"$i" 2>&1 | |
59 | if cd test-"$i"; then |
|
59 | if cd test-"$i"; then | |
60 | hg verify |
|
60 | hg verify | |
61 | cd .. |
|
61 | cd .. | |
@@ -66,13 +66,13 b' hg pull ../test-7' | |||||
66 | hg verify |
|
66 | hg verify | |
67 | cd .. |
|
67 | cd .. | |
68 | cd test-1 |
|
68 | cd test-1 | |
69 |
hg pull -r 4 http://localhost: |
|
69 | hg pull -r 4 http://localhost:$HGPORT/ 2>&1 | sed -e 's,:[0-9][0-9]*/,/,' | |
70 | hg verify |
|
70 | hg verify | |
71 | hg pull http://localhost:20061/ 2>&1 |
|
71 | hg pull http://localhost:$HGPORT/ 2>&1 | sed -e 's,:[0-9][0-9]*/,/,' | |
72 | cd .. |
|
72 | cd .. | |
73 | cd test-2 |
|
73 | cd test-2 | |
74 |
hg pull -r 5 http://localhost: |
|
74 | hg pull -r 5 http://localhost:$HGPORT/ 2>&1 | sed -e 's,:[0-9][0-9]*/,/,' | |
75 | hg verify |
|
75 | hg verify | |
76 | hg pull http://localhost:20061/ 2>&1 |
|
76 | hg pull http://localhost:$HGPORT/ 2>&1 | sed -e 's,:[0-9][0-9]*/,/,' | |
77 | hg verify |
|
77 | hg verify | |
78 | cd .. |
|
78 | cd .. |
@@ -138,7 +138,7 b' checking manifests' | |||||
138 | crosschecking files in changesets and manifests |
|
138 | crosschecking files in changesets and manifests | |
139 | checking files |
|
139 | checking files | |
140 | 4 files, 9 changesets, 7 total revisions |
|
140 | 4 files, 9 changesets, 7 total revisions | |
141 |
pulling from http://localhost |
|
141 | pulling from http://localhost/ | |
142 | searching for changes |
|
142 | searching for changes | |
143 | adding changesets |
|
143 | adding changesets | |
144 | adding manifests |
|
144 | adding manifests | |
@@ -150,14 +150,14 b' checking manifests' | |||||
150 | crosschecking files in changesets and manifests |
|
150 | crosschecking files in changesets and manifests | |
151 | checking files |
|
151 | checking files | |
152 | 1 files, 3 changesets, 2 total revisions |
|
152 | 1 files, 3 changesets, 2 total revisions | |
153 |
pulling from http://localhost |
|
153 | pulling from http://localhost/ | |
154 | searching for changes |
|
154 | searching for changes | |
155 | adding changesets |
|
155 | adding changesets | |
156 | adding manifests |
|
156 | adding manifests | |
157 | adding file changes |
|
157 | adding file changes | |
158 | added 6 changesets with 5 changes to 4 files |
|
158 | added 6 changesets with 5 changes to 4 files | |
159 | (run 'hg update' to get a working copy) |
|
159 | (run 'hg update' to get a working copy) | |
160 |
pulling from http://localhost |
|
160 | pulling from http://localhost/ | |
161 | searching for changes |
|
161 | searching for changes | |
162 | adding changesets |
|
162 | adding changesets | |
163 | adding manifests |
|
163 | adding manifests | |
@@ -169,7 +169,7 b' checking manifests' | |||||
169 | crosschecking files in changesets and manifests |
|
169 | crosschecking files in changesets and manifests | |
170 | checking files |
|
170 | checking files | |
171 | 1 files, 5 changesets, 3 total revisions |
|
171 | 1 files, 5 changesets, 3 total revisions | |
172 |
pulling from http://localhost |
|
172 | pulling from http://localhost/ | |
173 | searching for changes |
|
173 | searching for changes | |
174 | adding changesets |
|
174 | adding changesets | |
175 | adding manifests |
|
175 | adding manifests |
@@ -4,38 +4,38 b' hg init a' | |||||
4 | cd a |
|
4 | cd a | |
5 | echo a > a |
|
5 | echo a > a | |
6 | hg ci -Ama -d '1123456789 0' |
|
6 | hg ci -Ama -d '1123456789 0' | |
7 |
hg --config server.uncompressed=True serve -p |
|
7 | hg --config server.uncompressed=True serve -p $HGPORT -d --pid-file=hg.pid | |
8 | cat hg.pid >> $DAEMON_PIDS |
|
8 | cat hg.pid >> $DAEMON_PIDS | |
9 |
|
9 | |||
10 | cd .. |
|
10 | cd .. | |
11 |
("$TESTDIR/tinyproxy.py" |
|
11 | ("$TESTDIR/tinyproxy.py" $HGPORT1 localhost >proxy.log 2>&1 </dev/null & | |
12 | echo $! > proxy.pid) |
|
12 | echo $! > proxy.pid) | |
13 | cat proxy.pid >> $DAEMON_PIDS |
|
13 | cat proxy.pid >> $DAEMON_PIDS | |
14 | sleep 2 |
|
14 | sleep 2 | |
15 |
|
15 | |||
16 | echo %% url for proxy, stream |
|
16 | echo %% url for proxy, stream | |
17 |
http_proxy=http://localhost: |
|
17 | http_proxy=http://localhost:$HGPORT1/ hg --config http_proxy.always=True clone --uncompressed http://localhost:$HGPORT/ b | \ | |
18 | sed -e 's/[0-9][0-9.]*/XXX/g' -e 's/[KM]\(B\/sec\)/X\1/' |
|
18 | sed -e 's/[0-9][0-9.]*/XXX/g' -e 's/[KM]\(B\/sec\)/X\1/' | |
19 | cd b |
|
19 | cd b | |
20 | hg verify |
|
20 | hg verify | |
21 | cd .. |
|
21 | cd .. | |
22 |
|
22 | |||
23 | echo %% url for proxy, pull |
|
23 | echo %% url for proxy, pull | |
24 |
http_proxy=http://localhost: |
|
24 | http_proxy=http://localhost:$HGPORT1/ hg --config http_proxy.always=True clone http://localhost:$HGPORT/ b-pull | |
25 | cd b-pull |
|
25 | cd b-pull | |
26 | hg verify |
|
26 | hg verify | |
27 | cd .. |
|
27 | cd .. | |
28 |
|
28 | |||
29 | echo %% host:port for proxy |
|
29 | echo %% host:port for proxy | |
30 |
http_proxy=localhost: |
|
30 | http_proxy=localhost:$HGPORT1 hg clone --config http_proxy.always=True http://localhost:$HGPORT/ c | |
31 |
|
31 | |||
32 | echo %% proxy url with user name and password |
|
32 | echo %% proxy url with user name and password | |
33 |
http_proxy=http://user:passwd@localhost: |
|
33 | http_proxy=http://user:passwd@localhost:$HGPORT1 hg clone --config http_proxy.always=True http://localhost:$HGPORT/ d | |
34 |
|
34 | |||
35 | echo %% url with user name and password |
|
35 | echo %% url with user name and password | |
36 |
http_proxy=http://user:passwd@localhost: |
|
36 | http_proxy=http://user:passwd@localhost:$HGPORT1 hg clone --config http_proxy.always=True http://user:passwd@localhost:$HGPORT/ e | |
37 |
|
37 | |||
38 | echo %% bad host:port for proxy |
|
38 | echo %% bad host:port for proxy | |
39 |
http_proxy=localhost:2 |
|
39 | http_proxy=localhost:$HGPORT2 hg clone --config http_proxy.always=True http://localhost:$HGPORT/ f | |
40 |
|
40 | |||
41 | exit 0 |
|
41 | exit 0 |
@@ -31,8 +31,8 b' checking files' | |||||
31 | 1 files, 1 changesets, 1 total revisions |
|
31 | 1 files, 1 changesets, 1 total revisions | |
32 | adding bar |
|
32 | adding bar | |
33 | % pull |
|
33 | % pull | |
34 |
changegroup hook: HG_NODE=cfbd11a1fa315300a080c3de8fe36b0fc5820acf HG_SOURCE=pull HG_URL=http://localhost |
|
34 | changegroup hook: HG_NODE=cfbd11a1fa315300a080c3de8fe36b0fc5820acf HG_SOURCE=pull HG_URL=http://localhost/ | |
35 |
pulling from http://localhost |
|
35 | pulling from http://localhost/ | |
36 | searching for changes |
|
36 | searching for changes | |
37 | adding changesets |
|
37 | adding changesets | |
38 | adding manifests |
|
38 | adding manifests |
@@ -8,20 +8,20 b' for i in 0 1 2 3 4 5 6 7 8; do' | |||||
8 | hg commit -A -m $i -d "1000000 0" |
|
8 | hg commit -A -m $i -d "1000000 0" | |
9 | done |
|
9 | done | |
10 | hg verify |
|
10 | hg verify | |
11 |
hg serve -p |
|
11 | hg serve -p $HGPORT -d --pid-file=hg.pid | |
12 | cat hg.pid >> $DAEMON_PIDS |
|
12 | cat hg.pid >> $DAEMON_PIDS | |
13 | cd .. |
|
13 | cd .. | |
14 |
|
14 | |||
15 | hg init new |
|
15 | hg init new | |
16 | # http incoming |
|
16 | # http incoming | |
17 |
http_proxy= hg -R new incoming http://localhost: |
|
17 | http_proxy= hg -R new incoming http://localhost:$HGPORT/ | sed -e 's,:[0-9][0-9]*/,/,' | |
18 |
http_proxy= hg -R new incoming -r 4 http://localhost: |
|
18 | http_proxy= hg -R new incoming -r 4 http://localhost:$HGPORT/ | sed -e 's,:[0-9][0-9]*/,/,' | |
19 | # local incoming |
|
19 | # local incoming | |
20 | hg -R new incoming test |
|
20 | hg -R new incoming test | |
21 | hg -R new incoming -r 4 test |
|
21 | hg -R new incoming -r 4 test | |
22 |
|
22 | |||
23 | # test with --bundle |
|
23 | # test with --bundle | |
24 |
http_proxy= hg -R new incoming --bundle test.hg http://localhost: |
|
24 | http_proxy= hg -R new incoming --bundle test.hg http://localhost:$HGPORT/ | sed -e 's,:[0-9][0-9]*/,/,' | |
25 | hg -R new incoming --bundle test2.hg test |
|
25 | hg -R new incoming --bundle test2.hg test | |
26 |
|
26 | |||
27 | # test the resulting bundles |
|
27 | # test the resulting bundles | |
@@ -44,5 +44,5 b' done' | |||||
44 | hg verify |
|
44 | hg verify | |
45 | cd .. |
|
45 | cd .. | |
46 | hg -R test-dev outgoing test |
|
46 | hg -R test-dev outgoing test | |
47 |
http_proxy= hg -R test-dev outgoing http://localhost: |
|
47 | http_proxy= hg -R test-dev outgoing http://localhost:$HGPORT/ | sed -e 's,:[0-9][0-9]*/,/,' | |
48 |
http_proxy= hg -R test-dev outgoing -r 11 http://localhost: |
|
48 | http_proxy= hg -R test-dev outgoing -r 11 http://localhost:$HGPORT/ | sed -e 's,:[0-9][0-9]*/,/,' |
@@ -4,7 +4,7 b' checking manifests' | |||||
4 | crosschecking files in changesets and manifests |
|
4 | crosschecking files in changesets and manifests | |
5 | checking files |
|
5 | checking files | |
6 | 1 files, 9 changesets, 9 total revisions |
|
6 | 1 files, 9 changesets, 9 total revisions | |
7 |
comparing with http://localhost |
|
7 | comparing with http://localhost/ | |
8 | changeset: 0:9cb21d99fe27 |
|
8 | changeset: 0:9cb21d99fe27 | |
9 | user: test |
|
9 | user: test | |
10 | date: Mon Jan 12 13:46:40 1970 +0000 |
|
10 | date: Mon Jan 12 13:46:40 1970 +0000 | |
@@ -51,7 +51,7 b' user: test' | |||||
51 | date: Mon Jan 12 13:46:40 1970 +0000 |
|
51 | date: Mon Jan 12 13:46:40 1970 +0000 | |
52 | summary: 8 |
|
52 | summary: 8 | |
53 |
|
53 | |||
54 |
comparing with http://localhost |
|
54 | comparing with http://localhost/ | |
55 | changeset: 0:9cb21d99fe27 |
|
55 | changeset: 0:9cb21d99fe27 | |
56 | user: test |
|
56 | user: test | |
57 | date: Mon Jan 12 13:46:40 1970 +0000 |
|
57 | date: Mon Jan 12 13:46:40 1970 +0000 | |
@@ -151,7 +151,7 b' user: test' | |||||
151 | date: Mon Jan 12 13:46:40 1970 +0000 |
|
151 | date: Mon Jan 12 13:46:40 1970 +0000 | |
152 | summary: 4 |
|
152 | summary: 4 | |
153 |
|
153 | |||
154 |
comparing with http://localhost |
|
154 | comparing with http://localhost/ | |
155 | changeset: 0:9cb21d99fe27 |
|
155 | changeset: 0:9cb21d99fe27 | |
156 | user: test |
|
156 | user: test | |
157 | date: Mon Jan 12 13:46:40 1970 +0000 |
|
157 | date: Mon Jan 12 13:46:40 1970 +0000 | |
@@ -301,7 +301,7 b' user: test' | |||||
301 | date: Mon Jan 12 13:46:40 1970 +0000 |
|
301 | date: Mon Jan 12 13:46:40 1970 +0000 | |
302 | summary: 13 |
|
302 | summary: 13 | |
303 |
|
303 | |||
304 |
comparing with http://localhost |
|
304 | comparing with http://localhost/ | |
305 | searching for changes |
|
305 | searching for changes | |
306 | changeset: 9:3741c3ad1096 |
|
306 | changeset: 9:3741c3ad1096 | |
307 | user: test |
|
307 | user: test | |
@@ -329,7 +329,7 b' user: test' | |||||
329 | date: Mon Jan 12 13:46:40 1970 +0000 |
|
329 | date: Mon Jan 12 13:46:40 1970 +0000 | |
330 | summary: 13 |
|
330 | summary: 13 | |
331 |
|
331 | |||
332 |
comparing with http://localhost |
|
332 | comparing with http://localhost/ | |
333 | searching for changes |
|
333 | searching for changes | |
334 | changeset: 9:3741c3ad1096 |
|
334 | changeset: 9:3741c3ad1096 | |
335 | user: test |
|
335 | user: test |
@@ -15,7 +15,7 b' from mercurial.hgweb.request import _wsg' | |||||
15 | from mercurial.ui import ui |
|
15 | from mercurial.ui import ui | |
16 | from mercurial import hg |
|
16 | from mercurial import hg | |
17 | from StringIO import StringIO |
|
17 | from StringIO import StringIO | |
18 | import sys |
|
18 | import os, sys | |
19 |
|
19 | |||
20 | class FileLike(object): |
|
20 | class FileLike(object): | |
21 | def __init__(self, real): |
|
21 | def __init__(self, real): | |
@@ -58,7 +58,7 b' env = {' | |||||
58 | 'PATH_INFO': '', |
|
58 | 'PATH_INFO': '', | |
59 | 'QUERY_STRING': '', |
|
59 | 'QUERY_STRING': '', | |
60 | 'SERVER_NAME': '127.0.0.1', |
|
60 | 'SERVER_NAME': '127.0.0.1', | |
61 |
'SERVER_PORT': |
|
61 | 'SERVER_PORT': os.environ['HGPORT'], | |
62 | 'SERVER_PROTOCOL': 'HTTP/1.0' |
|
62 | 'SERVER_PROTOCOL': 'HTTP/1.0' | |
63 | } |
|
63 | } | |
64 |
|
64 |
@@ -7,17 +7,17 b' hg init' | |||||
7 | hg addremove |
|
7 | hg addremove | |
8 | hg commit -m 1 |
|
8 | hg commit -m 1 | |
9 | hg verify |
|
9 | hg verify | |
10 |
hg serve -p |
|
10 | hg serve -p $HGPORT -d --pid-file=hg.pid | |
11 | cat hg.pid >> $DAEMON_PIDS |
|
11 | cat hg.pid >> $DAEMON_PIDS | |
12 | cd .. |
|
12 | cd .. | |
13 |
|
13 | |||
14 |
http_proxy= hg clone --pull http://localhost: |
|
14 | http_proxy= hg clone --pull http://localhost:$HGPORT/ copy | sed -e 's,:[0-9][0-9]*/,/,' | |
15 | cd copy |
|
15 | cd copy | |
16 | hg verify |
|
16 | hg verify | |
17 | hg co |
|
17 | hg co | |
18 | cat foo |
|
18 | cat foo | |
19 | hg manifest --debug |
|
19 | hg manifest --debug | |
20 | hg pull |
|
20 | hg pull | sed -e 's,:[0-9][0-9]*/,/,' | |
21 |
|
21 | |||
22 | echo % issue 622 |
|
22 | echo % issue 622 | |
23 | cd .. |
|
23 | cd .. |
@@ -18,7 +18,7 b' 1 files, 1 changesets, 1 total revisions' | |||||
18 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
18 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
19 | foo |
|
19 | foo | |
20 | 2ed2a3912a0b24502043eae84ee4b279c18b90dd 644 foo |
|
20 | 2ed2a3912a0b24502043eae84ee4b279c18b90dd 644 foo | |
21 |
pulling from http://localhost |
|
21 | pulling from http://localhost/ | |
22 | searching for changes |
|
22 | searching for changes | |
23 | no changes found |
|
23 | no changes found | |
24 | % issue 622 |
|
24 | % issue 622 |
@@ -16,33 +16,33 b" hg ci -mb -d '0 0'" | |||||
16 | cd ../test |
|
16 | cd ../test | |
17 |
|
17 | |||
18 | echo % expect ssl error |
|
18 | echo % expect ssl error | |
19 |
hg serve -p |
|
19 | hg serve -p $HGPORT -d --pid-file=hg.pid | |
20 | cat hg.pid >> $DAEMON_PIDS |
|
20 | cat hg.pid >> $DAEMON_PIDS | |
21 |
hg --cwd ../test2 push http://localhost: |
|
21 | hg --cwd ../test2 push http://localhost:$HGPORT/ | |
22 | kill `cat hg.pid` |
|
22 | kill `cat hg.pid` | |
23 |
|
23 | |||
24 | echo % expect authorization error |
|
24 | echo % expect authorization error | |
25 | echo '[web]' > .hg/hgrc |
|
25 | echo '[web]' > .hg/hgrc | |
26 | echo 'push_ssl = false' >> .hg/hgrc |
|
26 | echo 'push_ssl = false' >> .hg/hgrc | |
27 |
hg serve -p |
|
27 | hg serve -p $HGPORT -d --pid-file=hg.pid | |
28 | cat hg.pid >> $DAEMON_PIDS |
|
28 | cat hg.pid >> $DAEMON_PIDS | |
29 |
hg --cwd ../test2 push http://localhost: |
|
29 | hg --cwd ../test2 push http://localhost:$HGPORT/ | |
30 | kill `cat hg.pid` |
|
30 | kill `cat hg.pid` | |
31 |
|
31 | |||
32 | echo % expect authorization error: must have authorized user |
|
32 | echo % expect authorization error: must have authorized user | |
33 | echo 'allow_push = unperson' >> .hg/hgrc |
|
33 | echo 'allow_push = unperson' >> .hg/hgrc | |
34 |
hg serve -p |
|
34 | hg serve -p $HGPORT -d --pid-file=hg.pid | |
35 | cat hg.pid >> $DAEMON_PIDS |
|
35 | cat hg.pid >> $DAEMON_PIDS | |
36 |
hg --cwd ../test2 push http://localhost: |
|
36 | hg --cwd ../test2 push http://localhost:$HGPORT/ | |
37 | kill `cat hg.pid` |
|
37 | kill `cat hg.pid` | |
38 |
|
38 | |||
39 | echo % expect success |
|
39 | echo % expect success | |
40 | echo 'allow_push = *' >> .hg/hgrc |
|
40 | echo 'allow_push = *' >> .hg/hgrc | |
41 | echo '[hooks]' >> .hg/hgrc |
|
41 | echo '[hooks]' >> .hg/hgrc | |
42 | echo 'changegroup = python ../printenv.py changegroup 0 ../urls' >> .hg/hgrc |
|
42 | echo 'changegroup = python ../printenv.py changegroup 0 ../urls' >> .hg/hgrc | |
43 |
hg serve -p |
|
43 | hg serve -p $HGPORT -d --pid-file=hg.pid | |
44 | cat hg.pid >> $DAEMON_PIDS |
|
44 | cat hg.pid >> $DAEMON_PIDS | |
45 |
hg --cwd ../test2 push http://localhost: |
|
45 | hg --cwd ../test2 push http://localhost:$HGPORT/ | |
46 | kill `cat hg.pid` |
|
46 | kill `cat hg.pid` | |
47 | hg rollback |
|
47 | hg rollback | |
48 |
|
48 | |||
@@ -52,14 +52,14 b' echo % expect authorization error: all u' | |||||
52 | echo '[web]' > .hg/hgrc |
|
52 | echo '[web]' > .hg/hgrc | |
53 | echo 'push_ssl = false' >> .hg/hgrc |
|
53 | echo 'push_ssl = false' >> .hg/hgrc | |
54 | echo 'deny_push = *' >> .hg/hgrc |
|
54 | echo 'deny_push = *' >> .hg/hgrc | |
55 |
hg serve -p |
|
55 | hg serve -p $HGPORT -d --pid-file=hg.pid | |
56 | cat hg.pid >> $DAEMON_PIDS |
|
56 | cat hg.pid >> $DAEMON_PIDS | |
57 |
hg --cwd ../test2 push http://localhost: |
|
57 | hg --cwd ../test2 push http://localhost:$HGPORT/ | sed -e 's,:[0-9][0-9]*/,/,' | |
58 | kill `cat hg.pid` |
|
58 | kill `cat hg.pid` | |
59 |
|
59 | |||
60 | echo % expect authorization error: some users denied, users must be authenticated |
|
60 | echo % expect authorization error: some users denied, users must be authenticated | |
61 | echo 'deny_push = unperson' >> .hg/hgrc |
|
61 | echo 'deny_push = unperson' >> .hg/hgrc | |
62 |
hg serve -p |
|
62 | hg serve -p $HGPORT -d --pid-file=hg.pid | |
63 | cat hg.pid >> $DAEMON_PIDS |
|
63 | cat hg.pid >> $DAEMON_PIDS | |
64 |
hg --cwd ../test2 push http://localhost: |
|
64 | hg --cwd ../test2 push http://localhost:$HGPORT/ | sed -e 's,:[0-9][0-9]*/,/,' | |
65 | kill `cat hg.pid` |
|
65 | kill `cat hg.pid` |
@@ -1,19 +1,19 b'' | |||||
1 | adding a |
|
1 | adding a | |
2 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
2 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
3 | % expect ssl error |
|
3 | % expect ssl error | |
4 |
pushing to http://localhost:2 |
|
4 | pushing to http://localhost:23451/ | |
5 | searching for changes |
|
5 | searching for changes | |
6 | ssl required |
|
6 | ssl required | |
7 | % expect authorization error |
|
7 | % expect authorization error | |
8 |
pushing to http://localhost:2 |
|
8 | pushing to http://localhost:23451/ | |
9 | searching for changes |
|
9 | searching for changes | |
10 | push not authorized |
|
10 | push not authorized | |
11 | % expect authorization error: must have authorized user |
|
11 | % expect authorization error: must have authorized user | |
12 |
pushing to http://localhost:2 |
|
12 | pushing to http://localhost:23451/ | |
13 | searching for changes |
|
13 | searching for changes | |
14 | push not authorized |
|
14 | push not authorized | |
15 | % expect success |
|
15 | % expect success | |
16 |
pushing to http://localhost:2 |
|
16 | pushing to http://localhost:23451/ | |
17 | searching for changes |
|
17 | searching for changes | |
18 | adding changesets |
|
18 | adding changesets | |
19 | adding manifests |
|
19 | adding manifests | |
@@ -22,10 +22,10 b' added 1 changesets with 1 changes to 1 f' | |||||
22 | rolling back last transaction |
|
22 | rolling back last transaction | |
23 | changegroup hook: HG_NODE=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_SOURCE=serve HG_URL=remote:http |
|
23 | changegroup hook: HG_NODE=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_SOURCE=serve HG_URL=remote:http | |
24 | % expect authorization error: all users denied |
|
24 | % expect authorization error: all users denied | |
25 |
pushing to http://localhost |
|
25 | pushing to http://localhost/ | |
26 | searching for changes |
|
26 | searching for changes | |
27 | push not authorized |
|
27 | push not authorized | |
28 | % expect authorization error: some users denied, users must be authenticated |
|
28 | % expect authorization error: some users denied, users must be authenticated | |
29 |
pushing to http://localhost |
|
29 | pushing to http://localhost/ | |
30 | searching for changes |
|
30 | searching for changes | |
31 | push not authorized |
|
31 | push not authorized |
@@ -7,12 +7,12 b" echo '[web]' > .hg/hgrc" | |||||
7 | echo 'accesslog = access.log' >> .hg/hgrc |
|
7 | echo 'accesslog = access.log' >> .hg/hgrc | |
8 |
|
8 | |||
9 | echo % Without -v |
|
9 | echo % Without -v | |
10 |
hg serve -a localhost -p |
|
10 | hg serve -a localhost -p $HGPORT -d --pid-file=hg.pid | |
11 | cat hg.pid >> "$DAEMON_PIDS" |
|
11 | cat hg.pid >> "$DAEMON_PIDS" | |
12 | if [ -f access.log ]; then |
|
12 | if [ -f access.log ]; then | |
13 | echo 'access log created - .hg/hgrc respected' |
|
13 | echo 'access log created - .hg/hgrc respected' | |
14 | fi |
|
14 | fi | |
15 |
|
15 | |||
16 | echo % With -v |
|
16 | echo % With -v | |
17 |
hg serve -a localhost -p |
|
17 | hg serve -a localhost -p $HGPORT1 -d --pid-file=hg.pid -v | sed -e 's,:[0-9][0-9]*/,/,' | |
18 | cat hg.pid >> "$DAEMON_PIDS" |
|
18 | cat hg.pid >> "$DAEMON_PIDS" |
@@ -1,4 +1,4 b'' | |||||
1 | % Without -v |
|
1 | % Without -v | |
2 | access log created - .hg/hgrc respected |
|
2 | access log created - .hg/hgrc respected | |
3 | % With -v |
|
3 | % With -v | |
4 |
listening at http://localhost |
|
4 | listening at http://localhost/ |
@@ -2,18 +2,18 b'' | |||||
2 |
|
2 | |||
3 | cp "$TESTDIR"/printenv.py . |
|
3 | cp "$TESTDIR"/printenv.py . | |
4 |
|
4 | |||
5 |
http_proxy= hg clone static-http://localhost: |
|
5 | http_proxy= hg clone static-http://localhost:$HGPORT/ copy | |
6 | echo $? |
|
6 | echo $? | |
7 | test -d copy || echo copy: No such file or directory |
|
7 | test -d copy || echo copy: No such file or directory | |
8 |
|
8 | |||
9 | # This server doesn't do range requests so it's basically only good for |
|
9 | # This server doesn't do range requests so it's basically only good for | |
10 | # one pull |
|
10 | # one pull | |
11 | cat > dumb.py <<EOF |
|
11 | cat > dumb.py <<EOF | |
12 | import BaseHTTPServer, SimpleHTTPServer, signal |
|
12 | import BaseHTTPServer, SimpleHTTPServer, os, signal | |
13 |
|
13 | |||
14 | def run(server_class=BaseHTTPServer.HTTPServer, |
|
14 | def run(server_class=BaseHTTPServer.HTTPServer, | |
15 | handler_class=SimpleHTTPServer.SimpleHTTPRequestHandler): |
|
15 | handler_class=SimpleHTTPServer.SimpleHTTPRequestHandler): | |
16 |
server_address = ('localhost', |
|
16 | server_address = ('localhost', int(os.environ['HGPORT'])) | |
17 | httpd = server_class(server_address, handler_class) |
|
17 | httpd = server_class(server_address, handler_class) | |
18 | httpd.serve_forever() |
|
18 | httpd.serve_forever() | |
19 |
|
19 | |||
@@ -34,7 +34,7 b' hg tip' | |||||
34 |
|
34 | |||
35 | cd .. |
|
35 | cd .. | |
36 |
|
36 | |||
37 |
http_proxy= hg clone static-http://localhost: |
|
37 | http_proxy= hg clone static-http://localhost:$HGPORT/remote local | sed -e 's,:[0-9][0-9]*/,/,' | |
38 |
|
38 | |||
39 | cd local |
|
39 | cd local | |
40 | hg verify |
|
40 | hg verify | |
@@ -47,7 +47,7 b" hg commit -A -mtest2 -d '100000000 0'" | |||||
47 | cd ../local |
|
47 | cd ../local | |
48 | echo '[hooks]' >> .hg/hgrc |
|
48 | echo '[hooks]' >> .hg/hgrc | |
49 | echo 'changegroup = python ../printenv.py changegroup' >> .hg/hgrc |
|
49 | echo 'changegroup = python ../printenv.py changegroup' >> .hg/hgrc | |
50 | http_proxy= hg pull |
|
50 | http_proxy= hg pull | sed -e 's,:[0-9][0-9]*/,/,' | |
51 |
|
51 | |||
52 | echo '% test with "/" URI (issue 747)' |
|
52 | echo '% test with "/" URI (issue 747)' | |
53 | cd .. |
|
53 | cd .. | |
@@ -56,11 +56,11 b' echo a > a' | |||||
56 | hg add a |
|
56 | hg add a | |
57 | hg ci -ma |
|
57 | hg ci -ma | |
58 |
|
58 | |||
59 |
http_proxy= hg clone static-http://localhost: |
|
59 | http_proxy= hg clone static-http://localhost:$HGPORT/ local2 | sed -e 's,:[0-9][0-9]*/,/,' | |
60 |
|
60 | |||
61 | cd local2 |
|
61 | cd local2 | |
62 | hg verify |
|
62 | hg verify | |
63 | cat a |
|
63 | cat a | |
64 | hg paths |
|
64 | hg paths | sed -e 's,:[0-9][0-9]*/,/,' | |
65 |
|
65 | |||
66 | kill $! |
|
66 | kill $! |
@@ -20,8 +20,8 b' checking files' | |||||
20 | 1 files, 1 changesets, 1 total revisions |
|
20 | 1 files, 1 changesets, 1 total revisions | |
21 | foo |
|
21 | foo | |
22 | adding quux |
|
22 | adding quux | |
23 |
changegroup hook: HG_NODE=34401e0e9971e9720b613d9089ffa9a6eefb3d2d HG_SOURCE=pull HG_URL=static-http://localhost |
|
23 | changegroup hook: HG_NODE=34401e0e9971e9720b613d9089ffa9a6eefb3d2d HG_SOURCE=pull HG_URL=static-http://localhost/remote | |
24 |
pulling from static-http://localhost |
|
24 | pulling from static-http://localhost/remote | |
25 | searching for changes |
|
25 | searching for changes | |
26 | adding changesets |
|
26 | adding changesets | |
27 | adding manifests |
|
27 | adding manifests | |
@@ -41,4 +41,4 b' crosschecking files in changesets and ma' | |||||
41 | checking files |
|
41 | checking files | |
42 | 1 files, 1 changesets, 1 total revisions |
|
42 | 1 files, 1 changesets, 1 total revisions | |
43 | a |
|
43 | a | |
44 |
default = static-http://localhost |
|
44 | default = static-http://localhost/ |
@@ -56,12 +56,12 b' cd ../pullback' | |||||
56 | hg transplant -s ../remote -a -b tip |
|
56 | hg transplant -s ../remote -a -b tip | |
57 |
|
57 | |||
58 | echo '% remote transplant with pull' |
|
58 | echo '% remote transplant with pull' | |
59 |
hg -R ../t serve -p |
|
59 | hg -R ../t serve -p $HGPORT -d --pid-file=../t.pid | |
60 | cat ../t.pid >> $DAEMON_PIDS |
|
60 | cat ../t.pid >> $DAEMON_PIDS | |
61 |
|
61 | |||
62 | hg clone -r 0 ../t ../rp |
|
62 | hg clone -r 0 ../t ../rp | |
63 | cd ../rp |
|
63 | cd ../rp | |
64 |
hg transplant -s http://localhost: |
|
64 | hg transplant -s http://localhost:$HGPORT/ 2 4 | |
65 | hg log --template '{rev} {parents} {desc}\n' |
|
65 | hg log --template '{rev} {parents} {desc}\n' | |
66 |
|
66 | |||
67 | echo '% transplant --continue' |
|
67 | echo '% transplant --continue' |
@@ -10,9 +10,9 b' care about things like that.' | |||||
10 | ENDSOME |
|
10 | ENDSOME | |
11 | hg add sometext.txt |
|
11 | hg add sometext.txt | |
12 | hg commit -d "1 0" -m "Just some text" |
|
12 | hg commit -d "1 0" -m "Just some text" | |
13 |
hg serve -p |
|
13 | hg serve -p $HGPORT -A access.log -E error.log -d --pid-file=hg.pid | |
14 | cat hg.pid >> $DAEMON_PIDS |
|
14 | cat hg.pid >> $DAEMON_PIDS | |
15 |
("$TESTDIR/get-with-headers.py" localhost: |
|
15 | ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/?f=f165dc289438;file=sometext.txt;style=raw' content-type content-length content-disposition) >getoutput.txt & | |
16 |
|
16 | |||
17 | sleep 5 |
|
17 | sleep 5 | |
18 | kill `cat hg.pid` |
|
18 | kill `cat hg.pid` |
General Comments 0
You need to be logged in to leave comments.
Login now