| import io
|
| from comfy_api.input_impl.video_types import (
|
| container_to_output_format,
|
| get_open_write_kwargs,
|
| )
|
| from comfy_api.util import VideoContainer
|
|
|
|
|
| def test_container_to_output_format_empty_string():
|
| """Test that an empty string input returns None. `None` arg allows default auto-detection."""
|
| assert container_to_output_format("") is None
|
|
|
|
|
| def test_container_to_output_format_none():
|
| """Test that None input returns None."""
|
| assert container_to_output_format(None) is None
|
|
|
|
|
| def test_container_to_output_format_comma_separated():
|
| """Test that a comma-separated list returns a valid singular format from the list."""
|
| comma_separated_format = "mp4,mov,m4a"
|
| output_format = container_to_output_format(comma_separated_format)
|
| assert output_format in comma_separated_format
|
|
|
|
|
| def test_container_to_output_format_single():
|
| """Test that a single format string (not comma-separated list) is returned as is."""
|
| assert container_to_output_format("mp4") == "mp4"
|
|
|
|
|
| def test_get_open_write_kwargs_filepath_no_format():
|
| """Test that 'format' kwarg is NOT set when dest is a file path."""
|
| kwargs_auto = get_open_write_kwargs("output.mp4", "mp4", VideoContainer.AUTO)
|
| assert "format" not in kwargs_auto, "Format should not be set for file paths (AUTO)"
|
|
|
| kwargs_specific = get_open_write_kwargs("output.avi", "mp4", "avi")
|
| fail_msg = "Format should not be set for file paths (Specific)"
|
| assert "format" not in kwargs_specific, fail_msg
|
|
|
|
|
| def test_get_open_write_kwargs_base_options_mode():
|
| """Test basic kwargs for file path: mode and movflags."""
|
| kwargs = get_open_write_kwargs("output.mp4", "mp4", VideoContainer.AUTO)
|
| assert kwargs["mode"] == "w", "mode should be set to write"
|
|
|
| fail_msg = "movflags should be set to preserve custom metadata tags"
|
| assert "movflags" in kwargs["options"], fail_msg
|
| assert kwargs["options"]["movflags"] == "use_metadata_tags", fail_msg
|
|
|
|
|
| def test_get_open_write_kwargs_bytesio_auto_format():
|
| """Test kwargs for BytesIO dest with AUTO format."""
|
| dest = io.BytesIO()
|
| container_fmt = "mov,mp4,m4a"
|
| kwargs = get_open_write_kwargs(dest, container_fmt, VideoContainer.AUTO)
|
|
|
| assert kwargs["mode"] == "w"
|
| assert kwargs["options"]["movflags"] == "use_metadata_tags"
|
|
|
| fail_msg = (
|
| "Format should be a valid format from the container's format list when AUTO"
|
| )
|
| assert kwargs["format"] in container_fmt, fail_msg
|
|
|
|
|
| def test_get_open_write_kwargs_bytesio_specific_format():
|
| """Test kwargs for BytesIO dest with a specific single format."""
|
| dest = io.BytesIO()
|
| container_fmt = "avi"
|
| to_fmt = VideoContainer.MP4
|
| kwargs = get_open_write_kwargs(dest, container_fmt, to_fmt)
|
|
|
| assert kwargs["mode"] == "w"
|
| assert kwargs["options"]["movflags"] == "use_metadata_tags"
|
|
|
| fail_msg = "Format should be the specified format (lowercased) when output format is not AUTO"
|
| assert kwargs["format"] == "mp4", fail_msg
|
|
|
|
|
| def test_get_open_write_kwargs_bytesio_specific_format_list():
|
| """Test kwargs for BytesIO dest with a specific comma-separated format."""
|
| dest = io.BytesIO()
|
| container_fmt = "avi"
|
| to_fmt = "mov,mp4,m4a"
|
| kwargs = get_open_write_kwargs(dest, container_fmt, to_fmt)
|
|
|
| assert kwargs["mode"] == "w"
|
| assert kwargs["options"]["movflags"] == "use_metadata_tags"
|
|
|
| fail_msg = "Format should be a valid format from the specified format list when output format is not AUTO"
|
| assert kwargs["format"] in to_fmt, fail_msg
|
|
|