[PATCH V3] posix: update os.popen with subprocess (issue4746)
Rishabh Madan
rishabhmadan96 at gmail.com
Fri Mar 3 21:32:37 UTC 2017
# HG changeset patch
# User Rishabh Madan <rishabhmadan96 at gmail.com>
# Date 1488572534 -19800
# Sat Mar 04 01:52:14 2017 +0530
# Node ID 96bd01e81f0c8402392daa9f41cac72e31cbdc32
# Parent 71f692f1f678d86ffb4f95a3621aacfdaeb96b05
posix: update os.popen with subprocess (issue4746)
While importing a patch, we use a patch tool, say 'patch --merge', and the
patch doesn't merge cleanly, 'patch --merge' will return with exit status 1,
but 'hg import' displays 'abort: patch command failed: exited with status 256'.
This patch replaces the deprecated os.popen with subprocess.Popen with
conditional statements for 'r', 'rb' and 'w' mode and raise ValueError otherwise.
diff -r 71f692f1f678 -r 96bd01e81f0c mercurial/posix.py
--- a/mercurial/posix.py Wed Mar 01 20:22:04 2017 +0100
+++ b/mercurial/posix.py Sat Mar 04 01:52:14 2017 +0530
@@ -16,6 +16,7 @@
import re
import select
import stat
+import subprocess
import sys
import tempfile
import unicodedata
@@ -419,7 +420,14 @@
return cmd
def popen(command, mode='r'):
- return os.popen(command, mode)
+ if 'r' in mode:
+ return subprocess.Popen(command, shell=True,
+ stdout=subprocess.PIPE).stdout
+ elif mode == 'w':
+ return subprocess.Popen(command, shell=True,
+ stdin=subprocess.PIPE).stdin
+ else:
+ raise ValueError
def testpid(pid):
'''return False if pid dead, True if running or not sure'''
More information about the Mercurial-devel
mailing list