diff --git a/ChangeLog b/ChangeLog index 790069a6e..95e9d6930 100644 --- a/ChangeLog +++ b/ChangeLog @@ -186,6 +186,8 @@ - TW-1460 Empty due dates lead to endless loop. - TW-1463 A few more problems with special characters in filters, pluses, question marks, and braces (thanks to Ralph Bean). +- TW-1468 Filtering for project and description has issues (thanks to Richard + Boß). - Added new holidays.xy-XY.rc definition files - Removed deprecated 'echo.command' setting, in favor of the 'header' and 'affected' verbosity tokens. diff --git a/src/CLI.cpp b/src/CLI.cpp index 8e465b595..c5b1fee1b 100644 --- a/src/CLI.cpp +++ b/src/CLI.cpp @@ -442,8 +442,8 @@ void CLI::analyze (bool parse /* = true */, bool strict /* = false */) desugarFilterPatterns (); findOperators (); findAttributes (); - insertJunctions (); desugarFilterPlainArgs (); + insertJunctions (); // Deliberately after all desugar calls. // Decompose the elements for MODIFICATIONs. decomposeModAttributes (); diff --git a/test/tw-1468.t b/test/tw-1468.t new file mode 100755 index 000000000..942aef4cc --- /dev/null +++ b/test/tw-1468.t @@ -0,0 +1,37 @@ +#!/usr/bin/env python2.7 +# -*- coding: utf-8 -*- + +import sys +import os +import unittest + +# Ensure python finds the local simpletap module +sys.path.append(os.path.dirname(os.path.abspath(__file__))) + +from basetest import Task, TestCase, Taskd, ServerTestCase + +class Test1468(TestCase): + def setUp(self): + self.t = Task() + self.t(('add', 'project:home', 'buy milk')) + self.t(('add', 'project:home', 'mow the lawn')) + + def test_single_attribute_filter(self): + """Single attribute filter (project:home)""" + code, out, err = self.t(('list', 'project:home')) + self.assertEqual(0, code, "Exit code was non-zero ({0})".format(code)) + self.assertIn ('buy milk', out) + self.assertIn ('mow the lawn', out) + + def test_attribute_and_implicit_search_filter(self): + """Attribute and implicit search filter (project:home lawn)""" + code, out, err = self.t(('list', 'project:home', 'lawn')) + self.assertEqual(0, code, "Exit code was non-zero ({0})".format(code)) + self.assertNotIn ('buy milk', out) + self.assertIn ('mow the lawn', out) + +if __name__ == "__main__": + from simpletap import TAPTestRunner + unittest.main(testRunner=TAPTestRunner()) + +# vim: ai sts=4 et sw=4