This is an archive of the discontinued Mercurial Phabricator instance.

procutils: don't try to get `.buffer` if sys.stdin is None
ClosedPublic

Authored by pulkit on Dec 2 2020, 1:07 PM.

Details

Summary

While hunting down following test failure of test-chg.t on Python 3, I stumbled
the case when .buffer is not available as sys.stdin is None.

  • /home/pulkit/repo/hg-committed/tests/test-chg.t

+++ /home/pulkit/repo/hg-committed/tests/test-chg.t.err
@@ -203,7 +203,31 @@

	   $ CHGDEBUG=1 chg version -q 0<&-
		 chg: debug: * stdio fds are missing (glob)
	     chg: debug: * execute original hg (glob)
		 -  Mercurial Distributed SCM * (glob)
		 +  Traceback (most recent call last):
		 +    File "/tmp/hgtests.avspvsq4/install/bin/hg", line 43, in <module>
		 +      dispatch.run()
		 +    File "/usr/lib/python3.6/importlib/util.py", line 233, in
		 __getattribute__
		 +      self.__spec__.loader.exec_module(self)
		 +    File "<frozen importlib._bootstrap_external>", line 678, in
		 exec_module
		 +    File "<frozen importlib._bootstrap>", line 219, in
		 _call_with_frames_removed
		 +    File
		 "/tmp/hgtests.avspvsq4/install/lib/python/mercurial/dispatch.py", line
		 726, in <module>
		 +      class lazyaliasentry(object):
		 +    File
		 "/tmp/hgtests.avspvsq4/install/lib/python/mercurial/dispatch.py", line
		 737, in lazyaliasentry
		 +      @util.propertycache
		 +    File "/usr/lib/python3.6/importlib/util.py", line 233, in
		 __getattribute__
		 +      self.__spec__.loader.exec_module(self)
		 +    File "<frozen importlib._bootstrap_external>", line 678, in
		 exec_module
		 +    File "<frozen importlib._bootstrap>", line 219, in
		 _call_with_frames_removed
		 +    File "/tmp/hgtests.avspvsq4/install/lib/python/mercurial/util.py",
		 line 3473, in <module>
		 +      f=procutil.stderr,
		 +    File "/usr/lib/python3.6/importlib/util.py", line 233, in
		 __getattribute__
		 +      self.__spec__.loader.exec_module(self)
		 +    File "<frozen importlib._bootstrap_external>", line 678, in
		 exec_module
		 +    File "<frozen importlib._bootstrap>", line 219, in
		 _call_with_frames_removed
		 +    File
		 "/tmp/hgtests.avspvsq4/install/lib/python/mercurial/utils/procutil.py",
		 line 127, in <module>
		 +      stdin = sys.stdin.buffer
		 +  AttributeError: 'NoneType' object has no attribute 'buffer'
		 +  [1]

		  server lifecycle
		   ----------------

Diff Detail

Repository
rHG Mercurial
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

pulkit created this revision.Dec 2 2020, 1:07 PM
Alphare accepted this revision.Dec 7 2020, 4:45 AM
mharbison72 accepted this revision.Dec 10 2020, 12:03 AM
This revision is now accepted and ready to land.Dec 10 2020, 12:03 AM