click-textual
Javanaut 11 months ago
parent 5c47f193d4
commit 3f0efab49b

@ -7,6 +7,9 @@ class DispositionCombination2():
self._logger = context['logger'] self._logger = context['logger']
self._reportLogger = context['report_logger'] self._reportLogger = context['report_logger']
def getIdentifier(self):
return self._combinationIdentifier
@staticmethod @staticmethod
def list(): def list():
basePath = os.path.dirname(__file__) basePath = os.path.dirname(__file__)

@ -6,8 +6,11 @@ from .disposition_combination_2 import DispositionCombination2
class DispositionCombination20(DispositionCombination2): class DispositionCombination20(DispositionCombination2):
COMBINATION_IDENTIFIER = 'D00'
def __init__(self, context): def __init__(self, context):
super().__init__(context) super().__init__(context)
self._combinationIdentifier = DispositionCombination20.COMBINATION_IDENTIFIER
def getDispositionTuple(self): def getDispositionTuple(self):
return (set(), # 0 return (set(), # 0

@ -6,8 +6,11 @@ from .disposition_combination_2 import DispositionCombination2
class DispositionCombination21(DispositionCombination2): class DispositionCombination21(DispositionCombination2):
COMBINATION_IDENTIFIER = 'D10'
def __init__(self, context): def __init__(self, context):
super().__init__(context) super().__init__(context)
self._combinationIdentifier = DispositionCombination21.COMBINATION_IDENTIFIER
def getDispositionTuple(self): def getDispositionTuple(self):
return (set([TrackDisposition.DEFAULT]), # 0 return (set([TrackDisposition.DEFAULT]), # 0

@ -6,8 +6,11 @@ from .disposition_combination_2 import DispositionCombination2
class DispositionCombination22(DispositionCombination2): class DispositionCombination22(DispositionCombination2):
COMBINATION_IDENTIFIER = 'D01'
def __init__(self, context): def __init__(self, context):
super().__init__(context) super().__init__(context)
self._combinationIdentifier = DispositionCombination22.COMBINATION_IDENTIFIER
def getDispositionTuple(self): def getDispositionTuple(self):
return (set(), # 0 return (set(), # 0

@ -6,8 +6,11 @@ from .disposition_combination_2 import DispositionCombination2
class DispositionCombination23(DispositionCombination2): class DispositionCombination23(DispositionCombination2):
COMBINATION_IDENTIFIER = 'D11'
def __init__(self, context): def __init__(self, context):
super().__init__(context) super().__init__(context)
self._combinationIdentifier = DispositionCombination23.COMBINATION_IDENTIFIER
def getDispositionTuple(self): def getDispositionTuple(self):
return (set([TrackDisposition.DEFAULT]), # 0 return (set([TrackDisposition.DEFAULT]), # 0

@ -7,6 +7,9 @@ class DispositionCombination3():
self._logger = context['logger'] self._logger = context['logger']
self._reportLogger = context['report_logger'] self._reportLogger = context['report_logger']
def getIdentifier(self):
return self._combinationIdentifier
@staticmethod @staticmethod
def list(): def list():
basePath = os.path.dirname(__file__) basePath = os.path.dirname(__file__)

@ -6,8 +6,11 @@ from .disposition_combination_3 import DispositionCombination3
class DispositionCombination30(DispositionCombination3): class DispositionCombination30(DispositionCombination3):
COMBINATION_IDENTIFIER = 'D000'
def __init__(self, context): def __init__(self, context):
super().__init__(context) super().__init__(context)
self._combinationIdentifier = DispositionCombination30.COMBINATION_IDENTIFIER
def getDispositionTuple(self): def getDispositionTuple(self):
return (set(), # 0 return (set(), # 0

@ -6,8 +6,11 @@ from .disposition_combination_3 import DispositionCombination3
class DispositionCombination31(DispositionCombination3): class DispositionCombination31(DispositionCombination3):
COMBINATION_IDENTIFIER = 'D100'
def __init__(self, context): def __init__(self, context):
super().__init__(context) super().__init__(context)
self._combinationIdentifier = DispositionCombination31.COMBINATION_IDENTIFIER
def getDispositionTuple(self): def getDispositionTuple(self):
return (set([TrackDisposition.DEFAULT]), # 0 return (set([TrackDisposition.DEFAULT]), # 0

@ -6,8 +6,11 @@ from .disposition_combination_3 import DispositionCombination3
class DispositionCombination32(DispositionCombination3): class DispositionCombination32(DispositionCombination3):
COMBINATION_IDENTIFIER = 'D010'
def __init__(self, context): def __init__(self, context):
super().__init__(context) super().__init__(context)
self._combinationIdentifier = DispositionCombination32.COMBINATION_IDENTIFIER
def getDispositionTuple(self): def getDispositionTuple(self):
return (set(), # 0 return (set(), # 0

@ -6,8 +6,11 @@ from .disposition_combination_3 import DispositionCombination3
class DispositionCombination33(DispositionCombination3): class DispositionCombination33(DispositionCombination3):
COMBINATION_IDENTIFIER = 'D001'
def __init__(self, context): def __init__(self, context):
super().__init__(context) super().__init__(context)
self._combinationIdentifier = DispositionCombination33.COMBINATION_IDENTIFIER
def getDispositionTuple(self): def getDispositionTuple(self):
return (set(), # 0 return (set(), # 0

@ -6,8 +6,11 @@ from .disposition_combination_3 import DispositionCombination3
class DispositionCombination34(DispositionCombination3): class DispositionCombination34(DispositionCombination3):
COMBINATION_IDENTIFIER = 'D101'
def __init__(self, context): def __init__(self, context):
super().__init__(context) super().__init__(context)
self._combinationIdentifier = DispositionCombination34.COMBINATION_IDENTIFIER
def getDispositionTuple(self): def getDispositionTuple(self):
return (set([TrackDisposition.DEFAULT]), # 0 return (set([TrackDisposition.DEFAULT]), # 0

@ -32,23 +32,29 @@ class Scenario1(Scenario):
# * MediaTags -> asserts # * MediaTags -> asserts
for tci in TrackCombination.list(): for tci in TrackCombination.list():
combinationContext = self._context.copy() # combinationContext = self._context.copy()
combinationContext['use_jellyfin'] = False self._context['use_jellyfin'] = True
combinationContext['use_tmdb'] = False self._context['use_tmdb'] = False
combinationContext['use_pattern'] = False self._context['use_pattern'] = False
trackCombination = TrackCombination.getClassReference(tci)(combinationContext) trackCombination = TrackCombination.getClassReference(tci)(self._context)
subcombinations = trackCombination.getSubcombinations() subcombinations = trackCombination.getSubcombinations()
if not subcombinations is None: if not subcombinations is None:
for trackDescriptors, evaluateFunc, shouldFail in subcombinations: for trackDescriptors, evaluateFunc, shouldFail, combinationIdentifier in subcombinations:
kwargs = {} kwargs = {}
kwargs[MediaDescriptor.CONTEXT_KEY] = self._context kwargs[MediaDescriptor.CONTEXT_KEY] = self._context
kwargs[MediaDescriptor.TRACK_DESCRIPTOR_LIST_KEY] = trackDescriptors kwargs[MediaDescriptor.TRACK_DESCRIPTOR_LIST_KEY] = trackDescriptors
self._logger.debug(f"src track dispositions {[d.getDispositionSet() for d in trackDescriptors]}")
sourceMediaDescriptor = MediaDescriptor(**kwargs) sourceMediaDescriptor = MediaDescriptor(**kwargs)
sourceMediaDescriptor.reindexSubIndices() sourceMediaDescriptor.reindexSubIndices()
# sourceMediaDescriptor.reindexIndices()
# Phase 1: Setup source files # Phase 1: Setup source files
# TODO:
# src track dispositions [set(), set(), {<TrackDisposition.DEFAULT: {'name': 'default', 'index': 0}>}, set(), set()]
# vs
# Stream #0:4: Subtitle: ass (ssa) (default)
mediaFilePath = createMediaTestFile(mediaDescriptor=sourceMediaDescriptor, directory=self._testDirectory) mediaFilePath = createMediaTestFile(mediaDescriptor=sourceMediaDescriptor, directory=self._testDirectory)
# Phase 2: Prepare database # Phase 2: Prepare database
@ -60,11 +66,14 @@ class Scenario1(Scenario):
mediaFilePath, mediaFilePath,
'--no-prompt'] '--no-prompt']
self._logger.debug(f"Scenario1.run(): sub={trackCombination.getIdentifier()} test sequence: {commandSequence}") if not self._context['use_jellyfin']:
commandSequence += ['--no-jellyfin']
self._logger.debug(f"Scenario1.run(): sub={trackCombination.getIdentifier()},{combinationIdentifier} test sequence: {commandSequence}")
out, err, rc = executeProcess(commandSequence, directory = self._testDirectory) out, err, rc = executeProcess(commandSequence, directory = self._testDirectory)
self._logger.debug(f"Scenario1.run(): sub={trackCombination.getIdentifier()} process returned: {rc}") self._logger.debug(f"Scenario1.run(): sub={trackCombination.getIdentifier()},{combinationIdentifier} process returned: {rc}")
# if out: # if out:
# self._logger.debug(f"Scenario1.run(): process output: {out}") # self._logger.debug(f"Scenario1.run(): process output: {out}")
@ -78,7 +87,8 @@ class Scenario1(Scenario):
if rc: if rc:
# Stuck with prompt: More than one default subtitle stream detected! Please select stream: # Stuck with prompt: More than one default subtitle stream detected! Please select stream:
# TODO: Catch prompt is add option to fail at prompt # TODO: Catch prompt is add option to fail at prompt
assert shouldFail, "ffmpeg run didn't fail" assert shouldFail, "ffmpeg run didn't fail" if shouldFail else "ffmpeg run failed"
self._reportLogger.info(f"Scenario 1 sub={trackCombination.getIdentifier()},{combinationIdentifier} test passed")
else: else:
resultFile = os.path.join(self._testDirectory, 'media.webm') resultFile = os.path.join(self._testDirectory, 'media.webm')
@ -98,14 +108,16 @@ class Scenario1(Scenario):
# assert resultMediaTracks[2].getType() == TrackType.AUDIO, f"Stream #2 is not of type audio" # assert resultMediaTracks[2].getType() == TrackType.AUDIO, f"Stream #2 is not of type audio"
self._logger.debug(f"tgt track dispositions {[d.getDispositionSet() for d in resultMediaDescriptor.getSubtitleTracks()]}")
# assert dispositions # assert dispositions
evaluateFunc(resultMediaTracks) evaluateFunc(resultMediaTracks)
self._reportLogger.info(f"Scenario 1 sub={trackCombination.getIdentifier()} test passed") self._reportLogger.info(f"Scenario 1 sub={trackCombination.getIdentifier()},{combinationIdentifier} test passed")
except AssertionError as ae: except AssertionError as ae:
self._reportLogger.error(f"Scenario 1 sub={trackCombination.getIdentifier()} test failed ({ae})") self._reportLogger.error(f"Scenario 1 sub={trackCombination.getIdentifier()},{combinationIdentifier} test failed ({ae})")

@ -61,4 +61,5 @@ class TrackCombination3(TrackCombination):
trackDescriptors = self.getTrackDescriptors(dispositionTuple) trackDescriptors = self.getTrackDescriptors(dispositionTuple)
evaluateFunc = dispositionCombination.evaluateTrackDescriptors # assert function evaluateFunc = dispositionCombination.evaluateTrackDescriptors # assert function
shouldFail = dispositionCombination.shouldFail() # true if this combination should fail shouldFail = dispositionCombination.shouldFail() # true if this combination should fail
yield (trackDescriptors, evaluateFunc, shouldFail) dispositionIdentifier = dispositionCombination.getIdentifier()
yield (trackDescriptors, evaluateFunc, shouldFail, dispositionIdentifier)

Loading…
Cancel
Save