Example #1
0
    def test_err_result(self):
        """excercise creation of NotCompletedResult"""
        result = NotCompleted("SKIP", "this", "some obj")
        self.assertFalse(result)
        self.assertEqual(result.origin, "this")
        self.assertEqual(result.message, "some obj")
        self.assertIs(result.source, None)

        # check source correctly deduced from provided object
        fake_source = Mock()
        fake_source.source = "blah"
        del fake_source.info
        result = NotCompleted("SKIP", "this", "err", source=fake_source)
        self.assertIs(result.source, "blah")

        fake_source = Mock()
        del fake_source.source
        fake_source.info.source = "blah"
        result = NotCompleted("SKIP", "this", "err", source=fake_source)
        self.assertIs(result.source, "blah")

        try:
            _ = 0
            raise ValueError("error message")
        except ValueError as err:
            result = NotCompleted("SKIP", "this", err.args[0])

        self.assertEqual(result.message, "error message")
Example #2
0
    def test_not_completed_result(self):
        """correctly reconstructs a NotCompletedResult object"""
        from cogent3.app.composable import NotCompleted

        val = NotCompleted("ERROR", "nothing", "some error", source="here")
        expect = val.to_rich_dict()
        json = val.to_json()
        got = deserialise_object(json)
        self.assertEqual(got.to_rich_dict(), expect)
Example #3
0
    def test_summary_methods(self):
        """produce a table"""
        from cogent3.app.composable import NotCompleted

        keys = list(self.data)
        incomplete = [
            keys.pop(0),
            NotCompleted("FAIL", "somefunc", "checking", source="testing.txt"),
        ]
        with TemporaryDirectory(dir=".") as dirname:
            path = os.path.join(dirname, self.basedir)
            dstore = self.WriteClass(path, if_exists="overwrite")
            id_ = dstore.make_relative_identifier(incomplete[0])
            dstore.write_incomplete(id_, incomplete[1])
            for k in keys:
                id_ = dstore.make_relative_identifier(k)
                dstore.write(id_, self.data[k])
            # now add a log file
            dstore.add_file("data" + os.sep + "scitrack.log", cleanup=False)
            got = dstore.describe
            # table has rows for completed, incomplete and log
            self.assertEqual(got.shape, (3, 2))
            # log summary has a row per log file and a column for each property
            got = dstore.summary_logs
            self.assertEqual(got.shape, (1, 6))
            # incomplete summmary has a row per type and 5 columns
            got = dstore.summary_incomplete
            self.assertEqual(got.shape, (1, 5))
            dstore.close()
Example #4
0
    def test_tiny_write_incomplete(self):
        """write an incomplete result to tinydb"""
        from cogent3.app.composable import NotCompleted

        keys = list(self.data)
        incomplete = [
            keys.pop(0),
            NotCompleted("FAIL", "somefunc", "checking", source="testing.txt"),
        ]
        with TemporaryDirectory(dir=".") as dirname:
            path = os.path.join(dirname, self.basedir)
            dstore = self.WriteClass(path, if_exists="overwrite")
            id_ = dstore.make_relative_identifier(incomplete[0])
            dstore.write_incomplete(id_, incomplete[1])
            for k in keys:
                id_ = dstore.make_relative_identifier(k)
                dstore.write(id_, self.data[k])
            dstore.close()

            # all records are contained
            dstore = self.ReadClass(path)
            for k in self.data:
                id_ = f"{k.split('.')[0]}.json"
                self.assertTrue(id_ in dstore)

            # but len(dstore) reflects only members with completed==True
            len_store = len(dstore)
            # but len(dstore.db) reflects all members
            self.assertEqual(len(dstore.db), len_store + 1)
            # the incomplete property contains the incomplete ones
            got = dstore.incomplete[0].read()
            self.assertTrue("notcompleted" in got["type"].lower())
            dstore.close()
Example #5
0
    def test_not_completed_result(self):
        """should survive roundtripping pickle"""
        from pickle import dumps, loads

        err = NotCompleted("FAIL", "mytest", "can we roundtrip")
        p = dumps(err)
        new = loads(p)
        self.assertEqual(err.type, new.type)
        self.assertEqual(err.message, new.message)
        self.assertEqual(err.source, new.source)
        self.assertEqual(err.origin, new.origin)