Esempio n. 1
0
def test_create_errors(monkeypatch):
    with pytest.raises(searching.CantCreateError) as e:
        searching.parse_create("asdfsdgsdg")
    a = str(e).split("\n")
    assert len(a) == 1
    assert "full node" in a[0]

    with pytest.raises(searching.CantCreateError):
        searching.parse_create_single("sgdfgdf")

    with pytest.raises(searching.CantCreateError):
        searching.parse_create_single("< task: derp")

    with pytest.raises(searching.CantCreateError):
        searching.parse_create_single("*")

    def _hook3(queries):
        return queries * 2
    monkeypatch.setattr(searching, "parsecreatefilters", [
        _hook3
    ])

    with pytest.raises(searching.CantCreateError) as e:
        searching.parse_create("asdfsdgsdg")
    a = str(e.value).split("\n")
    assert len(a) >= 2
    assert "full node" in a[-1]
    assert "full node" in a[-2]
Esempio n. 2
0
    def test_mini_child_loop(self, tracker, reftype):
        tracker.deserialize({"life":
            "task: target\n"
            "%s: <-" % reftype
        })
        creator = searching.parse_create(reftype + u"> task: test")
        node = creator(tracker.root)
        assert node

        proxy_task = tracker.root.find(reftype + u"> test").one()
        target_task = tracker.root.find(u"target > test").one()
        reference = tracker.root.find(reftype).one()
        target = tracker.root.find(u"target").one()

        unwrap = reference.unwrap
        wrap = reference.get_proxy

        assert unwrap(reference) is target
        assert wrap(target) is reference
        assert unwrap(proxy_task) is target_task
        assert wrap(target_task) is proxy_task

        assert target_task._next_node is target.children
        assert target_task._prev_node is target.children
        assert proxy_task._next_node is reference.children
        assert proxy_task._prev_node is reference.children

        assert target_task.parent is target
        assert proxy_task.parent is reference
Esempio n. 3
0
    def test_create_node_existing(self):
        tracker = Tracker(False)

        nodes = []

        origin = tracker.root.createchild("task", "origin")
        nodes.append(origin.createchild("task", "finished"))
        nodes[-1].start()
        nodes[-1].finish()
        nodes.append(origin.createchild("task", "finished 2"))
        nodes[-1].start()
        nodes[-1].finish()
        nodes.append(origin.createchild("task", "started"))
        nodes[-1].start()
        nodes.append(origin.createchild("task", "untouched"))
        nodes.append(origin.createchild("task", "untouched 2"))

        creator = searching.parse_create("task: target")
        created = creator(origin)

        results = list(origin.children)
        assert (results[:2] + results[3:]) == nodes
        assert results[2].node_type == "task"
        assert results[2].text == "target"
        assert created == results[2]
        assert repr(creator)
Esempio n. 4
0
def test_parse_filters(monkeypatch):
    def _hook1(queries):
        queries.append(searching.parse_single("comment: derp derp"))
        return queries

    def _hook2(queries):
        queries.append(searching.parse_single("task: some random query"))
        return queries

    monkeypatch.setattr(searching, "parsecreatefilters", [
        _hook1,
        _hook2
    ])

    assert searching.parse("around the world") == searching.Queries(
            searching.parse_single("around the world"),
            searching.parse_single("comment: derp derp"),
            searching.parse_single("task: some random query"),
    )

    assert (searching.parse_create("comment: hoop doop") ==
        searching._Creators(creators=(
            searching.parse_create_single("comment: hoop doop"),
            searching.parse_create_single("comment: derp derp"),
            searching.parse_create_single("task: some random query")
        ))
    )
Esempio n. 5
0
 def test_proxied_create(self, tracker, reftype):
     tracker.deserialize({"life":
         u"task: target\n"
         u"%s: <-" % reftype
     })
     creator = searching.parse_create(reftype + u" > task: test")
     node = creator(tracker.root)
     proxy = tracker.root.find(reftype + u"> test").one()
     assert node is proxy
Esempio n. 6
0
 def test_empty_next_peer(self):
     tracker = Tracker(False)
     origin = tracker.root.createchild("task", "origin")
     creator = searching.parse_create("-> task: derp")
     creator(origin)
     assert match("\n".join(serialize(tracker.root, is_root=True)), (
         "task#?????: origin\n"
         "task#?????: derp"
     ))
     assert repr(creator)
Esempio n. 7
0
def test_failed_create(monkeypatch):
    tracker = Tracker(False, FakeNodeCreator(GenericActivate))

    def _hook2(queries):
        return [searching.parse_single("herp > task: derp")] + queries
    monkeypatch.setattr(searching, "parsecreatefilters", [
        _hook2
    ])

    creator = searching.parse_create("herk derk > task: herk")

    with pytest.raises(searching.NodeNotCreated):
        creator(tracker.root)
Esempio n. 8
0
    def test_create_node(self):
        tracker = Tracker(False, FakeNodeCreator(GenericActivate))

        origin = tracker.root.createchild("task", "origin")

        creator = searching.parse_create("task: Target")
        creator(origin)

        assert match("\n".join(serialize(origin)), (
            "task#?????: origin\n"
            "    task#?????: Target"
        ))
        assert repr(creator)
Esempio n. 9
0
    def test_existing_query(self):
        tracker = Tracker(False, FakeNodeCreator(GenericActivate))

        origin = tracker.root.createchild("task", "origin")

        selector = searching.parse_single("task: target")

        creator = searching.parse_create(query=selector)
        creator(origin)

        assert match("\n".join(serialize(origin)), (
            "task#?????: origin\n"
            "    task#?????: target"
        ))
        assert repr(creator)
Esempio n. 10
0
def test_not_found_creates(monkeypatch):
    tracker = Tracker(False, FakeNodeCreator(GenericActivate))

    def _hook2(queries):
        return [searching.parse_single("herp > task: derp")] + queries
    monkeypatch.setattr(searching, "parsecreatefilters", [
        _hook2
    ])

    creator = searching.parse_create("task: herpity derpity")

    node = creator(tracker.root)
    assert node.text == "herpity derpity"
    assert tracker.root.find("*").one() is node

    tracker.root.createchild("task", "herp")

    assert len(tracker.root.children) == 2
    node = creator(tracker.root)
    assert node.text == "derp"
    assert len(tracker.root.children) == 2
    assert tracker.root.find("herp > derp").one() is node
Esempio n. 11
0
    def test_last_2(self):
        creator = searching.parse_create("-> :{last} > task: target")

        tracker = Tracker(False, FakeNodeCreator(GenericActivate))

        origin = tracker.root.createchild("task", "origin")
        tracker.root.createchild("task", "ignore 1")
        tracker.root.createchild("task", "ignore 2")
        tracker.root.createchild("task", "ignore 3")
        tracker.root.createchild("task", "expected")

        creator(origin)

        assert match("\n".join(serialize(tracker.root, is_root=True)), (
            "task#?????: origin\n"
            "task#?????: ignore 1\n"
            "task#?????: ignore 2\n"
            "task#?????: ignore 3\n"
            "task#?????: expected\n"
            "    task#?????: target"
        ))
        assert repr(creator)
Esempio n. 12
0
 def create(self, *a, **kw):
     from treeoflife import searching
     creator = searching.parse_create(*a, **kw)
     return creator(self)