コード例 #1
0
ファイル: test_data_store.py プロジェクト: yurong2020/cogent3
    def test_unchanged_database_record(self):
        """tests unchanged record via the Readable and Writable DataStore interface to TinyDB"""
        from cogent3.app.io import load_db
        from copy import deepcopy

        loader = load_db()
        data = self.data
        original_record = deepcopy(data)

        with TemporaryDirectory(dir=".") as dirname:
            path = os.path.join(dirname, self.basedir)
            dstore = self.WriteClass(path, if_exists="overwrite")
            id_ = dstore.make_relative_identifier(list(data).pop(0))

            m = dstore.write(id_, data)
            data.pop(set(data.keys()).pop())
            got = loader(m)
            self.assertNotEqual(got, data)
            self.assertEqual(got, original_record)
            data = deepcopy(original_record)

            m = dstore.write(id_, data)
            data[set(data.keys()).pop()] = None
            got = loader(m)
            self.assertNotEqual(got, data)
            self.assertEqual(got, original_record)
            data = deepcopy(original_record)

            m = dstore.write(id_, data)
            data.clear()
            got = loader(m)
            self.assertNotEqual(got, data)
            self.assertEqual(got, original_record)
            dstore.close()
コード例 #2
0
 def test_bootstrap_composability(self):
     """can be composed with load_db and write_db"""
     m1 = evo_app.model("F81")
     m2 = evo_app.model("HKY85")
     hyp = evo_app.hypothesis(m1, m2)
     with TemporaryDirectory(dir=".") as dirname:
         path = join(dirname, "delme.tinydb")
         _ = io.load_db() + evo_app.bootstrap(
             hyp, num_reps=2) + io.write_db(path)
コード例 #3
0
ファイル: test_io.py プロジェクト: aglucaci/cogent3
 def test_write_db_load_db2(self):
     """correctly write/load built-in python from tinydb"""
     with TemporaryDirectory(dir=".") as dirname:
         outpath = join(dirname, "delme")
         writer = write_db(outpath, create=True, if_exists="ignore")
         data = dict(a=[1, 2], b="string")
         m = writer(data, identifier=join("blah", "delme.json"))
         writer.data_store.db.close()
         dstore = io_app.get_data_store(f"{outpath}.tinydb", suffix="json")
         reader = io_app.load_db()
         got = reader(dstore[0])
         dstore.close()
         self.assertEqual(got, data)
コード例 #4
0
ファイル: test_io.py プロジェクト: cogent3/cogent3
 def test_write_db_load_db(self):
     """correctly write/load from tinydb"""
     # straight directory
     with TemporaryDirectory(dir=".") as dirname:
         outpath = join(dirname, "delme")
         writer = write_db(outpath, create=True, if_exists="ignore")
         gr = _get_generic_result(join("blah", "delme.json"))
         got = writer(gr)
         writer.data_store.db.close()
         dstore = io_app.get_data_store(f"{outpath}.tinydb", suffix="json")
         reader = io_app.load_db()
         got = reader(dstore[0])
         dstore.close()
         got.deserialised_values()
         self.assertIsInstance(got["dna"], DNA.__class__)
         self.assertEqual(got["dna"], DNA)
コード例 #5
0
ファイル: test_io.py プロジェクト: aglucaci/cogent3
 def test_write_db_load_db(self):
     """correctly write/load from tinydb"""
     # straight directory
     with TemporaryDirectory(dir=".") as dirname:
         outpath = join(dirname, "delme")
         writer = write_db(outpath, create=True, if_exists="ignore")
         mock = patch("data.source", autospec=True)
         mock.to_json = DNA.to_json
         mock.source = join("blah", "delme.json")
         got = writer(mock)
         writer.data_store.db.close()
         dstore = io_app.get_data_store(f"{outpath}.tinydb", suffix="json")
         reader = io_app.load_db()
         got = reader(dstore[0])
         dstore.close()
         self.assertIsInstance(got, DNA.__class__)
         self.assertEqual(got, DNA)
コード例 #6
0
ファイル: test_io.py プロジェクト: cogent3/cogent3
    def test_load_db_failure_json_file(self):
        """informative load_db error message when given a json file path"""
        # todo this test has a trapped exception about being unable to delete
        # a file
        with TemporaryDirectory(dir=".") as dirname:
            outpath = join(dirname, "delme")
            writer = write_db(outpath, create=True, if_exists="ignore")
            gr = _get_generic_result(join("blah", "delme.json"))
            got = writer(gr)
            writer.data_store.db.close()
            dstore = io_app.get_data_store(f"{outpath}.tinydb", suffix="json")
            reader = io_app.load_db()
            outpath = join(dirname, "dummy.json")
            with open(outpath, mode="w") as outfile:
                outfile.write("\n\n")

            got = reader(outpath)
            self.assertIsInstance(got, NotCompleted)
            self.assertTrue("json" in got.message)