import pytest import osex import os def test_rename(tmpdir): os.chdir(tmpdir.strpath) open('a', 'w').close() assert os.path.exists('a') osex.renames('a', 'b') assert not os.path.exists('a') assert os.path.exists('b') def test_prune_source_dirs(tmpdir): os.chdir(tmpdir.strpath) source_dir_path = os.path.join('1', '2') os.makedirs(source_dir_path) source_file_path = os.path.join(source_dir_path, 'a') open(source_file_path, 'w').close() assert os.path.isdir(source_dir_path) assert os.path.exists(source_file_path) osex.renames('1/2/a', 'b') assert os.listdir(tmpdir.strpath) == ['b'] def test_create_destination_dirs(tmpdir): os.chdir(tmpdir.strpath) open('a', 'w').close() assert os.listdir(tmpdir.strpath) == ['a'] osex.renames('a', '1/2/b') assert os.listdir(tmpdir.strpath) == ['1'] assert os.path.isdir('1/2') assert os.path.isfile('1/2/b') def test_file_exists(tmpdir): os.chdir(tmpdir.strpath) open('src', 'w').close() open('dest', 'w').close() assert os.path.isfile('src') assert os.path.isfile('dest') with pytest.raises(OSError): osex.renames('src', 'dest', override = False, backup = True) assert os.path.isfile('src') assert os.path.isfile('dest') assert len(os.listdir(tmpdir.strpath)) == 2 def test_backup_file(tmpdir): os.chdir(tmpdir.strpath) open('src', 'w').close() open('dest', 'w').close() assert os.path.isfile('src') assert os.path.isfile('dest') osex.renames('src', 'dest', override = True, backup = True, backup_suffix = "~") assert not os.path.isfile('src') assert os.path.isfile('dest') assert os.path.isfile('dest~') assert len(os.listdir(tmpdir.strpath)) == 2 def test_backup_directory(tmpdir): os.chdir(tmpdir.strpath) open('src', 'w').close() os.mkdir('dest') assert os.path.isfile('src') assert os.path.isdir('dest') osex.renames('src', 'dest', override = True, backup = True, backup_suffix = "~") assert not os.path.isfile('src') assert os.path.isfile('dest') assert os.path.isdir('dest~') assert len(os.listdir(tmpdir.strpath)) == 2 def test_backup_directory_symlink(tmpdir): os.chdir(tmpdir.strpath) open('src', 'w').close() os.mkdir('dir') os.symlink('dir', 'dest') assert os.path.isfile('src') assert os.path.isdir('dir') assert os.path.islink('dest') assert os.path.isdir('dest') osex.renames('src', 'dest', override = True, backup = True, backup_suffix = "~") assert not os.path.isfile('src') assert os.path.isdir('dir') assert os.path.islink('dest~') assert os.path.isdir('dest~') assert os.path.isfile('dest') assert len(os.listdir(tmpdir.strpath)) == 3 def test_override_file(tmpdir): os.chdir(tmpdir.strpath) open('src', 'w').close() open('dest', 'w').close() assert os.path.isfile('src') assert os.path.isfile('dest') osex.renames('src', 'dest', override = True, backup = False) assert not os.path.isfile('src') assert os.path.isfile('dest') assert len(os.listdir(tmpdir.strpath)) == 1 def test_attempt_override_directory(tmpdir): os.chdir(tmpdir.strpath) open('src', 'w').close() os.mkdir('dest') assert os.path.isfile('src') assert os.path.isdir('dest') with pytest.raises(OSError): osex.renames('src', 'dest', override = True, backup = False) def test_override_directory_symlink(tmpdir): os.chdir(tmpdir.strpath) open('src', 'w').close() os.mkdir('dir') os.symlink('dir', 'link') assert os.path.isfile('src') assert os.path.isdir('dir') assert os.path.islink('link') assert os.path.isdir('link') osex.renames('src', 'link', override = True, backup = False) assert not os.path.isfile('src') assert os.path.isdir('dir') assert not os.path.islink('link') assert os.path.isfile('link') assert len(os.listdir(tmpdir.strpath)) == 2