--- a/tools/mach_commands.py
+++ b/tools/mach_commands.py
@@ -198,41 +198,17 @@ class FormatProvider(MachCommandBase):
clang_format_diff = self.locate_or_fetch(fmt_diff, python_script=True)
if not clang_format_diff:
return 1
except urllib2.HTTPError as e:
print("HTTP error {0}: {1}".format(e.code, e.reason))
return 1
- from subprocess import Popen, PIPE
-
- if os.path.exists(".hg"):
- diff_process = Popen(["hg", "diff", "-U0", "-r", ".^",
- "--include", "glob:**.c", "--include", "glob:**.cpp",
- "--include", "glob:**.h",
- "--exclude", "listfile:.clang-format-ignore"], stdout=PIPE)
- else:
- git_process = Popen(["git", "diff", "--no-color", "-U0", "HEAD^"], stdout=PIPE)
- try:
- diff_process = Popen(["filterdiff", "--include=*.h", "--include=*.cpp",
- "--exclude-from-file=.clang-format-ignore"],
- stdin=git_process.stdout, stdout=PIPE)
- except OSError as e:
- if e.errno == errno.ENOENT:
- print("Can't find filterdiff. Please install patchutils.")
- else:
- print("OSError {0}: {1}".format(e.code, e.reason))
- return 1
-
- args = [sys.executable, clang_format_diff, "-p1"]
- if not show:
- args.append("-i")
- cf_process = Popen(args, stdin=diff_process.stdout)
- return cf_process.communicate()[0]
+ return self.run_clang_format_diff(clang_format_diff, show)
def locate_or_fetch(self, root, python_script=False):
import urllib2
import hashlib
bin_sha = {
"Windows": "0cbfc306df48f01bfe804e5e89cef73b3abe8f884fb7a5208f8895897f19ec45c13760787298192bd37de057d0ded091640c7d504438e06ec880f071a38db89c", # noqa: E501
"Linux": "e6da4f6df074bfb15caefcf7767eb5670c02bb4768ba86ae4ab6b35235b53db012900a4f9e9a950ee140158a19532a71f21b986f511826bebc16f2ef83984e57", # noqa: E501
"Darwin": "18000940a11e5ab0c1fe950d4360292216c8e963dd708679c4c5fb8cc845f5919cef3f58a7e092555b8ea6b8d8a809d66153ea6d1e7c226a2c4f2b0b7ad1b2f3", # noqa: E501
@@ -265,16 +241,43 @@ class FormatProvider(MachCommandBase):
return 1
with open(temp, "wb") as fh:
fh.write(data)
fh.close()
os.chmod(temp, os.stat(temp).st_mode | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH)
os.rename(temp, target)
return target
+ def run_clang_format_diff(self, clang_format_diff, show):
+ from subprocess import Popen, PIPE
+
+ if os.path.exists(".hg"):
+ diff_process = Popen(["hg", "diff", "-U0", "-r", ".^",
+ "--include", "glob:**.c", "--include", "glob:**.cpp",
+ "--include", "glob:**.h",
+ "--exclude", "listfile:.clang-format-ignore"], stdout=PIPE)
+ else:
+ git_process = Popen(["git", "diff", "--no-color", "-U0", "HEAD^"], stdout=PIPE)
+ try:
+ diff_process = Popen(["filterdiff", "--include=*.h", "--include=*.cpp",
+ "--exclude-from-file=.clang-format-ignore"],
+ stdin=git_process.stdout, stdout=PIPE)
+ except OSError as e:
+ if e.errno == errno.ENOENT:
+ print("Can't find filterdiff. Please install patchutils.")
+ else:
+ print("OSError {0}: {1}".format(e.code, e.reason))
+ return 1
+
+ args = [sys.executable, clang_format_diff, "-p1"]
+ if not show:
+ args.append("-i")
+ cf_process = Popen(args, stdin=diff_process.stdout)
+ return cf_process.communicate()[0]
+
def mozregression_import():
# Lazy loading of mozregression.
# Note that only the mach_interface module should be used from this file.
try:
import mozregression.mach_interface
except ImportError:
return None