test_filesystem.py 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import os.path
  2. import pytest
  3. from facefusion.common_helper import is_windows
  4. from facefusion.download import conditional_download
  5. from facefusion.filesystem import copy_file, create_directory, filter_audio_paths, filter_image_paths, get_file_size, has_audio, has_image, in_directory, is_audio, is_directory, is_file, is_image, is_video, list_directory, remove_directory, same_file_extension, sanitize_path_for_windows
  6. from .helper import get_test_example_file, get_test_examples_directory, get_test_outputs_directory
  7. @pytest.fixture(scope = 'module', autouse = True)
  8. def before_all() -> None:
  9. conditional_download(get_test_examples_directory(),
  10. [
  11. 'https://github.com/facefusion/facefusion-assets/releases/download/examples-3.0.0/source.jpg',
  12. 'https://github.com/facefusion/facefusion-assets/releases/download/examples-3.0.0/source.mp3',
  13. 'https://github.com/facefusion/facefusion-assets/releases/download/examples-3.0.0/target-240p.mp4'
  14. ])
  15. copy_file(get_test_example_file('source.jpg'), get_test_example_file('söurce.jpg'))
  16. def test_get_file_size() -> None:
  17. assert get_file_size(get_test_example_file('source.jpg')) > 0
  18. assert get_file_size('invalid') == 0
  19. def test_same_file_extension() -> None:
  20. assert same_file_extension([ 'target.jpg', 'output.jpg' ]) is True
  21. assert same_file_extension([ 'target.jpg', 'output.mp4' ]) is False
  22. def test_is_file() -> None:
  23. assert is_file(get_test_example_file('source.jpg')) is True
  24. assert is_file(get_test_examples_directory()) is False
  25. assert is_file('invalid') is False
  26. def test_is_directory() -> None:
  27. assert is_directory(get_test_examples_directory()) is True
  28. assert is_directory(get_test_example_file('source.jpg')) is False
  29. assert is_directory('invalid') is False
  30. def test_in_directory() -> None:
  31. assert in_directory(get_test_example_file('source.jpg')) is True
  32. assert in_directory('source.jpg') is False
  33. assert in_directory('invalid') is False
  34. def test_is_audio() -> None:
  35. assert is_audio(get_test_example_file('source.mp3')) is True
  36. assert is_audio(get_test_example_file('source.jpg')) is False
  37. assert is_audio('invalid') is False
  38. def test_has_audio() -> None:
  39. assert has_audio([ get_test_example_file('source.mp3') ]) is True
  40. assert has_audio([ get_test_example_file('source.mp3'), get_test_example_file('source.jpg') ]) is True
  41. assert has_audio([ get_test_example_file('source.jpg'), get_test_example_file('source.jpg') ]) is False
  42. assert has_audio([ 'invalid' ]) is False
  43. def test_is_image() -> None:
  44. assert is_image(get_test_example_file('source.jpg')) is True
  45. assert is_image(get_test_example_file('target-240p.mp4')) is False
  46. assert is_image('invalid') is False
  47. def test_has_image() -> None:
  48. assert has_image([ get_test_example_file('source.jpg') ]) is True
  49. assert has_image([ get_test_example_file('source.jpg'), get_test_example_file('source.mp3') ]) is True
  50. assert has_image([ get_test_example_file('source.mp3'), get_test_example_file('source.mp3') ]) is False
  51. assert has_image([ 'invalid' ]) is False
  52. def test_is_video() -> None:
  53. assert is_video(get_test_example_file('target-240p.mp4')) is True
  54. assert is_video(get_test_example_file('source.jpg')) is False
  55. assert is_video('invalid') is False
  56. def test_filter_audio_paths() -> None:
  57. assert filter_audio_paths([ get_test_example_file('source.jpg'), get_test_example_file('source.mp3') ]) == [ get_test_example_file('source.mp3') ]
  58. assert filter_audio_paths([ get_test_example_file('source.jpg'), get_test_example_file('source.jpg') ]) == []
  59. assert filter_audio_paths([ 'invalid' ]) == []
  60. def test_filter_image_paths() -> None:
  61. assert filter_image_paths([ get_test_example_file('source.jpg'), get_test_example_file('source.mp3') ]) == [ get_test_example_file('source.jpg') ]
  62. assert filter_image_paths([ get_test_example_file('source.mp3'), get_test_example_file('source.mp3') ]) == []
  63. assert filter_audio_paths([ 'invalid' ]) == []
  64. def test_sanitize_path_for_windows() -> None:
  65. if is_windows():
  66. assert sanitize_path_for_windows(get_test_example_file('söurce.jpg')).endswith('SURCE~1.JPG')
  67. assert sanitize_path_for_windows('invalid') is None
  68. def test_create_directory() -> None:
  69. create_directory_path = os.path.join(get_test_outputs_directory(), 'create_directory')
  70. assert create_directory(create_directory_path) is True
  71. assert create_directory(get_test_example_file('source.jpg')) is False
  72. def test_list_directory() -> None:
  73. assert list_directory(get_test_examples_directory())
  74. assert list_directory(get_test_example_file('source.jpg')) is None
  75. assert list_directory('invalid') is None
  76. def test_remove_directory() -> None:
  77. remove_directory_path = os.path.join(get_test_outputs_directory(), 'remove_directory')
  78. create_directory(remove_directory_path)
  79. assert remove_directory(remove_directory_path) is True
  80. assert remove_directory(get_test_example_file('source.jpg')) is False
  81. assert remove_directory('invalid') is False