test_utils.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import os
  2. import sys
  3. from errno import EACCES, ENOENT, EPERM, EROFS
  4. import pytest
  5. from conda_package_handling import utils
  6. def test_rm_rf_file(testing_workdir):
  7. with open("dummy", "w") as f:
  8. f.write("weeee")
  9. utils.rm_rf("dummy")
  10. with open("dummy", "w") as f:
  11. f.write("weeee")
  12. utils.rm_rf(os.path.join(testing_workdir, "dummy"))
  13. @pytest.mark.parametrize("errno", (ENOENT, EACCES, EPERM, EROFS))
  14. def test_rename_to_trash(testing_workdir, mocker, errno):
  15. unlink = mocker.patch("os.unlink")
  16. unlink.side_effect = EnvironmentError(errno, "")
  17. with open("dummy", "w") as f:
  18. f.write("weeee")
  19. utils.unlink_or_rename_to_trash("dummy")
  20. assert os.path.isfile("dummy.conda_trash")
  21. # force a second error for the inner rename try (after unlink fails)
  22. if sys.platform == "win32":
  23. with open("dummy", "w") as f:
  24. f.write("weeee")
  25. mocker.patch("os.rename")
  26. unlink.side_effect = EnvironmentError(errno, "")
  27. utils.unlink_or_rename_to_trash("dummy")
  28. assert os.path.isfile("dummy.conda_trash")
  29. def test_delete_trash(testing_workdir, mocker):
  30. isdir = mocker.patch("conda_package_handling.utils.isdir")
  31. isdir.return_value = True
  32. lexists = mocker.patch("conda_package_handling.utils.lexists")
  33. lexists.return_value = False
  34. mocker.patch("conda_package_handling.utils.rmdir")
  35. os.makedirs("folder")
  36. with open("folder/dummy.conda_trash", "w") as f:
  37. f.write("weeee")
  38. utils.rm_rf("folder")
  39. assert not os.path.isfile("folder/dummy.conda_trash")