コード例 #1
0
def test_save_new_file(tmpdir):
    filename = os.path.join(str(tmpdir), "savefile-success.test")
    with save_file_atomic(filename, "w") as f:
        f.write("foo\n")

    assert os.listdir(str(tmpdir)) == ["savefile-success.test"]
    with open(filename) as f:
        assert f.read() == "foo\n"
コード例 #2
0
    def blob(self, image_path, blob_digest, download_to):
        blob_url = urljoin(image_path, "blobs",
                           urllib.parse.quote(blob_digest))

        response = self._request(blob_url, stream=True)

        with save_file_atomic(download_to, "wb") as f:
            shutil.copyfileobj(response.raw, f)
コード例 #3
0
def test_exception_new_file(tmpdir):
    filename = os.path.join(str(tmpdir), "savefile-exception.test")

    with pytest.raises(RuntimeError):
        with save_file_atomic(filename, "w") as f:
            f.write("Some junk\n")
            raise RuntimeError("Something goes wrong")

    assert os.listdir(str(tmpdir)) == []
コード例 #4
0
def test_save_over_existing_file(tmpdir):
    filename = os.path.join(str(tmpdir), "savefile-overwrite.test")

    with open(filename, "w") as f:
        f.write("existing contents\n")

    with save_file_atomic(filename, "w") as f:
        f.write("overwritten contents\n")

    assert os.listdir(str(tmpdir)) == ["savefile-overwrite.test"]
    with open(filename) as f:
        assert f.read() == "overwritten contents\n"
コード例 #5
0
def test_exception_existing_file(tmpdir):
    filename = os.path.join(str(tmpdir), "savefile-existing.test")

    with open(filename, "w") as f:
        f.write("existing contents\n")

    with pytest.raises(RuntimeError):
        with save_file_atomic(filename, "w") as f:
            f.write("Some junk\n")
            raise RuntimeError("Something goes wrong")

    assert os.listdir(str(tmpdir)) == ["savefile-existing.test"]
    with open(filename) as f:
        assert f.read() == "existing contents\n"
コード例 #6
0
def test_attributes(tmpdir):
    filename = os.path.join(str(tmpdir), "savefile-attributes.test")
    with save_file_atomic(filename, "w") as f:
        assert f.real_filename == filename
        assert f.name != filename
コード例 #7
0
 def _store_etag(self, ref, etag):
     etagfilename = os.path.join(self._mirror_dir, "{}.etag".format(ref))
     with utils.save_file_atomic(etagfilename) as etagfile:
         etagfile.write(etag)
コード例 #8
0
 def _store_etag(self, sha, etag):
     etagfilename = os.path.join(self._get_mirror_dir(),
                                 "{}.etag".format(sha))
     with utils.save_file_atomic(etagfilename) as etagfile:
         etagfile.write(etag)
コード例 #9
0
 def _save_manifest(self, text, path):
     manifest_file = os.path.join(path, self.digest + ".manifest.json")
     with save_file_atomic(manifest_file, "wb") as f:
         f.write(text.encode("utf-8"))
コード例 #10
0
 def _save_manifest(self, text):
     manifest_file = os.path.join(self.get_mirror_directory(),
                                  self.digest + '.manifest.json')
     with save_file_atomic(manifest_file, 'wb') as f:
         f.write(text.encode('utf-8'))