[lang-ref] ( move_file ) ( python )

def test_move_file(pushd):
    # os.rename(b, a)
    import shutil

    os.makedirs('dir1')

    p = Path('file1.txt')
    p.touch()
    assert os.path.isfile('file1.txt')

    with pytest.raises(IsADirectoryError):
        os.rename('file1.txt', 'dir1/')  # Didn't work on macOS (may be environment-dependent).S
    assert not os.path.isfile('dir1/file1.txt')

    shutil.move('file1.txt', 'dir1/')
    assert not os.path.isfile('file1.txt')
    assert     os.path.isfile('dir1/file1.txt')

    shutil.move('dir1/file1.txt', 'dir1/file2.txt') # shutil.move to directory is supported

    assert not os.path.isfile('dir1/file1.txt')
    assert     os.path.isfile('dir1/file2.txt')
def test_move_file_alternative(pushd):
    # p.rename(after)

    os.makedirs('dir1')

    p = Path('file1.txt')
    p.touch()
    assert os.path.isfile('file1.txt')

    with pytest.raises(IsADirectoryError):
        p.rename('dir1/')  # Didn't work on macOS (may be environment-dependent).
    assert not os.path.isfile('dir1/file1.txt')

    p.rename('dir1/file2.txt')

    assert not os.path.isfile('file1.txt')
    assert     os.path.isfile('dir1/file2.txt')