annotate tests/run.py @ 589:f360e1629f5d

pull: try and produce a better progress bar for certain cases This uses the first converted revision as an offset, and then uses (r.revnum - offset) as the current item index and (HEAD - offset) as the total so that we always show a "real" progress number for the case where we're cloning only part of the svn repository.
author Augie Fackler <durin42@gmail.com>
date Fri, 19 Mar 2010 21:24:03 -0500
parents 930bb6df19a0
children 300b917d23c5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16
48a44546c12f Add a basic system for running the hgsubversion tests (although not the svnwrap ones) without requiring Nose. Nose is still the recommended way to run the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
1 import os
48a44546c12f Add a basic system for running the hgsubversion tests (although not the svnwrap ones) without requiring Nose. Nose is still the recommended way to run the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
2 import sys
48a44546c12f Add a basic system for running the hgsubversion tests (although not the svnwrap ones) without requiring Nose. Nose is still the recommended way to run the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
3 import unittest
48a44546c12f Add a basic system for running the hgsubversion tests (although not the svnwrap ones) without requiring Nose. Nose is still the recommended way to run the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
4
347
537de0300510 Remove the 'outgoing' wrapper, and use the Mercurial infrastructure instead.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 338
diff changeset
5 import test_util
169
f1919e1c35bf fetch_command: cancel patching when encountering binary diffs
Patrick Mezard <pmezard@gmail.com>
parents: 168
diff changeset
6 import test_binaryfiles
153
46f6b872c988 tests: Fix some missing suite definitions so that running the full testsuite
Augie Fackler <durin42@gmail.com>
parents: 126
diff changeset
7 import test_diff
174
f80132c5fea5 Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents: 169
diff changeset
8 import test_externals
117
3afe404042a3 Add a disabled test for unrelated branches
Patrick Mezard <pmezard@gmail.com>
parents: 96
diff changeset
9 import test_fetch_branches
16
48a44546c12f Add a basic system for running the hgsubversion tests (although not the svnwrap ones) without requiring Nose. Nose is still the recommended way to run the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
10 import test_fetch_command
48a44546c12f Add a basic system for running the hgsubversion tests (although not the svnwrap ones) without requiring Nose. Nose is still the recommended way to run the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
11 import test_fetch_command_regexes
125
c35f59aa200e Move and complete execute bit conversion tests into test_fetch_exec.py
Patrick Mezard <pmezard@gmail.com>
parents: 117
diff changeset
12 import test_fetch_exec
168
4f26fa049452 authormap: Add tests, fix in stupid mode.
Augie Fackler <durin42@gmail.com>
parents: 155
diff changeset
13 import test_fetch_mappings
67
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents: 23
diff changeset
14 import test_fetch_renames
126
24a64fb0e74b run.py: register and develop test_fetch_symlinks
Patrick Mezard <pmezard@gmail.com>
parents: 125
diff changeset
15 import test_fetch_symlinks
88
3b60f223893a fetch_command: handle nullid parent in stupid non-diffy mode
Patrick Mezard <pmezard@gmail.com>
parents: 83
diff changeset
16 import test_fetch_truncated
283
521d9c1bb11d Implement -u/--update support when pulling.
Martijn Pieters <mj@zopatista.com>
parents: 235
diff changeset
17 import test_pull
16
48a44546c12f Add a basic system for running the hgsubversion tests (although not the svnwrap ones) without requiring Nose. Nose is still the recommended way to run the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
18 import test_push_command
83
6c9b7cf1c5aa push_cmd: delete empty svn directories, refactor directory creation
Patrick Mezard <pmezard@gmail.com>
parents: 67
diff changeset
19 import test_push_renames
6c9b7cf1c5aa push_cmd: delete empty svn directories, refactor directory creation
Patrick Mezard <pmezard@gmail.com>
parents: 67
diff changeset
20 import test_push_dirs
96
9b5e528f67f8 Add a test to check EOLs are correctly converted
Patrick Mezard <pmezard@gmail.com>
parents: 88
diff changeset
21 import test_push_eol
155
ba801f44d240 utility_commands: Implement rebuildmeta so that metadata can be rebuilt.
Augie Fackler <durin42@gmail.com>
parents: 153
diff changeset
22 import test_rebuildmeta
577
930bb6df19a0 tests: make sure single dir clone tests get run by non-nose users
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 571
diff changeset
23 import test_single_dir_clone
347
537de0300510 Remove the 'outgoing' wrapper, and use the Mercurial infrastructure instead.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 338
diff changeset
24 import test_svnwrap
23
1f8854804795 Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents: 17
diff changeset
25 import test_tags
153
46f6b872c988 tests: Fix some missing suite definitions so that running the full testsuite
Augie Fackler <durin42@gmail.com>
parents: 126
diff changeset
26 import test_utility_commands
235
2969a20e0eef Add support for user:pass@url repositories to be hg-like
Daniel Tang <dytang@cs.purdue.edu>
parents: 174
diff changeset
27 import test_urls
16
48a44546c12f Add a basic system for running the hgsubversion tests (although not the svnwrap ones) without requiring Nose. Nose is still the recommended way to run the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
28
426
72e63999722f tests: make comprehensive tests work properly with nose and run.py
Augie Fackler <durin42@gmail.com>
parents: 395
diff changeset
29 sys.path.append(os.path.join(os.path.dirname(__file__), 'comprehensive'))
72e63999722f tests: make comprehensive tests work properly with nose and run.py
Augie Fackler <durin42@gmail.com>
parents: 395
diff changeset
30
72e63999722f tests: make comprehensive tests work properly with nose and run.py
Augie Fackler <durin42@gmail.com>
parents: 395
diff changeset
31 import test_stupid_pull
72e63999722f tests: make comprehensive tests work properly with nose and run.py
Augie Fackler <durin42@gmail.com>
parents: 395
diff changeset
32 import test_verify
394
d70c8e45cb9e tests: add -A option to run.py for running comprehensive tests
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 393
diff changeset
33
d70c8e45cb9e tests: add -A option to run.py for running comprehensive tests
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 393
diff changeset
34 def comprehensive(mod):
d70c8e45cb9e tests: add -A option to run.py for running comprehensive tests
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 393
diff changeset
35 dir = os.path.basename(os.path.dirname(mod.__file__))
d70c8e45cb9e tests: add -A option to run.py for running comprehensive tests
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 393
diff changeset
36 return dir == 'comprehensive'
d70c8e45cb9e tests: add -A option to run.py for running comprehensive tests
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 393
diff changeset
37
16
48a44546c12f Add a basic system for running the hgsubversion tests (although not the svnwrap ones) without requiring Nose. Nose is still the recommended way to run the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
38 if __name__ == '__main__':
357
d19843ac13c9 Allow passing in module arguments to the test runs.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 347
diff changeset
39
d19843ac13c9 Allow passing in module arguments to the test runs.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 347
diff changeset
40 kwargs = {'descriptions': 2}
303
f423a8780832 Minor tweaks to how the tests are run.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 174
diff changeset
41 if '-v' in sys.argv:
f423a8780832 Minor tweaks to how the tests are run.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 174
diff changeset
42 kwargs['descriptions'] = 3
f423a8780832 Minor tweaks to how the tests are run.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 174
diff changeset
43 kwargs['verbosity'] = 2
f423a8780832 Minor tweaks to how the tests are run.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 174
diff changeset
44
338
47c0110046dc tests: silence tests when using run.py
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 337
diff changeset
45 # silence output when running outside nose
47c0110046dc tests: silence tests when using run.py
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 337
diff changeset
46 sys.stdout = os.tmpfile()
47c0110046dc tests: silence tests when using run.py
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 337
diff changeset
47
357
d19843ac13c9 Allow passing in module arguments to the test runs.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 347
diff changeset
48 all = globals()
d19843ac13c9 Allow passing in module arguments to the test runs.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 347
diff changeset
49 all = dict((k, v) for (k, v) in all.iteritems() if k.startswith('test_'))
d19843ac13c9 Allow passing in module arguments to the test runs.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 347
diff changeset
50 del all['test_util']
d19843ac13c9 Allow passing in module arguments to the test runs.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 347
diff changeset
51
d19843ac13c9 Allow passing in module arguments to the test runs.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 347
diff changeset
52 args = [i for i in sys.argv[1:] if i.startswith('test')]
d19843ac13c9 Allow passing in module arguments to the test runs.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 347
diff changeset
53 args = [i.split('.py')[0].replace('-', '_') for i in args]
d19843ac13c9 Allow passing in module arguments to the test runs.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 347
diff changeset
54
d19843ac13c9 Allow passing in module arguments to the test runs.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 347
diff changeset
55 if not args:
394
d70c8e45cb9e tests: add -A option to run.py for running comprehensive tests
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 393
diff changeset
56 check = lambda x: '-A' in sys.argv or not comprehensive(x)
d70c8e45cb9e tests: add -A option to run.py for running comprehensive tests
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 393
diff changeset
57 mods = [m for (n, m) in sorted(all.iteritems()) if check(m)]
d70c8e45cb9e tests: add -A option to run.py for running comprehensive tests
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 393
diff changeset
58 suite = [m.suite() for m in mods]
357
d19843ac13c9 Allow passing in module arguments to the test runs.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 347
diff changeset
59 else:
d19843ac13c9 Allow passing in module arguments to the test runs.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 347
diff changeset
60 suite = []
d19843ac13c9 Allow passing in module arguments to the test runs.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 347
diff changeset
61 for arg in args:
d19843ac13c9 Allow passing in module arguments to the test runs.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 347
diff changeset
62 if arg not in all:
393
e857e5cfc10f tests: send warning to stderr instead of redirected stdout
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 357
diff changeset
63 print >> sys.stderr, 'test module %s not available' % arg
357
d19843ac13c9 Allow passing in module arguments to the test runs.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 347
diff changeset
64 else:
d19843ac13c9 Allow passing in module arguments to the test runs.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 347
diff changeset
65 suite.append(all[arg].suite())
d19843ac13c9 Allow passing in module arguments to the test runs.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 347
diff changeset
66
303
f423a8780832 Minor tweaks to how the tests are run.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 174
diff changeset
67 runner = unittest.TextTestRunner(**kwargs)
571
f3e5ef8760cb tests.run: exit nonzero if tests did not pass
Augie Fackler <durin42@gmail.com>
parents: 426
diff changeset
68 result = runner.run(unittest.TestSuite(suite))
f3e5ef8760cb tests.run: exit nonzero if tests did not pass
Augie Fackler <durin42@gmail.com>
parents: 426
diff changeset
69 if not result.wasSuccessful():
f3e5ef8760cb tests.run: exit nonzero if tests did not pass
Augie Fackler <durin42@gmail.com>
parents: 426
diff changeset
70 sys.exit(1)