Job try-b78cfa589c8c93015b82d1b014890a4636080815-debian10-cpython-3.5-0
| Repo: | try | 
| Node: | b78cfa589c8c93015b82d1b014890a4636080815 | 
| Name: | debian10-cpython-3.5 | 
| Scheduled At: | 2019-10-16T02:59:42 | 
| Started At: | 2019-10-16T02:59:48 | 
| Finished At: | 2019-10-16T03:11:23 | 
Failed Tests
test-bookmarks-corner-case.t
--- /hgwork/src/tests/test-bookmarks-corner-case.t
+++ /hgwork/src/tests/test-bookmarks-corner-case.t.err
@@ -201,7 +201,6 @@
   pushing to ssh://user@dummy/bookrace-server
   searching for changes
   remote: setting raced push up
-  remote has heads on branch 'default' that are not known locally: f26c3b5167d1
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
@@ -220,7 +219,6 @@
   |  summary:     A1
   |
   | o  changeset:   3:f26c3b5167d1
-  | |  bookmark:    book-B
   | |  user:        test
   | |  date:        Thu Jan 01 00:00:00 1970 +0000
   | |  summary:     B1
@@ -243,4 +241,3 @@
   
   $ hg -R bookrace-server book
      book-A                    4:9ce3b28c16de
-     book-B                    3:f26c3b5167d1
test-bookmarks-pushpull.t#b2-binary
test-bookmarks-pushpull.t#b2-pushkey
test-byteify-strings.t
--- /hgwork/src/tests/test-byteify-strings.t
+++ /hgwork/src/tests/test-byteify-strings.t.err
@@ -16,8 +16,23 @@
   > mydict.iteritems()
   > EOF
   $ byteify_strings testfile.py -i
+  Traceback (most recent call last):
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 345, in <module>
+      main()
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 334, in main
+      process(fin, fout, opts)
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 264, in process
+      fout.write(tokenize.untokenize(tokens))
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/tokenize.py", line 340, in untokenize
+      out = ut.untokenize(iterable)
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/tokenize.py", line 249, in untokenize
+      for t in it:
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 161, in replacetokens
+      if t.type == token.COMMENT:
+  AttributeError: module 'token' has no attribute 'COMMENT'
+  [1]
   $ cat testfile.py
-  obj[b'test'] = b"1234"
+  obj['test'] = b"1234"
   mydict.iteritems()
 
 Test with dictiter
@@ -27,8 +42,21 @@
   > mydict.iteritems()
   > EOF
   $ byteify_strings testfile.py --dictiter
-  obj[b'test'] = b"1234"
-  mydict.items()
+  Traceback (most recent call last):
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 345, in <module>
+      main()
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 338, in main
+      process(fin, fout, opts)
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 264, in process
+      fout.write(tokenize.untokenize(tokens))
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/tokenize.py", line 340, in untokenize
+      out = ut.untokenize(iterable)
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/tokenize.py", line 249, in untokenize
+      for t in it:
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 161, in replacetokens
+      if t.type == token.COMMENT:
+  AttributeError: module 'token' has no attribute 'COMMENT'
+  [1]
 
 Test kwargs-like objects
 
@@ -64,35 +92,21 @@
   > commitopts.setdefault('test', 'testing')
   > EOF
   $ byteify_strings testfile.py --treat-as-kwargs kwargs opts commitopts
-  kwargs['test'] = b"123"
-  kwargs[test[b'testing']]
-  kwargs[test[[[b'testing']]]]
-  kwargs[kwargs['testing']]
-  kwargs.get('test')
-  kwargs.pop('test')
-  kwargs.get('test', b'testing')
-  kwargs.pop('test', b'testing')
-  kwargs.setdefault('test', b'testing')
-  
-  opts['test'] = b"123"
-  opts[test[b'testing']]
-  opts[test[[[b'testing']]]]
-  opts[opts['testing']]
-  opts.get('test')
-  opts.pop('test')
-  opts.get('test', b'testing')
-  opts.pop('test', b'testing')
-  opts.setdefault('test', b'testing')
-  
-  commitopts['test'] = b"123"
-  commitopts[test[b'testing']]
-  commitopts[test[[[b'testing']]]]
-  commitopts[commitopts['testing']]
-  commitopts.get('test')
-  commitopts.pop('test')
-  commitopts.get('test', b'testing')
-  commitopts.pop('test', b'testing')
-  commitopts.setdefault('test', b'testing')
+  Traceback (most recent call last):
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 345, in <module>
+      main()
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 338, in main
+      process(fin, fout, opts)
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 264, in process
+      fout.write(tokenize.untokenize(tokens))
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/tokenize.py", line 340, in untokenize
+      out = ut.untokenize(iterable)
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/tokenize.py", line 249, in untokenize
+      for t in it:
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 161, in replacetokens
+      if t.type == token.COMMENT:
+  AttributeError: module 'token' has no attribute 'COMMENT'
+  [1]
 
 Test attr*() as methods
 
@@ -111,18 +125,21 @@
   >     pass
   > EOF
   $ byteify_strings testfile.py --allow-attr-methods
-  setattr(o, 'a', 1)
-  util.setattr(o, 'ae', 1)
-  util.getattr(o, 'alksjdf', b'default')
-  util.addattr(o, 'asdf')
-  util.hasattr(o, 'lksjdf', b'default')
-  util.safehasattr(o, 'lksjdf', b'default')
-  @eh.wrapfunction(func, 'lksjdf')
-  def f():
-      pass
-  @eh.wrapclass(klass, 'lksjdf')
-  def f():
-      pass
+  Traceback (most recent call last):
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 345, in <module>
+      main()
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 338, in main
+      process(fin, fout, opts)
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 264, in process
+      fout.write(tokenize.untokenize(tokens))
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/tokenize.py", line 340, in untokenize
+      out = ut.untokenize(iterable)
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/tokenize.py", line 249, in untokenize
+      for t in it:
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 161, in replacetokens
+      if t.type == token.COMMENT:
+  AttributeError: module 'token' has no attribute 'COMMENT'
+  [1]
 
 Test without attr*() as methods
 
@@ -141,18 +158,21 @@
   >     pass
   > EOF
   $ byteify_strings testfile.py
-  setattr(o, 'a', 1)
-  util.setattr(o, b'ae', 1)
-  util.getattr(o, b'alksjdf', b'default')
-  util.addattr(o, b'asdf')
-  util.hasattr(o, b'lksjdf', b'default')
-  util.safehasattr(o, b'lksjdf', b'default')
-  @eh.wrapfunction(func, b'lksjdf')
-  def f():
-      pass
-  @eh.wrapclass(klass, b'lksjdf')
-  def f():
-      pass
+  Traceback (most recent call last):
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 345, in <module>
+      main()
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 338, in main
+      process(fin, fout, opts)
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 264, in process
+      fout.write(tokenize.untokenize(tokens))
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/tokenize.py", line 340, in untokenize
+      out = ut.untokenize(iterable)
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/tokenize.py", line 249, in untokenize
+      for t in it:
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 161, in replacetokens
+      if t.type == token.COMMENT:
+  AttributeError: module 'token' has no attribute 'COMMENT'
+  [1]
 
 Test ignore comments
 
@@ -173,20 +193,21 @@
   > 
   > EOF
   $ byteify_strings testfile.py
-  # py3-transform: off
-  "none"
-  "of"
-  'these'
-  s = """should"""
-  d = '''be'''
-  # py3-transform: on
-  b"this should"
-  b'and this also'
-  
-  # no-py3-transform
-  l = "this should be ignored"
-  l2 = b"this shouldn't"
-  
+  Traceback (most recent call last):
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 345, in <module>
+      main()
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 338, in main
+      process(fin, fout, opts)
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 264, in process
+      fout.write(tokenize.untokenize(tokens))
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/tokenize.py", line 340, in untokenize
+      out = ut.untokenize(iterable)
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/tokenize.py", line 249, in untokenize
+      for t in it:
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 161, in replacetokens
+      if t.type == token.COMMENT:
+  AttributeError: module 'token' has no attribute 'COMMENT'
+  [1]
 Test triple-quoted strings
 
   $ cat > testfile.py <<EOF
@@ -201,15 +222,21 @@
   > '''
   > EOF
   $ byteify_strings testfile.py
-  """This is ignored
-  """
-  
-  line = b"""
-    This should not be
-  """
-  line = b'''
-  Neither should this
-  '''
+  Traceback (most recent call last):
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 345, in <module>
+      main()
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 338, in main
+      process(fin, fout, opts)
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 264, in process
+      fout.write(tokenize.untokenize(tokens))
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/tokenize.py", line 340, in untokenize
+      out = ut.untokenize(iterable)
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/tokenize.py", line 249, in untokenize
+      for t in it:
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 161, in replacetokens
+      if t.type == token.COMMENT:
+  AttributeError: module 'token' has no attribute 'COMMENT'
+  [1]
 
 Test prefixed strings
 
@@ -218,8 +245,21 @@
   > obj[r'test'] = u"1234"
   > EOF
   $ byteify_strings testfile.py
-  obj[b'test'] = b"1234"
-  obj[r'test'] = u"1234"
+  Traceback (most recent call last):
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 345, in <module>
+      main()
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 338, in main
+      process(fin, fout, opts)
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 264, in process
+      fout.write(tokenize.untokenize(tokens))
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/tokenize.py", line 340, in untokenize
+      out = ut.untokenize(iterable)
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/tokenize.py", line 249, in untokenize
+      for t in it:
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 161, in replacetokens
+      if t.type == token.COMMENT:
+  AttributeError: module 'token' has no attribute 'COMMENT'
+  [1]
 
 Test multi-line alignment
 
@@ -245,22 +285,18 @@
   >  }
   > EOF
   $ byteify_strings testfile.py
-  def foo():
-      error.Abort(_(b"foo"
-                    b"bar"
-                    b"%s")
-                  % parameter)
-  {
-      b'test': dict,
-      b'test2': dict,
-  }
-  [
-     b"thing",
-     b"thing2"
-  ]
-  (
-     b"tuple",
-     b"tuple2",
-  )
-  {b"thing",
-   }
+  Traceback (most recent call last):
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 345, in <module>
+      main()
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 338, in main
+      process(fin, fout, opts)
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 264, in process
+      fout.write(tokenize.untokenize(tokens))
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/tokenize.py", line 340, in untokenize
+      out = ut.untokenize(iterable)
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/tokenize.py", line 249, in untokenize
+      for t in it:
+    File "/hgwork/src/tests/../contrib/byteify-strings.py", line 161, in replacetokens
+      if t.type == token.COMMENT:
+  AttributeError: module 'token' has no attribute 'COMMENT'
+  [1]
test-check-module-imports.t
--- /hgwork/src/tests/test-check-module-imports.t
+++ /hgwork/src/tests/test-check-module-imports.t.err
@@ -38,3 +38,20 @@
   > -X tests/test-imports-checker.t    > -X tests/test-verify-repo-operations.py    > | sed 's-\-/-g' | "$PYTHON" "$import_checker" -
+  contrib/ci/lambda_functions/ci.py:20: direct symbol import Key from boto3.dynamodb.conditions
+  contrib/ci/lambda_functions/web.py:15: direct symbol import Key from boto3.dynamodb.conditions
+  Traceback (most recent call last):
+    File "/hgwork/src/tests/../contrib/import-checker.py", line 813, in <module>
+      sys.exit(int(main(sys.argv)))
+    File "/hgwork/src/tests/../contrib/import-checker.py", line 780, in main
+      for src, modname, name, line in sources(source_path, localmodname):
+    File "/hgwork/src/tests/../contrib/import-checker.py", line 758, in sources
+      for script, modname, t, line in embedded(f, modname, src):
+    File "/hgwork/src/tests/../contrib/import-checker.py", line 728, in embedded
+      for name, starts, ends, code in testparseutil.pyembedded(f, src, errors):
+    File "/hgwork/src/contrib/testparseutil.py", line 186, in embedded
+      for lineno, line in enumerate(lines, 1):
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/encodings/ascii.py", line 26, in decode
+      return codecs.ascii_decode(input, self.errors)[0]
+  UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 996: ordinal not in range(128)
+  [1]
test-check-py3-compat.t
--- /hgwork/src/tests/test-check-py3-compat.t
+++ /hgwork/src/tests/test-check-py3-compat.t.err
@@ -40,11 +40,14 @@
   > | sed 's/[0-9][0-9]*)$/*)/'
   hgext/convert/transport.py: error importing: <*Error> No module named 'svn.client' (error at transport.py:*) (glob) (?)
   hgext/infinitepush/sqlindexapi.py: error importing: <*Error> No module named 'mysql' (error at sqlindexapi.py:*) (glob) (?)
-  mercurial/scmwindows.py: error importing: <ValueError> _type_ 'v' not supported (error at win32.py:*) (no-windows !)
-  mercurial/win32.py: error importing: <ValueError> _type_ 'v' not supported (error at win32.py:*) (no-windows !)
-  mercurial/windows.py: error importing: <ModuleNotFoundError> No module named 'msvcrt' (error at windows.py:*) (no-windows !)
+  contrib/grey.py: invalid syntax: invalid syntax (grey.py, line *)
+  hgext/convert/transport.py: error importing: <ImportError> No module named 'svn.client' (error at transport.py:*)
+  hgext/infinitepush/sqlindexapi.py: error importing: <ImportError> No module named 'mysql' (error at sqlindexapi.py:*)
   mercurial/posix.py: error importing: <ModuleNotFoundError> No module named 'fcntl' (error at posix.py:*) (windows !)
   mercurial/scmposix.py: error importing: <ModuleNotFoundError> No module named 'fcntl' (error at scmposix.py:*) (windows !)
+  mercurial/scmwindows.py: error importing: <ValueError> _type_ 'v' not supported (error at win32.py:*)
+  mercurial/win32.py: error importing: <ValueError> _type_ 'v' not supported (error at win32.py:*)
+  mercurial/windows.py: error importing: <ImportError> No module named 'msvcrt' (error at windows.py:*)
 #endif
 
 #if py3 pygments
test-clone-cgi.t
--- /hgwork/src/tests/test-clone-cgi.t
+++ /hgwork/src/tests/test-clone-cgi.t.err
@@ -27,13 +27,198 @@
   $ . "$TESTDIR/cgienv"
   $ QUERY_STRING="cmd=changegroup&roots=0000000000000000000000000000000000000000"; export QUERY_STRING
   $ "$PYTHON" hgweb.cgi >page1 2>&1
+  [1]
   $ "$PYTHON" "$TESTDIR/md5sum.py" page1
-  1f424bb22ec05c3c6bc866b6e67efe43  page1
+  c6b7511f85e825edc8c80c6bc3dc0143  page1
 
 make sure headers are sent even when there is no body
 
   $ QUERY_STRING="cmd=listkeys&namespace=nosuchnamespace" "$PYTHON" hgweb.cgi
-  Status: 200 Script output follows
 (esc)
-  Content-Type: application/mercurial-0.1
 (esc)
-  Content-Length: 0
 (esc)
-  
 (esc)
+  <!--: spam
+  Content-Type: text/html
+  
+  <body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> -->
+  <body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> --> -->
+  </font> </font> </font> </script> </object> </blockquote> </pre>
+  </table> </table> </table> </table> </table> </font> </font> </font><body bgcolor="#f0f0f8">
+  <table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
+  <tr bgcolor="#6622aa">
+  <td valign=bottom> <br>
+  <font color="#ffffff" face="helvetica, arial"> <br><big><big><strong>ImportError</strong></big></big></font></td
+  ><td align=right valign=bottom
+  ><font color="#ffffff" face="helvetica, arial">Python 3.5.7: /hgdev/pyenv/versions/3.5.7/bin/python3.5<br>Wed Oct 16 03:10:43 2019</font></td></tr></table>
+      
+  <p>A problem occurred in a Python script.  Here is the sequence of
+  function calls leading up to the error, in the order they occurred.</p>
+  <table width="100%" cellspacing=0 cellpadding=0 border=0>
+  <tr><td bgcolor="#d8bbff"><big> </big><a href="file:/*/$TESTTMP/hgweb.cgi">$TESTTMP/hgweb.cgi</a> in <strong><module></strong>()</td></tr> (glob)
+  <tr><td><font color="#909090"><tt>  <small>    4</small> cgitb.enable()<br>
+  </tt></font></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>    5</small> from mercurial import demandimport; demandimport.enable()<br>
+  </tt></font></td></tr>
+  <tr><td bgcolor="#ffccee"><tt>=><small>    6</small> from mercurial.hgweb import hgweb<br>
+  </tt></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>    7</small> from mercurial.hgweb import wsgicgi<br>
+  </tt></font></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>    8</small> application = hgweb(b"test", b"Empty test repository")<br>
+  </tt></font></td></tr>
+  <tr><td><small><font color="#909090">mercurial <em>undefined</em>, hgweb <em>undefined</em></font></small></td></tr></table>
+  <table width="100%" cellspacing=0 cellpadding=0 border=0>
+  <tr><td bgcolor="#d8bbff"><big> </big><a href="file:///hgdev/pyenv/versions/3.5.7/lib/python3.5/importlib/util.py">/hgdev/pyenv/versions/3.5.7/lib/python3.5/importlib/util.py</a> in <strong>__getattribute__</strong>(self=<module 'mercurial.hgweb' from '/hgwork/tmp/hgte.../install/lib/python/mercurial/hgweb/__init__.py'>, attr='__path__')</td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  235</small>             elif id(attrs_now[key]) != id(attrs_then[key]):<br>
+  </tt></font></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  236</small>                 attrs_updated[key] = value<br>
+  </tt></font></td></tr>
+  <tr><td bgcolor="#ffccee"><tt>=><small>  237</small>         self.__spec__.loader.exec_module(self)<br>
+  </tt></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  238</small>         # If exec_module() was used directly there is no guarantee the module<br>
+  </tt></font></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  239</small>         # object was put into sys.modules.<br>
+  </tt></font></td></tr>
+  <tr><td><small><font color="#909090"><strong>self</strong> = <module 'mercurial.hgweb' from '/hgwork/tmp/hgte.../install/lib/python/mercurial/hgweb/__init__.py'>, self.<strong>__spec__</strong> = ModuleSpec(name='mercurial.hgweb', loader=<_froz...ts.ri6478ah/install/lib/python/mercurial/hgweb']), self.__spec__.<strong>loader</strong> = <_frozen_importlib_external.SourceFileLoader object>, self.__spec__.loader.<strong>exec_module</strong> = <bound method _LoaderBasics.exec_module of <_frozen_importlib_external.SourceFileLoader object>></font></small></td></tr></table>
+  <table width="100%" cellspacing=0 cellpadding=0 border=0>
+  <tr><td bgcolor="#d8bbff"><big> </big><a href="file:///hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/hgweb/__init__.py">/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/hgweb/__init__.py</a> in <strong><module></strong>()</td></tr>
+  <tr><td><font color="#909090"><tt>  <small>   11</small> import os<br>
+  </tt></font></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>   12</small> <br>
+  </tt></font></td></tr>
+  <tr><td bgcolor="#ffccee"><tt>=><small>   13</small> from ..i18n import _<br>
+  </tt></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>   14</small> <br>
+  </tt></font></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>   15</small> from .. import (<br>
+  </tt></font></td></tr>
+  <tr><td><small><font color="#909090">_ <em>undefined</em></font></small></td></tr></table>
+  <table width="100%" cellspacing=0 cellpadding=0 border=0>
+  <tr><td bgcolor="#d8bbff"><big> </big><a href="file:///hgdev/pyenv/versions/3.5.7/lib/python3.5/importlib/util.py">/hgdev/pyenv/versions/3.5.7/lib/python3.5/importlib/util.py</a> in <strong>__getattribute__</strong>(self=<module 'mercurial.i18n' from '/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/i18n.py'>, attr='__path__')</td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  235</small>             elif id(attrs_now[key]) != id(attrs_then[key]):<br>
+  </tt></font></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  236</small>                 attrs_updated[key] = value<br>
+  </tt></font></td></tr>
+  <tr><td bgcolor="#ffccee"><tt>=><small>  237</small>         self.__spec__.loader.exec_module(self)<br>
+  </tt></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  238</small>         # If exec_module() was used directly there is no guarantee the module<br>
+  </tt></font></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  239</small>         # object was put into sys.modules.<br>
+  </tt></font></td></tr>
+  <tr><td><small><font color="#909090"><strong>self</strong> = <module 'mercurial.i18n' from '/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/i18n.py'>, self.<strong>__spec__</strong> = ModuleSpec(name='mercurial.i18n', loader=<_froze...s.ri6478ah/install/lib/python/mercurial/i18n.py'), self.__spec__.<strong>loader</strong> = <_frozen_importlib_external.SourceFileLoader object>, self.__spec__.loader.<strong>exec_module</strong> = <bound method _LoaderBasics.exec_module of <_frozen_importlib_external.SourceFileLoader object>></font></small></td></tr></table>
+  <table width="100%" cellspacing=0 cellpadding=0 border=0>
+  <tr><td bgcolor="#d8bbff"><big> </big><a href="file:///hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/i18n.py">/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/i18n.py</a> in <strong><module></strong>()</td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  113</small> <br>
+  </tt></font></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  114</small> <br>
+  </tt></font></td></tr>
+  <tr><td bgcolor="#ffccee"><tt>=><small>  115</small> if _plain():<br>
+  </tt></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  116</small>     _ = lambda message: message<br>
+  </tt></font></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  117</small> else:<br>
+  </tt></font></td></tr>
+  <tr><td><small><font color="#909090"><strong>_plain</strong> = <function _plain></font></small></td></tr></table>
+  <table width="100%" cellspacing=0 cellpadding=0 border=0>
+  <tr><td bgcolor="#d8bbff"><big> </big><a href="file:///hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/i18n.py">/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/i18n.py</a> in <strong>_plain</strong>()</td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  105</small> def _plain():<br>
+  </tt></font></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  106</small>     if (<br>
+  </tt></font></td></tr>
+  <tr><td bgcolor="#ffccee"><tt>=><small>  107</small>         b'HGPLAIN' not in encoding.environ<br>
+  </tt></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  108</small>         and b'HGPLAINEXCEPT' not in encoding.environ<br>
+  </tt></font></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  109</small>     ):<br>
+  </tt></font></td></tr>
+  <tr><td><small><font color="#909090"><em>global</em> <strong>encoding</strong> = <module 'mercurial.encoding' from '/hgwork/tmp/h...6478ah/install/lib/python/mercurial/encoding.py'>, encoding.environ <em>undefined</em></font></small></td></tr></table>
+  <table width="100%" cellspacing=0 cellpadding=0 border=0>
+  <tr><td bgcolor="#d8bbff"><big> </big><a href="file:///hgdev/pyenv/versions/3.5.7/lib/python3.5/importlib/util.py">/hgdev/pyenv/versions/3.5.7/lib/python3.5/importlib/util.py</a> in <strong>__getattribute__</strong>(self=<module 'mercurial.encoding' from '/hgwork/tmp/h...6478ah/install/lib/python/mercurial/encoding.py'>, attr='environ')</td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  235</small>             elif id(attrs_now[key]) != id(attrs_then[key]):<br>
+  </tt></font></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  236</small>                 attrs_updated[key] = value<br>
+  </tt></font></td></tr>
+  <tr><td bgcolor="#ffccee"><tt>=><small>  237</small>         self.__spec__.loader.exec_module(self)<br>
+  </tt></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  238</small>         # If exec_module() was used directly there is no guarantee the module<br>
+  </tt></font></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  239</small>         # object was put into sys.modules.<br>
+  </tt></font></td></tr>
+  <tr><td><small><font color="#909090"><strong>self</strong> = <module 'mercurial.encoding' from '/hgwork/tmp/h...6478ah/install/lib/python/mercurial/encoding.py'>, self.<strong>__spec__</strong> = ModuleSpec(name='mercurial.encoding', loader=<_f...6478ah/install/lib/python/mercurial/encoding.py'), self.__spec__.<strong>loader</strong> = <_frozen_importlib_external.SourceFileLoader object>, self.__spec__.loader.<strong>exec_module</strong> = <bound method _LoaderBasics.exec_module of <_frozen_importlib_external.SourceFileLoader object>></font></small></td></tr></table>
+  <table width="100%" cellspacing=0 cellpadding=0 border=0>
+  <tr><td bgcolor="#d8bbff"><big> </big><a href="file:///hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/encoding.py">/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/encoding.py</a> in <strong><module></strong>()</td></tr>
+  <tr><td><font color="#909090"><tt>  <small>   21</small> from .pure import charencode as charencodepure<br>
+  </tt></font></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>   22</small> <br>
+  </tt></font></td></tr>
+  <tr><td bgcolor="#ffccee"><tt>=><small>   23</small> charencode = policy.importmod(r'charencode')<br>
+  </tt></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>   24</small> <br>
+  </tt></font></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>   25</small> isasciistr = charencode.isasciistr<br>
+  </tt></font></td></tr>
+  <tr><td><small><font color="#909090">charencode <em>undefined</em>, <strong>policy</strong> = <module 'mercurial.policy' from '/hgwork/tmp/hgt...ri6478ah/install/lib/python/mercurial/policy.py'>, policy.<strong>importmod</strong> = <function importmod></font></small></td></tr></table>
+  <table width="100%" cellspacing=0 cellpadding=0 border=0>
+  <tr><td bgcolor="#d8bbff"><big> </big><a href="file:///hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/policy.py">/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/policy.py</a> in <strong>importmod</strong>(modname='charencode')</td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  116</small>             mod = _importfrom(pn, mn)<br>
+  </tt></font></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  117</small>             if pn == verpkg:<br>
+  </tt></font></td></tr>
+  <tr><td bgcolor="#ffccee"><tt>=><small>  118</small>                 _checkmod(pn, mn, mod)<br>
+  </tt></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  119</small>             return mod<br>
+  </tt></font></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  120</small>         except ImportError:<br>
+  </tt></font></td></tr>
+  <tr><td><small><font color="#909090"><em>global</em> <strong>_checkmod</strong> = <function _checkmod>, <strong>pn</strong> = 'cext', <strong>mn</strong> = 'parsers', <strong>mod</strong> = <module 'mercurial.cext.parsers' from '/hgwork/t...al/cext/parsers.cpython-35m-x86_64-linux-gnu.so'></font></small></td></tr></table>
+  <table width="100%" cellspacing=0 cellpadding=0 border=0>
+  <tr><td bgcolor="#d8bbff"><big> </big><a href="file:///hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/policy.py">/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/policy.py</a> in <strong>_checkmod</strong>(pkgname='cext', modname='parsers', mod=<module 'mercurial.cext.parsers' from '/hgwork/t...al/cext/parsers.cpython-35m-x86_64-linux-gnu.so'>)</td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  100</small>             r'cannot import module %s.%s '<br>
+  </tt></font></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  101</small>             r'(expected version: %d, actual: %r)'<br>
+  </tt></font></td></tr>
+  <tr><td bgcolor="#ffccee"><tt>=><small>  102</small>             % (pkgname, modname, expected, actual)<br>
+  </tt></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  103</small>         )<br>
+  </tt></font></td></tr>
+  <tr><td><font color="#909090"><tt>  <small>  104</small> <br>
+  </tt></font></td></tr>
+  <tr><td><small><font color="#909090"><strong>pkgname</strong> = 'cext', <strong>modname</strong> = 'parsers', <strong>expected</strong> = 13, <strong>actual</strong> = None</font></small></td></tr></table><p><strong>ImportError</strong>: cannot import module cext.parsers (expected version: 13, actual: None)
+  <br><tt><small>     </small> </tt>args =
+  ('cannot import module cext.parsers (expected version: 13, actual: None)',)
+  <br><tt><small>     </small> </tt>msg =
+  'cannot import module cext.parsers (expected version: 13, actual: None)'
+  <br><tt><small>     </small> </tt>name =
+  None
+  <br><tt><small>     </small> </tt>path =
+  None
+  <br><tt><small>     </small> </tt>with_traceback =
+  <built-in method with_traceback of ImportError object>
+  
+  
+  <!-- The above is a description of an error in a Python program, formatted
+       for a Web browser because the 'cgitb' module was enabled.  In case you
+       are not reading this in a Web browser, here is the original traceback:
+  
+  Traceback (most recent call last):
+    File "hgweb.cgi", line 6, in <module>
+      from mercurial.hgweb import hgweb
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/importlib/util.py", line 237, in __getattribute__
+      self.__spec__.loader.exec_module(self)
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/hgweb/__init__.py", line 13, in <module>
+      from ..i18n import _
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/importlib/util.py", line 237, in __getattribute__
+      self.__spec__.loader.exec_module(self)
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/i18n.py", line 115, in <module>
+      if _plain():
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/i18n.py", line 107, in _plain
+      b'HGPLAIN' not in encoding.environ
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/importlib/util.py", line 237, in __getattribute__
+      self.__spec__.loader.exec_module(self)
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/encoding.py", line 23, in <module>
+      charencode = policy.importmod(r'charencode')
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/policy.py", line 118, in importmod
+      _checkmod(pn, mn, mod)
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/policy.py", line 102, in _checkmod
+      % (pkgname, modname, expected, actual)
+  ImportError: cannot import module cext.parsers (expected version: 13, actual: None)
+  
+  -->
+  
+  [1]
test-contrib.t
--- /hgwork/src/tests/test-contrib.t
+++ /hgwork/src/tests/test-contrib.t.err
@@ -15,19 +15,52 @@
 changing local directly
 
   $ "$PYTHON" simplemerge local base other && echo "merge succeeded"
-  merge succeeded
+  Traceback (most recent call last):
+    File "simplemerge", line 10, in <module>
+      from mercurial.i18n import _
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/importlib/util.py", line 237, in __getattribute__
+      self.__spec__.loader.exec_module(self)
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/i18n.py", line 115, in <module>
+      if _plain():
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/i18n.py", line 107, in _plain
+      b'HGPLAIN' not in encoding.environ
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/importlib/util.py", line 237, in __getattribute__
+      self.__spec__.loader.exec_module(self)
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/encoding.py", line 23, in <module>
+      charencode = policy.importmod(r'charencode')
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/policy.py", line 118, in importmod
+      _checkmod(pn, mn, mod)
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/policy.py", line 102, in _checkmod
+      % (pkgname, modname, expected, actual)
+  ImportError: cannot import module cext.parsers (expected version: 13, actual: None)
+  [1]
   $ cat local
   local
   base
-  other
   $ cp orig local
 
 printing to stdout
 
   $ "$PYTHON" simplemerge -p local base other
-  local
-  base
-  other
+  Traceback (most recent call last):
+    File "simplemerge", line 10, in <module>
+      from mercurial.i18n import _
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/importlib/util.py", line 237, in __getattribute__
+      self.__spec__.loader.exec_module(self)
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/i18n.py", line 115, in <module>
+      if _plain():
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/i18n.py", line 107, in _plain
+      b'HGPLAIN' not in encoding.environ
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/importlib/util.py", line 237, in __getattribute__
+      self.__spec__.loader.exec_module(self)
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/encoding.py", line 23, in <module>
+      charencode = policy.importmod(r'charencode')
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/policy.py", line 118, in importmod
+      _checkmod(pn, mn, mod)
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/policy.py", line 102, in _checkmod
+      % (pkgname, modname, expected, actual)
+  ImportError: cannot import module cext.parsers (expected version: 13, actual: None)
+  [1]
 
 local:
 
@@ -44,132 +77,231 @@
   $ echo end >> conflict-other
 
   $ "$PYTHON" simplemerge -p conflict-local base conflict-other
-  base
-  <<<<<<< conflict-local
-  not other
-  =======
-  other
-  >>>>>>> conflict-other
-  end
+  Traceback (most recent call last):
+    File "simplemerge", line 10, in <module>
+      from mercurial.i18n import _
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/importlib/util.py", line 237, in __getattribute__
+      self.__spec__.loader.exec_module(self)
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/i18n.py", line 115, in <module>
+      if _plain():
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/i18n.py", line 107, in _plain
+      b'HGPLAIN' not in encoding.environ
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/importlib/util.py", line 237, in __getattribute__
+      self.__spec__.loader.exec_module(self)
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/encoding.py", line 23, in <module>
+      charencode = policy.importmod(r'charencode')
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/policy.py", line 118, in importmod
+      _checkmod(pn, mn, mod)
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/policy.py", line 102, in _checkmod
+      % (pkgname, modname, expected, actual)
+  ImportError: cannot import module cext.parsers (expected version: 13, actual: None)
   [1]
 
 1 label
 
   $ "$PYTHON" simplemerge -p -L foo conflict-local base conflict-other
-  base
-  <<<<<<< foo
-  not other
-  =======
-  other
-  >>>>>>> conflict-other
-  end
+  Traceback (most recent call last):
+    File "simplemerge", line 10, in <module>
+      from mercurial.i18n import _
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/importlib/util.py", line 237, in __getattribute__
+      self.__spec__.loader.exec_module(self)
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/i18n.py", line 115, in <module>
+      if _plain():
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/i18n.py", line 107, in _plain
+      b'HGPLAIN' not in encoding.environ
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/importlib/util.py", line 237, in __getattribute__
+      self.__spec__.loader.exec_module(self)
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/encoding.py", line 23, in <module>
+      charencode = policy.importmod(r'charencode')
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/policy.py", line 118, in importmod
+      _checkmod(pn, mn, mod)
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/policy.py", line 102, in _checkmod
+      % (pkgname, modname, expected, actual)
+  ImportError: cannot import module cext.parsers (expected version: 13, actual: None)
   [1]
 
 2 labels
 
   $ "$PYTHON" simplemerge -p -L foo -L bar conflict-local base conflict-other
-  base
-  <<<<<<< foo
-  not other
-  =======
-  other
-  >>>>>>> bar
-  end
+  Traceback (most recent call last):
+    File "simplemerge", line 10, in <module>
+      from mercurial.i18n import _
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/importlib/util.py", line 237, in __getattribute__
+      self.__spec__.loader.exec_module(self)
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/i18n.py", line 115, in <module>
+      if _plain():
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/i18n.py", line 107, in _plain
+      b'HGPLAIN' not in encoding.environ
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/importlib/util.py", line 237, in __getattribute__
+      self.__spec__.loader.exec_module(self)
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/encoding.py", line 23, in <module>
+      charencode = policy.importmod(r'charencode')
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/policy.py", line 118, in importmod
+      _checkmod(pn, mn, mod)
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/policy.py", line 102, in _checkmod
+      % (pkgname, modname, expected, actual)
+  ImportError: cannot import module cext.parsers (expected version: 13, actual: None)
   [1]
 
 3 labels
 
   $ "$PYTHON" simplemerge -p -L foo -L bar -L base conflict-local base conflict-other
-  base
-  <<<<<<< foo
-  not other
-  end
-  ||||||| base
-  =======
-  other
-  end
-  >>>>>>> bar
+  Traceback (most recent call last):
+    File "simplemerge", line 10, in <module>
+      from mercurial.i18n import _
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/importlib/util.py", line 237, in __getattribute__
+      self.__spec__.loader.exec_module(self)
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/i18n.py", line 115, in <module>
+      if _plain():
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/i18n.py", line 107, in _plain
+      b'HGPLAIN' not in encoding.environ
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/importlib/util.py", line 237, in __getattribute__
+      self.__spec__.loader.exec_module(self)
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/encoding.py", line 23, in <module>
+      charencode = policy.importmod(r'charencode')
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/policy.py", line 118, in importmod
+      _checkmod(pn, mn, mod)
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/policy.py", line 102, in _checkmod
+      % (pkgname, modname, expected, actual)
+  ImportError: cannot import module cext.parsers (expected version: 13, actual: None)
   [1]
 
 too many labels
 
   $ "$PYTHON" simplemerge -p -L foo -L bar -L baz -L buz conflict-local base conflict-other
-  abort: can only specify three labels.
-  [255]
+  Traceback (most recent call last):
+    File "simplemerge", line 10, in <module>
+      from mercurial.i18n import _
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/importlib/util.py", line 237, in __getattribute__
+      self.__spec__.loader.exec_module(self)
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/i18n.py", line 115, in <module>
+      if _plain():
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/i18n.py", line 107, in _plain
+      b'HGPLAIN' not in encoding.environ
+    File "/hgdev/pyenv/versions/3.5.7/lib/python3.5/importlib/util.py", line 237, in __getattribute__
+      self.__spec__.loader.exec_module(self)
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/encoding.py", line 23, in <module>
+      charencode = policy.importmod(r'charencode')
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/policy.py", line 118, in importmod
+      _checkmod(pn, mn, mod)
+    File "/hgwork/tmp/hgtests.ri6478ah/install/lib/python/mercurial/policy.py", line 102, in _checkmod
+      % (pkgname, modname, expected, actual)
+  ImportError: cannot import module cext.parsers (expected version: 13, actual: None)
+  [1]
 
 binary file
 
   $ "$PYTHON" -c "f = open('binary-local', 'w'); f.write('