Spaces:
Runtime error
Runtime error
import os | |
from unittest.mock import patch | |
import pytest | |
from ui.lib import files | |
from ui.lib.config import AUDIO_FORMATS | |
def mock_dirs(tmp_path): | |
"""Create temporary input and output directories""" | |
inputs_dir = tmp_path / "inputs" | |
outputs_dir = tmp_path / "outputs" | |
inputs_dir.mkdir() | |
outputs_dir.mkdir() | |
with ( | |
patch("ui.lib.files.INPUTS_DIR", str(inputs_dir)), | |
patch("ui.lib.files.OUTPUTS_DIR", str(outputs_dir)), | |
): | |
yield inputs_dir, outputs_dir | |
def test_list_input_files_empty(mock_dirs): | |
"""Test listing input files from empty directory""" | |
assert files.list_input_files() == [] | |
def test_list_input_files(mock_dirs): | |
"""Test listing input files with various files""" | |
inputs_dir, _ = mock_dirs | |
# Create test files | |
(inputs_dir / "test1.txt").write_text("content1") | |
(inputs_dir / "test2.txt").write_text("content2") | |
(inputs_dir / "nottext.pdf").write_text("should not be listed") | |
result = files.list_input_files() | |
assert len(result) == 2 | |
assert "test1.txt" in result | |
assert "test2.txt" in result | |
assert "nottext.pdf" not in result | |
def test_list_output_files_empty(mock_dirs): | |
"""Test listing output files from empty directory""" | |
assert files.list_output_files() == [] | |
def test_list_output_files(mock_dirs): | |
"""Test listing output files with various formats""" | |
_, outputs_dir = mock_dirs | |
# Create test files for each format | |
for fmt in AUDIO_FORMATS: | |
(outputs_dir / f"test.{fmt}").write_text("dummy content") | |
(outputs_dir / "test.txt").write_text("should not be listed") | |
result = files.list_output_files() | |
assert len(result) == len(AUDIO_FORMATS) | |
for fmt in AUDIO_FORMATS: | |
assert any(f".{fmt}" in file for file in result) | |
def test_read_text_file_empty_filename(mock_dirs): | |
"""Test reading with empty filename""" | |
assert files.read_text_file("") == "" | |
def test_read_text_file_nonexistent(mock_dirs): | |
"""Test reading nonexistent file""" | |
assert files.read_text_file("nonexistent.txt") == "" | |
def test_read_text_file_success(mock_dirs): | |
"""Test successful file reading""" | |
inputs_dir, _ = mock_dirs | |
content = "Test content\nMultiple lines" | |
(inputs_dir / "test.txt").write_text(content) | |
assert files.read_text_file("test.txt") == content | |
def test_save_text_empty(mock_dirs): | |
"""Test saving empty text""" | |
assert files.save_text("") is None | |
assert files.save_text(" ") is None | |
def test_save_text_auto_filename(mock_dirs): | |
"""Test saving text with auto-generated filename""" | |
inputs_dir, _ = mock_dirs | |
# First save | |
filename1 = files.save_text("content1") | |
assert filename1 == "input_1.txt" | |
assert (inputs_dir / filename1).read_text() == "content1" | |
# Second save | |
filename2 = files.save_text("content2") | |
assert filename2 == "input_2.txt" | |
assert (inputs_dir / filename2).read_text() == "content2" | |
def test_save_text_custom_filename(mock_dirs): | |
"""Test saving text with custom filename""" | |
inputs_dir, _ = mock_dirs | |
filename = files.save_text("content", "custom.txt") | |
assert filename == "custom.txt" | |
assert (inputs_dir / filename).read_text() == "content" | |
def test_save_text_duplicate_filename(mock_dirs): | |
"""Test saving text with duplicate filename""" | |
inputs_dir, _ = mock_dirs | |
# First save | |
filename1 = files.save_text("content1", "test.txt") | |
assert filename1 == "test.txt" | |
# Save with same filename | |
filename2 = files.save_text("content2", "test.txt") | |
assert filename2 == "test_1.txt" | |
assert (inputs_dir / "test.txt").read_text() == "content1" | |
assert (inputs_dir / "test_1.txt").read_text() == "content2" | |
def test_delete_all_input_files(mock_dirs): | |
"""Test deleting all input files""" | |
inputs_dir, _ = mock_dirs | |
# Create test files | |
(inputs_dir / "test1.txt").write_text("content1") | |
(inputs_dir / "test2.txt").write_text("content2") | |
(inputs_dir / "keep.pdf").write_text("should not be deleted") | |
assert files.delete_all_input_files() is True | |
remaining_files = list(inputs_dir.iterdir()) | |
assert len(remaining_files) == 1 | |
assert remaining_files[0].name == "keep.pdf" | |
def test_delete_all_output_files(mock_dirs): | |
"""Test deleting all output files""" | |
_, outputs_dir = mock_dirs | |
# Create test files | |
for fmt in AUDIO_FORMATS: | |
(outputs_dir / f"test.{fmt}").write_text("dummy content") | |
(outputs_dir / "keep.txt").write_text("should not be deleted") | |
assert files.delete_all_output_files() is True | |
remaining_files = list(outputs_dir.iterdir()) | |
assert len(remaining_files) == 1 | |
assert remaining_files[0].name == "keep.txt" | |
def test_process_uploaded_file_empty_path(mock_dirs): | |
"""Test processing empty file path""" | |
assert files.process_uploaded_file("") is False | |
def test_process_uploaded_file_invalid_extension(mock_dirs, tmp_path): | |
"""Test processing file with invalid extension""" | |
test_file = tmp_path / "test.pdf" | |
test_file.write_text("content") | |
assert files.process_uploaded_file(str(test_file)) is False | |
def test_process_uploaded_file_success(mock_dirs, tmp_path): | |
"""Test successful file upload processing""" | |
inputs_dir, _ = mock_dirs | |
# Create source file | |
source_file = tmp_path / "test.txt" | |
source_file.write_text("test content") | |
assert files.process_uploaded_file(str(source_file)) is True | |
assert (inputs_dir / "test.txt").read_text() == "test content" | |
def test_process_uploaded_file_duplicate(mock_dirs, tmp_path): | |
"""Test processing file with duplicate name""" | |
inputs_dir, _ = mock_dirs | |
# Create existing file | |
(inputs_dir / "test.txt").write_text("existing content") | |
# Create source file | |
source_file = tmp_path / "test.txt" | |
source_file.write_text("new content") | |
assert files.process_uploaded_file(str(source_file)) is True | |
assert (inputs_dir / "test.txt").read_text() == "existing content" | |
assert (inputs_dir / "test_1.txt").read_text() == "new content" | |