def test_memoryfs_text(): """ write and read text file :return: """ mem = MemoryFS() data_path = 'a.txt' for i in range(10): mem.appendtext(data_path, str(i)) for line in mem.readtext(data_path): print('read:{}'.format(line.strip()))
def test_update_from_single_version(self) -> None: fs = MemoryFS() mv = Multiversioned(fs) d = { "file1.txt": "file1", "file2.txt": "file2", "dir1": { "file1.txt": "file1", "file2.txt": "file2" }, "dir2": { "file1.txt": "file1", "file2.txt": "file2" }, } bundle_lidvid = LIDVID("urn:nasa:pds:b::1.0") bundle_lid = bundle_lidvid.lid() no_lidvids: Set[LIDVID] = set() def create_bundle() -> None: lidvids = [create_collection(bundle_lid, c) for c in ["c1", "c2"]] contents = dictionary_to_contents(set(lidvids), d) mv.add_contents_if(is_new, bundle_lid, contents) def create_collection(bundle_lid: LID, c: str) -> LIDVID: lid = bundle_lid.extend_lid(c) lidvids = [create_product(lid, p) for p in ["p1", "p2"]] contents = dictionary_to_contents(set(lidvids), d) return mv.add_contents_if(is_new, lid, contents) def create_product(coll_lid: LID, p: str) -> LIDVID: lid = coll_lid.extend_lid(p) contents = dictionary_to_contents(no_lidvids, d) return mv.add_contents_if(is_new, lid, contents) create_bundle() vv = VersionView(mv, bundle_lidvid) c = COWFS(vv, MemoryFS(), MemoryFS()) path = "/b$/c2$/p1$/dir1/file2.txt" c.writetext(path, "xxxx") latest_lidvid = mv.latest_lidvid(LID("urn:nasa:pds:b")) # Update from the COWFS. mv.update_from_single_version(is_new, c) self.assertNotEqual(latest_lidvid, mv.latest_lidvid(LID("urn:nasa:pds:b"))) latest_lidvid = mv.latest_lidvid(LID("urn:nasa:pds:b")) # changed files are changed self.assertEqual("file2", fs.readtext("b/c2/p1/v$1.0/dir1/file2.txt")) self.assertEqual("xxxx", fs.readtext("b/c2/p1/v$2.0/dir1/file2.txt")) # unchanged files are unchanged self.assertEqual("file1", fs.readtext("b/c2/p1/v$1.0/dir1/file1.txt")) self.assertEqual("file1", fs.readtext("b/c2/p1/v$2.0/dir1/file1.txt")) # Change started in b/c2/p1. Check which versions are affected. self.assertEqual( VID("2.0"), cast(LIDVID, mv.latest_lidvid(LID("urn:nasa:pds:b"))).vid()) self.assertEqual( VID("1.0"), cast(LIDVID, mv.latest_lidvid(LID("urn:nasa:pds:b:c1"))).vid()) self.assertEqual( VID("2.0"), cast(LIDVID, mv.latest_lidvid(LID("urn:nasa:pds:b:c2"))).vid()) self.assertEqual( VID("2.0"), cast(LIDVID, mv.latest_lidvid(LID("urn:nasa:pds:b:c2:p1"))).vid(), ) self.assertEqual( VID("1.0"), cast(LIDVID, mv.latest_lidvid(LID("urn:nasa:pds:b:c2:p2"))).vid(), ) # Now try updating again. Nothing should change. mv.update_from_single_version(is_new, c) self.assertEqual(latest_lidvid, mv.latest_lidvid(LID("urn:nasa:pds:b")))
def test_write_subdir_versions(self) -> None: fs = MemoryFS() write_subdir_versions_to_directory(fs, "/", self.d) self.assertEqual(self.txt, fs.readtext(SUBDIR_VERSIONS_FILENAME)) fs.close()