def test_find(self, db): db.add(Task(Command("cmd"), Name("name1"), Tags(["tag1", "tag2"]))) db.add(Task(Command("cmd"), Name("name2"), Tags(["tag2", "tag3"]))) assert len(db.find("tag1")) == 1 assert len(db.find("tag2")) == 2 assert len(db.find("tag3")) == 1 assert len(db.find("tag4")) == 0
def test_task_definition(self): task = Task(Command("echo tete a tete")) assert """0 0 * * * /bin/bash -c "echo tete a tete; echo 'taskport""" in task.as_cron() task = Task(cmd=Command("echo heh"), name=Name("yolo"), tags=Tags(["tag1", "tag2"]), when=When.daily(13, 24)) assert '''24 13 * * * /bin/bash -c "echo heh; echo 'taskport name: yolo, tags: tag1,tag2'"''' == task.as_cron()
def test_install(self): d = CronDevice(CronInfo()) n = "/tmp/test.taskport.device.install.guard" if os.path.isfile(n): os.remove(n) assert not os.path.isfile(n) d.install([ Task(name=Name("me"), cmd=Command(f"echo qq > {n}"), when=When("* * * * *"), tags=Tags(["tag1, tag2"])) ]) time.sleep(60) d.install([]) assert os.path.isfile(n) os.remove(n) time.sleep(62) assert not os.path.isfile(n)
def test_add_second(self, db): assert db.add(Task(Command("cmd"), Name("name"))) is True assert db.add(Task(Command("cmd"), Name("name"))) is False
def test_delete(self, db): db.add(Task(Command("cmd"), Name("name1"))) db.add(Task(Command("cmd"), Name("name2"))) db.delete(Name("name1")) assert db.get(Name("name1")) is None assert db.get(Name("name2"))
def test_get(self, db): db.add(Task(Command("cmd"), Name("name1"))) db.add(Task(Command("cmd"), Name("name2"))) assert db.get(Name("dummy")) is None assert db.get(Name("name1")) == Task(Command("cmd"), Name("name1")) assert db.get(Name("name2")) == Task(Command("cmd"), Name("name2"))
def test_add(self, db): db.add(Task(Command("cmd"), Name("name"))) assert db.all() == [Task(Command("cmd"), Name("name"))]
def all(self) -> List[Task]: vals = self._eng.execute(self._tasks.select()) return [Task.from_db_object(v) for v in vals]
def find(self, tag: str) -> List[Task]: vals = self._eng.execute(self._tasks.select().where( self._tasks.c.tags.like('%,' + tag + ",%"))) return [Task.from_db_object(v) for v in vals]
def get(self, name: Name) -> Optional[Task]: vals = list( self._eng.execute( self._tasks.select().where(self._tasks.c.name == str(name)))) return Task.from_db_object(vals[0]) if vals else None
def add(self, task: Task) -> bool: if self.get(task.name): return False self._eng.execute(self._tasks.insert(task.as_db_object())) return True