diff --git a/src/Context.cpp b/src/Context.cpp index 6b2ff4259..bbc75aaa4 100644 --- a/src/Context.cpp +++ b/src/Context.cpp @@ -164,7 +164,7 @@ int Context::run () catch (...) { - footnote ("Unknown error."); + footnote (STRING_UNKNOWN_ERROR); rc = 3; } @@ -369,6 +369,7 @@ bool Context::verbose (const std::string& token) } //////////////////////////////////////////////////////////////////////////////// +// TODO OBSOLETE void Context::shadow () { // Determine if shadow file is enabled. @@ -536,7 +537,7 @@ void Context::assumeLocations () // Set up default locations. struct passwd* pw = getpwuid (getuid ()); if (!pw) - throw std::string ("Could not read home directory from the passwd file."); + throw std::string (STRING_NO_HOME); home_dir = pw->pw_dir; rc_file = File (home_dir + "/.taskrc"); @@ -722,7 +723,7 @@ void Context::parse ( foundNonSequence = true; if (arg->find (',') != std::string::npos) - throw std::string ("Tags are not permitted to contain commas."); + throw std::string (STRING_TAGS_NO_COMMAS); tagAdditions.push_back (arg->substr (1)); parseTask.addTag (arg->substr (1)); @@ -740,7 +741,7 @@ void Context::parse ( foundNonSequence = true; if (arg->find (',') != std::string::npos) - throw std::string ("Tags are not permitted to contain commas."); + throw std::string (STRING_TAGS_NO_COMMAS); tagRemovals.push_back (arg->substr (1)); } @@ -900,7 +901,7 @@ void Context::parse ( parse (args, cmd, task, sequence, subst, filter); } else - throw std::string ("You must specify a command, or a task ID to modify."); + throw std::string (STRING_TRIVIAL_INPUT); } // If the command "task 123" is entered, but with no modifier arguments, @@ -908,7 +909,7 @@ void Context::parse ( else if (!foundNonSequence && (parseTask.id != 0 || parseSequence.size () != 0)) { - std::cout << "No command - assuming 'info'.\n"; + std::cout << STRING_ASSUME_INFO << "\n"; parseCmd.command = "info"; } } diff --git a/src/DOM.cpp b/src/DOM.cpp index a4bbff466..6e080b476 100644 --- a/src/DOM.cpp +++ b/src/DOM.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include "../cmake.h" @@ -138,7 +139,7 @@ const std::string DOM::get (const std::string& name) #elif defined (LINUX) return "Linux"; #else - return ""; + return STRING_DOM_UNKNOWN #endif else diff --git a/src/commands/CmdHelp.cpp b/src/commands/CmdHelp.cpp index 0eea65526..50b0c391e 100644 --- a/src/commands/CmdHelp.cpp +++ b/src/commands/CmdHelp.cpp @@ -66,7 +66,8 @@ int CmdHelp::execute (const std::string& command_line, std::string& output) // Sort alphabetically by usage. std::sort (all.begin (), all.end ()); - foreach (name, all) + std::vector ::iterator name; + for (name = all.begin (); name != all.end (); ++name) { row = view.addRow (); view.set (row, 1, context.commands[*name]->usage ()); diff --git a/src/commands/CmdShow.cpp b/src/commands/CmdShow.cpp index 47c5f68c9..0d035394f 100644 --- a/src/commands/CmdShow.cpp +++ b/src/commands/CmdShow.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -40,8 +41,7 @@ CmdShow::CmdShow () { _keyword = "show"; _usage = "task show [all | substring]"; - _description = "Shows the entire task configuration variables or the ones " - "containing substring."; + _description = STRING_CMD_SHOW; _read_only = true; _displays_id = false; } @@ -58,7 +58,7 @@ int CmdShow::execute (const std::string& command_line, std::string& output) split (args, context.task.get ("description"), ' '); if (args.size () > 1) - throw std::string ("You can only specify 'all' or a search string."); + throw std::string (STRING_CMD_SHOW_ARGS); int width = context.getWidth (); @@ -183,12 +183,13 @@ int CmdShow::execute (const std::string& command_line, std::string& output) out << "\n" << view.render () - << (view.rows () == 0 ? "No matching configuration variables.\n\n" : "\n"); + << (view.rows () == 0 ? STRING_CMD_SHOW_NONE : "") + << (view.rows () == 0 ? "\n\n" : "\n"); // Display the unrecognized variables. if (unrecognized.size ()) { - out << "Your .taskrc file contains these unrecognized variables:\n"; + out << STRING_CMD_SHOW_UNREC << "\n"; for (i = unrecognized.begin (); i != unrecognized.end (); ++i) out << " " << *i << "\n"; @@ -201,7 +202,7 @@ int CmdShow::execute (const std::string& command_line, std::string& output) if (default_values.size ()) { - out << "Some of your .taskrc variables differ from the default values."; + out << STRING_CMD_SHOW_DIFFER; if (context.color ()) out << " These are highlighted in " << warning.colorize ("color") << " above."; @@ -244,7 +245,7 @@ int CmdShow::execute (const std::string& command_line, std::string& output) if (missing_scripts.size ()) { - out << "Your .taskrc file contains these missing or unreadable hook scripts:\n"; + out << STRING_CMD_SHOW_HOOKS << "\n"; for (i = missing_scripts.begin (); i != missing_scripts.end (); ++i) out << " " << *i << "\n"; @@ -295,7 +296,7 @@ int CmdShow::execute (const std::string& command_line, std::string& output) if (all.size () == 0) { - out << "Configuration error: .taskrc contains no entries.\n"; + out << STRING_CMD_SHOW_EMPTY << "\n"; rc = 1; } else diff --git a/src/en-US.h b/src/en-US.h index 9a28e8eba..467b5466c 100644 --- a/src/en-US.h +++ b/src/en-US.h @@ -28,11 +28,16 @@ //////////////////////////////////////////////////////////////////////////////// // // Strings that should be localized: -// - All text output that the user sees or types +// - text output that the user sees or types // // Strings that should NOT be localized: // - ./taskrc configuration variable names +// - command names +// - extension function names // - certain literals associated with parsing +// - debug strings +// - attribute names +// - modifier names // //////////////////////////////////////////////////////////////////////////////// @@ -41,7 +46,26 @@ // To localize, clone and rename this file, then change all the defines below. -#define STRING_UNKNOWN_ERROR "Unknown error." +// Errors +#define STRING_UNKNOWN_ERROR "Unknown error." +#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_TRIVIAL_INPUT "You must specify a command, or a task ID to modify." +#define STRING_ASSUME_INFO "No command - assuming 'info'" + +// 'show' command +#define STRING_CMD_SHOW "Shows the entire task configuration variables or the ones containing substring." +#define STRING_CMD_SHOW_ARGS "You can only specify 'all' or a search string." +#define STRING_CMD_SHOW_NONE "No matching configuration variables." +#define STRING_CMD_SHOW_UNREC "Your .taskrc file contains these unrecognized variables:" +#define STRING_CMD_SHOW_DIFFER "Some of your .taskrc variables differ from the default values." +#define STRING_CMD_SHOW_HOOKS "Your .taskrc file contains these missing or unreadable hook scripts:" +#define STRING_CMD_SHOW_EMPTY "Configuration error: .taskrc contains no entries." + +// DOM +#define STRING_DOM_UNKNOWN "" +#define STRING_DOM_UNREC "DOM: Cannot get unrecognized name '{1}'." +#define STRING_DOM_CANNOT_SET "DOM: Cannot set '{1}'." #endif diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index decf7578e..c69ef7ca2 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -5,8 +5,8 @@ include_directories (${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/test ${TASK_INCLUDE_DIRS}) -set (test_SRCS att.t autocomplete.t cmd.t color.t config.t date.t directory.t - dom.t duration.t file.t filt.t json.t list.t nibbler.t path.t +set (test_SRCS att.t autocomplete.t color.t config.t date.t directory.t dom.t + duration.t file.t filt.t json.t list.t nibbler.t path.t record.t rx.t seq.t subst.t t.benchmark.t t.t taskmod.t tdb.t tdb2.t text.t uri.t util.t variant.t view.t json_test) diff --git a/test/cmd.t.cpp b/test/cmd.t.cpp deleted file mode 100644 index ca472c298..000000000 --- a/test/cmd.t.cpp +++ /dev/null @@ -1,210 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// taskwarrior - a command line task list manager. -// -// Copyright 2006 - 2011, Paul Beckingham, Federico Hernandez. -// All rights reserved. -// -// This program is free software; you can redistribute it and/or modify it under -// the terms of the GNU General Public License as published by the Free Software -// Foundation; either version 2 of the License, or (at your option) any later -// version. -// -// This program is distributed in the hope that it will be useful, but WITHOUT -// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -// details. -// -// You should have received a copy of the GNU General Public License along with -// this program; if not, write to the -// -// Free Software Foundation, Inc., -// 51 Franklin Street, Fifth Floor, -// Boston, MA -// 02110-1301 -// USA -// -//////////////////////////////////////////////////////////////////////////////// -#include -#include -#include - -Context context; - -//////////////////////////////////////////////////////////////////////////////// -int main (int argc, char** argv) -{ - UnitTest t (86); - - // Without Context::initialize, there is no set of defaults loaded into - // Context::Config. - context.initialize (); - context.config.set ("report.foo.columns", "id"); - - Cmd cmd; - cmd.command = "active"; - t.ok (cmd.isReadOnlyCommand (), "isReadOnlyCommand active"); - t.notok (cmd.isWriteCommand (), "not isWriteCommand active"); - - cmd.command = "calendar"; - t.ok (cmd.isReadOnlyCommand (), "isReadOnlyCommand calendar"); - t.notok (cmd.isWriteCommand (), "not isWriteCommand calendar"); - - cmd.command = "colors"; - t.ok (cmd.isReadOnlyCommand (), "isReadOnlyCommand colors"); - t.notok (cmd.isWriteCommand (), "not isWriteCommand colors"); - - cmd.command = "completed"; - t.ok (cmd.isReadOnlyCommand (), "isReadOnlyCommand completed"); - t.notok (cmd.isWriteCommand (), "not isWriteCommand completed"); - - cmd.command = "export.csv"; - t.ok (cmd.isReadOnlyCommand (), "isReadOnlyCommand export.csv"); - t.notok (cmd.isWriteCommand (), "not isWriteCommand export.csv"); - - cmd.command = "export.ical"; - t.ok (cmd.isReadOnlyCommand (), "isReadOnlyCommand export.ical"); - t.notok (cmd.isWriteCommand (), "not isWriteCommand export.ical"); - - cmd.command = "help"; - t.ok (cmd.isReadOnlyCommand (), "isReadOnlyCommand help"); - t.notok (cmd.isWriteCommand (), "not isWriteCommand help"); - - cmd.command = "history.monthly"; - t.ok (cmd.isReadOnlyCommand (), "isReadOnlyCommand history.monthly"); - t.notok (cmd.isWriteCommand (), "not isWriteCommand history.monthly"); - - cmd.command = "history.annual"; - t.ok (cmd.isReadOnlyCommand (), "isReadOnlyCommand history.annual"); - t.notok (cmd.isWriteCommand (), "not isWriteCommand history.annual"); - - cmd.command = "ghistory.monthly"; - t.ok (cmd.isReadOnlyCommand (), "isReadOnlyCommand ghistory.monthly"); - t.notok (cmd.isWriteCommand (), "not isWriteCommand ghistory.monthly"); - - cmd.command = "ghistory.annual"; - t.ok (cmd.isReadOnlyCommand (), "isReadOnlyCommand ghistory.annual"); - t.notok (cmd.isWriteCommand (), "not isWriteCommand ghistory.annual"); - - cmd.command = "info"; - t.ok (cmd.isReadOnlyCommand (), "isReadOnlyCommand info"); - t.notok (cmd.isWriteCommand (), "not isWriteCommand info"); - - cmd.command = "next"; - t.ok (cmd.isReadOnlyCommand (), "isReadOnlyCommand next"); - t.notok (cmd.isWriteCommand (), "not isWriteCommand next"); - - cmd.command = "overdue"; - t.ok (cmd.isReadOnlyCommand (), "isReadOnlyCommand overdue"); - t.notok (cmd.isWriteCommand (), "not isWriteCommand overdue"); - - cmd.command = "projects"; - t.ok (cmd.isReadOnlyCommand (), "isReadOnlyCommand projects"); - t.notok (cmd.isWriteCommand (), "not isWriteCommand projects"); - - cmd.command = "stats"; - t.ok (cmd.isReadOnlyCommand (), "isReadOnlyCommand stats"); - t.notok (cmd.isWriteCommand (), "not isWriteCommand stats"); - - cmd.command = "summary"; - t.ok (cmd.isReadOnlyCommand (), "isReadOnlyCommand summary"); - t.notok (cmd.isWriteCommand (), "not isWriteCommand summary"); - - cmd.command = "tags"; - t.ok (cmd.isReadOnlyCommand (), "isReadOnlyCommand tags"); - t.notok (cmd.isWriteCommand (), "not isWriteCommand tags"); - - cmd.command = "timesheet"; - t.ok (cmd.isReadOnlyCommand (), "isReadOnlyCommand timesheet"); - t.notok (cmd.isWriteCommand (), "not isWriteCommand timesheet"); - - cmd.command = "version"; - t.ok (cmd.isReadOnlyCommand (), "isReadOnlyCommand version"); - t.notok (cmd.isWriteCommand (), "not isWriteCommand version"); - - cmd.command = "_projects"; - t.ok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand _projects"); - t.notok (cmd.isWriteCommand (), "isWriteCommand _projects"); - - cmd.command = "_tags"; - t.ok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand _tags"); - t.notok (cmd.isWriteCommand (), "isWriteCommand _tags"); - - cmd.command = "add"; - t.notok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand add"); - t.ok (cmd.isWriteCommand (), "isWriteCommand add"); - - cmd.command = "log"; - t.notok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand log"); - t.ok (cmd.isWriteCommand (), "isWriteCommand log"); - - cmd.command = "append"; - t.notok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand append"); - t.ok (cmd.isWriteCommand (), "isWriteCommand append"); - - cmd.command = "annotate"; - t.notok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand annotate"); - t.ok (cmd.isWriteCommand (), "isWriteCommand annotate"); - - cmd.command = "delete"; - t.notok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand delete"); - t.ok (cmd.isWriteCommand (), "isWriteCommand delete"); - - cmd.command = "done"; - t.notok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand done"); - t.ok (cmd.isWriteCommand (), "isWriteCommand done"); - - cmd.command = "duplicate"; - t.notok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand duplicate"); - t.ok (cmd.isWriteCommand (), "isWriteCommand duplicate"); - - cmd.command = "edit"; - t.notok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand edit"); - t.ok (cmd.isWriteCommand (), "isWriteCommand edit"); - - cmd.command = "import"; - t.notok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand import"); - t.ok (cmd.isWriteCommand (), "isWriteCommand import"); - - cmd.command = "start"; - t.notok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand start"); - t.ok (cmd.isWriteCommand (), "isWriteCommand start"); - - cmd.command = "stop"; - t.notok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand stop"); - t.ok (cmd.isWriteCommand (), "isWriteCommand stop"); - - cmd.command = "undo"; - t.notok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand undo"); - t.ok (cmd.isWriteCommand (), "isWriteCommand undo"); - - t.ok (cmd.valid ("annotate"), "Cmd::valid annotate"); - t.ok (cmd.valid ("annotat"), "Cmd::valid annotat"); - t.ok (cmd.valid ("annota"), "Cmd::valid annota"); - t.ok (cmd.valid ("annot"), "Cmd::valid annot"); - t.ok (cmd.valid ("anno"), "Cmd::valid anno"); - t.ok (cmd.valid ("ann"), "Cmd::valid ann"); - t.ok (cmd.valid ("an"), "Cmd::valid an"); - - t.ok (cmd.valid ("ANNOTATE"), "Cmd::valid ANNOTATE"); - t.ok (cmd.valid ("ANNOTAT"), "Cmd::valid ANNOTAT"); - t.ok (cmd.valid ("ANNOTA"), "Cmd::valid ANNOTA"); - t.ok (cmd.valid ("ANNOT"), "Cmd::valid ANNOT"); - t.ok (cmd.valid ("ANNO"), "Cmd::valid ANNO"); - t.ok (cmd.valid ("ANN"), "Cmd::valid ANN"); - t.ok (cmd.valid ("AN"), "Cmd::valid AN"); - - t.ok (cmd.validCustom ("foo"), "Cmd::validCustom foo"); - t.notok (cmd.validCustom ("bar"), "Cmd::validCustom bar -> fail"); - - bool good = true; - try { cmd.parse ("a"); } catch (...) { good = false; } - t.notok (good, "Cmd::parse a -> fail"); - - good = true; - try { cmd.parse ("add"); } catch (...) { good = false; } - t.ok (good, "Cmd::parse add"); - - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// diff --git a/test/tdb.t.cpp b/test/tdb.t.cpp index 4b774bfa0..581bfb965 100644 --- a/test/tdb.t.cpp +++ b/test/tdb.t.cpp @@ -27,8 +27,8 @@ #include #include -#include "main.h" -#include "test.h" +#include +#include Context context;