taskwarrior/test/tw-2575.t
Felix Schurk d093ce3d84
Fix test script paths (#3387)
* fix path to task executable in pyton tests

The current approach would copy the current files into the `build/test`
directory. Updating the paths according to the custom user setup.

By the copy I appended `.py` to have a clear visible distingtion which
ones are the python tests.

As soon as a source file in the normal directory is changed, it is
copied over and the corresponding file is updated.

From now on the python tests would need to get run in the according
build directory.

* reflect the current build instruction in PR template

* update paths and globing in run_all

* add line break for every cpp test

* remove .gitignore in test folder

As now all the auxillary files such as `all.log` as well as the
executables are present in the `build` directory there is no longer a
need to ignore them.

* update paths in python test scripts and enable deactivated

* remove .py extension when copy to build

Further remove glob pattern for `*.t.py` tests.

* remove accidentally added template.t from test files
2024-04-28 15:38:14 -04:00

91 lines
3.4 KiB
Python
Executable file

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
import os
import unittest
import re
import json
# Ensure python finds the local simpletap module
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
from basetest import Task, TestCase
class TestExport(TestCase):
def setUp(self):
self.t = Task()
self.t("add one")
self.t("add two project:strange")
self.t("add task1 +home project:A")
self.t("add task2 +work project:A")
self.t.config("report.foo.description", "DESC")
self.t.config("report.foo.labels", "ID,DESCRIPTION")
self.t.config("report.foo.columns", "id,description")
self.t.config("report.foo.sort", "urgency+")
self.t.config("report.foo.filter", "project:A")
self.t.config("urgency.user.tag.home.coefficient", "15")
def assertTaskEqual(self, t1, t2):
keys = [k for k in sorted(t1.keys()) if k not in ["entry", "modified", "uuid"]]
for k in keys:
self.assertEqual(t1[k], t2[k])
def test_exports(self):
"""Verify exports work"""
code, out, err = self.t("export")
out = json.loads(out)
self.assertEqual(len(out), 4)
self.assertTaskEqual(out[0], {"id": 1, "description": "one", "status": "pending", "urgency": 0})
self.assertTaskEqual(out[1], {"id": 2, "description": "two", "project": "strange", "status": "pending", "urgency": 1})
self.assertTaskEqual(out[2], {"id": 3, "description": "task1", "status": "pending", "project": "A", "tags": ["home"], "urgency": 16.8})
self.assertTaskEqual(out[3], {"id": 4, "description": "task2", "status": "pending", "project": "A", "tags": ["work"], "urgency": 1.8})
def test_exports_filter(self):
"""Verify exports with filter work"""
code, out, err = self.t("one export")
out = json.loads(out)
self.assertEqual(len(out), 1)
self.assertTaskEqual(out[0], {"id": 1, "description": "one", "status": "pending", "urgency": 0})
def test_exports_with_limits_and_filter(self):
"""Verify exports with limits and filter work"""
code, out, err = self.t("task limit:4 export")
out = json.loads(out)
self.assertEqual(len(out), 2)
self.assertTaskEqual(out[0], {"id": 3, "description": "task1", "status": "pending", "project": "A", "tags": ["home"], "urgency": 16.8})
self.assertTaskEqual(out[1], {"id": 4, "description": "task2", "status": "pending", "project": "A", "tags": ["work"], "urgency": 1.8})
code, out, err = self.t("task limit:1 export")
out = json.loads(out)
self.assertEqual(len(out), 1)
self.assertTaskEqual(out[0], {"id": 3, "description": "task1", "status": "pending", "project": "A", "tags": ["home"], "urgency": 16.8})
def test_exports_report(self):
"""Verify exports with report work"""
code, out, err = self.t("export foo")
out = json.loads(out)
self.assertEqual(len(out), 2)
self.assertTaskEqual(out[0], {"id": 4, "description": "task2", "status": "pending", "project": "A", "tags": ["work"], "urgency": 1.8})
self.assertTaskEqual(out[1], {"id": 3, "description": "task1", "status": "pending", "project": "A", "tags": ["home"], "urgency": 16.8})
if __name__ == "__main__":
from simpletap import TAPTestRunner
unittest.main(testRunner=TAPTestRunner())
# vim: ai sts=4 et sw=4 ft=python syntax=python