| Index: tools/telemetry/third_party/coverage/tests/helpers.py
|
| diff --git a/tools/telemetry/third_party/coverage/tests/helpers.py b/tools/telemetry/third_party/coverage/tests/helpers.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..aa094bc1621043e2088f3aa03efdf56fad053d45
|
| --- /dev/null
|
| +++ b/tools/telemetry/third_party/coverage/tests/helpers.py
|
| @@ -0,0 +1,52 @@
|
| +# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
|
| +# For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt
|
| +
|
| +"""Helpers for coverage.py tests."""
|
| +
|
| +import subprocess
|
| +
|
| +
|
| +def run_command(cmd):
|
| + """Run a command in a sub-process.
|
| +
|
| + Returns the exit status code and the combined stdout and stderr.
|
| +
|
| + """
|
| + proc = subprocess.Popen(
|
| + cmd, shell=True,
|
| + stdin=subprocess.PIPE, stdout=subprocess.PIPE,
|
| + stderr=subprocess.STDOUT
|
| + )
|
| + output, _ = proc.communicate()
|
| + status = proc.returncode
|
| +
|
| + # Get the output, and canonicalize it to strings with newlines.
|
| + if not isinstance(output, str):
|
| + output = output.decode('utf-8')
|
| + output = output.replace('\r', '')
|
| +
|
| + return status, output
|
| +
|
| +
|
| +class CheckUniqueFilenames(object):
|
| + """Asserts the uniqueness of file names passed to a function."""
|
| + def __init__(self, wrapped):
|
| + self.filenames = set()
|
| + self.wrapped = wrapped
|
| +
|
| + @classmethod
|
| + def hook(cls, cov, method_name):
|
| + """Replace a method with our checking wrapper."""
|
| + method = getattr(cov, method_name)
|
| + hook = cls(method)
|
| + setattr(cov, method_name, hook.wrapper)
|
| + return hook
|
| +
|
| + def wrapper(self, filename, *args, **kwargs):
|
| + """The replacement method. Check that we don't have dupes."""
|
| + assert filename not in self.filenames, (
|
| + "File name %r passed to %r twice" % (filename, self.wrapped)
|
| + )
|
| + self.filenames.add(filename)
|
| + ret = self.wrapped(filename, *args, **kwargs)
|
| + return ret
|
|
|