You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
4.1 KiB
Python
122 lines
4.1 KiB
Python
import os, sys, importlib, glob, inspect, itertools
|
|
|
|
from ffx.track_type import TrackType
|
|
|
|
from ffx.track_descriptor import TrackDescriptor
|
|
from ffx.media_descriptor import MediaDescriptor
|
|
|
|
from .basename_combinator import BasenameCombinator
|
|
|
|
from .indicator_combinator import IndicatorCombinator
|
|
from .label_combinator import LabelCombinator
|
|
from .title_combinator import TitleCombinator
|
|
from .site_combinator import SiteCombinator
|
|
|
|
|
|
class BasenameCombinator0(BasenameCombinator):
|
|
"""base_indicator"""
|
|
|
|
VARIANT = 'B0'
|
|
|
|
# def __init__(self, SubCombinators: dict = {}, context = None):
|
|
def __init__(self, context = None):
|
|
self._context = context
|
|
self._logger = context['logger']
|
|
self._reportLogger = context['report_logger']
|
|
|
|
def getVariant(self):
|
|
return BasenameCombinator0.VARIANT
|
|
|
|
def getPayload(self, indicator = '', label = ''):
|
|
|
|
basename = BasenameCombinator.BASENAME
|
|
expectedBasename = label if label else BasenameCombinator.BASENAME
|
|
|
|
if indicator:
|
|
basename += f"_{indicator}"
|
|
expectedBasename += f"_{indicator}"
|
|
|
|
return {'basename': basename,
|
|
'label': label,
|
|
'expectedBasename': expectedBasename}
|
|
|
|
# testParameterBasename = yieldObj['payload']['basename']
|
|
# testParameterExtension = 'mkv'
|
|
# testParameterFilename = f"{testParameterBasename}.{testParameterExtension}"
|
|
#
|
|
# #TODO: alles in payload verpacken
|
|
# testParameterLabel = yieldObj['payload']['label']
|
|
# testExpectedExtension = 'webm'
|
|
# testExpectedFilename = f"{testParameterBasename}.{testExpectedExtension}"
|
|
|
|
|
|
def assertFunc(self, indicator = '', label = ''):
|
|
|
|
def f(testObj: dict = {}):
|
|
|
|
if not 'filenames' in testObj.keys():
|
|
raise KeyError("testObj does not contain key 'filenames'")
|
|
|
|
fNames = testObj['filenames']
|
|
|
|
assert len(fNames) == 1, "More than one result file was created"
|
|
|
|
resultFilename = fNames[0]
|
|
|
|
fTokens = resultFilename.split('.')
|
|
|
|
resultBasename = '.'.join(fTokens[:-1])
|
|
resultExtension = fTokens[-1]
|
|
|
|
if not indicator and not label:
|
|
|
|
assert resultBasename == BasenameCombinator.BASENAME, f"Result basename is not {BasenameCombinator.BASENAME}"
|
|
if not indicator and label:
|
|
assert resultBasename == label, f"Result basename is not {label}"
|
|
if indicator and not label:
|
|
assert resultBasename == f"{BasenameCombinator.BASENAME}_{indicator}", f"Result basename is not {BasenameCombinator.BASENAME}_{indicator}"
|
|
if indicator and label:
|
|
assert resultBasename == f"{label}_{indicator}", f"Result basename is not {label}_{indicator}"
|
|
|
|
return f
|
|
|
|
|
|
def shouldFail(self):
|
|
return False
|
|
|
|
def getYield(self):
|
|
|
|
ic = IndicatorCombinator(self._context)
|
|
|
|
for L in LabelCombinator.getAllClassReferences():
|
|
for i in ic.getYield():
|
|
# for S in SiteCombinator.getAllClassReferences():
|
|
# for T in TitleCombinator.getAllClassReferences():
|
|
#
|
|
|
|
l = L(self._context)
|
|
|
|
indicator = i['indicator']
|
|
indicatorVariant = i['variant']
|
|
|
|
yieldObj = {}
|
|
|
|
yieldObj['identifier'] = self.getIdentifier()
|
|
|
|
yieldObj['variants'] = [self.getVariant(),
|
|
l.getVariant(),
|
|
indicatorVariant]
|
|
|
|
yieldObj['payload'] = self.getPayload(indicator = indicator,
|
|
label = l.getPayload())
|
|
|
|
yieldObj['assertSelectors'] = ['B', 'L', 'I']
|
|
|
|
yieldObj['assertFuncs'] = [self.assertFunc(indicator, l.getPayload()), l.assertFunc, ic.assertFunc]
|
|
|
|
yieldObj['shouldFail'] = (self.shouldFail()
|
|
| l.shouldFail()
|
|
| ic.shouldFail())
|
|
|
|
yield yieldObj
|