From 77b3ee05610dbe0cdfe5132d8f4229c1daf19f48 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Sun, 18 Dec 2016 13:06:16 -0500 Subject: [PATCH] Docs: Updated dev docs --- DEVELOPER | 19 ++++--------------- EXPOSITION | 29 ++++++++++++++++++++++------- 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/DEVELOPER b/DEVELOPER index 545557b14..ce2f9b01b 100644 --- a/DEVELOPER +++ b/DEVELOPER @@ -125,9 +125,9 @@ Unit Tests Needed For example, dependencies.t runs through a long list of commands that test dependencies, but do so by using 'add', 'modify', 'done' and 'delete'. 2. Regression tests that ensure certain bugs are fixed and stay fixed. These - tests are named bug.NNN.t where NNN refers to the bug number. While it is - not worth creating tests for small fixes like typos, it is for changes to - the logic. + tests are named tw-NNNN.t where NNNN refers to the bug number. While it is + not worth creating tests for small fixes like typos, it is for logic + changes. 3. Small feature tests. When small features are added, we would like small, low-level feature tests named feature.t, with a descriptive name and focused tests. @@ -143,20 +143,9 @@ Unit Tests Needed - Take a look at the bug database (https://bug.tasktools.org) and notice that many issues, open and closed, have the "needsTest" label. These are things that we would like to see in the test suite, as regression tests. - - Test regex support. - - Need unit tests for each bug in the issue list that is marked with the - 'needsTest' label. Note that all new unit tests should follow the test/template.t standard. -Work in Progress - - Things that are currently in flux, which is another way of saying leave it - alone while it is being worked on. - - - All columns/Col*::validate methods. - - New columns/Col*::modify methods. - Current Codebase Condition 'master' branch: @@ -167,4 +156,4 @@ Current Codebase Condition --- -2016-02-24 Updated for 2.6.0 +2016-12-18 Updated for 2.6.0 diff --git a/EXPOSITION b/EXPOSITION index 0912f44af..d51f56502 100644 --- a/EXPOSITION +++ b/EXPOSITION @@ -25,9 +25,24 @@ Command Line Parsing set of modifications. The CLI2 object is fed command line arguments, then through a succession of - calls builds and annotates a parse tree. To help with this, the Lexer is + calls builds and annotates a parse tree. To help with this, the Lexer is used to break up strings into tokens. + The object of the command line parsing is to expand all syntactic sugar to + use the low-level syntax, and expand the boolean logic in filters and create + a well-formed algebraic expression. For example, this command line: + + task 1-10 +foo lis + + is expanded internally to something like this: + + task ( ( id >= 1 and id <= 10 ) and tags._hastag_ foo ) list + + Note that there are concerns with id ranges, operator precedence, tag + checking, and the expansion of the command name. The arguments are then + tagged to indicate what part of the command line іt represents, such as a + filter, operator, or command. + Dispatch Dispatch is simple: once the command line is parsed, the command is used to @@ -129,8 +144,8 @@ Sorting Render - There are two rendering objects, ViewTask and ViewText. These both have the - same tabular grid rendering capabilities. ViewText maintains a 2D vector of + There are two rendering objects, ViewTask and Table. These both have the + same tabular grid rendering capabilities. Table maintains a 2D vector of strings to contain the data to be rendered, so it is used for things like the help command output. ViewTask does not copy data, but assumes all data is stored externally in a vector of Tasks, which minimizes data copying. @@ -149,9 +164,9 @@ Render Test Suite A strong and diverse test suite is critical to the successful release of any - software. With the complex command set and its myriad permutations, a test - suite is the only way to ensure quality levels, and guarantee that big changes - are robust. + software. With the complex command set and its many permutations, a test suite + is the only way to ensure quality levels, and guarantee that big changes are + robust. It is intended that the test suite continues growing, mostly feature tests. The test are mostly written in Python. Some tests are written in C++ and all @@ -196,7 +211,7 @@ Patches - Precisely addresses one issue only. - Doesn't break unit tests. - Doesn't introduce dependencies. - - Is accompanied by unit tests, where appropriate, written in Python. + - Is accompanied by unit tests, where appropriate. - Is accompanied by documentation changes, where appropriate. - Conforms to the prevailing coding standards - in other words, it should fit right in with the existing code.