Fri, 01 Feb 2019 16:47:29 -0800 py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 01 Feb 2019 16:47:29 -0800] rev 41506
py3: conditionalize test-demandimport.py for Python 3 The Python 3 lazy importer uses the LazyLoader that is part of importlib. On Python 3 and later, LazyLoader is implemented using a custom module type that defines a __getattribute__ which triggers module loading. Furthermore, there are additional differences as well. For example, it appears that Python 3 will return an existing sys.modules entry instead of constructing a new module object. This commit adds additional test coverage for lazy importing behavior to cover the differences between Python 2 and 3. This reveals that the test and some lazy import functionality is kinda busted. For example, the test assumes "contextlib" will be lazy. But in reality an import before it has already imported contextlib! There's definitely room to improve the behavior of the demand importer code, both for Python 2 and 3. But at least the test passes on Python 3 now. Differential Revision: https://phab.mercurial-scm.org/D5796
Fri, 01 Feb 2019 12:09:05 -0800 py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 01 Feb 2019 12:09:05 -0800] rev 41505
py3: replace print() with assert in test-demandimport.py Behavior of demand imports behaves differently between Python 2 and 3. .out files do not support conditional output the way that .t files do. In order to make this test work on Python 3, we'll need to make the test itself conditional. The first step of this is to port the test to not use a .out file to compare output. Unfortunately, we can't easily use the unittest framework for defining this test because putting import statements in functions changes the behavior of the demand importer (at least on Python 2). So, we effectively replace a bunch of print() with assert statements. This makes the test a bit annoying to debug, as the test will stop at first assertion failure. But we don't exactly have a good alternative. Differential Revision: https://phab.mercurial-scm.org/D5795
Sat, 02 Feb 2019 04:49:42 +0530 py3: pass str into grp.getgrnam
Pulkit Goyal <pulkit@yandex-team.ru> [Sat, 02 Feb 2019 04:49:42 +0530] rev 41504
py3: pass str into grp.getgrnam grp.getgrnam expects str on Python 3. This fixes test-acl.t on Python 3. Differential Revision: https://phab.mercurial-scm.org/D5794
Wed, 30 Jan 2019 03:50:31 +0530 montone: fix addition to list by using .append() instead of '+'
Pulkit Goyal <pulkit@yandex-team.ru> [Wed, 30 Jan 2019 03:50:31 +0530] rev 41503
montone: fix addition to list by using .append() instead of '+' Differential Revision: https://phab.mercurial-scm.org/D5739
Wed, 30 Jan 2019 17:04:26 -0500 tests: give up and make setsockopt() calls optional in the output
Augie Fackler <augie@google.com> [Wed, 30 Jan 2019 17:04:26 -0500] rev 41502
tests: give up and make setsockopt() calls optional in the output I can't figure out what causes these calls to happen or not, and I weary of dealing with them. End the madness for now by marking them all as optional lines of output. Differential Revision: https://phab.mercurial-scm.org/D5762
Thu, 31 Jan 2019 11:12:59 -0500 py3: fix test-remotefilelog-repack.t
Augie Fackler <augie@google.com> [Thu, 31 Jan 2019 11:12:59 -0500] rev 41501
py3: fix test-remotefilelog-repack.t This is uglier, but more obviously correct in my opinion. I guess Python 3 doesn't hang on to the exception as long, which seems reasonable. Differential Revision: https://phab.mercurial-scm.org/D5781
Wed, 30 Jan 2019 19:43:43 -0500 tests: alter email `From` line to a value that's consistently parsed
Augie Fackler <augie@google.com> [Wed, 30 Jan 2019 19:43:43 -0500] rev 41500
tests: alter email `From` line to a value that's consistently parsed Python2: >>> email.header.decode_header('=?UTF-8?q?Rapha=C3=ABl=20Hertzog?= <hertzog@debian.org>') [('Rapha\xc3\xabl Hertzog', 'utf-8'), ('<hertzog@debian.org>', None)] Python3: >>> email.header.decode_header('=?UTF-8?q?Rapha=C3=ABl=20Hertzog?= <hertzog@debian.org>') [(b'Rapha\xc3\xabl Hertzog', 'utf-8'), (b' <hertzog@debian.org>', None)] So alter the input to an input that parses to the same result consistently. After skimming the relevant RFC (1342), I'm not sure if what we had was valid, or how I could modify it to be more consistent. Differential Revision: https://phab.mercurial-scm.org/D5769
Thu, 31 Jan 2019 16:51:52 -0800 diff: drop duplicate filter of copies by destination
Martin von Zweigbergk <martinvonz@google.com> [Thu, 31 Jan 2019 16:51:52 -0800] rev 41499
diff: drop duplicate filter of copies by destination I'm pretty sure we don't need to filter copies by destination, at least since the previous patch. Differential Revision: https://phab.mercurial-scm.org/D5790
Thu, 31 Jan 2019 16:32:54 -0800 diff: use match.intersectmatchers()
Martin von Zweigbergk <martinvonz@google.com> [Thu, 31 Jan 2019 16:32:54 -0800] rev 41498
diff: use match.intersectmatchers() Differential Revision: https://phab.mercurial-scm.org/D5789
Fri, 01 Feb 2019 09:13:39 -0800 tests: convert ParseError arguments to str on Python 3
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 01 Feb 2019 09:13:39 -0800] rev 41497
tests: convert ParseError arguments to str on Python 3 Arguments internally are bytes. Printing the exception on Python 3 will include b'' prefixes. This test file uses a .out file, which doesn't support conditional output. The easiest way to get this to pass on Python 3 is to normalize the exception before printing so there are no b'' prefixes. Differential Revision: https://phab.mercurial-scm.org/D5793
(0) -30000 -10000 -3000 -1000 -300 -100 -10 +10 +100 +300 +1000 +3000 +10000 tip