Update test/3rdparty with the packages required to run the test suite in parallel mode. Change the short command line flag to "-j", matching make.
--HG-- rename : test/3rdparty/testscenarios-0.2/.bzrignore => test/3rdparty/testscenarios-0.4/.bzrignore rename : test/3rdparty/testscenarios-0.2/Apache-2.0 => test/3rdparty/testscenarios-0.4/Apache-2.0 rename : test/3rdparty/testscenarios-0.2/BSD => test/3rdparty/testscenarios-0.4/BSD rename : test/3rdparty/testscenarios-0.2/COPYING => test/3rdparty/testscenarios-0.4/COPYING rename : test/3rdparty/testscenarios-0.2/GOALS => test/3rdparty/testscenarios-0.4/GOALS rename : test/3rdparty/testscenarios-0.2/HACKING => test/3rdparty/testscenarios-0.4/HACKING rename : test/3rdparty/testscenarios-0.2/MANIFEST.in => test/3rdparty/testscenarios-0.4/MANIFEST.in rename : test/3rdparty/testscenarios-0.2/Makefile => test/3rdparty/testscenarios-0.4/Makefile rename : test/3rdparty/testscenarios-0.2/doc/__init__.py => test/3rdparty/testscenarios-0.4/doc/__init__.py rename : test/3rdparty/testscenarios-0.2/doc/example.py => test/3rdparty/testscenarios-0.4/doc/example.py rename : test/3rdparty/testscenarios-0.2/doc/test_sample.py => test/3rdparty/testscenarios-0.4/doc/test_sample.py rename : test/3rdparty/testtools-0.9.12/doc/conf.py => test/3rdparty/testtools-0.9.34/doc/conf.py rename : test/3rdparty/testtools-0.9.12/doc/make.bat => test/3rdparty/testtools-0.9.34/doc/make.bat rename : test/3rdparty/testtools-0.9.12/testtools/_compat2x.py => test/3rdparty/testtools-0.9.34/testtools/_compat2x.py rename : test/3rdparty/testtools-0.9.12/testtools/_spinner.py => test/3rdparty/testtools-0.9.34/testtools/_spinner.py rename : test/3rdparty/testtools-0.9.12/testtools/distutilscmd.py => test/3rdparty/testtools-0.9.34/testtools/distutilscmd.py rename : test/3rdparty/testtools-0.9.12/testtools/monkey.py => test/3rdparty/testtools-0.9.34/testtools/monkey.py rename : test/3rdparty/testtools-0.9.12/testtools/tests/test_monkey.py => test/3rdparty/testtools-0.9.34/testtools/tests/test_monkey.py rename : test/3rdparty/testtools-0.9.12/testtools/tests/test_runtest.py => test/3rdparty/testtools-0.9.34/testtools/tests/test_runtest.py rename : test/3rdparty/testtools-0.9.12/testtools/utils.py => test/3rdparty/testtools-0.9.34/testtools/utils.py
This commit is contained in:
119
test/3rdparty/python-subunit-0.0.16/python/subunit/details.py
vendored
Normal file
119
test/3rdparty/python-subunit-0.0.16/python/subunit/details.py
vendored
Normal file
@@ -0,0 +1,119 @@
|
||||
#
|
||||
# subunit: extensions to Python unittest to get test results from subprocesses.
|
||||
# Copyright (C) 2005 Robert Collins <robertc@robertcollins.net>
|
||||
#
|
||||
# Licensed under either the Apache License, Version 2.0 or the BSD 3-clause
|
||||
# license at the users choice. A copy of both licenses are available in the
|
||||
# project source as Apache-2.0 and BSD. You may not use this file except in
|
||||
# compliance with one of these two licences.
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under these licenses is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# license you chose for the specific language governing permissions and
|
||||
# limitations under that license.
|
||||
#
|
||||
|
||||
"""Handlers for outcome details."""
|
||||
|
||||
from testtools import content, content_type
|
||||
from testtools.compat import _b, BytesIO
|
||||
|
||||
from subunit import chunked
|
||||
|
||||
end_marker = _b("]\n")
|
||||
quoted_marker = _b(" ]")
|
||||
empty = _b('')
|
||||
|
||||
|
||||
class DetailsParser(object):
|
||||
"""Base class/API reference for details parsing."""
|
||||
|
||||
|
||||
class SimpleDetailsParser(DetailsParser):
|
||||
"""Parser for single-part [] delimited details."""
|
||||
|
||||
def __init__(self, state):
|
||||
self._message = _b("")
|
||||
self._state = state
|
||||
|
||||
def lineReceived(self, line):
|
||||
if line == end_marker:
|
||||
self._state.endDetails()
|
||||
return
|
||||
if line[0:2] == quoted_marker:
|
||||
# quoted ] start
|
||||
self._message += line[1:]
|
||||
else:
|
||||
self._message += line
|
||||
|
||||
def get_details(self, style=None):
|
||||
result = {}
|
||||
if not style:
|
||||
# We know that subunit/testtools serialise [] formatted
|
||||
# tracebacks as utf8, but perhaps we need a ReplacingContent
|
||||
# or something like that.
|
||||
result['traceback'] = content.Content(
|
||||
content_type.ContentType("text", "x-traceback",
|
||||
{"charset": "utf8"}),
|
||||
lambda:[self._message])
|
||||
else:
|
||||
if style == 'skip':
|
||||
name = 'reason'
|
||||
else:
|
||||
name = 'message'
|
||||
result[name] = content.Content(
|
||||
content_type.ContentType("text", "plain"),
|
||||
lambda:[self._message])
|
||||
return result
|
||||
|
||||
def get_message(self):
|
||||
return self._message
|
||||
|
||||
|
||||
class MultipartDetailsParser(DetailsParser):
|
||||
"""Parser for multi-part [] surrounded MIME typed chunked details."""
|
||||
|
||||
def __init__(self, state):
|
||||
self._state = state
|
||||
self._details = {}
|
||||
self._parse_state = self._look_for_content
|
||||
|
||||
def _look_for_content(self, line):
|
||||
if line == end_marker:
|
||||
self._state.endDetails()
|
||||
return
|
||||
# TODO error handling
|
||||
field, value = line[:-1].decode('utf8').split(' ', 1)
|
||||
try:
|
||||
main, sub = value.split('/')
|
||||
except ValueError:
|
||||
raise ValueError("Invalid MIME type %r" % value)
|
||||
self._content_type = content_type.ContentType(main, sub)
|
||||
self._parse_state = self._get_name
|
||||
|
||||
def _get_name(self, line):
|
||||
self._name = line[:-1].decode('utf8')
|
||||
self._body = BytesIO()
|
||||
self._chunk_parser = chunked.Decoder(self._body)
|
||||
self._parse_state = self._feed_chunks
|
||||
|
||||
def _feed_chunks(self, line):
|
||||
residue = self._chunk_parser.write(line)
|
||||
if residue is not None:
|
||||
# Line based use always ends on no residue.
|
||||
assert residue == empty, 'residue: %r' % (residue,)
|
||||
body = self._body
|
||||
self._details[self._name] = content.Content(
|
||||
self._content_type, lambda:[body.getvalue()])
|
||||
self._chunk_parser.close()
|
||||
self._parse_state = self._look_for_content
|
||||
|
||||
def get_details(self, for_skip=False):
|
||||
return self._details
|
||||
|
||||
def get_message(self):
|
||||
return None
|
||||
|
||||
def lineReceived(self, line):
|
||||
self._parse_state(line)
|
||||
Reference in New Issue
Block a user