Mercurial > hgsubversion
annotate tests/test_util.py @ 1495:3f47dd9a6352 stable
Added tag 1.8.7 for changeset 051a517b473b
author | Augie Fackler <raf@durin42.com> |
---|---|
date | Sun, 12 Feb 2017 16:25:50 -0500 |
parents | bac709b5ff6c |
children | 0991df151799 |
rev | line source |
---|---|
492 | 1 import StringIO |
548
2148eb4b4da4
test_util: add assertStringEqual to output diff output for string checks
Augie Fackler <durin42@gmail.com>
parents:
546
diff
changeset
|
2 import difflib |
78
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
23
diff
changeset
|
3 import errno |
492 | 4 import gettext |
14
d78dbf88c13d
Started a meaningful test suite.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
5 import os |
78
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
23
diff
changeset
|
6 import shutil |
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
23
diff
changeset
|
7 import stat |
492 | 8 import subprocess |
9 import sys | |
910
312f36a425f0
Ignore invalid utf8 in commit messages
David Schleimer <dschleimer@fb.com>
parents:
908
diff
changeset
|
10 import tarfile |
82
71de43e9f614
Extract PushTest common code into test_util.TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
78
diff
changeset
|
11 import tempfile |
71de43e9f614
Extract PushTest common code into test_util.TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
78
diff
changeset
|
12 import unittest |
78
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
23
diff
changeset
|
13 import urllib |
14
d78dbf88c13d
Started a meaningful test suite.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
14 |
644
95abc4cfc78f
tests: improve import logic
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
626
diff
changeset
|
15 _rootdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) |
95abc4cfc78f
tests: improve import logic
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
626
diff
changeset
|
16 sys.path.insert(0, _rootdir) |
347
537de0300510
Remove the 'outgoing' wrapper, and use the Mercurial infrastructure instead.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
342
diff
changeset
|
17 |
711
cfc7df19e4dc
test_util: add requiresoption decorator function.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
706
diff
changeset
|
18 from mercurial import cmdutil |
331
75f082b5897e
Switch to using url scheme wrappers instead of duplicating each command we wrap.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
326
diff
changeset
|
19 from mercurial import commands |
492 | 20 from mercurial import context |
813
f07bfd66db13
test_util: handle dispatch.dispatch() taking a request
Patrick Mezard <pmezard@gmail.com>
parents:
793
diff
changeset
|
21 from mercurial import dispatch as dispatchmod |
22
95d0109e495e
Refactor tests so I can reuse code more.
Augie Fackler <durin42@gmail.com>
parents:
16
diff
changeset
|
22 from mercurial import hg |
492 | 23 from mercurial import i18n |
84
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
24 from mercurial import node |
1003
6945d3359456
testutil: clear rcpath when we update HGRCPATH env var
David Schleimer <dschleimer@fb.com>
parents:
1001
diff
changeset
|
25 from mercurial import scmutil |
84
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
26 from mercurial import ui |
1245
260212f056b7
test_util: fix up i18n monkeypatch for Mercurial 3.2
Siddharth Agarwal <sid0@fb.com>
parents:
1238
diff
changeset
|
27 from mercurial import util as hgutil |
527
2be9f14bd23f
test_util: add helper to draw repo with graphlog extension
Patrick Mezard <pmezard@gmail.com>
parents:
522
diff
changeset
|
28 from mercurial import extensions |
22
95d0109e495e
Refactor tests so I can reuse code more.
Augie Fackler <durin42@gmail.com>
parents:
16
diff
changeset
|
29 |
1203
518a9552f7f9
test_util: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1174
diff
changeset
|
30 from hgsubversion import compathacks |
1365
89997a5fc181
stupid: self-disable if svn bindings are too new to work with stupid mode
Augie Fackler <raf@durin42.com>
parents:
1363
diff
changeset
|
31 from hgsubversion import svnwrap |
1203
518a9552f7f9
test_util: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1174
diff
changeset
|
32 |
1049
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
33 try: |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
34 from mercurial import obsolete |
1174
a22d4972e01f
push: fix obsolete feature detection
Dan Villiom Podlaski Christiansen <dan@cabo.dk>
parents:
1101
diff
changeset
|
35 obsolete._enabled |
1049
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
36 except ImportError: |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
37 obsolete = None |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
38 |
716
38ebf7714cdf
requiresoption: raise SkipTest if available
Augie Fackler <durin42@gmail.com>
parents:
715
diff
changeset
|
39 try: |
734
e24fb3e27ec9
test_util: use SkipTest if provided by the unittest module.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
727
diff
changeset
|
40 SkipTest = unittest.SkipTest |
e24fb3e27ec9
test_util: use SkipTest if provided by the unittest module.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
727
diff
changeset
|
41 except AttributeError: |
716
38ebf7714cdf
requiresoption: raise SkipTest if available
Augie Fackler <durin42@gmail.com>
parents:
715
diff
changeset
|
42 try: |
734
e24fb3e27ec9
test_util: use SkipTest if provided by the unittest module.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
727
diff
changeset
|
43 from unittest2 import SkipTest |
716
38ebf7714cdf
requiresoption: raise SkipTest if available
Augie Fackler <durin42@gmail.com>
parents:
715
diff
changeset
|
44 except ImportError: |
734
e24fb3e27ec9
test_util: use SkipTest if provided by the unittest module.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
727
diff
changeset
|
45 try: |
e24fb3e27ec9
test_util: use SkipTest if provided by the unittest module.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
727
diff
changeset
|
46 from nose import SkipTest |
e24fb3e27ec9
test_util: use SkipTest if provided by the unittest module.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
727
diff
changeset
|
47 except ImportError: |
e24fb3e27ec9
test_util: use SkipTest if provided by the unittest module.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
727
diff
changeset
|
48 SkipTest = None |
716
38ebf7714cdf
requiresoption: raise SkipTest if available
Augie Fackler <durin42@gmail.com>
parents:
715
diff
changeset
|
49 |
337
46e69be8e2c8
Reorganize to have a more conventional module structure.
Augie Fackler <durin42@gmail.com>
parents:
334
diff
changeset
|
50 from hgsubversion import util |
911
772280aed751
Honor SVN auto-props (solves issue #186)
Ronny Voelker <ronny.voelker@googlemail.com>
parents:
910
diff
changeset
|
51 from hgsubversion import svnwrap |
333
a59ab58969d9
test_util: normalize path in svnls()
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
331
diff
changeset
|
52 |
479
83fcb1cf6d8f
Avoid 'ValueError: close_fds is not supported on Windows platforms' exception
Risto Kankkunen <risto.kankkunen@iki.fi>
parents:
355
diff
changeset
|
53 # Documentation for Subprocess.Popen() says: |
83fcb1cf6d8f
Avoid 'ValueError: close_fds is not supported on Windows platforms' exception
Risto Kankkunen <risto.kankkunen@iki.fi>
parents:
355
diff
changeset
|
54 # "Note that on Windows, you cannot set close_fds to true and |
83fcb1cf6d8f
Avoid 'ValueError: close_fds is not supported on Windows platforms' exception
Risto Kankkunen <risto.kankkunen@iki.fi>
parents:
355
diff
changeset
|
55 # also redirect the standard handles by setting stdin, stdout or |
83fcb1cf6d8f
Avoid 'ValueError: close_fds is not supported on Windows platforms' exception
Risto Kankkunen <risto.kankkunen@iki.fi>
parents:
355
diff
changeset
|
56 # stderr." |
832
e9af7eba88db
globally: clean up whitespace around operators and commas to conform with PEP8
Yonggang Luo <luoyonggang@gmail.com>
parents:
816
diff
changeset
|
57 canCloseFds = 'win32' not in sys.platform |
479
83fcb1cf6d8f
Avoid 'ValueError: close_fds is not supported on Windows platforms' exception
Risto Kankkunen <risto.kankkunen@iki.fi>
parents:
355
diff
changeset
|
58 |
483
37718f514acb
No os.kill() in Windows, use ctypes to call Win32 TerminateProcess()
Risto Kankkunen <risto.kankkunen@iki.fi>
parents:
479
diff
changeset
|
59 if not 'win32' in sys.platform: |
37718f514acb
No os.kill() in Windows, use ctypes to call Win32 TerminateProcess()
Risto Kankkunen <risto.kankkunen@iki.fi>
parents:
479
diff
changeset
|
60 def kill_process(popen_obj): |
37718f514acb
No os.kill() in Windows, use ctypes to call Win32 TerminateProcess()
Risto Kankkunen <risto.kankkunen@iki.fi>
parents:
479
diff
changeset
|
61 os.kill(popen_obj.pid, 9) |
37718f514acb
No os.kill() in Windows, use ctypes to call Win32 TerminateProcess()
Risto Kankkunen <risto.kankkunen@iki.fi>
parents:
479
diff
changeset
|
62 else: |
37718f514acb
No os.kill() in Windows, use ctypes to call Win32 TerminateProcess()
Risto Kankkunen <risto.kankkunen@iki.fi>
parents:
479
diff
changeset
|
63 import ctypes |
487
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
64 from ctypes.wintypes import BOOL, DWORD, HANDLE, UINT |
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
65 |
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
66 def win_status_check(result, func, args): |
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
67 if result == 0: |
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
68 raise ctypes.WinError() |
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
69 return args |
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
70 |
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
71 def WINAPI(returns, func, *params): |
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
72 assert len(params) % 2 == 0 |
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
73 |
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
74 func.argtypes = tuple(params[0::2]) |
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
75 func.resvalue = returns |
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
76 func.errcheck = win_status_check |
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
77 |
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
78 return func |
483
37718f514acb
No os.kill() in Windows, use ctypes to call Win32 TerminateProcess()
Risto Kankkunen <risto.kankkunen@iki.fi>
parents:
479
diff
changeset
|
79 |
37718f514acb
No os.kill() in Windows, use ctypes to call Win32 TerminateProcess()
Risto Kankkunen <risto.kankkunen@iki.fi>
parents:
479
diff
changeset
|
80 # dwDesiredAccess |
37718f514acb
No os.kill() in Windows, use ctypes to call Win32 TerminateProcess()
Risto Kankkunen <risto.kankkunen@iki.fi>
parents:
479
diff
changeset
|
81 PROCESS_TERMINATE = 0x0001 |
37718f514acb
No os.kill() in Windows, use ctypes to call Win32 TerminateProcess()
Risto Kankkunen <risto.kankkunen@iki.fi>
parents:
479
diff
changeset
|
82 |
487
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
83 OpenProcess = WINAPI(HANDLE, ctypes.windll.kernel32.OpenProcess, |
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
84 DWORD, 'dwDesiredAccess', |
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
85 BOOL, 'bInheritHandle', |
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
86 DWORD, 'dwProcessId', |
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
87 ) |
483
37718f514acb
No os.kill() in Windows, use ctypes to call Win32 TerminateProcess()
Risto Kankkunen <risto.kankkunen@iki.fi>
parents:
479
diff
changeset
|
88 |
832
e9af7eba88db
globally: clean up whitespace around operators and commas to conform with PEP8
Yonggang Luo <luoyonggang@gmail.com>
parents:
816
diff
changeset
|
89 CloseHandle = WINAPI(BOOL, ctypes.windll.kernel32.CloseHandle, |
487
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
90 HANDLE, 'hObject' |
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
91 ) |
483
37718f514acb
No os.kill() in Windows, use ctypes to call Win32 TerminateProcess()
Risto Kankkunen <risto.kankkunen@iki.fi>
parents:
479
diff
changeset
|
92 |
487
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
93 TerminateProcess = WINAPI(BOOL, ctypes.windll.kernel32.TerminateProcess, |
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
94 HANDLE, 'hProcess', |
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
95 UINT, 'uExitCode' |
6b481331c355
test_util: fix up line endings
Augie Fackler <durin42@gmail.com>
parents:
486
diff
changeset
|
96 ) |
483
37718f514acb
No os.kill() in Windows, use ctypes to call Win32 TerminateProcess()
Risto Kankkunen <risto.kankkunen@iki.fi>
parents:
479
diff
changeset
|
97 |
37718f514acb
No os.kill() in Windows, use ctypes to call Win32 TerminateProcess()
Risto Kankkunen <risto.kankkunen@iki.fi>
parents:
479
diff
changeset
|
98 def kill_process(popen_obj): |
37718f514acb
No os.kill() in Windows, use ctypes to call Win32 TerminateProcess()
Risto Kankkunen <risto.kankkunen@iki.fi>
parents:
479
diff
changeset
|
99 phnd = OpenProcess(PROCESS_TERMINATE, False, popen_obj.pid) |
37718f514acb
No os.kill() in Windows, use ctypes to call Win32 TerminateProcess()
Risto Kankkunen <risto.kankkunen@iki.fi>
parents:
479
diff
changeset
|
100 TerminateProcess(phnd, 1) |
37718f514acb
No os.kill() in Windows, use ctypes to call Win32 TerminateProcess()
Risto Kankkunen <risto.kankkunen@iki.fi>
parents:
479
diff
changeset
|
101 CloseHandle(phnd) |
37718f514acb
No os.kill() in Windows, use ctypes to call Win32 TerminateProcess()
Risto Kankkunen <risto.kankkunen@iki.fi>
parents:
479
diff
changeset
|
102 |
194
13ae1bded5e7
Add some comprehensive tests that can be run with nose in order to make it easier to verify stupid and real replay do the same thing.
Augie Fackler <durin42@gmail.com>
parents:
170
diff
changeset
|
103 # Fixtures that need to be pulled at a subdirectory of the repo path |
13ae1bded5e7
Add some comprehensive tests that can be run with nose in order to make it easier to verify stupid and real replay do the same thing.
Augie Fackler <durin42@gmail.com>
parents:
170
diff
changeset
|
104 subdir = {'truncatedhistory.svndump': '/project2', |
13ae1bded5e7
Add some comprehensive tests that can be run with nose in order to make it easier to verify stupid and real replay do the same thing.
Augie Fackler <durin42@gmail.com>
parents:
170
diff
changeset
|
105 'fetch_missing_files_subdir.svndump': '/foo', |
270
2848d17eae71
Fix rebuildmeta tests for empty_dir_in_trunk_not_repo_root
Augie Fackler <durin42@gmail.com>
parents:
257
diff
changeset
|
106 'empty_dir_in_trunk_not_repo_root.svndump': '/project', |
351
3d5c4352a6c8
test_util: Add another missing project root.
Augie Fackler <durin42@gmail.com>
parents:
347
diff
changeset
|
107 'project_root_not_repo_root.svndump': '/dummyproj', |
512
c421e6bf0d95
tests: test paths with spaces
Augie Fackler <durin42@gmail.com>
parents:
511
diff
changeset
|
108 'project_name_with_space.svndump': '/project name', |
717
ae5968ffe6fe
svnwrap: fix handling of quotable URLs (fixes #197, refs #132)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
716
diff
changeset
|
109 'non_ascii_path_1.svndump': '/b\xC3\xB8b', |
ae5968ffe6fe
svnwrap: fix handling of quotable URLs (fixes #197, refs #132)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
716
diff
changeset
|
110 'non_ascii_path_2.svndump': '/b%C3%B8b', |
888
c6388ed0ec0a
svnmeta: only remove directory components in normalize()
Dan Villiom Podlaski Christiansen <dan@cabo.dk>
parents:
886
diff
changeset
|
111 'subdir_is_file_prefix.svndump': '/flaf', |
1234
d3c79072bc6a
editor: correctly import symlink copy+modify with non-empty prefix
David Schleimer <dschleimer@fb.com>
parents:
1232
diff
changeset
|
112 'renames_with_prefix.svndump': '/prefix', |
194
13ae1bded5e7
Add some comprehensive tests that can be run with nose in order to make it easier to verify stupid and real replay do the same thing.
Augie Fackler <durin42@gmail.com>
parents:
170
diff
changeset
|
113 } |
1092
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
114 # map defining the layouts of the fixtures we can use with custom layout |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
115 # these are really popular layouts, so I gave them names |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
116 trunk_only = { |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
117 'default': 'trunk', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
118 } |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
119 trunk_dev_branch = { |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
120 'default': 'trunk', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
121 'dev_branch': 'branches/dev_branch', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
122 } |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
123 custom = { |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
124 'addspecial.svndump': { |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
125 'default': 'trunk', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
126 'foo': 'branches/foo', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
127 }, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
128 'binaryfiles.svndump': trunk_only, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
129 'branch_create_with_dir_delete.svndump': trunk_dev_branch, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
130 'branch_delete_parent_dir.svndump': trunk_dev_branch, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
131 'branchmap.svndump': { |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
132 'default': 'trunk', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
133 'badname': 'branches/badname', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
134 'feature': 'branches/feature', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
135 }, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
136 'branch_prop_edit.svndump': trunk_dev_branch, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
137 'branch_rename_to_trunk.svndump': { |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
138 'default': 'trunk', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
139 'dev_branch': 'branches/dev_branch', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
140 'old_trunk': 'branches/old_trunk', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
141 }, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
142 'copies.svndump': trunk_only, |
1232
ba8485b9fee0
editor: correctly import copies of directories from non-tracked or closed branches
David Schleimer <dschleimer@fb.com>
parents:
1203
diff
changeset
|
143 'copyafterclose.svndump': { |
ba8485b9fee0
editor: correctly import copies of directories from non-tracked or closed branches
David Schleimer <dschleimer@fb.com>
parents:
1203
diff
changeset
|
144 'default': 'trunk', |
ba8485b9fee0
editor: correctly import copies of directories from non-tracked or closed branches
David Schleimer <dschleimer@fb.com>
parents:
1203
diff
changeset
|
145 'test': 'branches/test' |
ba8485b9fee0
editor: correctly import copies of directories from non-tracked or closed branches
David Schleimer <dschleimer@fb.com>
parents:
1203
diff
changeset
|
146 }, |
1092
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
147 'copybeforeclose.svndump': { |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
148 'default': 'trunk', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
149 'test': 'branches/test' |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
150 }, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
151 'delentries.svndump': trunk_only, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
152 'delete_restore_trunk.svndump': trunk_only, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
153 'empty_dir_in_trunk_not_repo_root.svndump': trunk_only, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
154 'executebit.svndump': trunk_only, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
155 'filecase.svndump': trunk_only, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
156 'file_not_in_trunk_root.svndump': trunk_only, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
157 'project_name_with_space.svndump': trunk_dev_branch, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
158 'pushrenames.svndump': trunk_only, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
159 'rename_branch_parent_dir.svndump': trunk_dev_branch, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
160 'renamedproject.svndump': { |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
161 'default': 'trunk', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
162 'branch': 'branches/branch', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
163 }, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
164 'renames.svndump': { |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
165 'default': 'trunk', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
166 'branch1': 'branches/branch1', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
167 }, |
1234
d3c79072bc6a
editor: correctly import symlink copy+modify with non-empty prefix
David Schleimer <dschleimer@fb.com>
parents:
1232
diff
changeset
|
168 'renames_with_prefix.svndump': { |
d3c79072bc6a
editor: correctly import symlink copy+modify with non-empty prefix
David Schleimer <dschleimer@fb.com>
parents:
1232
diff
changeset
|
169 'default': 'trunk', |
d3c79072bc6a
editor: correctly import symlink copy+modify with non-empty prefix
David Schleimer <dschleimer@fb.com>
parents:
1232
diff
changeset
|
170 'branch1': 'branches/branch1', |
d3c79072bc6a
editor: correctly import symlink copy+modify with non-empty prefix
David Schleimer <dschleimer@fb.com>
parents:
1232
diff
changeset
|
171 }, |
1092
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
172 'replace_branch_with_branch.svndump': { |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
173 'default': 'trunk', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
174 'branch1': 'branches/branch1', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
175 'branch2': 'branches/branch2', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
176 }, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
177 'replace_trunk_with_branch.svndump': { |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
178 'default': 'trunk', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
179 'test': 'branches/test', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
180 }, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
181 'revert.svndump': trunk_only, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
182 'siblingbranchfix.svndump': { |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
183 'default': 'trunk', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
184 'wrongbranch': 'branches/wrongbranch', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
185 }, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
186 'simple_branch.svndump': { |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
187 'default': 'trunk', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
188 'the_branch': 'branches/the_branch', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
189 }, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
190 'spaces-in-path.svndump': trunk_dev_branch, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
191 'symlinks.svndump': trunk_only, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
192 'truncatedhistory.svndump': trunk_only, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
193 'unorderedbranch.svndump': { |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
194 'default': 'trunk', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
195 'branch': 'branches/branch', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
196 }, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
197 'unrelatedbranch.svndump': { |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
198 'default': 'trunk', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
199 'branch1': 'branches/branch1', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
200 'branch2': 'branches/branch2', |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
201 }, |
cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents:
1084
diff
changeset
|
202 } |
194
13ae1bded5e7
Add some comprehensive tests that can be run with nose in order to make it easier to verify stupid and real replay do the same thing.
Augie Fackler <durin42@gmail.com>
parents:
170
diff
changeset
|
203 |
14
d78dbf88c13d
Started a meaningful test suite.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
204 FIXTURES = os.path.join(os.path.abspath(os.path.dirname(__file__)), |
d78dbf88c13d
Started a meaningful test suite.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
205 'fixtures') |
d78dbf88c13d
Started a meaningful test suite.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
206 |
930
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
923
diff
changeset
|
207 def getlocalpeer(repo): |
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
923
diff
changeset
|
208 localrepo = getattr(repo, 'local', lambda: repo)() |
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
923
diff
changeset
|
209 if isinstance(localrepo, bool): |
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
923
diff
changeset
|
210 localrepo = repo |
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
923
diff
changeset
|
211 return localrepo |
719
ae52a3b30cfb
test_util: refactor requiresoption to ease creation of other skip decorators
Augie Fackler <durin42@gmail.com>
parents:
717
diff
changeset
|
212 |
1048
903c9c9dfe6a
tests: count revisions explicitly
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1041
diff
changeset
|
213 def repolen(repo): |
903c9c9dfe6a
tests: count revisions explicitly
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1041
diff
changeset
|
214 """Naively calculate the amount of available revisions in a repository. |
903c9c9dfe6a
tests: count revisions explicitly
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1041
diff
changeset
|
215 |
903c9c9dfe6a
tests: count revisions explicitly
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1041
diff
changeset
|
216 this is usually equal to len(repo) -- except in the face of |
903c9c9dfe6a
tests: count revisions explicitly
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1041
diff
changeset
|
217 obsolete revisions. |
903c9c9dfe6a
tests: count revisions explicitly
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1041
diff
changeset
|
218 """ |
903c9c9dfe6a
tests: count revisions explicitly
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1041
diff
changeset
|
219 # kind of nasty way of calculating the length, but fortunately, |
903c9c9dfe6a
tests: count revisions explicitly
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1041
diff
changeset
|
220 # our test repositories tend to be rather small |
903c9c9dfe6a
tests: count revisions explicitly
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1041
diff
changeset
|
221 return len([r for r in repo]) |
903c9c9dfe6a
tests: count revisions explicitly
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1041
diff
changeset
|
222 |
719
ae52a3b30cfb
test_util: refactor requiresoption to ease creation of other skip decorators
Augie Fackler <durin42@gmail.com>
parents:
717
diff
changeset
|
223 def _makeskip(name, message): |
727
e830b592917b
tests: fix test skipping in pure unittest
Augie Fackler <durin42@gmail.com>
parents:
720
diff
changeset
|
224 if SkipTest: |
e830b592917b
tests: fix test skipping in pure unittest
Augie Fackler <durin42@gmail.com>
parents:
720
diff
changeset
|
225 def skip(*args, **kwargs): |
e830b592917b
tests: fix test skipping in pure unittest
Augie Fackler <durin42@gmail.com>
parents:
720
diff
changeset
|
226 raise SkipTest(message) |
e830b592917b
tests: fix test skipping in pure unittest
Augie Fackler <durin42@gmail.com>
parents:
720
diff
changeset
|
227 skip.__name__ = name |
e830b592917b
tests: fix test skipping in pure unittest
Augie Fackler <durin42@gmail.com>
parents:
720
diff
changeset
|
228 return skip |
719
ae52a3b30cfb
test_util: refactor requiresoption to ease creation of other skip decorators
Augie Fackler <durin42@gmail.com>
parents:
717
diff
changeset
|
229 |
720
a19a208c085b
test_util: new requiresmodule decorator for tests that require a feature
Augie Fackler <durin42@gmail.com>
parents:
719
diff
changeset
|
230 def requiresmodule(mod): |
a19a208c085b
test_util: new requiresmodule decorator for tests that require a feature
Augie Fackler <durin42@gmail.com>
parents:
719
diff
changeset
|
231 """Skip a test if the specified module is not None.""" |
a19a208c085b
test_util: new requiresmodule decorator for tests that require a feature
Augie Fackler <durin42@gmail.com>
parents:
719
diff
changeset
|
232 def decorator(fn): |
727
e830b592917b
tests: fix test skipping in pure unittest
Augie Fackler <durin42@gmail.com>
parents:
720
diff
changeset
|
233 if fn is None: |
e830b592917b
tests: fix test skipping in pure unittest
Augie Fackler <durin42@gmail.com>
parents:
720
diff
changeset
|
234 return |
720
a19a208c085b
test_util: new requiresmodule decorator for tests that require a feature
Augie Fackler <durin42@gmail.com>
parents:
719
diff
changeset
|
235 if mod is not None: |
a19a208c085b
test_util: new requiresmodule decorator for tests that require a feature
Augie Fackler <durin42@gmail.com>
parents:
719
diff
changeset
|
236 return fn |
a19a208c085b
test_util: new requiresmodule decorator for tests that require a feature
Augie Fackler <durin42@gmail.com>
parents:
719
diff
changeset
|
237 return _makeskip(fn.__name__, 'missing required feature') |
a19a208c085b
test_util: new requiresmodule decorator for tests that require a feature
Augie Fackler <durin42@gmail.com>
parents:
719
diff
changeset
|
238 return decorator |
a19a208c085b
test_util: new requiresmodule decorator for tests that require a feature
Augie Fackler <durin42@gmail.com>
parents:
719
diff
changeset
|
239 |
a19a208c085b
test_util: new requiresmodule decorator for tests that require a feature
Augie Fackler <durin42@gmail.com>
parents:
719
diff
changeset
|
240 |
711
cfc7df19e4dc
test_util: add requiresoption decorator function.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
706
diff
changeset
|
241 def requiresoption(option): |
715
c33293a34752
requiresoption: clean up docstring
Augie Fackler <durin42@gmail.com>
parents:
711
diff
changeset
|
242 '''Skip a test if commands.clone does not take the specified option.''' |
711
cfc7df19e4dc
test_util: add requiresoption decorator function.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
706
diff
changeset
|
243 def decorator(fn): |
cfc7df19e4dc
test_util: add requiresoption decorator function.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
706
diff
changeset
|
244 for entry in cmdutil.findcmd('clone', commands.table)[1][1]: |
cfc7df19e4dc
test_util: add requiresoption decorator function.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
706
diff
changeset
|
245 if entry[1] == option: |
cfc7df19e4dc
test_util: add requiresoption decorator function.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
706
diff
changeset
|
246 return fn |
716
38ebf7714cdf
requiresoption: raise SkipTest if available
Augie Fackler <durin42@gmail.com>
parents:
715
diff
changeset
|
247 # no match found, so skip |
38ebf7714cdf
requiresoption: raise SkipTest if available
Augie Fackler <durin42@gmail.com>
parents:
715
diff
changeset
|
248 if SkipTest: |
719
ae52a3b30cfb
test_util: refactor requiresoption to ease creation of other skip decorators
Augie Fackler <durin42@gmail.com>
parents:
717
diff
changeset
|
249 return _makeskip(fn.__name__, |
ae52a3b30cfb
test_util: refactor requiresoption to ease creation of other skip decorators
Augie Fackler <durin42@gmail.com>
parents:
717
diff
changeset
|
250 'test requires clone to accept %s' % option) |
716
38ebf7714cdf
requiresoption: raise SkipTest if available
Augie Fackler <durin42@gmail.com>
parents:
715
diff
changeset
|
251 # no skipping support, so erase decorated method |
38ebf7714cdf
requiresoption: raise SkipTest if available
Augie Fackler <durin42@gmail.com>
parents:
715
diff
changeset
|
252 return |
711
cfc7df19e4dc
test_util: add requiresoption decorator function.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
706
diff
changeset
|
253 if not isinstance(option, str): |
cfc7df19e4dc
test_util: add requiresoption decorator function.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
706
diff
changeset
|
254 raise TypeError('requiresoption takes a string argument') |
cfc7df19e4dc
test_util: add requiresoption decorator function.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
706
diff
changeset
|
255 return decorator |
cfc7df19e4dc
test_util: add requiresoption decorator function.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
706
diff
changeset
|
256 |
1056
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
257 def requiresreplay(method): |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
258 '''Skip a test in stupid mode.''' |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
259 def test(self, *args, **kwargs): |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
260 if self.stupid: |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
261 if SkipTest: |
1080
661f4065bfbf
test_util: fix missing message in SkipTest raise
Augie Fackler <raf@durin42.com>
parents:
1078
diff
changeset
|
262 raise SkipTest("test requires replay mode") |
1056
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
263 else: |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
264 return method(self, *args, **kwargs) |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
265 |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
266 test.__name__ = method.__name__ |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
267 return test |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
268 |
499
1fd3cfa47c5e
Support for single-directory clones.
Augie Fackler <durin42@gmail.com>
parents:
492
diff
changeset
|
269 def filtermanifest(manifest): |
772
f3af4fe98d37
test_util: make manifest filter use shared list of files to ignore
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
764
diff
changeset
|
270 return [f for f in manifest if f not in util.ignoredfiles] |
499
1fd3cfa47c5e
Support for single-directory clones.
Augie Fackler <durin42@gmail.com>
parents:
492
diff
changeset
|
271 |
91
7d10165cf3d9
tests: Mock the mercurial.ui.ui class like we really should to capture output.
Augie Fackler <durin42@gmail.com>
parents:
84
diff
changeset
|
272 def fileurl(path): |
522
60bf433647e7
test_util: fix Windows test URLs
Patrick Mezard <pmezard@gmail.com>
parents:
516
diff
changeset
|
273 path = os.path.abspath(path).replace(os.sep, '/') |
78
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
23
diff
changeset
|
274 drive, path = os.path.splitdrive(path) |
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
23
diff
changeset
|
275 if drive: |
923
847953806c77
test_util: make repourl() return upper-cased drive letters
Patrick Mezard <patrick@mezard.eu>
parents:
917
diff
changeset
|
276 # In svn 1.7, the swig svn wrapper returns local svn URLs |
847953806c77
test_util: make repourl() return upper-cased drive letters
Patrick Mezard <patrick@mezard.eu>
parents:
917
diff
changeset
|
277 # with an uppercase drive letter, try to match that to |
847953806c77
test_util: make repourl() return upper-cased drive letters
Patrick Mezard <patrick@mezard.eu>
parents:
917
diff
changeset
|
278 # simplify svn info tests. |
847953806c77
test_util: make repourl() return upper-cased drive letters
Patrick Mezard <patrick@mezard.eu>
parents:
917
diff
changeset
|
279 drive = '/' + drive.upper() |
342
76c833526fbc
Use fallbacks in the wrappers for Subversion support, instead of prefixes.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
337
diff
changeset
|
280 url = 'file://%s%s' % (drive, path) |
78
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
23
diff
changeset
|
281 return url |
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
23
diff
changeset
|
282 |
652
c3900ad3bf69
test_util: support specifying a start revision
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
645
diff
changeset
|
283 def testui(stupid=False, layout='auto', startrev=0): |
576
d96aa92d9ad9
tests: silence test suite by using quiet UIs everywhere
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
548
diff
changeset
|
284 u = ui.ui() |
d96aa92d9ad9
tests: silence test suite by using quiet UIs everywhere
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
548
diff
changeset
|
285 bools = {True: 'true', False: 'false'} |
d96aa92d9ad9
tests: silence test suite by using quiet UIs everywhere
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
548
diff
changeset
|
286 u.setconfig('ui', 'quiet', bools[True]) |
1493
bac709b5ff6c
testui: set a username so recording obsolete markers doesn't break
Augie Fackler <raf@durin42.com>
parents:
1365
diff
changeset
|
287 u.setconfig('ui', 'username', 'automated tests') |
696
c11bf0dd38d3
tests: enable hgsubversion in the generated UI.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
689
diff
changeset
|
288 u.setconfig('extensions', 'hgsubversion', '') |
576
d96aa92d9ad9
tests: silence test suite by using quiet UIs everywhere
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
548
diff
changeset
|
289 u.setconfig('hgsubversion', 'stupid', bools[stupid]) |
d96aa92d9ad9
tests: silence test suite by using quiet UIs everywhere
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
548
diff
changeset
|
290 u.setconfig('hgsubversion', 'layout', layout) |
652
c3900ad3bf69
test_util: support specifying a start revision
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
645
diff
changeset
|
291 u.setconfig('hgsubversion', 'startrev', startrev) |
576
d96aa92d9ad9
tests: silence test suite by using quiet UIs everywhere
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
548
diff
changeset
|
292 return u |
d96aa92d9ad9
tests: silence test suite by using quiet UIs everywhere
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
548
diff
changeset
|
293 |
813
f07bfd66db13
test_util: handle dispatch.dispatch() taking a request
Patrick Mezard <pmezard@gmail.com>
parents:
793
diff
changeset
|
294 def dispatch(cmd): |
1344
38be7a6b6def
tests: have our dispatch wrappers assert --quiet is always passed
Augie Fackler <raf@durin42.com>
parents:
1343
diff
changeset
|
295 assert '--quiet' in cmd |
916
7e9d805a0e1f
tests: fix regressions introduced by peer classes in hg 2.3
Bryan O'Sullivan <bryano@fb.com>
parents:
910
diff
changeset
|
296 cmd = getattr(dispatchmod, 'request', lambda x: x)(cmd) |
1041
70090e2ee262
tests: assert that fetches actually succeed
Dan Villiom Podlaski Christiansen <dan@cabo.dk>
parents:
1038
diff
changeset
|
297 return dispatchmod.dispatch(cmd) |
813
f07bfd66db13
test_util: handle dispatch.dispatch() taking a request
Patrick Mezard <pmezard@gmail.com>
parents:
793
diff
changeset
|
298 |
78
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
23
diff
changeset
|
299 def rmtree(path): |
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
23
diff
changeset
|
300 # Read-only files cannot be removed under Windows |
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
23
diff
changeset
|
301 for root, dirs, files in os.walk(path): |
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
23
diff
changeset
|
302 for f in files: |
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
23
diff
changeset
|
303 f = os.path.join(root, f) |
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
23
diff
changeset
|
304 try: |
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
23
diff
changeset
|
305 s = os.stat(f) |
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
23
diff
changeset
|
306 except OSError, e: |
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
23
diff
changeset
|
307 if e.errno == errno.ENOENT: |
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
23
diff
changeset
|
308 continue |
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
23
diff
changeset
|
309 raise |
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
23
diff
changeset
|
310 if (s.st_mode & stat.S_IWRITE) == 0: |
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
23
diff
changeset
|
311 os.chmod(f, s.st_mode | stat.S_IWRITE) |
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
23
diff
changeset
|
312 shutil.rmtree(path) |
82
71de43e9f614
Extract PushTest common code into test_util.TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
78
diff
changeset
|
313 |
645
3cb5042531fb
tests: verify locations of any imported hgsubversion modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
644
diff
changeset
|
314 def _verify_our_modules(): |
3cb5042531fb
tests: verify locations of any imported hgsubversion modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
644
diff
changeset
|
315 ''' |
3cb5042531fb
tests: verify locations of any imported hgsubversion modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
644
diff
changeset
|
316 Verify that hgsubversion was imported from the correct location. |
3cb5042531fb
tests: verify locations of any imported hgsubversion modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
644
diff
changeset
|
317 |
3cb5042531fb
tests: verify locations of any imported hgsubversion modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
644
diff
changeset
|
318 The correct location is any location within the parent directory of the |
3cb5042531fb
tests: verify locations of any imported hgsubversion modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
644
diff
changeset
|
319 directory containing this file. |
3cb5042531fb
tests: verify locations of any imported hgsubversion modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
644
diff
changeset
|
320 ''' |
3cb5042531fb
tests: verify locations of any imported hgsubversion modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
644
diff
changeset
|
321 |
3cb5042531fb
tests: verify locations of any imported hgsubversion modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
644
diff
changeset
|
322 for modname, module in sys.modules.iteritems(): |
3cb5042531fb
tests: verify locations of any imported hgsubversion modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
644
diff
changeset
|
323 if not module or not modname.startswith('hgsubversion.'): |
3cb5042531fb
tests: verify locations of any imported hgsubversion modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
644
diff
changeset
|
324 continue |
3cb5042531fb
tests: verify locations of any imported hgsubversion modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
644
diff
changeset
|
325 |
3cb5042531fb
tests: verify locations of any imported hgsubversion modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
644
diff
changeset
|
326 modloc = module.__file__ |
3cb5042531fb
tests: verify locations of any imported hgsubversion modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
644
diff
changeset
|
327 cp = os.path.commonprefix((os.path.abspath(__file__), modloc)) |
3cb5042531fb
tests: verify locations of any imported hgsubversion modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
644
diff
changeset
|
328 assert cp.rstrip(os.sep) == _rootdir, ( |
3cb5042531fb
tests: verify locations of any imported hgsubversion modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
644
diff
changeset
|
329 'Module location verification failed: hgsubversion was imported ' |
3cb5042531fb
tests: verify locations of any imported hgsubversion modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
644
diff
changeset
|
330 'from the wrong path!' |
3cb5042531fb
tests: verify locations of any imported hgsubversion modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
644
diff
changeset
|
331 ) |
486
5607e81ba616
test_util: specify LANG=LC_ALL=C so l10n stops breaking tests
Augie Fackler <durin42@gmail.com>
parents:
483
diff
changeset
|
332 |
890
78db88de9622
Partial metadata rebuilding
David Schleimer <dschleimer@fb.com>
parents:
888
diff
changeset
|
333 def hgclone(ui, source, dest, update=True, rev=None): |
816
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
813
diff
changeset
|
334 if getattr(hg, 'peer', None): |
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
813
diff
changeset
|
335 # Since 1.9 (d976542986d2) |
890
78db88de9622
Partial metadata rebuilding
David Schleimer <dschleimer@fb.com>
parents:
888
diff
changeset
|
336 src, dest = hg.clone(ui, {}, source, dest, update=update, rev=rev) |
816
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
813
diff
changeset
|
337 else: |
890
78db88de9622
Partial metadata rebuilding
David Schleimer <dschleimer@fb.com>
parents:
888
diff
changeset
|
338 src, dest = hg.clone(ui, source, dest, update=update, rev=rev) |
816
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
813
diff
changeset
|
339 return src, dest |
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
813
diff
changeset
|
340 |
869
db3a651494f9
test_util: pass repo_path to svnls(), turn it into a function
Patrick Mezard <patrick@mezard.eu>
parents:
868
diff
changeset
|
341 def svnls(repo_path, path, rev='HEAD'): |
db3a651494f9
test_util: pass repo_path to svnls(), turn it into a function
Patrick Mezard <patrick@mezard.eu>
parents:
868
diff
changeset
|
342 path = repo_path + '/' + path |
db3a651494f9
test_util: pass repo_path to svnls(), turn it into a function
Patrick Mezard <patrick@mezard.eu>
parents:
868
diff
changeset
|
343 path = util.normalize_url(fileurl(path)) |
db3a651494f9
test_util: pass repo_path to svnls(), turn it into a function
Patrick Mezard <patrick@mezard.eu>
parents:
868
diff
changeset
|
344 args = ['svn', 'ls', '-r', rev, '-R', path] |
db3a651494f9
test_util: pass repo_path to svnls(), turn it into a function
Patrick Mezard <patrick@mezard.eu>
parents:
868
diff
changeset
|
345 p = subprocess.Popen(args, |
db3a651494f9
test_util: pass repo_path to svnls(), turn it into a function
Patrick Mezard <patrick@mezard.eu>
parents:
868
diff
changeset
|
346 stdout=subprocess.PIPE, |
db3a651494f9
test_util: pass repo_path to svnls(), turn it into a function
Patrick Mezard <patrick@mezard.eu>
parents:
868
diff
changeset
|
347 stderr=subprocess.STDOUT) |
db3a651494f9
test_util: pass repo_path to svnls(), turn it into a function
Patrick Mezard <patrick@mezard.eu>
parents:
868
diff
changeset
|
348 stdout, stderr = p.communicate() |
db3a651494f9
test_util: pass repo_path to svnls(), turn it into a function
Patrick Mezard <patrick@mezard.eu>
parents:
868
diff
changeset
|
349 if p.returncode: |
db3a651494f9
test_util: pass repo_path to svnls(), turn it into a function
Patrick Mezard <patrick@mezard.eu>
parents:
868
diff
changeset
|
350 raise Exception('svn ls failed on %s: %r' % (path, stderr)) |
db3a651494f9
test_util: pass repo_path to svnls(), turn it into a function
Patrick Mezard <patrick@mezard.eu>
parents:
868
diff
changeset
|
351 entries = [e.strip('/') for e in stdout.splitlines()] |
db3a651494f9
test_util: pass repo_path to svnls(), turn it into a function
Patrick Mezard <patrick@mezard.eu>
parents:
868
diff
changeset
|
352 entries.sort() |
db3a651494f9
test_util: pass repo_path to svnls(), turn it into a function
Patrick Mezard <patrick@mezard.eu>
parents:
868
diff
changeset
|
353 return entries |
db3a651494f9
test_util: pass repo_path to svnls(), turn it into a function
Patrick Mezard <patrick@mezard.eu>
parents:
868
diff
changeset
|
354 |
871
51fd75ae62b9
test_util: pass repo_path to svnpropget(), turn into a function
Patrick Mezard <patrick@mezard.eu>
parents:
870
diff
changeset
|
355 def svnpropget(repo_path, path, prop, rev='HEAD'): |
51fd75ae62b9
test_util: pass repo_path to svnpropget(), turn into a function
Patrick Mezard <patrick@mezard.eu>
parents:
870
diff
changeset
|
356 path = repo_path + '/' + path |
51fd75ae62b9
test_util: pass repo_path to svnpropget(), turn into a function
Patrick Mezard <patrick@mezard.eu>
parents:
870
diff
changeset
|
357 path = util.normalize_url(fileurl(path)) |
51fd75ae62b9
test_util: pass repo_path to svnpropget(), turn into a function
Patrick Mezard <patrick@mezard.eu>
parents:
870
diff
changeset
|
358 args = ['svn', 'propget', '-r', str(rev), prop, path] |
51fd75ae62b9
test_util: pass repo_path to svnpropget(), turn into a function
Patrick Mezard <patrick@mezard.eu>
parents:
870
diff
changeset
|
359 p = subprocess.Popen(args, |
51fd75ae62b9
test_util: pass repo_path to svnpropget(), turn into a function
Patrick Mezard <patrick@mezard.eu>
parents:
870
diff
changeset
|
360 stdout=subprocess.PIPE, |
51fd75ae62b9
test_util: pass repo_path to svnpropget(), turn into a function
Patrick Mezard <patrick@mezard.eu>
parents:
870
diff
changeset
|
361 stderr=subprocess.STDOUT) |
51fd75ae62b9
test_util: pass repo_path to svnpropget(), turn into a function
Patrick Mezard <patrick@mezard.eu>
parents:
870
diff
changeset
|
362 stdout, stderr = p.communicate() |
1363
3c213ca49f7e
tests: update for behavior change in subversion 1.9
Sean Farley <sean@farley.io>
parents:
1344
diff
changeset
|
363 if p.returncode and stderr: |
871
51fd75ae62b9
test_util: pass repo_path to svnpropget(), turn into a function
Patrick Mezard <patrick@mezard.eu>
parents:
870
diff
changeset
|
364 raise Exception('svn ls failed on %s: %r' % (path, stderr)) |
1363
3c213ca49f7e
tests: update for behavior change in subversion 1.9
Sean Farley <sean@farley.io>
parents:
1344
diff
changeset
|
365 if 'W200017' in stdout: |
3c213ca49f7e
tests: update for behavior change in subversion 1.9
Sean Farley <sean@farley.io>
parents:
1344
diff
changeset
|
366 # subversion >= 1.9 changed 'no properties' to be an error, so let's |
3c213ca49f7e
tests: update for behavior change in subversion 1.9
Sean Farley <sean@farley.io>
parents:
1344
diff
changeset
|
367 # avoid that |
3c213ca49f7e
tests: update for behavior change in subversion 1.9
Sean Farley <sean@farley.io>
parents:
1344
diff
changeset
|
368 return '' |
871
51fd75ae62b9
test_util: pass repo_path to svnpropget(), turn into a function
Patrick Mezard <patrick@mezard.eu>
parents:
870
diff
changeset
|
369 return stdout.strip() |
51fd75ae62b9
test_util: pass repo_path to svnpropget(), turn into a function
Patrick Mezard <patrick@mezard.eu>
parents:
870
diff
changeset
|
370 |
1049
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
371 |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
372 def _obsolete_wrap(cls, name): |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
373 origfunc = getattr(cls, name) |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
374 |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
375 if not name.startswith('test_') or not origfunc: |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
376 return |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
377 |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
378 if not obsolete: |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
379 wrapper = _makeskip(name, 'obsolete not available') |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
380 else: |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
381 def wrapper(self, *args, **opts): |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
382 self.assertFalse(obsolete._enabled, 'obsolete was already active') |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
383 |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
384 obsolete._enabled = True |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
385 |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
386 try: |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
387 origfunc(self, *args, **opts) |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
388 self.assertTrue(obsolete._enabled, 'obsolete remains active') |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
389 finally: |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
390 obsolete._enabled = False |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
391 |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
392 if not wrapper: |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
393 return |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
394 |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
395 wrapper.__name__ = name + ' obsolete' |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
396 wrapper.__module__ = origfunc.__module__ |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
397 |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
398 if origfunc.__doc__: |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
399 firstline = origfunc.__doc__.strip().splitlines()[0] |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
400 wrapper.__doc__ = firstline + ' (obsolete)' |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
401 |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
402 assert getattr(cls, wrapper.__name__, None) is None |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
403 |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
404 setattr(cls, wrapper.__name__, wrapper) |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
405 |
1056
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
406 |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
407 def _stupid_wrap(cls, name): |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
408 origfunc = getattr(cls, name) |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
409 |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
410 if not name.startswith('test_') or not origfunc: |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
411 return |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
412 |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
413 def wrapper(self, *args, **opts): |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
414 self.assertFalse(self.stupid, 'stupid mode was already active') |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
415 |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
416 self.stupid = True |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
417 |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
418 try: |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
419 origfunc(self, *args, **opts) |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
420 finally: |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
421 self.stupid = False |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
422 |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
423 wrapper.__name__ = name + ' stupid' |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
424 wrapper.__module__ = origfunc.__module__ |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
425 |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
426 if origfunc.__doc__: |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
427 firstline = origfunc.__doc__.strip().splitlines()[0] |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
428 wrapper.__doc__ = firstline + ' (stupid)' |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
429 |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
430 assert getattr(cls, wrapper.__name__, None) is None |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
431 |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
432 setattr(cls, wrapper.__name__, wrapper) |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
433 |
1049
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
434 class TestMeta(type): |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
435 def __init__(cls, *args, **opts): |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
436 if cls.obsolete_mode_tests: |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
437 for origname in dir(cls): |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
438 _obsolete_wrap(cls, origname) |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
439 |
1365
89997a5fc181
stupid: self-disable if svn bindings are too new to work with stupid mode
Augie Fackler <raf@durin42.com>
parents:
1363
diff
changeset
|
440 if cls.stupid_mode_tests and svnwrap.subversion_version < (1, 9, 0): |
1056
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
441 for origname in dir(cls): |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
442 _stupid_wrap(cls, origname) |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
443 |
1049
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
444 return super(TestMeta, cls).__init__(*args, **opts) |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
445 |
82
71de43e9f614
Extract PushTest common code into test_util.TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
78
diff
changeset
|
446 class TestBase(unittest.TestCase): |
1049
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
447 __metaclass__ = TestMeta |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
448 |
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
449 obsolete_mode_tests = False |
1056
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
450 stupid_mode_tests = False |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
451 |
0932bb4d8870
tests: add a metaclass for triggering stupid on a class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1049
diff
changeset
|
452 stupid = False |
1049
608e7c8740af
tests: add a metaclass for testing obsolete mode
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
453 |
82
71de43e9f614
Extract PushTest common code into test_util.TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
78
diff
changeset
|
454 def setUp(self): |
645
3cb5042531fb
tests: verify locations of any imported hgsubversion modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
644
diff
changeset
|
455 _verify_our_modules() |
1101
4a92eb1484ba
layouts: fix crash when importing hgsubversion itself (issue #402)
Greg Ward <greg@gerg.ca>
parents:
1092
diff
changeset
|
456 if 'hgsubversion' in sys.modules: |
4a92eb1484ba
layouts: fix crash when importing hgsubversion itself (issue #402)
Greg Ward <greg@gerg.ca>
parents:
1092
diff
changeset
|
457 sys.modules['hgext_hgsubversion'] = sys.modules['hgsubversion'] |
645
3cb5042531fb
tests: verify locations of any imported hgsubversion modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
644
diff
changeset
|
458 |
896
04dfc23688b9
allow Python 2.7 to show medium-size multiline diffs when tests fail
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
890
diff
changeset
|
459 # the Python 2.7 default of 640 is obnoxiously low |
04dfc23688b9
allow Python 2.7 to show medium-size multiline diffs when tests fail
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
890
diff
changeset
|
460 self.maxDiff = 4096 |
04dfc23688b9
allow Python 2.7 to show medium-size multiline diffs when tests fail
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
890
diff
changeset
|
461 |
832
e9af7eba88db
globally: clean up whitespace around operators and commas to conform with PEP8
Yonggang Luo <luoyonggang@gmail.com>
parents:
816
diff
changeset
|
462 self.oldenv = dict([(k, os.environ.get(k, None),) for k in |
e9af7eba88db
globally: clean up whitespace around operators and commas to conform with PEP8
Yonggang Luo <luoyonggang@gmail.com>
parents:
816
diff
changeset
|
463 ('LANG', 'LC_ALL', 'HGRCPATH',)]) |
1245
260212f056b7
test_util: fix up i18n monkeypatch for Mercurial 3.2
Siddharth Agarwal <sid0@fb.com>
parents:
1238
diff
changeset
|
464 try: |
260212f056b7
test_util: fix up i18n monkeypatch for Mercurial 3.2
Siddharth Agarwal <sid0@fb.com>
parents:
1238
diff
changeset
|
465 self.oldugettext = i18n._ugettext # Mercurial >= 3.2 |
260212f056b7
test_util: fix up i18n monkeypatch for Mercurial 3.2
Siddharth Agarwal <sid0@fb.com>
parents:
1238
diff
changeset
|
466 except AttributeError: |
260212f056b7
test_util: fix up i18n monkeypatch for Mercurial 3.2
Siddharth Agarwal <sid0@fb.com>
parents:
1238
diff
changeset
|
467 self.oldt = i18n.t |
260212f056b7
test_util: fix up i18n monkeypatch for Mercurial 3.2
Siddharth Agarwal <sid0@fb.com>
parents:
1238
diff
changeset
|
468 os.environ['LANG'] = os.environ['LC_ALL'] = 'C' |
260212f056b7
test_util: fix up i18n monkeypatch for Mercurial 3.2
Siddharth Agarwal <sid0@fb.com>
parents:
1238
diff
changeset
|
469 i18n.t = gettext.translation('hg', i18n.localedir, fallback=True) |
260212f056b7
test_util: fix up i18n monkeypatch for Mercurial 3.2
Siddharth Agarwal <sid0@fb.com>
parents:
1238
diff
changeset
|
470 else: |
260212f056b7
test_util: fix up i18n monkeypatch for Mercurial 3.2
Siddharth Agarwal <sid0@fb.com>
parents:
1238
diff
changeset
|
471 os.environ['LANG'] = os.environ['LC_ALL'] = 'C' |
260212f056b7
test_util: fix up i18n monkeypatch for Mercurial 3.2
Siddharth Agarwal <sid0@fb.com>
parents:
1238
diff
changeset
|
472 i18n.setdatapath(hgutil.datapath) |
486
5607e81ba616
test_util: specify LANG=LC_ALL=C so l10n stops breaking tests
Augie Fackler <durin42@gmail.com>
parents:
483
diff
changeset
|
473 |
82
71de43e9f614
Extract PushTest common code into test_util.TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
78
diff
changeset
|
474 self.oldwd = os.getcwd() |
148
0c5f6420a8b5
tests: Add an environment variable (HGSUBVERSION_TEST_TEMP) which allows
Augie Fackler <durin42@gmail.com>
parents:
139
diff
changeset
|
475 self.tmpdir = tempfile.mkdtemp( |
0c5f6420a8b5
tests: Add an environment variable (HGSUBVERSION_TEST_TEMP) which allows
Augie Fackler <durin42@gmail.com>
parents:
139
diff
changeset
|
476 'svnwrap_test', dir=os.environ.get('HGSUBVERSION_TEST_TEMP', None)) |
1081
c8d0f5983571
tests: cd to tempdir during setUp
David Schleimer <dschleimer@fb.com>
parents:
1080
diff
changeset
|
477 os.chdir(self.tmpdir) |
231
b1543f243910
tests: Start providing our own custom hgrc for testing purposes.
Augie Fackler <durin42@gmail.com>
parents:
194
diff
changeset
|
478 self.hgrc = os.path.join(self.tmpdir, '.hgrc') |
b1543f243910
tests: Start providing our own custom hgrc for testing purposes.
Augie Fackler <durin42@gmail.com>
parents:
194
diff
changeset
|
479 os.environ['HGRCPATH'] = self.hgrc |
1003
6945d3359456
testutil: clear rcpath when we update HGRCPATH env var
David Schleimer <dschleimer@fb.com>
parents:
1001
diff
changeset
|
480 scmutil._rcpath = None |
231
b1543f243910
tests: Start providing our own custom hgrc for testing purposes.
Augie Fackler <durin42@gmail.com>
parents:
194
diff
changeset
|
481 rc = open(self.hgrc, 'w') |
1001
26aa0172725b
test_util: specify a username in our test-run hgrc.
Augie Fackler <raf@durin42.com>
parents:
952
diff
changeset
|
482 rc.write('[ui]\nusername=test-user\n') |
334
3c3c3264c362
test_util: Make the patching of ui.ui.write_err() slightly more reusable.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
333
diff
changeset
|
483 for l in '[extensions]', 'hgsubversion=': |
3c3c3264c362
test_util: Make the patching of ui.ui.write_err() slightly more reusable.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
333
diff
changeset
|
484 print >> rc, l |
148
0c5f6420a8b5
tests: Add an environment variable (HGSUBVERSION_TEST_TEMP) which allows
Augie Fackler <durin42@gmail.com>
parents:
139
diff
changeset
|
485 |
872
a279b5838aaf
test_util: remove self.repo_path, generate new paths each time
Patrick Mezard <patrick@mezard.eu>
parents:
871
diff
changeset
|
486 self.repocount = 0 |
82
71de43e9f614
Extract PushTest common code into test_util.TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
78
diff
changeset
|
487 self.wc_path = '%s/testrepo_wc' % self.tmpdir |
689
35a1e93b6f78
tests: move _add_svn_rev to test_util for reuse
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
652
diff
changeset
|
488 self.svn_wc = None |
331
75f082b5897e
Switch to using url scheme wrappers instead of duplicating each command we wrap.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
326
diff
changeset
|
489 |
911
772280aed751
Honor SVN auto-props (solves issue #186)
Ronny Voelker <ronny.voelker@googlemail.com>
parents:
910
diff
changeset
|
490 self.config_dir = self.tmpdir |
772280aed751
Honor SVN auto-props (solves issue #186)
Ronny Voelker <ronny.voelker@googlemail.com>
parents:
910
diff
changeset
|
491 svnwrap.common._svn_config_dir = self.config_dir |
772280aed751
Honor SVN auto-props (solves issue #186)
Ronny Voelker <ronny.voelker@googlemail.com>
parents:
910
diff
changeset
|
492 self.setup_svn_config('') |
772280aed751
Honor SVN auto-props (solves issue #186)
Ronny Voelker <ronny.voelker@googlemail.com>
parents:
910
diff
changeset
|
493 |
331
75f082b5897e
Switch to using url scheme wrappers instead of duplicating each command we wrap.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
326
diff
changeset
|
494 # Previously, we had a MockUI class that wrapped ui, and giving access |
75f082b5897e
Switch to using url scheme wrappers instead of duplicating each command we wrap.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
326
diff
changeset
|
495 # to the stream. The ui.pushbuffer() and ui.popbuffer() can be used |
75f082b5897e
Switch to using url scheme wrappers instead of duplicating each command we wrap.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
326
diff
changeset
|
496 # instead. Using the regular UI class, with all stderr redirected to |
75f082b5897e
Switch to using url scheme wrappers instead of duplicating each command we wrap.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
326
diff
changeset
|
497 # stdout ensures that the test setup is much more similar to usage |
75f082b5897e
Switch to using url scheme wrappers instead of duplicating each command we wrap.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
326
diff
changeset
|
498 # setups. |
334
3c3c3264c362
test_util: Make the patching of ui.ui.write_err() slightly more reusable.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
333
diff
changeset
|
499 self.patch = (ui.ui.write_err, ui.ui.write) |
3c3c3264c362
test_util: Make the patching of ui.ui.write_err() slightly more reusable.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
333
diff
changeset
|
500 setattr(ui.ui, self.patch[0].func_name, self.patch[1]) |
82
71de43e9f614
Extract PushTest common code into test_util.TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
78
diff
changeset
|
501 |
911
772280aed751
Honor SVN auto-props (solves issue #186)
Ronny Voelker <ronny.voelker@googlemail.com>
parents:
910
diff
changeset
|
502 def setup_svn_config(self, config): |
1038
aa043f64d8b7
tests: fix syntax incompatible with Python 2.4
Dan Villiom Podlaski Christiansen <dan@cabo.dk>
parents:
1003
diff
changeset
|
503 c = open(self.config_dir + '/config', 'w') |
aa043f64d8b7
tests: fix syntax incompatible with Python 2.4
Dan Villiom Podlaski Christiansen <dan@cabo.dk>
parents:
1003
diff
changeset
|
504 try: |
911
772280aed751
Honor SVN auto-props (solves issue #186)
Ronny Voelker <ronny.voelker@googlemail.com>
parents:
910
diff
changeset
|
505 c.write(config) |
1038
aa043f64d8b7
tests: fix syntax incompatible with Python 2.4
Dan Villiom Podlaski Christiansen <dan@cabo.dk>
parents:
1003
diff
changeset
|
506 finally: |
aa043f64d8b7
tests: fix syntax incompatible with Python 2.4
Dan Villiom Podlaski Christiansen <dan@cabo.dk>
parents:
1003
diff
changeset
|
507 c.close() |
911
772280aed751
Honor SVN auto-props (solves issue #186)
Ronny Voelker <ronny.voelker@googlemail.com>
parents:
910
diff
changeset
|
508 |
872
a279b5838aaf
test_util: remove self.repo_path, generate new paths each time
Patrick Mezard <patrick@mezard.eu>
parents:
871
diff
changeset
|
509 def _makerepopath(self): |
a279b5838aaf
test_util: remove self.repo_path, generate new paths each time
Patrick Mezard <patrick@mezard.eu>
parents:
871
diff
changeset
|
510 self.repocount += 1 |
a279b5838aaf
test_util: remove self.repo_path, generate new paths each time
Patrick Mezard <patrick@mezard.eu>
parents:
871
diff
changeset
|
511 return '%s/testrepo-%d' % (self.tmpdir, self.repocount) |
a279b5838aaf
test_util: remove self.repo_path, generate new paths each time
Patrick Mezard <patrick@mezard.eu>
parents:
871
diff
changeset
|
512 |
82
71de43e9f614
Extract PushTest common code into test_util.TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
78
diff
changeset
|
513 def tearDown(self): |
486
5607e81ba616
test_util: specify LANG=LC_ALL=C so l10n stops breaking tests
Augie Fackler <durin42@gmail.com>
parents:
483
diff
changeset
|
514 for var, val in self.oldenv.iteritems(): |
5607e81ba616
test_util: specify LANG=LC_ALL=C so l10n stops breaking tests
Augie Fackler <durin42@gmail.com>
parents:
483
diff
changeset
|
515 if val is None: |
5607e81ba616
test_util: specify LANG=LC_ALL=C so l10n stops breaking tests
Augie Fackler <durin42@gmail.com>
parents:
483
diff
changeset
|
516 del os.environ[var] |
5607e81ba616
test_util: specify LANG=LC_ALL=C so l10n stops breaking tests
Augie Fackler <durin42@gmail.com>
parents:
483
diff
changeset
|
517 else: |
5607e81ba616
test_util: specify LANG=LC_ALL=C so l10n stops breaking tests
Augie Fackler <durin42@gmail.com>
parents:
483
diff
changeset
|
518 os.environ[var] = val |
1245
260212f056b7
test_util: fix up i18n monkeypatch for Mercurial 3.2
Siddharth Agarwal <sid0@fb.com>
parents:
1238
diff
changeset
|
519 try: |
260212f056b7
test_util: fix up i18n monkeypatch for Mercurial 3.2
Siddharth Agarwal <sid0@fb.com>
parents:
1238
diff
changeset
|
520 i18n._ugettext = self.oldugettext # Mercurial >= 3.2 |
260212f056b7
test_util: fix up i18n monkeypatch for Mercurial 3.2
Siddharth Agarwal <sid0@fb.com>
parents:
1238
diff
changeset
|
521 except AttributeError: |
260212f056b7
test_util: fix up i18n monkeypatch for Mercurial 3.2
Siddharth Agarwal <sid0@fb.com>
parents:
1238
diff
changeset
|
522 i18n.t = self.oldt |
82
71de43e9f614
Extract PushTest common code into test_util.TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
78
diff
changeset
|
523 os.chdir(self.oldwd) |
1337
0f1f88e71138
tests: leave from the directory before removing
Shun-ichi Goto <shunichi.goto@gmail.com>
parents:
1245
diff
changeset
|
524 rmtree(self.tmpdir) |
334
3c3c3264c362
test_util: Make the patching of ui.ui.write_err() slightly more reusable.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
333
diff
changeset
|
525 setattr(ui.ui, self.patch[0].func_name, self.patch[0]) |
91
7d10165cf3d9
tests: Mock the mercurial.ui.ui class like we really should to capture output.
Augie Fackler <durin42@gmail.com>
parents:
84
diff
changeset
|
526 |
645
3cb5042531fb
tests: verify locations of any imported hgsubversion modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
644
diff
changeset
|
527 _verify_our_modules() |
3cb5042531fb
tests: verify locations of any imported hgsubversion modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
644
diff
changeset
|
528 |
1078
1afd308b8f46
tests: remove ability to toggle stupidity on less than class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1056
diff
changeset
|
529 def ui(self, layout='auto'): |
1afd308b8f46
tests: remove ability to toggle stupidity on less than class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1056
diff
changeset
|
530 return testui(self.stupid, layout) |
576
d96aa92d9ad9
tests: silence test suite by using quiet UIs everywhere
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
548
diff
changeset
|
531 |
866
20e73b5ab6f7
test_util: merge load_svndump_fixture() into TestBase
Patrick Mezard <patrick@mezard.eu>
parents:
865
diff
changeset
|
532 def load_svndump(self, fixture_name): |
20e73b5ab6f7
test_util: merge load_svndump_fixture() into TestBase
Patrick Mezard <patrick@mezard.eu>
parents:
865
diff
changeset
|
533 '''Loads an svnadmin dump into a fresh repo. Return the svn repo |
20e73b5ab6f7
test_util: merge load_svndump_fixture() into TestBase
Patrick Mezard <patrick@mezard.eu>
parents:
865
diff
changeset
|
534 path. |
20e73b5ab6f7
test_util: merge load_svndump_fixture() into TestBase
Patrick Mezard <patrick@mezard.eu>
parents:
865
diff
changeset
|
535 ''' |
872
a279b5838aaf
test_util: remove self.repo_path, generate new paths each time
Patrick Mezard <patrick@mezard.eu>
parents:
871
diff
changeset
|
536 path = self._makerepopath() |
a279b5838aaf
test_util: remove self.repo_path, generate new paths each time
Patrick Mezard <patrick@mezard.eu>
parents:
871
diff
changeset
|
537 assert not os.path.exists(path) |
866
20e73b5ab6f7
test_util: merge load_svndump_fixture() into TestBase
Patrick Mezard <patrick@mezard.eu>
parents:
865
diff
changeset
|
538 subprocess.call(['svnadmin', 'create', path,], |
20e73b5ab6f7
test_util: merge load_svndump_fixture() into TestBase
Patrick Mezard <patrick@mezard.eu>
parents:
865
diff
changeset
|
539 stdout=subprocess.PIPE, stderr=subprocess.STDOUT) |
20e73b5ab6f7
test_util: merge load_svndump_fixture() into TestBase
Patrick Mezard <patrick@mezard.eu>
parents:
865
diff
changeset
|
540 inp = open(os.path.join(FIXTURES, fixture_name)) |
20e73b5ab6f7
test_util: merge load_svndump_fixture() into TestBase
Patrick Mezard <patrick@mezard.eu>
parents:
865
diff
changeset
|
541 proc = subprocess.Popen(['svnadmin', 'load', path,], stdin=inp, |
20e73b5ab6f7
test_util: merge load_svndump_fixture() into TestBase
Patrick Mezard <patrick@mezard.eu>
parents:
865
diff
changeset
|
542 stdout=subprocess.PIPE, stderr=subprocess.STDOUT) |
20e73b5ab6f7
test_util: merge load_svndump_fixture() into TestBase
Patrick Mezard <patrick@mezard.eu>
parents:
865
diff
changeset
|
543 proc.communicate() |
20e73b5ab6f7
test_util: merge load_svndump_fixture() into TestBase
Patrick Mezard <patrick@mezard.eu>
parents:
865
diff
changeset
|
544 return path |
20e73b5ab6f7
test_util: merge load_svndump_fixture() into TestBase
Patrick Mezard <patrick@mezard.eu>
parents:
865
diff
changeset
|
545 |
910
312f36a425f0
Ignore invalid utf8 in commit messages
David Schleimer <dschleimer@fb.com>
parents:
908
diff
changeset
|
546 def load_repo_tarball(self, fixture_name): |
312f36a425f0
Ignore invalid utf8 in commit messages
David Schleimer <dschleimer@fb.com>
parents:
908
diff
changeset
|
547 '''Extracts a tarball of an svn repo and returns the svn repo path.''' |
312f36a425f0
Ignore invalid utf8 in commit messages
David Schleimer <dschleimer@fb.com>
parents:
908
diff
changeset
|
548 path = self._makerepopath() |
312f36a425f0
Ignore invalid utf8 in commit messages
David Schleimer <dschleimer@fb.com>
parents:
908
diff
changeset
|
549 assert not os.path.exists(path) |
312f36a425f0
Ignore invalid utf8 in commit messages
David Schleimer <dschleimer@fb.com>
parents:
908
diff
changeset
|
550 os.mkdir(path) |
312f36a425f0
Ignore invalid utf8 in commit messages
David Schleimer <dschleimer@fb.com>
parents:
908
diff
changeset
|
551 tarball = tarfile.open(os.path.join(FIXTURES, fixture_name)) |
312f36a425f0
Ignore invalid utf8 in commit messages
David Schleimer <dschleimer@fb.com>
parents:
908
diff
changeset
|
552 # This is probably somewhat fragile, but I'm not sure how to |
312f36a425f0
Ignore invalid utf8 in commit messages
David Schleimer <dschleimer@fb.com>
parents:
908
diff
changeset
|
553 # do better in particular, I think it assumes that the tar |
312f36a425f0
Ignore invalid utf8 in commit messages
David Schleimer <dschleimer@fb.com>
parents:
908
diff
changeset
|
554 # entries are in the right order and that directories appear |
312f36a425f0
Ignore invalid utf8 in commit messages
David Schleimer <dschleimer@fb.com>
parents:
908
diff
changeset
|
555 # before their contents. This is a valid assummption for sane |
312f36a425f0
Ignore invalid utf8 in commit messages
David Schleimer <dschleimer@fb.com>
parents:
908
diff
changeset
|
556 # tarballs, from what I can tell. In particular, for a simple |
312f36a425f0
Ignore invalid utf8 in commit messages
David Schleimer <dschleimer@fb.com>
parents:
908
diff
changeset
|
557 # tarball of a svn repo with paths relative to the repo root, |
312f36a425f0
Ignore invalid utf8 in commit messages
David Schleimer <dschleimer@fb.com>
parents:
908
diff
changeset
|
558 # it seems to work |
312f36a425f0
Ignore invalid utf8 in commit messages
David Schleimer <dschleimer@fb.com>
parents:
908
diff
changeset
|
559 for entry in tarball: |
312f36a425f0
Ignore invalid utf8 in commit messages
David Schleimer <dschleimer@fb.com>
parents:
908
diff
changeset
|
560 tarball.extract(entry, path) |
312f36a425f0
Ignore invalid utf8 in commit messages
David Schleimer <dschleimer@fb.com>
parents:
908
diff
changeset
|
561 return path |
312f36a425f0
Ignore invalid utf8 in commit messages
David Schleimer <dschleimer@fb.com>
parents:
908
diff
changeset
|
562 |
1078
1afd308b8f46
tests: remove ability to toggle stupidity on less than class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1056
diff
changeset
|
563 def fetch(self, repo_path, subdir=None, layout='auto', |
944
d6db289f1548
pull: add hgsubversion.filestoresize to control memory consumption
Patrick Mezard <patrick@mezard.eu>
parents:
930
diff
changeset
|
564 startrev=0, externals=None, noupdate=True, dest=None, rev=None, |
d6db289f1548
pull: add hgsubversion.filestoresize to control memory consumption
Patrick Mezard <patrick@mezard.eu>
parents:
930
diff
changeset
|
565 config=None): |
499
1fd3cfa47c5e
Support for single-directory clones.
Augie Fackler <durin42@gmail.com>
parents:
492
diff
changeset
|
566 if layout == 'single': |
1fd3cfa47c5e
Support for single-directory clones.
Augie Fackler <durin42@gmail.com>
parents:
492
diff
changeset
|
567 if subdir is None: |
1fd3cfa47c5e
Support for single-directory clones.
Augie Fackler <durin42@gmail.com>
parents:
492
diff
changeset
|
568 subdir = 'trunk' |
1fd3cfa47c5e
Support for single-directory clones.
Augie Fackler <durin42@gmail.com>
parents:
492
diff
changeset
|
569 elif subdir is None: |
1fd3cfa47c5e
Support for single-directory clones.
Augie Fackler <durin42@gmail.com>
parents:
492
diff
changeset
|
570 subdir = '' |
866
20e73b5ab6f7
test_util: merge load_svndump_fixture() into TestBase
Patrick Mezard <patrick@mezard.eu>
parents:
865
diff
changeset
|
571 projectpath = repo_path |
865
04729f3a3d17
test_util: merge load_fixture_and_fetch() into TestBase method
Patrick Mezard <patrick@mezard.eu>
parents:
832
diff
changeset
|
572 if subdir: |
04729f3a3d17
test_util: merge load_fixture_and_fetch() into TestBase method
Patrick Mezard <patrick@mezard.eu>
parents:
832
diff
changeset
|
573 projectpath += '/' + subdir |
04729f3a3d17
test_util: merge load_fixture_and_fetch() into TestBase method
Patrick Mezard <patrick@mezard.eu>
parents:
832
diff
changeset
|
574 |
04729f3a3d17
test_util: merge load_fixture_and_fetch() into TestBase method
Patrick Mezard <patrick@mezard.eu>
parents:
832
diff
changeset
|
575 cmd = [ |
04729f3a3d17
test_util: merge load_fixture_and_fetch() into TestBase method
Patrick Mezard <patrick@mezard.eu>
parents:
832
diff
changeset
|
576 'clone', |
1343
e597714cb420
tests: pass --quiet anyplace we call dispatch to run a command
Augie Fackler <raf@durin42.com>
parents:
1342
diff
changeset
|
577 '--quiet', |
865
04729f3a3d17
test_util: merge load_fixture_and_fetch() into TestBase method
Patrick Mezard <patrick@mezard.eu>
parents:
832
diff
changeset
|
578 '--layout=%s' % layout, |
04729f3a3d17
test_util: merge load_fixture_and_fetch() into TestBase method
Patrick Mezard <patrick@mezard.eu>
parents:
832
diff
changeset
|
579 '--startrev=%s' % startrev, |
04729f3a3d17
test_util: merge load_fixture_and_fetch() into TestBase method
Patrick Mezard <patrick@mezard.eu>
parents:
832
diff
changeset
|
580 fileurl(projectpath), |
04729f3a3d17
test_util: merge load_fixture_and_fetch() into TestBase method
Patrick Mezard <patrick@mezard.eu>
parents:
832
diff
changeset
|
581 self.wc_path, |
04729f3a3d17
test_util: merge load_fixture_and_fetch() into TestBase method
Patrick Mezard <patrick@mezard.eu>
parents:
832
diff
changeset
|
582 ] |
1078
1afd308b8f46
tests: remove ability to toggle stupidity on less than class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1056
diff
changeset
|
583 if self.stupid: |
865
04729f3a3d17
test_util: merge load_fixture_and_fetch() into TestBase method
Patrick Mezard <patrick@mezard.eu>
parents:
832
diff
changeset
|
584 cmd.append('--stupid') |
04729f3a3d17
test_util: merge load_fixture_and_fetch() into TestBase method
Patrick Mezard <patrick@mezard.eu>
parents:
832
diff
changeset
|
585 if noupdate: |
04729f3a3d17
test_util: merge load_fixture_and_fetch() into TestBase method
Patrick Mezard <patrick@mezard.eu>
parents:
832
diff
changeset
|
586 cmd.append('--noupdate') |
908
c4ee11a5d04c
pull: add a hgsubversion.unsafeskip option to omit unwanted revs
Bryan O'Sullivan <bryano@fb.com>
parents:
896
diff
changeset
|
587 if rev is not None: |
c4ee11a5d04c
pull: add a hgsubversion.unsafeskip option to omit unwanted revs
Bryan O'Sullivan <bryano@fb.com>
parents:
896
diff
changeset
|
588 cmd.append('--rev=%s' % rev) |
944
d6db289f1548
pull: add hgsubversion.filestoresize to control memory consumption
Patrick Mezard <patrick@mezard.eu>
parents:
930
diff
changeset
|
589 config = dict(config or {}) |
865
04729f3a3d17
test_util: merge load_fixture_and_fetch() into TestBase method
Patrick Mezard <patrick@mezard.eu>
parents:
832
diff
changeset
|
590 if externals: |
944
d6db289f1548
pull: add hgsubversion.filestoresize to control memory consumption
Patrick Mezard <patrick@mezard.eu>
parents:
930
diff
changeset
|
591 config['hgsubversion.externals'] = str(externals) |
d6db289f1548
pull: add hgsubversion.filestoresize to control memory consumption
Patrick Mezard <patrick@mezard.eu>
parents:
930
diff
changeset
|
592 for k,v in reversed(sorted(config.iteritems())): |
d6db289f1548
pull: add hgsubversion.filestoresize to control memory consumption
Patrick Mezard <patrick@mezard.eu>
parents:
930
diff
changeset
|
593 cmd[:0] = ['--config', '%s=%s' % (k, v)] |
865
04729f3a3d17
test_util: merge load_fixture_and_fetch() into TestBase method
Patrick Mezard <patrick@mezard.eu>
parents:
832
diff
changeset
|
594 |
1041
70090e2ee262
tests: assert that fetches actually succeed
Dan Villiom Podlaski Christiansen <dan@cabo.dk>
parents:
1038
diff
changeset
|
595 r = dispatch(cmd) |
70090e2ee262
tests: assert that fetches actually succeed
Dan Villiom Podlaski Christiansen <dan@cabo.dk>
parents:
1038
diff
changeset
|
596 assert not r, 'fetch of %s failed' % projectpath |
865
04729f3a3d17
test_util: merge load_fixture_and_fetch() into TestBase method
Patrick Mezard <patrick@mezard.eu>
parents:
832
diff
changeset
|
597 |
886
d3ff5807f1bd
fold test_startrev and test_verify into a new test; test_verify_and_startrev
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
874
diff
changeset
|
598 return hg.repository(testui(), self.wc_path) |
d3ff5807f1bd
fold test_startrev and test_verify into a new test; test_verify_and_startrev
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
874
diff
changeset
|
599 |
d3ff5807f1bd
fold test_startrev and test_verify into a new test; test_verify_and_startrev
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
874
diff
changeset
|
600 def load_and_fetch(self, fixture_name, *args, **opts): |
910
312f36a425f0
Ignore invalid utf8 in commit messages
David Schleimer <dschleimer@fb.com>
parents:
908
diff
changeset
|
601 if fixture_name.endswith('.svndump'): |
312f36a425f0
Ignore invalid utf8 in commit messages
David Schleimer <dschleimer@fb.com>
parents:
908
diff
changeset
|
602 repo_path = self.load_svndump(fixture_name) |
312f36a425f0
Ignore invalid utf8 in commit messages
David Schleimer <dschleimer@fb.com>
parents:
908
diff
changeset
|
603 elif fixture_name.endswith('tar.gz'): |
312f36a425f0
Ignore invalid utf8 in commit messages
David Schleimer <dschleimer@fb.com>
parents:
908
diff
changeset
|
604 repo_path = self.load_repo_tarball(fixture_name) |
312f36a425f0
Ignore invalid utf8 in commit messages
David Schleimer <dschleimer@fb.com>
parents:
908
diff
changeset
|
605 else: |
312f36a425f0
Ignore invalid utf8 in commit messages
David Schleimer <dschleimer@fb.com>
parents:
908
diff
changeset
|
606 assert False, 'Unknown fixture type' |
886
d3ff5807f1bd
fold test_startrev and test_verify into a new test; test_verify_and_startrev
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
874
diff
changeset
|
607 |
d3ff5807f1bd
fold test_startrev and test_verify into a new test; test_verify_and_startrev
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
874
diff
changeset
|
608 return self.fetch(repo_path, *args, **opts), repo_path |
867
50c13e01c7e3
test_util: add a load_and_fetch() returning the repo_path
Patrick Mezard <patrick@mezard.eu>
parents:
866
diff
changeset
|
609 |
50c13e01c7e3
test_util: add a load_and_fetch() returning the repo_path
Patrick Mezard <patrick@mezard.eu>
parents:
866
diff
changeset
|
610 def _load_fixture_and_fetch(self, *args, **kwargs): |
50c13e01c7e3
test_util: add a load_and_fetch() returning the repo_path
Patrick Mezard <patrick@mezard.eu>
parents:
866
diff
changeset
|
611 repo, repo_path = self.load_and_fetch(*args, **kwargs) |
50c13e01c7e3
test_util: add a load_and_fetch() returning the repo_path
Patrick Mezard <patrick@mezard.eu>
parents:
866
diff
changeset
|
612 return repo |
138
40474f6c1f84
diff_cmd: more robust, add tests.
Augie Fackler <durin42@gmail.com>
parents:
112
diff
changeset
|
613 |
868
cc1c870f1758
test_util: pass repo_path to _add_svn_rev() explicitely
Patrick Mezard <patrick@mezard.eu>
parents:
867
diff
changeset
|
614 def add_svn_rev(self, repo_path, changes): |
689
35a1e93b6f78
tests: move _add_svn_rev to test_util for reuse
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
652
diff
changeset
|
615 '''changes is a dict of filename -> contents''' |
35a1e93b6f78
tests: move _add_svn_rev to test_util for reuse
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
652
diff
changeset
|
616 if self.svn_wc is None: |
35a1e93b6f78
tests: move _add_svn_rev to test_util for reuse
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
652
diff
changeset
|
617 self.svn_wc = os.path.join(self.tmpdir, 'testsvn_wc') |
35a1e93b6f78
tests: move _add_svn_rev to test_util for reuse
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
652
diff
changeset
|
618 subprocess.call([ |
868
cc1c870f1758
test_util: pass repo_path to _add_svn_rev() explicitely
Patrick Mezard <patrick@mezard.eu>
parents:
867
diff
changeset
|
619 'svn', 'co', '-q', fileurl(repo_path), |
689
35a1e93b6f78
tests: move _add_svn_rev to test_util for reuse
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
652
diff
changeset
|
620 self.svn_wc |
35a1e93b6f78
tests: move _add_svn_rev to test_util for reuse
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
652
diff
changeset
|
621 ], |
35a1e93b6f78
tests: move _add_svn_rev to test_util for reuse
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
652
diff
changeset
|
622 stdout=subprocess.PIPE, stderr=subprocess.STDOUT) |
35a1e93b6f78
tests: move _add_svn_rev to test_util for reuse
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
652
diff
changeset
|
623 |
35a1e93b6f78
tests: move _add_svn_rev to test_util for reuse
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
652
diff
changeset
|
624 for filename, contents in changes.iteritems(): |
35a1e93b6f78
tests: move _add_svn_rev to test_util for reuse
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
652
diff
changeset
|
625 # filenames are / separated |
35a1e93b6f78
tests: move _add_svn_rev to test_util for reuse
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
652
diff
changeset
|
626 filename = filename.replace('/', os.path.sep) |
35a1e93b6f78
tests: move _add_svn_rev to test_util for reuse
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
652
diff
changeset
|
627 filename = os.path.join(self.svn_wc, filename) |
35a1e93b6f78
tests: move _add_svn_rev to test_util for reuse
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
652
diff
changeset
|
628 open(filename, 'w').write(contents) |
35a1e93b6f78
tests: move _add_svn_rev to test_util for reuse
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
652
diff
changeset
|
629 # may be redundant |
35a1e93b6f78
tests: move _add_svn_rev to test_util for reuse
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
652
diff
changeset
|
630 subprocess.call(['svn', 'add', '-q', filename], |
35a1e93b6f78
tests: move _add_svn_rev to test_util for reuse
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
652
diff
changeset
|
631 stdout=subprocess.PIPE, stderr=subprocess.STDOUT) |
35a1e93b6f78
tests: move _add_svn_rev to test_util for reuse
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
652
diff
changeset
|
632 subprocess.call([ |
35a1e93b6f78
tests: move _add_svn_rev to test_util for reuse
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
652
diff
changeset
|
633 'svn', 'commit', '-q', self.svn_wc, '-m', 'test changes'], |
35a1e93b6f78
tests: move _add_svn_rev to test_util for reuse
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
652
diff
changeset
|
634 stdout=subprocess.PIPE, stderr=subprocess.STDOUT) |
35a1e93b6f78
tests: move _add_svn_rev to test_util for reuse
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
652
diff
changeset
|
635 |
82
71de43e9f614
Extract PushTest common code into test_util.TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
78
diff
changeset
|
636 # define this as a property so that it reloads anytime we need it |
71de43e9f614
Extract PushTest common code into test_util.TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
78
diff
changeset
|
637 @property |
71de43e9f614
Extract PushTest common code into test_util.TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
78
diff
changeset
|
638 def repo(self): |
576
d96aa92d9ad9
tests: silence test suite by using quiet UIs everywhere
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
548
diff
changeset
|
639 return hg.repository(testui(), self.wc_path) |
82
71de43e9f614
Extract PushTest common code into test_util.TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
78
diff
changeset
|
640 |
1078
1afd308b8f46
tests: remove ability to toggle stupidity on less than class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1056
diff
changeset
|
641 def pushrevisions(self, expected_extra_back=0): |
1048
903c9c9dfe6a
tests: count revisions explicitly
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1041
diff
changeset
|
642 before = repolen(self.repo) |
1078
1afd308b8f46
tests: remove ability to toggle stupidity on less than class level
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1056
diff
changeset
|
643 self.repo.ui.setconfig('hgsubversion', 'stupid', str(self.stupid)) |
626
8e621dbb82d4
push: return reasonable status codes to the end user
Augie Fackler <durin42@gmail.com>
parents:
621
diff
changeset
|
644 res = commands.push(self.repo.ui, self.repo) |
1048
903c9c9dfe6a
tests: count revisions explicitly
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1041
diff
changeset
|
645 after = repolen(self.repo) |
355
256863a65141
test_util: make it easier to test odd push cases
Augie Fackler <durin42@gmail.com>
parents:
351
diff
changeset
|
646 self.assertEqual(expected_extra_back, after - before) |
626
8e621dbb82d4
push: return reasonable status codes to the end user
Augie Fackler <durin42@gmail.com>
parents:
621
diff
changeset
|
647 return res |
83
6c9b7cf1c5aa
push_cmd: delete empty svn directories, refactor directory creation
Patrick Mezard <pmezard@gmail.com>
parents:
82
diff
changeset
|
648 |
870
1eb2a4428c42
test_util: pass repo_path to svnco() explicitely
Patrick Mezard <patrick@mezard.eu>
parents:
869
diff
changeset
|
649 def svnco(self, repo_path, svnpath, rev, path): |
764
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
650 path = os.path.join(self.wc_path, path) |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
651 subpath = os.path.dirname(path) |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
652 if not os.path.isdir(subpath): |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
653 os.makedirs(subpath) |
870
1eb2a4428c42
test_util: pass repo_path to svnco() explicitely
Patrick Mezard <patrick@mezard.eu>
parents:
869
diff
changeset
|
654 svnpath = fileurl(repo_path + '/' + svnpath) |
764
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
655 args = ['svn', 'co', '-r', rev, svnpath, path] |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
656 p = subprocess.Popen(args, |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
657 stdout=subprocess.PIPE, |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
658 stderr=subprocess.STDOUT) |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
659 stdout, stderr = p.communicate() |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
660 if p.returncode: |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
661 raise Exception('svn co failed on %s: %r' % (svnpath, stderr)) |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
662 |
355
256863a65141
test_util: make it easier to test odd push cases
Augie Fackler <durin42@gmail.com>
parents:
351
diff
changeset
|
663 def commitchanges(self, changes, parent='tip', message='automated test'): |
84
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
664 """Commit changes to mercurial directory |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
665 |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
666 'changes' is a sequence of tuples (source, dest, data). It can look |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
667 like: |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
668 - (source, source, data) to set source content to data |
91
7d10165cf3d9
tests: Mock the mercurial.ui.ui class like we really should to capture output.
Augie Fackler <durin42@gmail.com>
parents:
84
diff
changeset
|
669 - (source, dest, None) to set dest content to source one, and mark it as |
84
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
670 copied from source. |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
671 - (source, dest, data) to set dest content to data, and mark it as copied |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
672 from source. |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
673 - (source, None, None) to remove source. |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
674 """ |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
675 repo = self.repo |
277
3848a7f9b983
push: Add a test that demonstrates base-text detection works
Augie Fackler <durin42@gmail.com>
parents:
270
diff
changeset
|
676 parentctx = repo[parent] |
84
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
677 |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
678 changed, removed = [], [] |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
679 for source, dest, newdata in changes: |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
680 if dest is None: |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
681 removed.append(source) |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
682 else: |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
683 changed.append(dest) |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
684 |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
685 def filectxfn(repo, memctx, path): |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
686 if path in removed: |
1238
339b5703000c
test_util: use compat hack for filectxfn for deleted files
Siddharth Agarwal <sid0@fb.com>
parents:
1234
diff
changeset
|
687 return compathacks.filectxfn_deleted(memctx, path) |
84
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
688 entry = [e for e in changes if path == e[1]][0] |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
689 source, dest, newdata = entry |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
690 if newdata is None: |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
691 newdata = parentctx[source].data() |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
692 copied = None |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
693 if source != dest: |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
694 copied = source |
1203
518a9552f7f9
test_util: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1174
diff
changeset
|
695 return compathacks.makememfilectx(repo, |
518a9552f7f9
test_util: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1174
diff
changeset
|
696 path=dest, |
518a9552f7f9
test_util: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1174
diff
changeset
|
697 data=newdata, |
518a9552f7f9
test_util: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1174
diff
changeset
|
698 islink=False, |
518a9552f7f9
test_util: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1174
diff
changeset
|
699 isexec=False, |
518a9552f7f9
test_util: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1174
diff
changeset
|
700 copied=copied) |
91
7d10165cf3d9
tests: Mock the mercurial.ui.ui class like we really should to capture output.
Augie Fackler <durin42@gmail.com>
parents:
84
diff
changeset
|
701 |
84
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
702 ctx = context.memctx(repo, |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
703 (parentctx.node(), node.nullid), |
355
256863a65141
test_util: make it easier to test odd push cases
Augie Fackler <durin42@gmail.com>
parents:
351
diff
changeset
|
704 message, |
84
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
705 changed + removed, |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
706 filectxfn, |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
707 'an_author', |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
708 '2008-10-07 20:59:48 -0500') |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
709 nodeid = repo.commitctx(ctx) |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
710 repo = self.repo |
277
3848a7f9b983
push: Add a test that demonstrates base-text detection works
Augie Fackler <durin42@gmail.com>
parents:
270
diff
changeset
|
711 hg.clean(repo, nodeid) |
84
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
83
diff
changeset
|
712 return nodeid |
96
9b5e528f67f8
Add a test to check EOLs are correctly converted
Patrick Mezard <pmezard@gmail.com>
parents:
91
diff
changeset
|
713 |
9b5e528f67f8
Add a test to check EOLs are correctly converted
Patrick Mezard <pmezard@gmail.com>
parents:
91
diff
changeset
|
714 def assertchanges(self, changes, ctx): |
9b5e528f67f8
Add a test to check EOLs are correctly converted
Patrick Mezard <pmezard@gmail.com>
parents:
91
diff
changeset
|
715 """Assert that all 'changes' (as in defined in commitchanged()) |
9b5e528f67f8
Add a test to check EOLs are correctly converted
Patrick Mezard <pmezard@gmail.com>
parents:
91
diff
changeset
|
716 went into ctx. |
9b5e528f67f8
Add a test to check EOLs are correctly converted
Patrick Mezard <pmezard@gmail.com>
parents:
91
diff
changeset
|
717 """ |
9b5e528f67f8
Add a test to check EOLs are correctly converted
Patrick Mezard <pmezard@gmail.com>
parents:
91
diff
changeset
|
718 for source, dest, data in changes: |
9b5e528f67f8
Add a test to check EOLs are correctly converted
Patrick Mezard <pmezard@gmail.com>
parents:
91
diff
changeset
|
719 if dest is None: |
9b5e528f67f8
Add a test to check EOLs are correctly converted
Patrick Mezard <pmezard@gmail.com>
parents:
91
diff
changeset
|
720 self.assertTrue(source not in ctx) |
9b5e528f67f8
Add a test to check EOLs are correctly converted
Patrick Mezard <pmezard@gmail.com>
parents:
91
diff
changeset
|
721 continue |
9b5e528f67f8
Add a test to check EOLs are correctly converted
Patrick Mezard <pmezard@gmail.com>
parents:
91
diff
changeset
|
722 self.assertTrue(dest in ctx) |
9b5e528f67f8
Add a test to check EOLs are correctly converted
Patrick Mezard <pmezard@gmail.com>
parents:
91
diff
changeset
|
723 if data is None: |
9b5e528f67f8
Add a test to check EOLs are correctly converted
Patrick Mezard <pmezard@gmail.com>
parents:
91
diff
changeset
|
724 data = ctx.parents()[0][source].data() |
9b5e528f67f8
Add a test to check EOLs are correctly converted
Patrick Mezard <pmezard@gmail.com>
parents:
91
diff
changeset
|
725 self.assertEqual(ctx[dest].data(), data) |
9b5e528f67f8
Add a test to check EOLs are correctly converted
Patrick Mezard <pmezard@gmail.com>
parents:
91
diff
changeset
|
726 if dest != source: |
9b5e528f67f8
Add a test to check EOLs are correctly converted
Patrick Mezard <pmezard@gmail.com>
parents:
91
diff
changeset
|
727 copy = ctx[dest].renamed() |
9b5e528f67f8
Add a test to check EOLs are correctly converted
Patrick Mezard <pmezard@gmail.com>
parents:
91
diff
changeset
|
728 self.assertEqual(copy[0], source) |
527
2be9f14bd23f
test_util: add helper to draw repo with graphlog extension
Patrick Mezard <pmezard@gmail.com>
parents:
522
diff
changeset
|
729 |
621
3e18cdcb6e00
test_util: add assertMultiLineEqual() method.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
576
diff
changeset
|
730 def assertMultiLineEqual(self, first, second, msg=None): |
3e18cdcb6e00
test_util: add assertMultiLineEqual() method.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
576
diff
changeset
|
731 """Assert that two multi-line strings are equal. (Based on Py3k code.) |
3e18cdcb6e00
test_util: add assertMultiLineEqual() method.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
576
diff
changeset
|
732 """ |
744
6d6be5284056
tests: make assertMultiLineEqual call super, if possible.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
743
diff
changeset
|
733 try: |
6d6be5284056
tests: make assertMultiLineEqual call super, if possible.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
743
diff
changeset
|
734 return super(TestBase, self).assertMultiLineEqual(first, second, |
6d6be5284056
tests: make assertMultiLineEqual call super, if possible.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
743
diff
changeset
|
735 msg) |
6d6be5284056
tests: make assertMultiLineEqual call super, if possible.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
743
diff
changeset
|
736 except AttributeError: |
6d6be5284056
tests: make assertMultiLineEqual call super, if possible.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
743
diff
changeset
|
737 pass |
6d6be5284056
tests: make assertMultiLineEqual call super, if possible.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
743
diff
changeset
|
738 |
621
3e18cdcb6e00
test_util: add assertMultiLineEqual() method.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
576
diff
changeset
|
739 self.assert_(isinstance(first, str), |
3e18cdcb6e00
test_util: add assertMultiLineEqual() method.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
576
diff
changeset
|
740 ('First argument is not a string')) |
3e18cdcb6e00
test_util: add assertMultiLineEqual() method.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
576
diff
changeset
|
741 self.assert_(isinstance(second, str), |
3e18cdcb6e00
test_util: add assertMultiLineEqual() method.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
576
diff
changeset
|
742 ('Second argument is not a string')) |
3e18cdcb6e00
test_util: add assertMultiLineEqual() method.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
576
diff
changeset
|
743 |
3e18cdcb6e00
test_util: add assertMultiLineEqual() method.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
576
diff
changeset
|
744 if first != second: |
3e18cdcb6e00
test_util: add assertMultiLineEqual() method.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
576
diff
changeset
|
745 diff = ''.join(difflib.unified_diff(first.splitlines(True), |
3e18cdcb6e00
test_util: add assertMultiLineEqual() method.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
576
diff
changeset
|
746 second.splitlines(True), |
3e18cdcb6e00
test_util: add assertMultiLineEqual() method.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
576
diff
changeset
|
747 fromfile='a', |
3e18cdcb6e00
test_util: add assertMultiLineEqual() method.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
576
diff
changeset
|
748 tofile='b')) |
3e18cdcb6e00
test_util: add assertMultiLineEqual() method.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
576
diff
changeset
|
749 msg = '%s\n%s' % (msg or '', diff) |
3e18cdcb6e00
test_util: add assertMultiLineEqual() method.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
576
diff
changeset
|
750 raise self.failureException, msg |
3e18cdcb6e00
test_util: add assertMultiLineEqual() method.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
576
diff
changeset
|
751 |
952
9c3b4f59e7e6
stupid: do not close branch upon branch-wide revert
Patrick Mezard <patrick@mezard.eu>
parents:
944
diff
changeset
|
752 def getgraph(self, repo): |
527
2be9f14bd23f
test_util: add helper to draw repo with graphlog extension
Patrick Mezard <pmezard@gmail.com>
parents:
522
diff
changeset
|
753 """Helper function displaying a repository graph, especially |
2be9f14bd23f
test_util: add helper to draw repo with graphlog extension
Patrick Mezard <pmezard@gmail.com>
parents:
522
diff
changeset
|
754 useful when debugging comprehensive tests. |
2be9f14bd23f
test_util: add helper to draw repo with graphlog extension
Patrick Mezard <pmezard@gmail.com>
parents:
522
diff
changeset
|
755 """ |
2be9f14bd23f
test_util: add helper to draw repo with graphlog extension
Patrick Mezard <pmezard@gmail.com>
parents:
522
diff
changeset
|
756 # Could be more elegant, but it works with stock hg |
1342
c6b01fd34694
trying to fix progress output
Augie Fackler <raf@durin42.com>
parents:
1337
diff
changeset
|
757 _ui = testui() |
527
2be9f14bd23f
test_util: add helper to draw repo with graphlog extension
Patrick Mezard <pmezard@gmail.com>
parents:
522
diff
changeset
|
758 _ui.setconfig('extensions', 'graphlog', '') |
2be9f14bd23f
test_util: add helper to draw repo with graphlog extension
Patrick Mezard <pmezard@gmail.com>
parents:
522
diff
changeset
|
759 extensions.loadall(_ui) |
2be9f14bd23f
test_util: add helper to draw repo with graphlog extension
Patrick Mezard <pmezard@gmail.com>
parents:
522
diff
changeset
|
760 graphlog = extensions.find('graphlog') |
2be9f14bd23f
test_util: add helper to draw repo with graphlog extension
Patrick Mezard <pmezard@gmail.com>
parents:
522
diff
changeset
|
761 templ = """\ |
1084
ca36d5915dc7
test_util: include Subversion revision when drawing a pretty graph
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1081
diff
changeset
|
762 changeset: {rev}:{node|short} (r{svnrev}) |
527
2be9f14bd23f
test_util: add helper to draw repo with graphlog extension
Patrick Mezard <pmezard@gmail.com>
parents:
522
diff
changeset
|
763 branch: {branches} |
546
d84116dda52d
test_util: add tags to output of draw
Augie Fackler <durin42@gmail.com>
parents:
531
diff
changeset
|
764 tags: {tags} |
527
2be9f14bd23f
test_util: add helper to draw repo with graphlog extension
Patrick Mezard <pmezard@gmail.com>
parents:
522
diff
changeset
|
765 summary: {desc|firstline} |
2be9f14bd23f
test_util: add helper to draw repo with graphlog extension
Patrick Mezard <pmezard@gmail.com>
parents:
522
diff
changeset
|
766 files: {files} |
2be9f14bd23f
test_util: add helper to draw repo with graphlog extension
Patrick Mezard <pmezard@gmail.com>
parents:
522
diff
changeset
|
767 |
2be9f14bd23f
test_util: add helper to draw repo with graphlog extension
Patrick Mezard <pmezard@gmail.com>
parents:
522
diff
changeset
|
768 """ |
952
9c3b4f59e7e6
stupid: do not close branch upon branch-wide revert
Patrick Mezard <patrick@mezard.eu>
parents:
944
diff
changeset
|
769 _ui.pushbuffer() |
1365
89997a5fc181
stupid: self-disable if svn bindings are too new to work with stupid mode
Augie Fackler <raf@durin42.com>
parents:
1363
diff
changeset
|
770 try: |
89997a5fc181
stupid: self-disable if svn bindings are too new to work with stupid mode
Augie Fackler <raf@durin42.com>
parents:
1363
diff
changeset
|
771 graphlog.graphlog(_ui, repo, rev=None, template=templ) |
89997a5fc181
stupid: self-disable if svn bindings are too new to work with stupid mode
Augie Fackler <raf@durin42.com>
parents:
1363
diff
changeset
|
772 except AttributeError: |
89997a5fc181
stupid: self-disable if svn bindings are too new to work with stupid mode
Augie Fackler <raf@durin42.com>
parents:
1363
diff
changeset
|
773 from mercurial import commands |
89997a5fc181
stupid: self-disable if svn bindings are too new to work with stupid mode
Augie Fackler <raf@durin42.com>
parents:
1363
diff
changeset
|
774 commands.log(_ui, repo, rev=None, template=templ, graph=True) |
952
9c3b4f59e7e6
stupid: do not close branch upon branch-wide revert
Patrick Mezard <patrick@mezard.eu>
parents:
944
diff
changeset
|
775 return _ui.popbuffer() |
9c3b4f59e7e6
stupid: do not close branch upon branch-wide revert
Patrick Mezard <patrick@mezard.eu>
parents:
944
diff
changeset
|
776 |
9c3b4f59e7e6
stupid: do not close branch upon branch-wide revert
Patrick Mezard <patrick@mezard.eu>
parents:
944
diff
changeset
|
777 def draw(self, repo): |
9c3b4f59e7e6
stupid: do not close branch upon branch-wide revert
Patrick Mezard <patrick@mezard.eu>
parents:
944
diff
changeset
|
778 sys.stdout.write(self.getgraph(repo)) |