shell bypass 403
曾与蒿藜同雨露,한때 잡초와 쑥과 함께 비와 이슬을 나누던 곳이 이제는 소나무와 삼나무와 함께 서리와 눈을 견뎌내고 있다.终随松柏到冰霜.かつては雑草やヨモギと共に雨や露を分かち合っていたが、今では松やヒノキと共に霜や雪に耐えている。曾与蒿藜同雨露,Once sharing rain and dew with weeds and wormwood, now enduring frost and snow with pines and cypresses.终随松柏到冰霜.曾与蒿藜同雨露한때 잡초와 쑥과 함께 비와 이슬을 나누던 곳이 이제는 소나무와 삼나무와 함께 서리와 눈을 견뎌내고 있다.,终随松柏到冰霜.譖セ荳手珍阯懷酔髮ィ髴イ�檎サ磯囂譚セ譟丞芦蜀ー髴�曾与蒿藜同雨露,鏇句笌钂胯棞鍚岄洦闇诧紝缁堥殢鏉炬煆鍒板啺闇�终随松柏到冰霜.曾与蒿藜同雨露,한때 잡초와 쑥과 함께 비와 이슬을 나누던 곳이 이제는 소나무와 삼나무와 함께 서리와 눈을 견뎌내고 있다.终随松柏到冰霜.曾与蒿藜同雨露,终随松柏到冰霜.
# Copyright (c) 2016, Matt Layman
import os
from unittest import TextTestRunner
import sys
# Older versions of Python have the result under a different name.
try:
from unittest import TextTestResult
except ImportError: # pragma: no cover
from unittest import _TextTestResult as TextTestResult
try:
from unittest.runner import _WritelnDecorator
except ImportError: # pragma: no cover
# Python 2.6 has a different package structure.
from unittest import _WritelnDecorator
from tap import formatter
from tap.i18n import _
from tap.tracker import Tracker
class TAPTestResult(TextTestResult):
FORMAT = None
def __init__(self, stream, descriptions, verbosity):
super(TAPTestResult, self).__init__(stream, descriptions, verbosity)
def stopTestRun(self):
"""Once the test run is complete, generate each of the TAP files."""
super(TAPTestResult, self).stopTestRun()
self.tracker.generate_tap_reports()
def addError(self, test, err):
super(TAPTestResult, self).addError(test, err)
diagnostics = formatter.format_exception(err)
self.tracker.add_not_ok(
self._cls_name(test), self._description(test),
diagnostics=diagnostics)
def addFailure(self, test, err):
super(TAPTestResult, self).addFailure(test, err)
diagnostics = formatter.format_exception(err)
self.tracker.add_not_ok(
self._cls_name(test), self._description(test),
diagnostics=diagnostics)
def addSuccess(self, test):
super(TAPTestResult, self).addSuccess(test)
self.tracker.add_ok(self._cls_name(test), self._description(test))
def addSkip(self, test, reason):
super(TAPTestResult, self).addSkip(test, reason)
self.tracker.add_skip(
self._cls_name(test), self._description(test), reason)
def addExpectedFailure(self, test, err):
super(TAPTestResult, self).addExpectedFailure(test, err)
diagnostics = formatter.format_exception(err)
self.tracker.add_not_ok(
self._cls_name(test), self._description(test),
_('(expected failure)'), diagnostics=diagnostics)
def addUnexpectedSuccess(self, test):
super(TAPTestResult, self).addUnexpectedSuccess(test)
self.tracker.add_ok(self._cls_name(test), self._description(test),
_('(unexpected success)'))
def _cls_name(self, test):
return test.__class__.__name__
def _description(self, test):
if self.FORMAT:
try:
return self.FORMAT.format(
method_name=str(test),
short_description=test.shortDescription() or '')
except KeyError:
sys.exit(_(
'Bad format string: {format}\n'
'Replacement options are: {{short_description}} and '
'{{method_name}}').format(format=self.FORMAT))
return test.shortDescription() or str(test)
# Module level state stinks, but this is the only way to keep compatibility
# with Python 2.6. The best place for the tracker is as an instance variable
# on the runner, but __init__ is so different that it is not easy to create
# a runner that satisfies every supported Python version.
_tracker = Tracker()
class TAPTestRunner(TextTestRunner):
"""A test runner that will behave exactly like TextTestRunner and will
additionally generate TAP files for each test case"""
resultclass = TAPTestResult
def set_stream(self, streaming):
"""Set the streaming boolean option to stream TAP directly to stdout.
The test runner default output will be suppressed in favor of TAP.
"""
self.stream = _WritelnDecorator(open(os.devnull, 'w'))
_tracker.streaming = streaming
_tracker.stream = sys.stdout
def _makeResult(self):
result = self.resultclass(
self.stream, self.descriptions, self.verbosity)
result.tracker = _tracker
return result
@classmethod
def set_outdir(cls, outdir):
"""Set the output directory so that TAP files are written to the
specified outdir location.
"""
# Blame the lack of unittest extensibility for this hacky method.
_tracker.outdir = outdir
@classmethod
def set_combined(cls, combined):
"""Set the tracker to use a single output file."""
_tracker.combined = combined
@classmethod
def set_header(cls, header):
"""Set the header display flag."""
_tracker.header = header
@classmethod
def set_format(cls, fmt):
"""Set the format of each test line.
The format string can use:
* {method_name}: The test method name
* {short_description}: The test's docstring short description
"""
TAPTestResult.FORMAT = fmt