mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-10 13:29:32 -06:00
first draft of the new allocator with transactions support
This commit is contained in:
@@ -27,18 +27,6 @@ def gr3(gr1):
|
||||
t.createCategory("R", [(BIND_TYPE_EXPLICIT, "x", ty)], prob)
|
||||
yield gr
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def gr4(gr2):
|
||||
gr = gr2
|
||||
gr.checkoutBranch("master")
|
||||
yield gr
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def gr5(gr3):
|
||||
gr = gr3
|
||||
gr.checkoutBranch("bar_branch")
|
||||
yield gr
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def gr6(gr1):
|
||||
gr = gr1
|
||||
@@ -47,12 +35,6 @@ def gr6(gr1):
|
||||
t.dropCategory("S")
|
||||
yield gr
|
||||
|
||||
# general
|
||||
|
||||
def test_checkout_non_existant(gr1):
|
||||
with pytest.raises(KeyError):
|
||||
gr1.checkoutBranch("abc")
|
||||
|
||||
# gr1
|
||||
|
||||
def test_original_functions(gr1):
|
||||
@@ -118,14 +100,6 @@ def test_branched_category_context(gr3):
|
||||
def test_branched_function_type(gr3):
|
||||
assert gr3.functionType("bar") == ty
|
||||
|
||||
# gr4, 5
|
||||
|
||||
def test_branched_functions(gr4):
|
||||
assert gr4.functions == ["c", "foo", "ind", "s", "z"]
|
||||
|
||||
def test_branched_functions(gr5):
|
||||
assert gr5.functions == ["bar", 'c', 'floatLit', 'ind', 'intLit', 'nat', 's', 'stringLit', 'z']
|
||||
|
||||
# gr6
|
||||
|
||||
def test_reduced_functions(gr6):
|
||||
|
||||
@@ -10,16 +10,12 @@
|
||||
PyObject *
|
||||
PGF_checkoutBranch(PGFObject *self, PyObject *args)
|
||||
{
|
||||
const char *s = NULL;
|
||||
Py_ssize_t size;
|
||||
if (!PyArg_ParseTuple(args, "s#", &s, &size))
|
||||
if (!PyArg_ParseTuple(args, ""))
|
||||
return NULL;
|
||||
|
||||
PgfText *name = CString_AsPgfText(s, size);
|
||||
|
||||
PgfExn err;
|
||||
PgfRevision rev = pgf_checkout_revision(self->db, name, &err);
|
||||
FreePgfText(name);
|
||||
PgfRevision rev = pgf_checkout_revision(self->db, &err);
|
||||
|
||||
if (handleError(err) != PGF_EXN_NONE) {
|
||||
return NULL;
|
||||
}
|
||||
@@ -38,21 +34,13 @@ PGF_checkoutBranch(PGFObject *self, PyObject *args)
|
||||
TransactionObject *
|
||||
PGF_newTransaction(PGFObject *self, PyObject *args)
|
||||
{
|
||||
PgfText *name = NULL;
|
||||
const char *s = NULL;
|
||||
Py_ssize_t size;
|
||||
if (!PyArg_ParseTuple(args, "|s#", &s, &size))
|
||||
return NULL;
|
||||
|
||||
if (s != NULL) {
|
||||
name = CString_AsPgfText(s, size);
|
||||
}
|
||||
|
||||
PgfExn err;
|
||||
PgfRevision rev = pgf_clone_revision(self->db, self->revision, name, &err);
|
||||
if (name != NULL) {
|
||||
FreePgfText(name);
|
||||
}
|
||||
PgfRevision rev = pgf_start_transaction(self->db, self->revision, &err);
|
||||
if (handleError(err) != PGF_EXN_NONE) {
|
||||
return NULL;
|
||||
}
|
||||
@@ -123,7 +111,7 @@ static PyObject *
|
||||
Transaction_commit(TransactionObject *self, PyObject *args)
|
||||
{
|
||||
PgfExn err;
|
||||
pgf_commit_revision(self->pgf->db, self->revision, &err);
|
||||
pgf_commit_transaction(self->pgf->db, self->revision, &err);
|
||||
if (handleError(err) != PGF_EXN_NONE) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user