##// END OF EJS Templates
branching: merge stable into default
Raphaël Gomès -
r50740:e0c0545e merge default
parent child Browse files
Show More
@@ -0,0 +1,38 b''
1 #
2 # This file is autogenerated by pip-compile with python 3.9
3 # To update, run:
4 #
5 # pip-compile --generate-hashes --no-reuse-hashes --output-file=contrib/packaging/requirements-macos.txt contrib/packaging/requirements-macos.txt.in
6 #
7 docutils==0.19 \
8 --hash=sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6 \
9 --hash=sha256:5e1de4d849fee02c63b040a4a3fd567f4ab104defd8a5511fbbc24a8a017efbc
10 # via -r contrib/packaging/requirements-macos.txt.in
11 fuzzywuzzy==0.18.0 \
12 --hash=sha256:45016e92264780e58972dca1b3d939ac864b78437422beecebb3095f8efd00e8 \
13 --hash=sha256:928244b28db720d1e0ee7587acf660ea49d7e4c632569cad4f1cd7e68a5f0993
14 # via -r contrib/packaging/requirements-macos.txt.in
15 importlib-metadata==5.1.0 \
16 --hash=sha256:d5059f9f1e8e41f80e9c56c2ee58811450c31984dfa625329ffd7c0dad88a73b \
17 --hash=sha256:d84d17e21670ec07990e1044a99efe8d615d860fd176fc29ef5c306068fda313
18 # via keyring
19 jaraco-classes==3.2.3 \
20 --hash=sha256:2353de3288bc6b82120752201c6b1c1a14b058267fa424ed5ce5984e3b922158 \
21 --hash=sha256:89559fa5c1d3c34eff6f631ad80bb21f378dbcbb35dd161fd2c6b93f5be2f98a
22 # via keyring
23 keyring==23.11.0 \
24 --hash=sha256:3dd30011d555f1345dec2c262f0153f2f0ca6bca041fb1dc4588349bb4c0ac1e \
25 --hash=sha256:ad192263e2cdd5f12875dedc2da13534359a7e760e77f8d04b50968a821c2361
26 # via -r contrib/packaging/requirements-macos.txt.in
27 more-itertools==9.0.0 \
28 --hash=sha256:250e83d7e81d0c87ca6bd942e6aeab8cc9daa6096d12c5308f3f92fa5e5c1f41 \
29 --hash=sha256:5a6257e40878ef0520b1803990e3e22303a41b5714006c32a3fd8304b26ea1ab
30 # via jaraco-classes
31 pygments==2.13.0 \
32 --hash=sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1 \
33 --hash=sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42
34 # via -r contrib/packaging/requirements-macos.txt.in
35 zipp==3.11.0 \
36 --hash=sha256:83a28fcb75844b5c0cdaf5aa4003c2d728c77e05f5aeabe8e95e56727005fbaa \
37 --hash=sha256:a7a22e05929290a67401440b39690ae6563279bced5f314609d9d03798f56766
38 # via importlib-metadata
@@ -0,0 +1,22 b''
1 # Declare macOS-specific requirements for generating
2 # the compiled (frozen) set of requirements in
3 # ./requirements-macos.txt.
4 # If run on Windows, it may be necessary to run dos2unix
5 # on the output file to replace any CRLF newlines with LF.
6
7 # TODO: dulwich, pygit2, and pytest-vcr are flagged as being
8 # incompatible with in-memory resources. Maybe there's a
9 # way to bundle just them externally.
10
11 docutils
12 #dulwich
13
14 # Needed by the release note tooling
15 fuzzywuzzy
16
17 keyring
18 #pygit2
19 pygments
20
21 # Needed by the phabricator tests
22 #pytest-vcr
@@ -237,3 +237,4 b' dbdee8ac3e3fcdda1fa55b90c0a235125b7f8e6f'
237 a3356ab610fc50000cf0ba55c424a4d96da11db7 0 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
@@ -253,3 +253,4 b' 04f1dba53c961dfdb875c8469adc96fa999cfbed'
253 04f1dba53c961dfdb875c8469adc96fa999cfbed 6.3.0
253 04f1dba53c961dfdb875c8469adc96fa999cfbed 6.3.0
254 0000000000000000000000000000000000000000 6.3.0
254 0000000000000000000000000000000000000000 6.3.0
255 c890d8b8bc59b18e5febf60caada629df5356ee2 6.3.1
255 c890d8b8bc59b18e5febf60caada629df5356ee2 6.3.1
256 59466b13a3ae0e29a5d4f485393e516cfbb057d0 6.3.2
@@ -260,10 +260,9 b' pyoxidizer:'
260 $(PYOXIDIZER) build --path ./rust/hgcli --release
260 $(PYOXIDIZER) build --path ./rust/hgcli --release
261
261
262
262
263 PYOX_DIR=build/pyoxidizer/x86_64-pc-windows-msvc/release/app
264
265 # a temporary target to setup all we need for run-tests.py --pyoxidizer
263 # a temporary target to setup all we need for run-tests.py --pyoxidizer
266 # (should go away as the run-tests implementation improves
264 # (should go away as the run-tests implementation improves
265 pyoxidizer-windows-tests: PYOX_DIR=build/pyoxidizer/x86_64-pc-windows-msvc/release/app
267 pyoxidizer-windows-tests: pyoxidizer
266 pyoxidizer-windows-tests: pyoxidizer
268 rm -rf $(PYOX_DIR)/templates
267 rm -rf $(PYOX_DIR)/templates
269 cp -ar $(PYOX_DIR)/lib/mercurial/templates $(PYOX_DIR)/templates
268 cp -ar $(PYOX_DIR)/lib/mercurial/templates $(PYOX_DIR)/templates
@@ -277,9 +276,25 b' pyoxidizer-windows-tests: pyoxidizer'
277 cp -ar doc $(PYOX_DIR)/doc
276 cp -ar doc $(PYOX_DIR)/doc
278
277
279
278
279 # a temporary target to setup all we need for run-tests.py --pyoxidizer
280 # (should go away as the run-tests implementation improves
281 pyoxidizer-macos-tests: PYOX_DIR=build/pyoxidizer/x86_64-apple-darwin/release/app
282 pyoxidizer-macos-tests: pyoxidizer
283 rm -rf $(PYOX_DIR)/templates
284 cp -a mercurial/templates $(PYOX_DIR)/templates
285 rm -rf $(PYOX_DIR)/helptext
286 cp -a mercurial/helptext $(PYOX_DIR)/helptext
287 rm -rf $(PYOX_DIR)/defaultrc
288 cp -a mercurial/defaultrc $(PYOX_DIR)/defaultrc
289 rm -rf $(PYOX_DIR)/contrib
290 cp -a contrib $(PYOX_DIR)/contrib
291 rm -rf $(PYOX_DIR)/doc
292 cp -a doc $(PYOX_DIR)/doc
293
294
280 .PHONY: help all local build doc cleanbutpackages clean install install-bin \
295 .PHONY: help all local build doc cleanbutpackages clean install install-bin \
281 install-doc install-home install-home-bin install-home-doc \
296 install-doc install-home install-home-bin install-home-doc \
282 dist dist-notests check tests rust-tests check-code format-c \
297 dist dist-notests check tests rust-tests check-code format-c \
283 update-pot pyoxidizer pyoxidizer-windows-tests \
298 update-pot pyoxidizer pyoxidizer-windows-tests pyoxidizer-macos-tests \
284 $(packaging_targets) \
299 $(packaging_targets) \
285 osx
300 osx
@@ -3,7 +3,7 b' Upstream-Name: mercurial'
3 Source: https://www.mercurial-scm.org/
3 Source: https://www.mercurial-scm.org/
4
4
5 Files: *
5 Files: *
6 Copyright: 2005-2022, Olivia Mackall <olivia@selenic.com> and others.
6 Copyright: 2005-2023, Olivia Mackall <olivia@selenic.com> and others.
7 License: GPL-2+
7 License: GPL-2+
8 This program is free software; you can redistribute it
8 This program is free software; you can redistribute it
9 and/or modify it under the terms of the GNU General Public
9 and/or modify it under the terms of the GNU General Public
@@ -6,7 +6,7 b''
6 #endif
6 #endif
7
7
8 [Setup]
8 [Setup]
9 AppCopyright=Copyright 2005-2022 Olivia Mackall and others
9 AppCopyright=Copyright 2005-2023 Olivia Mackall and others
10 AppName=Mercurial
10 AppName=Mercurial
11 AppVersion={#VERSION}
11 AppVersion={#VERSION}
12 OutputBaseFilename=Mercurial-{#VERSION}{#SUFFIX}
12 OutputBaseFilename=Mercurial-{#VERSION}{#SUFFIX}
@@ -29,7 +29,7 b' AppContact=mercurial@mercurial-scm.org'
29 DefaultDirName={pf}\Mercurial
29 DefaultDirName={pf}\Mercurial
30 SourceDir=stage
30 SourceDir=stage
31 VersionInfoDescription=Mercurial distributed SCM (version {#VERSION})
31 VersionInfoDescription=Mercurial distributed SCM (version {#VERSION})
32 VersionInfoCopyright=Copyright 2005-2022 Olivia Mackall and others
32 VersionInfoCopyright=Copyright 2005-2023 Olivia Mackall and others
33 VersionInfoCompany=Olivia Mackall and others
33 VersionInfoCompany=Olivia Mackall and others
34 VersionInfoVersion={#QUAD_VERSION}
34 VersionInfoVersion={#QUAD_VERSION}
35 InternalCompressLevel=max
35 InternalCompressLevel=max
@@ -140,7 +140,7 b' editor = whatever'
140 </p>
140 </p>
141
141
142 <p>
142 <p>
143 Mercurial is Copyright 2005-2022 Olivia Mackall and others.
143 Mercurial is Copyright 2005-2023 Olivia Mackall and others.
144 </p>
144 </p>
145
145
146 <p>
146 <p>
@@ -87,7 +87,7 b' class LazyFinder:'
87 return getattr(object.__getattribute__(self, "_finder"), name)
87 return getattr(object.__getattribute__(self, "_finder"), name)
88
88
89 def __delattr__(self, name):
89 def __delattr__(self, name):
90 return delattr(object.__getattribute__(self, "_finder"))
90 return delattr(object.__getattribute__(self, "_finder"), name)
91
91
92 def __setattr__(self, name, value):
92 def __setattr__(self, name, value):
93 return setattr(object.__getattribute__(self, "_finder"), name, value)
93 return setattr(object.__getattribute__(self, "_finder"), name, value)
@@ -7943,7 +7943,7 b' def version_(ui, **opts):'
7943 )
7943 )
7944 license = _(
7944 license = _(
7945 b"(see https://mercurial-scm.org for more information)\n"
7945 b"(see https://mercurial-scm.org for more information)\n"
7946 b"\nCopyright (C) 2005-2022 Olivia Mackall and others\n"
7946 b"\nCopyright (C) 2005-2023 Olivia Mackall and others\n"
7947 b"This is free software; see the source for copying conditions. "
7947 b"This is free software; see the source for copying conditions. "
7948 b"There is NO\nwarranty; "
7948 b"There is NO\nwarranty; "
7949 b"not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
7949 b"not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -729,6 +729,8 b' def _disabledpaths():'
729 '''find paths of disabled extensions. returns a dict of {name: path}'''
729 '''find paths of disabled extensions. returns a dict of {name: path}'''
730 import hgext
730 import hgext
731
731
732 exts = {}
733
732 # The hgext might not have a __file__ attribute (e.g. in PyOxidizer) and
734 # The hgext might not have a __file__ attribute (e.g. in PyOxidizer) and
733 # it might not be on a filesystem even if it does.
735 # it might not be on a filesystem even if it does.
734 if util.safehasattr(hgext, '__file__'):
736 if util.safehasattr(hgext, '__file__'):
@@ -738,23 +740,21 b' def _disabledpaths():'
738 try:
740 try:
739 files = os.listdir(extpath)
741 files = os.listdir(extpath)
740 except OSError:
742 except OSError:
741 return {}
743 pass
742 else:
744 else:
743 return {}
745 for e in files:
746 if e.endswith(b'.py'):
747 name = e.rsplit(b'.', 1)[0]
748 path = os.path.join(extpath, e)
749 else:
750 name = e
751 path = os.path.join(extpath, e, b'__init__.py')
752 if not os.path.exists(path):
753 continue
754 if name in exts or name in _order or name == b'__init__':
755 continue
756 exts[name] = path
744
757
745 exts = {}
746 for e in files:
747 if e.endswith(b'.py'):
748 name = e.rsplit(b'.', 1)[0]
749 path = os.path.join(extpath, e)
750 else:
751 name = e
752 path = os.path.join(extpath, e, b'__init__.py')
753 if not os.path.exists(path):
754 continue
755 if name in exts or name in _order or name == b'__init__':
756 continue
757 exts[name] = path
758 for name, path in _disabledextensions.items():
758 for name, path in _disabledextensions.items():
759 # If no path was provided for a disabled extension (e.g. "color=!"),
759 # If no path was provided for a disabled extension (e.g. "color=!"),
760 # don't replace the path we already found by the scan above.
760 # don't replace the path we already found by the scan above.
@@ -841,6 +841,22 b' def disabled_help(name):'
841 paths = _disabledpaths()
841 paths = _disabledpaths()
842 if name in paths:
842 if name in paths:
843 return _disabledhelp(paths[name])
843 return _disabledhelp(paths[name])
844 else:
845 try:
846 import hgext
847 from hgext import __index__ # pytype: disable=import-error
848
849 # The extensions are filesystem based, so either an error occurred
850 # or all are enabled.
851 if util.safehasattr(hgext, '__file__'):
852 return
853
854 if name in _order: # enabled
855 return
856 else:
857 return gettext(__index__.docs.get(name))
858 except (ImportError, AttributeError):
859 pass
844
860
845
861
846 def _walkcommand(node):
862 def _walkcommand(node):
@@ -1132,7 +1132,9 b' def _run_partial_resolution_tools(repo, '
1132 patterns = ui.configlist(section, b'%s.patterns' % name, [])
1132 patterns = ui.configlist(section, b'%s.patterns' % name, [])
1133 is_match = True
1133 is_match = True
1134 if patterns:
1134 if patterns:
1135 m = match.match(repo.root, b'', patterns)
1135 m = match.match(
1136 repo.root, b'', patterns, ctx=local.fctx.changectx()
1137 )
1136 is_match = m(local.fctx.path())
1138 is_match = m(local.fctx.path())
1137 if is_match:
1139 if is_match:
1138 if ui.configbool(section, b'%s.disable' % name):
1140 if ui.configbool(section, b'%s.disable' % name):
@@ -112,7 +112,7 b' Mailing list: https://www.mercurial-scm.'
112
112
113 Copying
113 Copying
114 """""""
114 """""""
115 Copyright (C) 2005-2022 Olivia Mackall.
115 Copyright (C) 2005-2023 Olivia Mackall.
116 Free use of this software is granted under the terms of the GNU General
116 Free use of this software is granted under the terms of the GNU General
117 Public License version 2 or any later version.
117 Public License version 2 or any later version.
118
118
@@ -26,7 +26,7 b' See Also'
26 Copying
26 Copying
27 =======
27 =======
28 This manual page is copyright 2006 Vadim Gelfer.
28 This manual page is copyright 2006 Vadim Gelfer.
29 Mercurial is copyright 2005-2022 Olivia Mackall.
29 Mercurial is copyright 2005-2023 Olivia Mackall.
30 Free use of this software is granted under the terms of the GNU General
30 Free use of this software is granted under the terms of the GNU General
31 Public License version 2 or any later version.
31 Public License version 2 or any later version.
32
32
@@ -34,7 +34,7 b' See Also'
34 Copying
34 Copying
35 =======
35 =======
36 This manual page is copyright 2005 Bryan O'Sullivan.
36 This manual page is copyright 2005 Bryan O'Sullivan.
37 Mercurial is copyright 2005-2022 Olivia Mackall.
37 Mercurial is copyright 2005-2023 Olivia Mackall.
38 Free use of this software is granted under the terms of the GNU General
38 Free use of this software is granted under the terms of the GNU General
39 Public License version 2 or any later version.
39 Public License version 2 or any later version.
40
40
@@ -789,7 +789,7 b' def clone('
789 # data.
789 # data.
790 createopts[b'lfs'] = True
790 createopts[b'lfs'] = True
791
791
792 if extensions.disabled_help(b'lfs'):
792 if b'lfs' in extensions.disabled():
793 ui.status(
793 ui.status(
794 _(
794 _(
795 b'(remote is using large file support (lfs), but it is '
795 b'(remote is using large file support (lfs), but it is '
@@ -366,6 +366,7 b' addunfinished('
366 fname=b'bisect.state',
366 fname=b'bisect.state',
367 allowcommit=True,
367 allowcommit=True,
368 reportonly=True,
368 reportonly=True,
369 cmdhint=_(b"use 'hg bisect --reset'"),
369 statushint=_(
370 statushint=_(
370 b'To mark the changeset good: hg bisect --good\n'
371 b'To mark the changeset good: hg bisect --good\n'
371 b'To mark the changeset bad: hg bisect --bad\n'
372 b'To mark the changeset bad: hg bisect --bad\n'
@@ -1,6 +1,6 b''
1 # utils.urlutil - code related to [paths] management
1 # utils.urlutil - code related to [paths] management
2 #
2 #
3 # Copyright 2005-2022 Olivia Mackall <olivia@selenic.com> and others
3 # Copyright 2005-2023 Olivia Mackall <olivia@selenic.com> and others
4 #
4 #
5 # This software may be used and distributed according to the terms of the
5 # This software may be used and distributed according to the terms of the
6 # GNU General Public License version 2 or any later version.
6 # GNU General Public License version 2 or any later version.
@@ -1,3 +1,23 b''
1 = Mercurial 6.3.2 =
2
3 * [ecfc84b956a8] tests: expect the message from 1baf0fffd82f in test-hghave.t (issue6762)
4 * [5c095119bff4] tests: add the missing space to test-hghave.t (issue6762)
5 * [2c346c1c75ec] tests: use an all too familiar executable in test-run-tests.t (issue6661)
6 * [13c0e3b4fd35] tests: use `test -f` instead of `ls` to see if a file is present (issue6662)
7 * [8ced4ca30ea1] bisect: correct message about aborting an in-progress bisect (issue6527)
8 * filemerge: fix crash when using filesets in [partial-merge-tools]
9 * help: fix a py3 error interpolating Set into b'%s'
10 * match: make the FLAG_RE pattern a raw string
11 * python-compat: adapt to Python 3.11 BC breakage with `random.sample`
12 * rust-status: fix thread count ceiling
13 * hg: show the correct message when cloning an LFS repo with extension disabled
14 * extensions: process disabled external paths when `hgext` package is in-memory
15 * emitrevision: consider ancestors revision to emit as available base
16 * make: add a target for building pyoxidizer tests on macOS
17 * run-tests: support --pyoxidized on macOS
18 * packaging: add dependencies to the PyOxidizer build on macOS
19 * Miscellaneous test fixes
20
1 = Mercurial 6.3.1 =
21 = Mercurial 6.3.1 =
2
22
3 * memory-usage: fix `hg log --follow --rev R F` space complexity (dcb2581e33be)
23 * memory-usage: fix `hg log --follow --rev R F` space complexity (dcb2581e33be)
@@ -55,7 +55,7 b" pub fn status<'dirstate>("
55 // instantiated in `rhg` or some other caller.
55 // instantiated in `rhg` or some other caller.
56 // TODO find the underlying cause and fix it, then remove this.
56 // TODO find the underlying cause and fix it, then remove this.
57 rayon::ThreadPoolBuilder::new()
57 rayon::ThreadPoolBuilder::new()
58 .num_threads(16)
58 .num_threads(16.min(rayon::current_num_threads()))
59 .build_global()
59 .build_global()
60 .ok();
60 .ok();
61
61
@@ -33,6 +33,7 b' SIGNING_SUBJECT_NAME = VARS.get("SIGNING'
33 TIME_STAMP_SERVER_URL = VARS.get("TIME_STAMP_SERVER_URL", "http://timestamp.digicert.com")
33 TIME_STAMP_SERVER_URL = VARS.get("TIME_STAMP_SERVER_URL", "http://timestamp.digicert.com")
34
34
35 IS_WINDOWS = "windows" in BUILD_TARGET_TRIPLE
35 IS_WINDOWS = "windows" in BUILD_TARGET_TRIPLE
36 IS_MACOS = "apple" in BUILD_TARGET_TRIPLE
36
37
37 # Use in-memory resources for all resources. If false, most of the Python
38 # Use in-memory resources for all resources. If false, most of the Python
38 # stdlib will be in memory, but other things such as Mercurial itself will not
39 # stdlib will be in memory, but other things such as Mercurial itself will not
@@ -148,6 +149,10 b' def make_exe(dist):'
148 exe.add_python_resources(
149 exe.add_python_resources(
149 exe.pip_install(["-r", ROOT + "/contrib/packaging/requirements-windows-py3.txt"]),
150 exe.pip_install(["-r", ROOT + "/contrib/packaging/requirements-windows-py3.txt"]),
150 )
151 )
152 if IS_MACOS:
153 exe.add_python_resources(
154 exe.pip_install(["-r", ROOT + "/contrib/packaging/requirements-macos.txt"]),
155 )
151 extra_packages = VARS.get("extra_py_packages", "")
156 extra_packages = VARS.get("extra_py_packages", "")
152 if extra_packages:
157 if extra_packages:
153 for extra in extra_packages.split(","):
158 for extra in extra_packages.split(","):
@@ -1658,7 +1658,7 b' if py2exeloaded:'
1658 extra['console'] = [
1658 extra['console'] = [
1659 {
1659 {
1660 'script': 'hg',
1660 'script': 'hg',
1661 'copyright': 'Copyright (C) 2005-2022 Olivia Mackall and others',
1661 'copyright': 'Copyright (C) 2005-2023 Olivia Mackall and others',
1662 'product_version': version,
1662 'product_version': version,
1663 }
1663 }
1664 ]
1664 ]
@@ -202,6 +202,22 b' def has_pyoxidizer():'
202 return 'PYOXIDIZED_INSTALLED_AS_HG' in os.environ
202 return 'PYOXIDIZED_INSTALLED_AS_HG' in os.environ
203
203
204
204
205 @check(
206 "pyoxidizer-in-memory",
207 "running with pyoxidizer build as 'hg' with embedded resources",
208 )
209 def has_pyoxidizer():
210 return 'PYOXIDIZED_IN_MEMORY_RSRC' in os.environ
211
212
213 @check(
214 "pyoxidizer-in-filesystem",
215 "running with pyoxidizer build as 'hg' with external resources",
216 )
217 def has_pyoxidizer():
218 return 'PYOXIDIZED_FILESYSTEM_RSRC' in os.environ
219
220
205 @check("cvs", "cvs client/server")
221 @check("cvs", "cvs client/server")
206 def has_cvs():
222 def has_cvs():
207 re = br'Concurrent Versions System.*?server'
223 re = br'Concurrent Versions System.*?server'
@@ -612,7 +628,7 b' def has_pyflakes():'
612
628
613 @check("pylint", "Pylint python linter")
629 @check("pylint", "Pylint python linter")
614 def has_pylint():
630 def has_pylint():
615 return matchoutput("pylint --help", br"Usage:[ ]+pylint", True)
631 return matchoutput("pylint --help", br"[Uu]sage:[ ]+pylint", True)
616
632
617
633
618 @check("clang-format", "clang-format C code formatter (>= 11)")
634 @check("clang-format", "clang-format C code formatter (>= 11)")
@@ -877,7 +893,7 b' def has_demandimport():'
877
893
878 # Add "py27", "py35", ... as possible feature checks. Note that there's no
894 # Add "py27", "py35", ... as possible feature checks. Note that there's no
879 # punctuation here.
895 # punctuation here.
880 @checkvers("py", "Python >= %s", (2.7, 3.5, 3.6, 3.7, 3.8, 3.9))
896 @checkvers("py", "Python >= %s", (2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11))
881 def has_python_range(v):
897 def has_python_range(v):
882 major, minor = v.split('.')[0:2]
898 major, minor = v.split('.')[0:2]
883 py_major, py_minor = sys.version_info.major, sys.version_info.minor
899 py_major, py_minor = sys.version_info.major, sys.version_info.minor
@@ -895,7 +911,7 b' def has_python3exe():'
895 py = 'python3'
911 py = 'python3'
896 if os.name == 'nt':
912 if os.name == 'nt':
897 py = 'py -3'
913 py = 'py -3'
898 return matchoutput('%s -V' % py, br'^Python 3.(5|6|7|8|9)')
914 return matchoutput('%s -V' % py, br'^Python 3.(5|6|7|8|9|10|11)')
899
915
900
916
901 @check("pure", "running with pure Python code")
917 @check("pure", "running with pure Python code")
@@ -86,6 +86,7 b' if sys.version_info < (3, 5, 0):'
86 )
86 )
87 sys.exit(70) # EX_SOFTWARE from `man 3 sysexit`
87 sys.exit(70) # EX_SOFTWARE from `man 3 sysexit`
88
88
89 MACOS = sys.platform == 'darwin'
89 WINDOWS = os.name == r'nt'
90 WINDOWS = os.name == r'nt'
90 shellquote = shlex.quote
91 shellquote = shlex.quote
91
92
@@ -745,8 +746,8 b' def parseargs(args, parser):'
745 parser.error('chg does not work on %s' % os.name)
746 parser.error('chg does not work on %s' % os.name)
746 if (options.rhg or options.with_rhg) and WINDOWS:
747 if (options.rhg or options.with_rhg) and WINDOWS:
747 parser.error('rhg does not work on %s' % os.name)
748 parser.error('rhg does not work on %s' % os.name)
748 if options.pyoxidized and not WINDOWS:
749 if options.pyoxidized and not (MACOS or WINDOWS):
749 parser.error('--pyoxidized is currently Windows only')
750 parser.error('--pyoxidized is currently macOS and Windows only')
750 if options.with_chg:
751 if options.with_chg:
751 options.chg = False # no installation to temporary location
752 options.chg = False # no installation to temporary location
752 options.with_chg = canonpath(_sys2bytes(options.with_chg))
753 options.with_chg = canonpath(_sys2bytes(options.with_chg))
@@ -3205,9 +3206,18 b' class TestRunner:'
3205 testdir = os.path.dirname(_sys2bytes(canonpath(sys.argv[0])))
3206 testdir = os.path.dirname(_sys2bytes(canonpath(sys.argv[0])))
3206 reporootdir = os.path.dirname(testdir)
3207 reporootdir = os.path.dirname(testdir)
3207 # XXX we should ideally install stuff instead of using the local build
3208 # XXX we should ideally install stuff instead of using the local build
3208 bin_path = (
3209
3209 b'build/pyoxidizer/x86_64-pc-windows-msvc/release/app/hg.exe'
3210 exe = b'hg'
3210 )
3211 triple = b''
3212
3213 if WINDOWS:
3214 triple = b'x86_64-pc-windows-msvc'
3215 exe = b'hg.exe'
3216 elif MACOS:
3217 # TODO: support Apple silicon too
3218 triple = b'x86_64-apple-darwin'
3219
3220 bin_path = b'build/pyoxidizer/%s/release/app/%s' % (triple, exe)
3211 full_path = os.path.join(reporootdir, bin_path)
3221 full_path = os.path.join(reporootdir, bin_path)
3212 self._hgcommand = full_path
3222 self._hgcommand = full_path
3213 # Affects hghave.py
3223 # Affects hghave.py
@@ -3441,6 +3451,9 b' class TestRunner:'
3441 verbosity = 2
3451 verbosity = 2
3442 runner = TextTestRunner(self, verbosity=verbosity)
3452 runner = TextTestRunner(self, verbosity=verbosity)
3443
3453
3454 osenvironb.pop(b'PYOXIDIZED_IN_MEMORY_RSRC', None)
3455 osenvironb.pop(b'PYOXIDIZED_FILESYSTEM_RSRC', None)
3456
3444 if self.options.list_tests:
3457 if self.options.list_tests:
3445 result = runner.listtests(suite)
3458 result = runner.listtests(suite)
3446 else:
3459 else:
@@ -3851,8 +3864,15 b' class TestRunner:'
3851 vlog('# build a pyoxidized version of Mercurial')
3864 vlog('# build a pyoxidized version of Mercurial')
3852 assert os.path.dirname(self._bindir) == self._installdir
3865 assert os.path.dirname(self._bindir) == self._installdir
3853 assert self._hgroot, 'must be called after _installhg()'
3866 assert self._hgroot, 'must be called after _installhg()'
3854 cmd = b'"%(make)s" pyoxidizer-windows-tests' % {
3867 target = b''
3868 if WINDOWS:
3869 target = b'windows'
3870 elif MACOS:
3871 target = b'macos'
3872
3873 cmd = b'"%(make)s" pyoxidizer-%(platform)s-tests' % {
3855 b'make': b'make',
3874 b'make': b'make',
3875 b'platform': target,
3856 }
3876 }
3857 cwd = self._hgroot
3877 cwd = self._hgroot
3858 vlog("# Running", cmd)
3878 vlog("# Running", cmd)
@@ -3869,6 +3889,20 b' class TestRunner:'
3869 sys.stdout.buffer.write(out)
3889 sys.stdout.buffer.write(out)
3870 sys.exit(1)
3890 sys.exit(1)
3871
3891
3892 cmd = _bytes2sys(b"%s debuginstall -Tjson" % self._hgcommand)
3893 p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
3894 out, err = p.communicate()
3895
3896 props = json.loads(out)[0]
3897
3898 # Affects hghave.py
3899 osenvironb.pop(b'PYOXIDIZED_IN_MEMORY_RSRC', None)
3900 osenvironb.pop(b'PYOXIDIZED_FILESYSTEM_RSRC', None)
3901 if props["hgmodules"] == props["pythonexe"]:
3902 osenvironb[b'PYOXIDIZED_IN_MEMORY_RSRC'] = b'1'
3903 else:
3904 osenvironb[b'PYOXIDIZED_FILESYSTEM_RSRC'] = b'1'
3905
3872 def _outputcoverage(self):
3906 def _outputcoverage(self):
3873 """Produce code coverage output."""
3907 """Produce code coverage output."""
3874 import coverage
3908 import coverage
@@ -794,3 +794,14 b' user adds irrelevant but consistent info'
794 17:228c06deef46
794 17:228c06deef46
795 18:d42e18c7bc9b
795 18:d42e18c7bc9b
796 $ hg log -q -r 'bisect(untested)'
796 $ hg log -q -r 'bisect(untested)'
797
798 in-progress bisect interacts with hg merge (issue6527)
799
800 $ hg up -r 17 -q
801 $ hg merge 7
802 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
803 (branch merge, don't forget to commit)
804 $ hg merge --abort
805 abort: cannot abort merge with bisect in progress
806 (use 'hg bisect --reset')
807 [20]
@@ -8,6 +8,7 b' new check.'
8
8
9 Current checks:
9 Current checks:
10 - W0102: no mutable default argument
10 - W0102: no mutable default argument
11 - C0321: only one statement on a single line
11
12
12 $ touch $TESTTMP/fakerc
13 $ touch $TESTTMP/fakerc
13 $ pylint --rcfile=$TESTTMP/fakerc --disable=all \
14 $ pylint --rcfile=$TESTTMP/fakerc --disable=all \
@@ -1,5 +1,11 b''
1 #require chg
1 #require chg
2
2
3 Scale the timeout for the chg-server to the test timeout scaling.
4 This is done to reduce the flakiness of this test on heavy load.
5
6 $ CHGTIMEOUT=`expr $HGTEST_TIMEOUT / 6`
7 $ export CHGTIMEOUT
8
3 $ mkdir log
9 $ mkdir log
4 $ cp $HGRCPATH $HGRCPATH.unconfigured
10 $ cp $HGRCPATH $HGRCPATH.unconfigured
5 $ cat <<'EOF' >> $HGRCPATH
11 $ cat <<'EOF' >> $HGRCPATH
@@ -43,16 +43,20 b''
43 tested with: 3.0 3.1 3.2.1
43 tested with: 3.0 3.1 3.2.1
44 bug reporting: https://example.org/bts
44 bug reporting: https://example.org/bts
45 histedit
45 histedit
46 location: */hgext/histedit.py* (glob)
46 location: */hgext/histedit.py* (glob) (no-pyoxidizer-in-memory !)
47 location: */release/app/hg* (glob) (pyoxidizer-in-memory !)
47 bundled: yes
48 bundled: yes
48 mq
49 mq
49 location: */hgext/mq.py* (glob)
50 location: */hgext/mq.py* (glob) (no-pyoxidizer-in-memory !)
51 location: */release/app/hg* (glob) (pyoxidizer-in-memory !)
50 bundled: yes
52 bundled: yes
51 patchbomb
53 patchbomb
52 location: */hgext/patchbomb.py* (glob)
54 location: */hgext/patchbomb.py* (glob) (no-pyoxidizer-in-memory !)
55 location: */release/app/hg* (glob) (pyoxidizer-in-memory !)
53 bundled: yes
56 bundled: yes
54 rebase
57 rebase
55 location: */hgext/rebase.py* (glob)
58 location: */hgext/rebase.py* (glob) (no-pyoxidizer-in-memory !)
59 location: */release/app/hg* (glob) (pyoxidizer-in-memory !)
56 bundled: yes
60 bundled: yes
57
61
58 $ hg debugextensions -Tjson | sed 's|\\\\|/|g'
62 $ hg debugextensions -Tjson | sed 's|\\\\|/|g'
@@ -75,28 +79,32 b''
75 "buglink": "",
79 "buglink": "",
76 "bundled": true,
80 "bundled": true,
77 "name": "histedit",
81 "name": "histedit",
78 "source": "*/hgext/histedit.py*", (glob)
82 "source": "*/hgext/histedit.py*", (glob) (no-pyoxidizer-in-memory !)
83 "source": */release/app/hg* (glob) (pyoxidizer-in-memory !)
79 "testedwith": []
84 "testedwith": []
80 },
85 },
81 {
86 {
82 "buglink": "",
87 "buglink": "",
83 "bundled": true,
88 "bundled": true,
84 "name": "mq",
89 "name": "mq",
85 "source": "*/hgext/mq.py*", (glob)
90 "source": "*/hgext/mq.py*", (glob) (no-pyoxidizer-in-memory !)
91 "source": */release/app/hg* (glob) (pyoxidizer-in-memory !)
86 "testedwith": []
92 "testedwith": []
87 },
93 },
88 {
94 {
89 "buglink": "",
95 "buglink": "",
90 "bundled": true,
96 "bundled": true,
91 "name": "patchbomb",
97 "name": "patchbomb",
92 "source": "*/hgext/patchbomb.py*", (glob)
98 "source": "*/hgext/patchbomb.py*", (glob) (no-pyoxidizer-in-memory !)
99 "source": */release/app/hg* (glob) (pyoxidizer-in-memory !)
93 "testedwith": []
100 "testedwith": []
94 },
101 },
95 {
102 {
96 "buglink": "",
103 "buglink": "",
97 "bundled": true,
104 "bundled": true,
98 "name": "rebase",
105 "name": "rebase",
99 "source": "*/hgext/rebase.py*", (glob)
106 "source": "*/hgext/rebase.py*", (glob) (no-pyoxidizer-in-memory !)
107 "source": */release/app/hg* (glob) (pyoxidizer-in-memory !)
100 "testedwith": []
108 "testedwith": []
101 }
109 }
102 ]
110 ]
@@ -25,6 +25,7 b' Testing hghave extensibility for third p'
25 > "$PYTHON" $TESTDIR/run-tests.py --with-hg=$HGTEST_REAL_HG -j 1 \
25 > "$PYTHON" $TESTDIR/run-tests.py --with-hg=$HGTEST_REAL_HG -j 1 \
26 > $HGTEST_RUN_TESTS_PURE test-hghaveaddon.t \
26 > $HGTEST_RUN_TESTS_PURE test-hghaveaddon.t \
27 > )
27 > )
28 installed Mercurial in * seconds (glob) (?)
28 running 1 tests using 1 parallel processes
29 running 1 tests using 1 parallel processes
29 .
30 .
30 # Ran 1 tests, 0 skipped, 0 failed.
31 # Ran 1 tests, 0 skipped, 0 failed.
@@ -308,7 +308,7 b' XXX-PYOXIDIZER Pyoxidizer build have tro'
308 we accept the bad output for now as this is the last thing in the way of
308 we accept the bad output for now as this is the last thing in the way of
309 testing the pyoxidizer build.
309 testing the pyoxidizer build.
310
310
311 #if no-pyoxidizer
311 #if no-pyoxidizer-in-filesystem
312 $ HGRCSKIPREPO=1 hg paths --config extensions.zeroconf=
312 $ HGRCSKIPREPO=1 hg paths --config extensions.zeroconf=
313 foo = $TESTTMP/bar
313 foo = $TESTTMP/bar
314 #else
314 #else
@@ -13,7 +13,8 b' hg debuginstall'
13 checking Mercurial version (*) (glob)
13 checking Mercurial version (*) (glob)
14 checking Mercurial custom build (*) (glob)
14 checking Mercurial custom build (*) (glob)
15 checking module policy (*) (glob)
15 checking module policy (*) (glob)
16 checking installed modules (*mercurial)... (glob)
16 checking installed modules (*mercurial)... (glob) (no-pyoxidizer-in-memory !)
17 checking installed modules (*/release/app/hg*)... (glob) (pyoxidizer-in-memory !)
17 checking registered compression engines (*zlib*) (glob)
18 checking registered compression engines (*zlib*) (glob)
18 checking available compression engines (*zlib*) (glob)
19 checking available compression engines (*zlib*) (glob)
19 checking available compression engines for wire protocol (*zlib*) (glob)
20 checking available compression engines for wire protocol (*zlib*) (glob)
@@ -43,7 +44,8 b' hg debuginstall JSON'
43 "encodingerror": null,
44 "encodingerror": null,
44 "extensionserror": null, (no-pure !)
45 "extensionserror": null, (no-pure !)
45 "hgmodulepolicy": "*", (glob)
46 "hgmodulepolicy": "*", (glob)
46 "hgmodules": "*mercurial", (glob)
47 "hgmodules": "*mercurial", (glob) (no-pyoxidizer-in-memory !)
48 "hgmodules": "*/release/app/hg*", (glob) (pyoxidizer-in-memory !)
47 "hgver": "*", (glob)
49 "hgver": "*", (glob)
48 "hgverextra": "*", (glob)
50 "hgverextra": "*", (glob)
49 "problems": 0,
51 "problems": 0,
@@ -76,7 +78,8 b' hg debuginstall with no username'
76 checking Mercurial version (*) (glob)
78 checking Mercurial version (*) (glob)
77 checking Mercurial custom build (*) (glob)
79 checking Mercurial custom build (*) (glob)
78 checking module policy (*) (glob)
80 checking module policy (*) (glob)
79 checking installed modules (*mercurial)... (glob)
81 checking installed modules (*mercurial)... (glob) (no-pyoxidizer-in-memory !)
82 checking installed modules (*/release/app/hg*)... (glob) (pyoxidizer-in-memory !)
80 checking registered compression engines (*zlib*) (glob)
83 checking registered compression engines (*zlib*) (glob)
81 checking available compression engines (*zlib*) (glob)
84 checking available compression engines (*zlib*) (glob)
82 checking available compression engines for wire protocol (*zlib*) (glob)
85 checking available compression engines for wire protocol (*zlib*) (glob)
@@ -125,7 +128,8 b' path variables are expanded (~ is the sa'
125 checking Mercurial version (*) (glob)
128 checking Mercurial version (*) (glob)
126 checking Mercurial custom build (*) (glob)
129 checking Mercurial custom build (*) (glob)
127 checking module policy (*) (glob)
130 checking module policy (*) (glob)
128 checking installed modules (*mercurial)... (glob)
131 checking installed modules (*mercurial)... (glob) (no-pyoxidizer-in-memory !)
132 checking installed modules (*/release/app/hg*)... (glob) (pyoxidizer-in-memory !)
129 checking registered compression engines (*zlib*) (glob)
133 checking registered compression engines (*zlib*) (glob)
130 checking available compression engines (*zlib*) (glob)
134 checking available compression engines (*zlib*) (glob)
131 checking available compression engines for wire protocol (*zlib*) (glob)
135 checking available compression engines for wire protocol (*zlib*) (glob)
@@ -154,7 +158,8 b' not found (this is intentionally using b'
154 checking Mercurial version (*) (glob)
158 checking Mercurial version (*) (glob)
155 checking Mercurial custom build (*) (glob)
159 checking Mercurial custom build (*) (glob)
156 checking module policy (*) (glob)
160 checking module policy (*) (glob)
157 checking installed modules (*mercurial)... (glob)
161 checking installed modules (*mercurial)... (glob) (no-pyoxidizer-in-memory !)
162 checking installed modules (*/release/app/hg*)... (glob) (pyoxidizer-in-memory !)
158 checking registered compression engines (*zlib*) (glob)
163 checking registered compression engines (*zlib*) (glob)
159 checking available compression engines (*zlib*) (glob)
164 checking available compression engines (*zlib*) (glob)
160 checking available compression engines for wire protocol (*zlib*) (glob)
165 checking available compression engines for wire protocol (*zlib*) (glob)
@@ -196,6 +196,30 b' only `tail` should run'
196 >>>>>>> merge rev: 8c217da987be - test: a b c d e f2
196 >>>>>>> merge rev: 8c217da987be - test: a b c d e f2
197
197
198
198
199 Filesets can be used to select which files to run partial merge tools on.
200
201 $ hg up -C 4
202 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
203 $ hg merge 3 -t :merge3 --config partial-merge-tools.head.patterns=set:other
204 merging file
205 warning: conflicts while merging file! (edit, then use 'hg resolve --mark')
206 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
207 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
208 [1]
209 $ cat file
210 b
211 c
212 d
213 e
214 <<<<<<< working copy: d57edaa6e21a - test: a b c d e f3
215 f3
216 ||||||| common ancestor: 8ae8bb9cc43a - test: a b c d e f
217 f
218 =======
219 f2
220 >>>>>>> merge rev: 8c217da987be - test: a b c d e f2
221
222
199 If there are several matching tools, they are run in requested order. We move
223 If there are several matching tools, they are run in requested order. We move
200 `head` after `tail` in order here so it has no effect (the conflict in "f" thus
224 `head` after `tail` in order here so it has no effect (the conflict in "f" thus
201 remains).
225 remains).
@@ -144,7 +144,7 b' XXX-PYOXIDIZER Pyoxidizer build have tro'
144 we accept the bad output for now as this is the last thing in the way of
144 we accept the bad output for now as this is the last thing in the way of
145 testing the pyoxidizer build.
145 testing the pyoxidizer build.
146
146
147 #if no-pyoxidizer
147 #if no-pyoxidizer-in-filesystem
148 $ hg paths --config extensions.zeroconf=
148 $ hg paths --config extensions.zeroconf=
149 dupe = $TESTTMP/b#tip
149 dupe = $TESTTMP/b#tip
150 dupe:pushurl = https://example.com/dupe
150 dupe:pushurl = https://example.com/dupe
@@ -21,9 +21,9 b' Define a helper to avoid the install ste'
21 error paths
21 error paths
22
22
23 #if symlink
23 #if symlink
24 $ ln -s "/"bin"/"true hg
24 $ ln -s $TESTDIR/run-tests.py hg
25 $ "$PYTHON" $TESTDIR/run-tests.py --with-hg=./hg
25 $ "$PYTHON" $TESTDIR/run-tests.py --with-hg=./hg
26 ^warning: --with-hg should specify an hg script, not: (true|coreutils)$ (re)
26 warning: --with-hg should specify an hg script, not: run-tests.py
27 running 0 tests using 0 parallel processes
27 running 0 tests using 0 parallel processes
28
28
29 # Ran 0 tests, 0 skipped, 0 failed.
29 # Ran 0 tests, 0 skipped, 0 failed.
@@ -165,8 +165,7 b' update not affecting the tracked set'
165 Test upgrade and downgrade
165 Test upgrade and downgrade
166 ==========================
166 ==========================
167
167
168 $ ls .hg/dirstate-tracked-hint
168 $ test -f .hg/dirstate-tracked-hint
169 .hg/dirstate-tracked-hint
170 $ hg debugrequires | grep 'tracked'
169 $ hg debugrequires | grep 'tracked'
171 dirstate-tracked-key-v1
170 dirstate-tracked-key-v1
172
171
@@ -181,9 +180,8 b' downgrade'
181
180
182 no revlogs to process
181 no revlogs to process
183
182
184 $ ls -1 .hg/dirstate-tracked-hint
183 $ test -f .hg/dirstate-tracked-hint
185 ls: *.hg/dirstate-tracked-hint*: $ENOENT$ (glob)
184 [1]
186 [2]
187 $ hg debugrequires | grep 'tracked'
185 $ hg debugrequires | grep 'tracked'
188 [1]
186 [1]
189
187
@@ -198,8 +196,7 b' upgrade'
198
196
199 no revlogs to process
197 no revlogs to process
200
198
201 $ ls -1 .hg/dirstate-tracked-hint
199 $ test -f .hg/dirstate-tracked-hint
202 .hg/dirstate-tracked-hint
203 $ hg debugrequires | grep 'tracked'
200 $ hg debugrequires | grep 'tracked'
204 dirstate-tracked-key-v1
201 dirstate-tracked-key-v1
205 $ cd ..
202 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now