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) == []
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) == []
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) == []
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) == []
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() == ""
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
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() == ""
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()
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
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
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
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) == []
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()
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()
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
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
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"
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()
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()
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
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"
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"
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
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
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"
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()
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()
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
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()
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()