Add plan-only script regression test
This commit is contained in:
@@ -371,6 +371,116 @@ class DumasH3LongVideosHelperTests(unittest.TestCase):
|
|||||||
self.assertIn("Jon (navy overalls)", shot)
|
self.assertIn("Jon (navy overalls)", shot)
|
||||||
self.assertIn("Becca (green coat)", shot)
|
self.assertIn("Becca (green coat)", shot)
|
||||||
|
|
||||||
|
def test_plan_only_returns_joined_generations_on_script_socket_with_anchor_override(self):
|
||||||
|
module = self.module
|
||||||
|
node = module.H3LongVideos()
|
||||||
|
|
||||||
|
class _Clip:
|
||||||
|
def tokenize(self, text):
|
||||||
|
return text
|
||||||
|
|
||||||
|
def encode_from_tokens_scheduled(self, tokens):
|
||||||
|
return tokens
|
||||||
|
|
||||||
|
class _TorchStub:
|
||||||
|
@staticmethod
|
||||||
|
def zeros(shape):
|
||||||
|
return ("zeros", shape)
|
||||||
|
|
||||||
|
original_torch = module.torch
|
||||||
|
original_vram_gb = module.vram_gb
|
||||||
|
original_dit_resident_gb = module.dit_resident_gb
|
||||||
|
original_lora_overhead_gb = module.lora_overhead_gb
|
||||||
|
original_check_vae_wiring = module.check_vae_wiring
|
||||||
|
original_check_text_encoder = module.check_text_encoder
|
||||||
|
original_apply_h3_model_sampling = module.apply_h3_model_sampling
|
||||||
|
original_sla_pairing = module.sla_pairing
|
||||||
|
original_lora_hint_notes = module.lora_hint_notes
|
||||||
|
original_schedule_balance_note = module.schedule_balance_note
|
||||||
|
original_kernel_backend_note = module.kernel_backend_note
|
||||||
|
original_audio_scale_note = module.audio_scale_note
|
||||||
|
original_quant_accel_note = module.quant_accel_note
|
||||||
|
original_lora_active = module.lora_active
|
||||||
|
original_resolve_shot_frames = module.resolve_shot_frames
|
||||||
|
original_plan_beat_frames = module.plan_beat_frames
|
||||||
|
original_dialogue_fit_warnings = module.dialogue_fit_warnings
|
||||||
|
original_dialogue_filler_warnings = module.dialogue_filler_warnings
|
||||||
|
original_distribute_generations = module.distribute_generations
|
||||||
|
original_continuity_warnings = module.continuity_warnings
|
||||||
|
original_empty_av_latent = module._empty_av_latent
|
||||||
|
try:
|
||||||
|
module.torch = _TorchStub()
|
||||||
|
module.vram_gb = lambda: (0.0, 0.0)
|
||||||
|
module.dit_resident_gb = lambda _model: 0.0
|
||||||
|
module.lora_overhead_gb = lambda _model: 0.0
|
||||||
|
module.check_vae_wiring = lambda *_args, **_kwargs: None
|
||||||
|
module.check_text_encoder = lambda *_args, **_kwargs: None
|
||||||
|
module.apply_h3_model_sampling = lambda model, *_args, **_kwargs: (model, "")
|
||||||
|
module.sla_pairing = lambda *_args, **_kwargs: ("", False, "")
|
||||||
|
module.lora_hint_notes = lambda *_args, **_kwargs: []
|
||||||
|
module.schedule_balance_note = lambda *_args, **_kwargs: ""
|
||||||
|
module.kernel_backend_note = lambda *_args, **_kwargs: ""
|
||||||
|
module.audio_scale_note = lambda *_args, **_kwargs: ""
|
||||||
|
module.quant_accel_note = lambda *_args, **_kwargs: ""
|
||||||
|
module.lora_active = lambda _model: False
|
||||||
|
module.resolve_shot_frames = lambda *_args, **_kwargs: (73, "")
|
||||||
|
module.plan_beat_frames = lambda beats, fps, budget, per_beat=True: ([73] * len(beats), [])
|
||||||
|
module.dialogue_fit_warnings = lambda *_args, **_kwargs: []
|
||||||
|
module.dialogue_filler_warnings = lambda *_args, **_kwargs: []
|
||||||
|
module.distribute_generations = lambda anchor, beats, *_args, **_kwargs: [
|
||||||
|
f"[Generation 1] {anchor}. {beats[0]}",
|
||||||
|
f"[Generation 2] {anchor}. {beats[1]}",
|
||||||
|
]
|
||||||
|
module.continuity_warnings = lambda _gens: []
|
||||||
|
module._empty_av_latent = lambda *_args, **_kwargs: ({"samples": "latent"},)
|
||||||
|
|
||||||
|
result = node.run(
|
||||||
|
model=object(),
|
||||||
|
clip=_Clip(),
|
||||||
|
vae=object(),
|
||||||
|
audio_vae=object(),
|
||||||
|
prompt="Francine stands alone.\n\nFrancine and Frankie walk together.",
|
||||||
|
resolution="16:9",
|
||||||
|
steps=20,
|
||||||
|
cfg=1.0,
|
||||||
|
sampler_name="res_multistep",
|
||||||
|
scheduler="simple",
|
||||||
|
seed=1,
|
||||||
|
anchor_override="editorial room, soft practical lighting",
|
||||||
|
character_memory="Francine = white top\nFrankie = black jacket",
|
||||||
|
plan_only=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
result[3],
|
||||||
|
"[Generation 1] editorial room, soft practical lighting. Francine stands alone.\n---\n"
|
||||||
|
"[Generation 2] editorial room, soft practical lighting. Francine and Frankie walk together.",
|
||||||
|
)
|
||||||
|
self.assertIn("2 beat(s)", result[2])
|
||||||
|
self.assertIn("2 shot(s)", result[2])
|
||||||
|
finally:
|
||||||
|
module.torch = original_torch
|
||||||
|
module.vram_gb = original_vram_gb
|
||||||
|
module.dit_resident_gb = original_dit_resident_gb
|
||||||
|
module.lora_overhead_gb = original_lora_overhead_gb
|
||||||
|
module.check_vae_wiring = original_check_vae_wiring
|
||||||
|
module.check_text_encoder = original_check_text_encoder
|
||||||
|
module.apply_h3_model_sampling = original_apply_h3_model_sampling
|
||||||
|
module.sla_pairing = original_sla_pairing
|
||||||
|
module.lora_hint_notes = original_lora_hint_notes
|
||||||
|
module.schedule_balance_note = original_schedule_balance_note
|
||||||
|
module.kernel_backend_note = original_kernel_backend_note
|
||||||
|
module.audio_scale_note = original_audio_scale_note
|
||||||
|
module.quant_accel_note = original_quant_accel_note
|
||||||
|
module.lora_active = original_lora_active
|
||||||
|
module.resolve_shot_frames = original_resolve_shot_frames
|
||||||
|
module.plan_beat_frames = original_plan_beat_frames
|
||||||
|
module.dialogue_fit_warnings = original_dialogue_fit_warnings
|
||||||
|
module.dialogue_filler_warnings = original_dialogue_filler_warnings
|
||||||
|
module.distribute_generations = original_distribute_generations
|
||||||
|
module.continuity_warnings = original_continuity_warnings
|
||||||
|
module._empty_av_latent = original_empty_av_latent
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|||||||
Reference in New Issue
Block a user