Unit Tests

- Added proper handling for when no command or filter is specified, and
  no rc.default.command exists.
- Improved wording on above error message.
- Fixed typo in previous commit (managed to check in code before the
  build completed, and ultimately failed).
- Now reports errors that occur during initialization at the same level
  of verbosity as during command execution.
This commit is contained in:
Paul Beckingham 2011-07-16 15:33:09 -04:00
parent 8aeef40b80
commit 7fbe124fe0
6 changed files with 26 additions and 12 deletions

View file

@ -683,7 +683,7 @@ void Arguments::inject_defaults ()
if (defaultCommand != "") if (defaultCommand != "")
{ {
capture_first (defaultCommand); capture_first (defaultCommand);
context.header ("[task " + trim (defaultCommand) + "]"); context.header ("[" + combine () + "]");
} }
else else
throw std::string (STRING_TRIVIAL_INPUT); throw std::string (STRING_TRIVIAL_INPUT);

View file

@ -174,6 +174,27 @@ int Context::initialize (int argc, const char** argv)
std::cout << *d << "\n"; std::cout << *d << "\n";
} }
// Dump all headers, controlled by 'header' verbosity token.
if (rc && verbose ("header"))
{
std::vector <std::string>::iterator h;
for (h = headers.begin (); h != headers.end (); ++h)
if (color ())
std::cout << colorizeHeader (*h) << "\n";
else
std::cout << *h << "\n";
}
// Dump all footnotes, controlled by 'footnote' verbosity token.
if (rc && verbose ("footnote"))
{
std::vector <std::string>::iterator f;
for (f = footnotes.begin (); f != footnotes.end (); ++f)
if (color ())
std::cout << colorizeFootnote (*f) << "\n";
else
std::cout << *f << "\n";
}
return rc; return rc;
} }

View file

@ -955,7 +955,7 @@ void Task::validate () const
if (has ("priority")) if (has ("priority"))
{ {
std::string priority - get ("priority"); std::string priority = get ("priority");
if (priority != "H" && if (priority != "H" &&
priority != "M" && priority != "M" &&
priority != "L") priority != "L")

View file

@ -339,8 +339,8 @@
#define STRING_UNKNOWN_ERROR "Unknown error." #define STRING_UNKNOWN_ERROR "Unknown error."
#define STRING_NO_HOME "Could not read home directory from the passwd file." #define STRING_NO_HOME "Could not read home directory from the passwd file."
#define STRING_TAGS_NO_COMMAS "Tags are not permitted to contain commas." #define STRING_TAGS_NO_COMMAS "Tags are not permitted to contain commas."
#define STRING_TRIVIAL_INPUT "You must specify a command, or a task ID to modify." #define STRING_TRIVIAL_INPUT "You must specify a command or a task to modify."
#define STRING_ASSUME_INFO "No command specified - assuming 'information'" #define STRING_ASSUME_INFO "No command specified - assuming 'information'."
#define STRING_INFINITE_LOOP "Terminated substitution because more than {1} changes were made - infinite loop protection." #define STRING_INFINITE_LOOP "Terminated substitution because more than {1} changes were made - infinite loop protection."
// Feedback // Feedback

View file

@ -44,7 +44,7 @@ my $version = slurp ('../../configure.ac');
# Test the usage command. # Test the usage command.
my $output = qx{../src/task rc:basic.rc}; my $output = qx{../src/task rc:basic.rc};
like ($output, qr/You must specify a command, or a task ID to modify/m, 'missing command and ID'); like ($output, qr/You must specify a command or a task to modify./m, 'missing command and ID');
# Test the version command. # Test the version command.
$output = qx{../src/task rc:basic.rc version}; $output = qx{../src/task rc:basic.rc version};

View file

@ -39,7 +39,6 @@ if (open my $fh, '>', 'sorting.rc')
} }
# Test assorted sort orders. # Test assorted sort orders.
qx{../src/task rc:sorting.rc add zero}; qx{../src/task rc:sorting.rc add zero};
qx{../src/task rc:sorting.rc add priority:H project:A due:yesterday one}; qx{../src/task rc:sorting.rc add priority:H project:A due:yesterday one};
qx{../src/task rc:sorting.rc add priority:M project:B due:today two}; qx{../src/task rc:sorting.rc add priority:M project:B due:today two};
@ -49,12 +48,6 @@ qx{../src/task rc:sorting.rc add priority:H project:C due:today four};
qx{../src/task rc:sorting.rc start 2}; qx{../src/task rc:sorting.rc start 2};
qx{../src/task rc:sorting.rc start 4}; qx{../src/task rc:sorting.rc start 4};
# pri:H pro:C due:today four
# pri:H pro:A * due:yesterday one
# pri:M pro:B due:today two
# pri:L pro:C * due:tomorrow three
# zero
my %tests = my %tests =
( (
# Single sort column. # Single sort column.