Beispiel #1
0
def test_move_first_nonexistent_backup_ext(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    fp = InPlace(str(p), backup_ext="~", move_first=True, delay_open=True)
    with pytest.raises(EnvironmentError):
        fp.open()
    assert pylistdir(tmpdir) == []
Beispiel #2
0
def test_with_nonexistent(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    with pytest.raises(EnvironmentError):
        with InPlace(str(p)):
            assert False
    assert pylistdir(tmpdir) == []
Beispiel #3
0
def test_move_first_with_nonexistent_backup_ext(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    with pytest.raises(EnvironmentError):
        with InPlace(str(p), backup_ext="~", move_first=True):
            assert False
    assert pylistdir(tmpdir) == []
Beispiel #4
0
def test_nonexistent(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    fp = InPlace(str(p), delay_open=True)
    with pytest.raises(EnvironmentError):
        fp.open()
    assert pylistdir(tmpdir) == []
Beispiel #5
0
def test_move_first_pass_nobackup(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    p.write(TEXT)
    with InPlace(str(p), move_first=True):
        pass
    assert pylistdir(tmpdir) == ["file.txt"]
    assert p.read() == ""
Beispiel #6
0
def test_empty_backup_ext(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    p.write(TEXT)
    with pytest.raises(ValueError):
        InPlace(str(p), backup_ext="")
    assert pylistdir(tmpdir) == ["file.txt"]
    assert p.read() == TEXT
Beispiel #7
0
def test_readlines_nobackup(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    p.write(TEXT)
    with InPlace(str(p)) as fp:
        assert fp.readlines() == TEXT.splitlines(True)
    assert pylistdir(tmpdir) == ["file.txt"]
    assert p.read() == ""
Beispiel #8
0
def test_readline_nobackup(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    p.write(TEXT)
    with InPlace(str(p)) as fp:
        for line in iter(fp.readline, ""):
            fp.write(line.swapcase())
    assert pylistdir(tmpdir) == ["file.txt"]
    assert p.read() == TEXT.swapcase()
Beispiel #9
0
def test_backup_ext_and_backup(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    p.write(TEXT)
    bkp = tmpdir.join("backup.txt")
    with pytest.raises(ValueError):
        InPlace(str(p), backup=str(bkp), backup_ext="~")
    assert pylistdir(tmpdir) == ["file.txt"]
    assert p.read() == TEXT
Beispiel #10
0
def test_bad_mode(tmpdir, move_first, backup):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    p.write(TEXT)
    backup_path = tmpdir.join(backup) if backup is not None else None
    with pytest.raises(ValueError, match="invalid mode"):
        InPlace(str(p), mode="q", move_first=move_first, backup=backup_path)
    assert pylistdir(tmpdir) == ["file.txt"]
    assert p.read() == TEXT
Beispiel #11
0
def test_writelines_backup(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    p.write("")
    bkp = tmpdir.join("backup.txt")
    with InPlace(str(p), backup=str(bkp)) as fp:
        fp.writelines(TEXT.splitlines(True))
    assert pylistdir(tmpdir) == ["backup.txt", "file.txt"]
    assert bkp.read() == ""
    assert p.read() == TEXT
Beispiel #12
0
def test_move_first_delete_nobackup(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    p.write(TEXT)
    with InPlace(str(p), move_first=True) as fp:
        for i, line in enumerate(fp):
            fp.write(line.swapcase())
            if i == 5:
                p.remove()
    assert pylistdir(tmpdir) == []
Beispiel #13
0
def test_move_first_backup_ext(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    p.write(TEXT)
    with InPlace(str(p), backup_ext="~", move_first=True) as fp:
        for line in fp:
            fp.write(line.swapcase())
    assert pylistdir(tmpdir) == ["file.txt", "file.txt~"]
    assert p.new(ext="txt~").read() == TEXT
    assert p.read() == TEXT.swapcase()
Beispiel #14
0
def test_early_close_nobackup(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    p.write(TEXT)
    with InPlace(str(p)) as fp:
        for line in fp:
            fp.write(line.swapcase())
        fp.close()
    assert pylistdir(tmpdir) == ["file.txt"]
    assert p.read() == TEXT.swapcase()
Beispiel #15
0
def test_move_first_rollback_nobackup(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    p.write(TEXT)
    with InPlace(str(p), move_first=True) as fp:
        for line in fp:
            fp.write(line.swapcase())
        fp.rollback()
    assert pylistdir(tmpdir) == ["file.txt"]
    assert p.read() == TEXT
Beispiel #16
0
def test_rollback_backup(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    p.write(TEXT)
    bkp = tmpdir.join("backup.txt")
    with InPlace(str(p), backup=str(bkp)) as fp:
        for line in fp:
            fp.write(line.swapcase())
        fp.rollback()
    assert pylistdir(tmpdir) == ["file.txt"]
    assert p.read() == TEXT
Beispiel #17
0
def test_readinto_bytearray_nobackup(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    p.write_text(UNICODE, "utf-8")
    with InPlace(str(p), "b") as fp:
        ba = bytearray(5)
        assert fp.readinto(ba) == 5
        assert ba == bytearray(b"\xC3\xA5\xC3\xA9\xC3")
        fp.write(ba)
    assert pylistdir(tmpdir) == ["file.txt"]
    assert p.read_binary() == b"\xC3\xA5\xC3\xA9\xC3"
Beispiel #18
0
def test_move_first_prechdir_backup(tmpdir, monkeypatch):
    assert pylistdir(tmpdir) == []
    monkeypatch.chdir(tmpdir)
    p = tmpdir.join("file.txt")
    p.write(TEXT)
    with InPlace(str(p), backup="backup.txt", move_first=True) as fp:
        for line in fp:
            fp.write(line.swapcase())
    assert pylistdir(tmpdir) == ["backup.txt", "file.txt"]
    assert tmpdir.join("backup.txt").read() == TEXT
    assert p.read() == TEXT.swapcase()
Beispiel #19
0
def test_print_backup(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    p.write(TEXT)
    bkp = tmpdir.join("backup.txt")
    with InPlace(str(p), backup=str(bkp)) as fp:
        for line in fp:
            print(line.swapcase(), end="", file=fp)
    assert pylistdir(tmpdir) == ["backup.txt", "file.txt"]
    assert bkp.read() == TEXT
    assert p.read() == TEXT.swapcase()
Beispiel #20
0
def test_bytes_iconv_nobackup(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    p.write_text(UNICODE, "utf-8")
    with InPlace(str(p), "b") as fp:
        txt = fp.read()
        assert isinstance(txt, bytes)
        assert txt == b"\xc3\xa5\xc3\xa9\xc3\xae\xc3\xb8\xc3\xbc" + NLB
        fp.write(txt.decode("utf-8").encode("latin-1"))
    assert pylistdir(tmpdir) == ["file.txt"]
    assert p.read_binary() == b"\xE5\xE9\xEE\xF8\xFC" + NLB
Beispiel #21
0
def test_latin1_as_utf8_replace(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    p.write_text(UNICODE, "latin-1")
    with InPlace(str(p), "t", encoding="utf-8", errors="replace") as fp:
        txt = fp.read()
        assert isinstance(txt, str)
        assert txt == "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\n"
        fp.write(txt)
    assert pylistdir(tmpdir) == ["file.txt"]
    assert p.read_text("utf-8") == "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\n"
Beispiel #22
0
def test_utf8_nobackup(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    p.write_text(UNICODE, "utf-8")
    with InPlace(str(p), "t", encoding="utf-8") as fp:
        txt = fp.read()
        assert isinstance(txt, str)
        assert txt == UNICODE
        fp.write(normalize("NFD", txt))
    assert pylistdir(tmpdir) == ["file.txt"]
    assert p.read_text("utf-8") == "a\u030Ae\u0301i\u0302\xF8u\u0308\n"
Beispiel #23
0
def test_utf8_as_latin1(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    p.write_text(UNICODE, "utf-8")
    with InPlace(str(p), "t", encoding="latin-1") as fp:
        txt = fp.read()
        assert isinstance(txt, str)
        assert txt == "\xc3\xa5\xc3\xa9\xc3\xae\xc3\xb8\xc3\xbc\n"
        fp.write(UNICODE)
    assert pylistdir(tmpdir) == ["file.txt"]
    assert p.read_binary() == b"\xE5\xE9\xEE\xF8\xFC" + NLB
Beispiel #24
0
def test_move_first_rollback_and_write_nobackup(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    p.write(TEXT)
    with pytest.raises(ValueError):
        with InPlace(str(p), move_first=True) as fp:
            for line in fp:
                fp.write(line.swapcase())
            fp.rollback()
            fp.write("And another thing...\n")
    assert pylistdir(tmpdir) == ["file.txt"]
    assert p.read() == TEXT
Beispiel #25
0
def test_py3_textstr(tmpdir):
    """Assert that `InPlace` works with text strings in Python 3"""
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    p.write_text(UNICODE, locale.getpreferredencoding())
    with InPlace(str(p)) as fp:
        txt = fp.read()
        assert isinstance(txt, str)
        assert txt == UNICODE
        print(UNICODE, file=fp)
    assert pylistdir(tmpdir) == ["file.txt"]
    assert p.read_text(locale.getpreferredencoding()) == UNICODE + "\n"
Beispiel #26
0
def test_use_and_reenter_backup_ext(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    p.write(TEXT)
    with InPlace(str(p), backup_ext="~") as fp:
        fp.write(fp.readline().swapcase())
        with fp:
            for line in fp:
                fp.write(line.swapcase())
    assert pylistdir(tmpdir) == ["file.txt", "file.txt~"]
    assert p.new(ext="txt~").read() == TEXT
    assert p.read() == TEXT.swapcase()
Beispiel #27
0
def test_move_first_early_close_backup(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    p.write(TEXT)
    bkp = tmpdir.join("backup.txt")
    with InPlace(str(p), backup=str(bkp), move_first=True) as fp:
        for line in fp:
            fp.write(line.swapcase())
        fp.close()
    assert pylistdir(tmpdir) == ["backup.txt", "file.txt"]
    assert bkp.read() == TEXT
    assert p.read() == TEXT.swapcase()
Beispiel #28
0
def test_move_first_error_backup_ext(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    p.write(TEXT)
    with pytest.raises(RuntimeError):
        with InPlace(str(p), backup_ext="~", move_first=True) as fp:
            for i, line in enumerate(fp):
                fp.write(line.swapcase())
                if i > 5:
                    raise RuntimeError("I changed my mind.")
    assert pylistdir(tmpdir) == ["file.txt"]
    assert p.read() == TEXT
Beispiel #29
0
def test_move_first_rollback_too_late(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    p.write(TEXT)
    with InPlace(str(p), backup_ext="~", move_first=True) as fp:
        for line in fp:
            fp.write(line.swapcase())
    with pytest.raises(ValueError):
        fp.rollback()
    assert pylistdir(tmpdir) == ["file.txt", "file.txt~"]
    assert p.new(ext="txt~").read() == TEXT
    assert p.read() == TEXT.swapcase()
Beispiel #30
0
def test_move_first_overwrite_backup(tmpdir):
    assert pylistdir(tmpdir) == []
    p = tmpdir.join("file.txt")
    p.write(TEXT)
    bkp = tmpdir.join("backup.txt")
    bkp.write("This is not the file you are looking for.\n")
    with InPlace(str(p), backup=str(bkp), move_first=True) as fp:
        for line in fp:
            fp.write(line.swapcase())
    assert pylistdir(tmpdir) == ["backup.txt", "file.txt"]
    assert bkp.read() == TEXT
    assert p.read() == TEXT.swapcase()