Treat a nonzero exit status as a failure (#3430)
And fix the test cases that have been failing ,undetected
This commit is contained in:
committed by
GitHub
parent
50cfbe8b63
commit
28a46880a2
@@ -439,6 +439,7 @@ Context* Context::context;
|
|||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
Context& Context::getContext ()
|
Context& Context::getContext ()
|
||||||
{
|
{
|
||||||
|
assert (Context::context);
|
||||||
return *Context::context;
|
return *Context::context;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,6 +28,7 @@
|
|||||||
#include <CmdVersion.h>
|
#include <CmdVersion.h>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <Datetime.h>
|
||||||
#include <Context.h>
|
#include <Context.h>
|
||||||
#include <Table.h>
|
#include <Table.h>
|
||||||
#ifdef HAVE_COMMIT
|
#ifdef HAVE_COMMIT
|
||||||
@@ -70,6 +71,8 @@ int CmdVersion::execute (std::string& output)
|
|||||||
link.add ("");
|
link.add ("");
|
||||||
link.set (link.addRow (), 0, "Documentation for Taskwarrior can be found using 'man task', 'man taskrc', 'man task-color', 'man task-sync' or at https://taskwarrior.org");
|
link.set (link.addRow (), 0, "Documentation for Taskwarrior can be found using 'man task', 'man taskrc', 'man task-color', 'man task-sync' or at https://taskwarrior.org");
|
||||||
|
|
||||||
|
Datetime now;
|
||||||
|
|
||||||
Color bold;
|
Color bold;
|
||||||
if (Context::getContext ().color ())
|
if (Context::getContext ().color ())
|
||||||
bold = Color ("bold");
|
bold = Color ("bold");
|
||||||
@@ -78,7 +81,7 @@ int CmdVersion::execute (std::string& output)
|
|||||||
<< format ("{1} {2} built for ", bold.colorize (PACKAGE), bold.colorize (VERSION))
|
<< format ("{1} {2} built for ", bold.colorize (PACKAGE), bold.colorize (VERSION))
|
||||||
<< osName ()
|
<< osName ()
|
||||||
<< '\n'
|
<< '\n'
|
||||||
<< "Copyright (C) 2006 - 2021 T. Babej, P. Beckingham, F. Hernandez."
|
<< "Copyright (C) 2006 - " << now.year () << " T. Babej, P. Beckingham, F. Hernandez."
|
||||||
<< '\n'
|
<< '\n'
|
||||||
<< '\n'
|
<< '\n'
|
||||||
<< disclaimer.render ()
|
<< disclaimer.render ()
|
||||||
|
|||||||
@@ -42,6 +42,9 @@ DEFAULT_HOOK_PATH = os.path.abspath(
|
|||||||
os.path.join("${CMAKE_SOURCE_DIR}", "test", "test_hooks")
|
os.path.join("${CMAKE_SOURCE_DIR}", "test", "test_hooks")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Source directory
|
||||||
|
SOURCE_DIR = os.path.abspath("${CMAKE_SOURCE_DIR}")
|
||||||
|
|
||||||
|
|
||||||
# Environment flags to control skipping of task tests
|
# Environment flags to control skipping of task tests
|
||||||
TASKW_SKIP = os.environ.get("TASKW_SKIP", False)
|
TASKW_SKIP = os.environ.get("TASKW_SKIP", False)
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
#include <cmake.h>
|
#include <cmake.h>
|
||||||
#include <test.h>
|
#include <test.h>
|
||||||
|
#include <Context.h>
|
||||||
#include <Eval.h>
|
#include <Eval.h>
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
@@ -44,6 +45,8 @@ bool get (const std::string& name, Variant& value)
|
|||||||
int main (int, char**)
|
int main (int, char**)
|
||||||
{
|
{
|
||||||
UnitTest t (52);
|
UnitTest t (52);
|
||||||
|
Context context;
|
||||||
|
Context::setContext(&context);
|
||||||
|
|
||||||
// Test the source independently.
|
// Test the source independently.
|
||||||
Variant v;
|
Variant v;
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
int main (int, char**)
|
int main (int, char**)
|
||||||
{
|
{
|
||||||
#ifdef PRODUCT_TASKWARRIOR
|
#ifdef PRODUCT_TASKWARRIOR
|
||||||
UnitTest t (1253);
|
UnitTest t (1255);
|
||||||
#else
|
#else
|
||||||
UnitTest t (1235);
|
UnitTest t (1235);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -47,6 +47,9 @@ def run_test(testqueue, outqueue, threadname):
|
|||||||
if sys.version_info > (3,):
|
if sys.version_info > (3,):
|
||||||
out, err = out.decode('utf-8'), err.decode('utf-8')
|
out, err = out.decode('utf-8'), err.decode('utf-8')
|
||||||
|
|
||||||
|
if p.returncode != 0:
|
||||||
|
out = out + "\nnot ok - test executable failed\n"
|
||||||
|
|
||||||
output = ("# {0}\n".format(os.path.basename(test)), out, err)
|
output = ("# {0}\n".format(os.path.basename(test)), out, err)
|
||||||
log.debug("Collected output %s", output)
|
log.debug("Collected output %s", output)
|
||||||
outqueue.put(output)
|
outqueue.put(output)
|
||||||
|
|||||||
@@ -33,6 +33,8 @@
|
|||||||
int main (int, char**)
|
int main (int, char**)
|
||||||
{
|
{
|
||||||
UnitTest test (49);
|
UnitTest test (49);
|
||||||
|
Context context;
|
||||||
|
Context::setContext(&context);
|
||||||
|
|
||||||
// Ensure environment has no influence.
|
// Ensure environment has no influence.
|
||||||
unsetenv ("TASKDATA");
|
unsetenv ("TASKDATA");
|
||||||
@@ -152,44 +154,10 @@ TODO Task::decode
|
|||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
Task task;
|
Task task;
|
||||||
|
|
||||||
// (blank)
|
|
||||||
good = true;
|
|
||||||
try {task = Task ("");}
|
|
||||||
catch (const std::string& e){test.diag (e); good = false;}
|
|
||||||
test.notok (good, "Task::Task ('')");
|
|
||||||
|
|
||||||
// []
|
|
||||||
good = true;
|
|
||||||
try {task = Task ("[]");}
|
|
||||||
catch (const std::string& e){test.diag (e); good = false;}
|
|
||||||
test.notok (good, "Task::Task ('[]')");
|
|
||||||
|
|
||||||
// [name:"value"]
|
|
||||||
good = true;
|
|
||||||
try {task = Task ("[name:\"value\"]");}
|
|
||||||
catch (const std::string& e){test.diag (e); good = false;}
|
|
||||||
test.ok (good, "Task::Task ('[name:\"value\"]')");
|
|
||||||
test.is (task.get ("name"), "value", "name=value");
|
|
||||||
|
|
||||||
// [name:"one two"]
|
|
||||||
good = true;
|
|
||||||
try {task = Task ("[name:\"one two\"]");}
|
|
||||||
catch (const std::string& e){test.diag (e); good = false;}
|
|
||||||
test.ok (good, "Task::Task ('[name:\"one two\"]')");
|
|
||||||
test.is (task.get ("name"), "one two", "name=one two");
|
|
||||||
|
|
||||||
// [one:two three:four]
|
|
||||||
good = true;
|
|
||||||
try {task = Task (R"([one:"two" three:"four"])");}
|
|
||||||
catch (const std::string& e){test.diag (e); good = false;}
|
|
||||||
test.ok (good, R"(Task::Task ('[one:"two" three:"four"]'))");
|
|
||||||
test.is (task.get ("one"), "two", "one=two");
|
|
||||||
test.is (task.get ("three"), "four", "three=four");
|
|
||||||
|
|
||||||
// Task::set
|
// Task::set
|
||||||
task = Task();
|
task = Task();
|
||||||
task.set ("name", "value");
|
task.set ("name", "value");
|
||||||
test.is (task.composeF4 (), "[name:\"value\"]", "Task::set");
|
test.is (task.composeJSON (), "{\"name\":\"value\"}", "Task::set");
|
||||||
|
|
||||||
// Task::has
|
// Task::has
|
||||||
test.ok (task.has ("name"), "Task::has");
|
test.ok (task.has ("name"), "Task::has");
|
||||||
@@ -197,18 +165,18 @@ TODO Task::decode
|
|||||||
|
|
||||||
// Task::get_int
|
// Task::get_int
|
||||||
task.set ("one", 1);
|
task.set ("one", 1);
|
||||||
test.is (task.composeF4 (), R"([name:"value" one:"1"])", "Task::set");
|
test.is (task.composeJSON (), R"({"name":"value","one":"1"})", "Task::set");
|
||||||
test.is (task.get_int ("one"), 1, "Task::get_int");
|
test.is (task.get_int ("one"), 1, "Task::get_int");
|
||||||
|
|
||||||
// Task::get_ulong
|
// Task::get_ulong
|
||||||
task.set ("two", "4294967295");
|
task.set ("two", "4294967295");
|
||||||
test.is (task.composeF4 (), R"([name:"value" one:"1" two:"4294967295"])", "Task::set");
|
test.is (task.composeJSON (), R"({"name":"value","one":"1","two":"4294967295"})", "Task::set");
|
||||||
test.is ((size_t)task.get_ulong ("two"), (size_t)4294967295UL, "Task::get_ulong");
|
test.is ((size_t)task.get_ulong ("two"), (size_t)4294967295UL, "Task::get_ulong");
|
||||||
|
|
||||||
// Task::remove
|
// Task::remove
|
||||||
task.remove ("one");
|
task.remove ("one");
|
||||||
task.remove ("two");
|
task.remove ("two");
|
||||||
test.is (task.composeF4 (), "[name:\"value\"]", "Task::remove");
|
test.is (task.composeJSON (), "{\"name\":\"value\"}", "Task::remove");
|
||||||
|
|
||||||
// Task::all
|
// Task::all
|
||||||
test.is (task.all ().size (), (size_t)1, "Task::all size");
|
test.is (task.all ().size (), (size_t)1, "Task::all size");
|
||||||
@@ -230,16 +198,14 @@ TODO Task::decode
|
|||||||
catch (const std::string& e){test.diag (e); good = false;}
|
catch (const std::string& e){test.diag (e); good = false;}
|
||||||
test.ok (good, "Task::Task ('{<minimal>}')");
|
test.ok (good, "Task::Task ('{<minimal>}')");
|
||||||
|
|
||||||
// Verify tag handling is correct between F4 and JSON.
|
// Verify tag handling is correct
|
||||||
Task t6;
|
Task t6;
|
||||||
t6.set ("entry", "20130602T224000Z");
|
t6.set ("entry", "20130602T224000Z");
|
||||||
t6.set ("description", "DESC");
|
t6.set ("description", "DESC");
|
||||||
t6.addTag ("tag1");
|
t6.addTag ("tag1");
|
||||||
test.is (t6.composeF4 (), R"([description:"DESC" entry:"20130602T224000Z" tags:"tag1"])", "F4 good");
|
|
||||||
test.is (t6.composeJSON (), R"({"description":"DESC","entry":"20130602T224000Z","tags":["tag1"]})", "JSON good");
|
test.is (t6.composeJSON (), R"({"description":"DESC","entry":"20130602T224000Z","tags":["tag1"]})", "JSON good");
|
||||||
|
|
||||||
t6.addTag ("tag2");
|
t6.addTag ("tag2");
|
||||||
test.is (t6.composeF4 (), R"([description:"DESC" entry:"20130602T224000Z" tags:"tag1,tag2"])", "F4 good");
|
|
||||||
test.is (t6.composeJSON (), R"({"description":"DESC","entry":"20130602T224000Z","tags":["tag1","tag2"]})", "JSON good");
|
test.is (t6.composeJSON (), R"({"description":"DESC","entry":"20130602T224000Z","tags":["tag1","tag2"]})", "JSON good");
|
||||||
|
|
||||||
good = true;
|
good = true;
|
||||||
@@ -247,7 +213,6 @@ TODO Task::decode
|
|||||||
try {t7 = Task (R"({"description":"DESC","entry":"20130602T224000Z","tags":["tag1","tag2"]})");}
|
try {t7 = Task (R"({"description":"DESC","entry":"20130602T224000Z","tags":["tag1","tag2"]})");}
|
||||||
catch (const std::string& e){test.diag (e); good = false;}
|
catch (const std::string& e){test.diag (e); good = false;}
|
||||||
test.ok (good, "Task::Task ('{two tags}')");
|
test.ok (good, "Task::Task ('{two tags}')");
|
||||||
test.is (t7.composeF4 (), R"([description:"DESC" entry:"1370212800" tags:"tag1,tag2"])", "F4 good");
|
|
||||||
test.is (t7.composeJSON (), R"({"description":"DESC","entry":"20130602T224000Z","tags":["tag1","tag2"]})", "JSON good");
|
test.is (t7.composeJSON (), R"({"description":"DESC","entry":"20130602T224000Z","tags":["tag1","tag2"]})", "JSON good");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -37,16 +37,15 @@ void cleardb ()
|
|||||||
{
|
{
|
||||||
// Remove any residual test files.
|
// Remove any residual test files.
|
||||||
rmdir ("./extensions");
|
rmdir ("./extensions");
|
||||||
unlink ("./pending.data");
|
unlink ("./taskchampion.sqlite3");
|
||||||
unlink ("./completed.data");
|
|
||||||
unlink ("./undo.data");
|
|
||||||
unlink ("./backlog.data");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
int main (int, char**)
|
int main (int, char**)
|
||||||
{
|
{
|
||||||
UnitTest t (12);
|
UnitTest t (12);
|
||||||
|
Context context;
|
||||||
|
Context::setContext(&context);
|
||||||
|
|
||||||
// Ensure environment has no influence.
|
// Ensure environment has no influence.
|
||||||
unsetenv ("TASKDATA");
|
unsetenv ("TASKDATA");
|
||||||
@@ -84,8 +83,8 @@ int main (int, char**)
|
|||||||
|
|
||||||
t.is ((int) pending.size (), 1, "TDB2 after add, 1 pending task");
|
t.is ((int) pending.size (), 1, "TDB2 after add, 1 pending task");
|
||||||
t.is ((int) completed.size (), 0, "TDB2 after add, 0 completed tasks");
|
t.is ((int) completed.size (), 0, "TDB2 after add, 0 completed tasks");
|
||||||
t.is ((int) num_reverts_possible, 3, "TDB2 after add, 3 undo lines");
|
t.is ((int) num_reverts_possible, 1, "TDB2 after add, 1 revert possible");
|
||||||
t.is ((int) num_local_changes, 1, "TDB2 after add, 1 backlog task");
|
t.is ((int) num_local_changes, 6, "TDB2 after add, 6 local changes");
|
||||||
|
|
||||||
task.set ("description", "This is a test");
|
task.set ("description", "This is a test");
|
||||||
context.tdb2.modify (task);
|
context.tdb2.modify (task);
|
||||||
@@ -95,10 +94,10 @@ int main (int, char**)
|
|||||||
num_reverts_possible = context.tdb2.num_reverts_possible ();
|
num_reverts_possible = context.tdb2.num_reverts_possible ();
|
||||||
num_local_changes = context.tdb2.num_local_changes ();
|
num_local_changes = context.tdb2.num_local_changes ();
|
||||||
|
|
||||||
t.is ((int) pending.size (), 1, "TDB2 after add, 1 pending task");
|
t.is ((int) pending.size (), 1, "TDB2 after set, 1 pending task");
|
||||||
t.is ((int) completed.size (), 0, "TDB2 after add, 0 completed tasks");
|
t.is ((int) completed.size (), 0, "TDB2 after set, 0 completed tasks");
|
||||||
t.is ((int) num_reverts_possible, 7, "TDB2 after add, 7 undo lines");
|
t.is ((int) num_reverts_possible, 1, "TDB2 after set, 1 revert possible");
|
||||||
t.is ((int) num_local_changes, 2, "TDB2 after add, 2 backlog task");
|
t.is ((int) num_local_changes, 7, "TDB2 after set, 7 local changes");
|
||||||
|
|
||||||
// Reset for reuse.
|
// Reset for reuse.
|
||||||
cleardb ();
|
cleardb ();
|
||||||
|
|||||||
@@ -128,7 +128,8 @@ void UnitTest::ok (bool expression, const std::string& name, bool expfail /* = f
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
++_failed;
|
if (success == expfail)
|
||||||
|
++_failed;
|
||||||
std::cout << red ("not ok")
|
std::cout << red ("not ok")
|
||||||
<< " "
|
<< " "
|
||||||
<< _counter
|
<< _counter
|
||||||
@@ -158,7 +159,8 @@ void UnitTest::notok (bool expression, const std::string& name, bool expfail /*
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
++_failed;
|
if (success == expfail)
|
||||||
|
++_failed;
|
||||||
std::cout << red ("not ok")
|
std::cout << red ("not ok")
|
||||||
<< " "
|
<< " "
|
||||||
<< _counter
|
<< _counter
|
||||||
@@ -187,7 +189,8 @@ void UnitTest::is (bool actual, bool expected, const std::string& name, bool exp
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
++_failed;
|
if (success == expfail)
|
||||||
|
++_failed;
|
||||||
std::cout << red ("not ok")
|
std::cout << red ("not ok")
|
||||||
<< " "
|
<< " "
|
||||||
<< _counter
|
<< _counter
|
||||||
@@ -220,7 +223,8 @@ void UnitTest::is (size_t actual, size_t expected, const std::string& name, bool
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
++_failed;
|
if (success == expfail)
|
||||||
|
++_failed;
|
||||||
std::cout << red ("not ok")
|
std::cout << red ("not ok")
|
||||||
<< " "
|
<< " "
|
||||||
<< _counter
|
<< _counter
|
||||||
@@ -253,7 +257,8 @@ void UnitTest::is (int actual, int expected, const std::string& name, bool expfa
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
++_failed;
|
if (success == expfail)
|
||||||
|
++_failed;
|
||||||
std::cout << red ("not ok")
|
std::cout << red ("not ok")
|
||||||
<< " "
|
<< " "
|
||||||
<< _counter
|
<< _counter
|
||||||
@@ -286,7 +291,8 @@ void UnitTest::is (double actual, double expected, const std::string& name, bool
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
++_failed;
|
if (success == expfail)
|
||||||
|
++_failed;
|
||||||
std::cout << red ("not ok")
|
std::cout << red ("not ok")
|
||||||
<< " "
|
<< " "
|
||||||
<< _counter
|
<< _counter
|
||||||
@@ -319,7 +325,8 @@ void UnitTest::is (double actual, double expected, double tolerance, const std::
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
++_failed;
|
if (success == expfail)
|
||||||
|
++_failed;
|
||||||
std::cout << red ("not ok")
|
std::cout << red ("not ok")
|
||||||
<< " "
|
<< " "
|
||||||
<< _counter
|
<< _counter
|
||||||
@@ -352,7 +359,8 @@ void UnitTest::is (unsigned char actual, unsigned char expected, const std::stri
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
++_failed;
|
if (success == expfail)
|
||||||
|
++_failed;
|
||||||
std::cout << red ("not ok")
|
std::cout << red ("not ok")
|
||||||
<< " "
|
<< " "
|
||||||
<< _counter
|
<< _counter
|
||||||
@@ -389,7 +397,8 @@ void UnitTest::is (
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
++_failed;
|
if (success == expfail)
|
||||||
|
++_failed;
|
||||||
std::cout << red ("not ok")
|
std::cout << red ("not ok")
|
||||||
<< " "
|
<< " "
|
||||||
<< _counter
|
<< _counter
|
||||||
@@ -427,7 +436,8 @@ void UnitTest::is (
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
++_failed;
|
if (success == expfail)
|
||||||
|
++_failed;
|
||||||
std::cout << red ("not ok")
|
std::cout << red ("not ok")
|
||||||
<< " "
|
<< " "
|
||||||
<< _counter
|
<< _counter
|
||||||
|
|||||||
@@ -35,6 +35,8 @@
|
|||||||
int main (int, char**)
|
int main (int, char**)
|
||||||
{
|
{
|
||||||
UnitTest t (19);
|
UnitTest t (19);
|
||||||
|
Context context;
|
||||||
|
Context::setContext(&context);
|
||||||
|
|
||||||
// Ensure environment has no influence.
|
// Ensure environment has no influence.
|
||||||
unsetenv ("TASKDATA");
|
unsetenv ("TASKDATA");
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ from datetime import datetime
|
|||||||
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
||||||
|
|
||||||
from basetest import Task, TestCase
|
from basetest import Task, TestCase
|
||||||
from basetest.utils import run_cmd_wait
|
from basetest.utils import run_cmd_wait, SOURCE_DIR
|
||||||
|
|
||||||
|
|
||||||
class TestVersion(TestCase):
|
class TestVersion(TestCase):
|
||||||
@@ -50,7 +50,6 @@ class TestVersion(TestCase):
|
|||||||
|
|
||||||
self.assertIn("You must specify a command or a task to modify", err)
|
self.assertIn("You must specify a command or a task to modify", err)
|
||||||
|
|
||||||
@unittest.skip(reason="See #3424")
|
|
||||||
def test_copyright_up_to_date(self):
|
def test_copyright_up_to_date(self):
|
||||||
"""Copyright is current"""
|
"""Copyright is current"""
|
||||||
code, out, err = self.t("version")
|
code, out, err = self.t("version")
|
||||||
@@ -58,18 +57,16 @@ class TestVersion(TestCase):
|
|||||||
expected = r"Copyright \(C\) \d{4} - %d" % (datetime.now().year,)
|
expected = r"Copyright \(C\) \d{4} - %d" % (datetime.now().year,)
|
||||||
self.assertRegex(out, expected)
|
self.assertRegex(out, expected)
|
||||||
|
|
||||||
def slurp(self, file="../CMakeLists.txt"):
|
def slurp(self, file=os.path.join(SOURCE_DIR, "CMakeLists.txt")):
|
||||||
number = r"\.".join(["[0-9]+"] * 3)
|
number = "\.".join(["[0-9]+"] * 3)
|
||||||
ver = re.compile("^set \\(PROJECT_VERSION \"({0}[^\"]*)\"\\)$".format(number))
|
ver = re.compile("^ *VERSION ({0}[^\"]*)$".format(number))
|
||||||
with open(file) as fh:
|
with open(file) as fh:
|
||||||
for line in fh:
|
for line in fh:
|
||||||
if "PROJECT_VERSION" in line:
|
match = ver.match(line)
|
||||||
match = ver.match(line)
|
if match:
|
||||||
if match:
|
return match.group(1).strip()
|
||||||
return match.group(1)
|
|
||||||
raise ValueError("Couldn't find matching version in {0}".format(file))
|
raise ValueError("Couldn't find matching version in {0}".format(file))
|
||||||
|
|
||||||
@unittest.skip(reason="See #3424")
|
|
||||||
def test_version(self):
|
def test_version(self):
|
||||||
"""version command outputs expected version and license"""
|
"""version command outputs expected version and license"""
|
||||||
code, out, err = self.t("version")
|
code, out, err = self.t("version")
|
||||||
@@ -79,7 +76,6 @@ class TestVersion(TestCase):
|
|||||||
self.assertIn("MIT license", out)
|
self.assertIn("MIT license", out)
|
||||||
self.assertIn("https://taskwarrior.org", out)
|
self.assertIn("https://taskwarrior.org", out)
|
||||||
|
|
||||||
@unittest.skip(reason="See #3424")
|
|
||||||
def test_under_version(self):
|
def test_under_version(self):
|
||||||
"""_version and diagnostics output expected version and syntax"""
|
"""_version and diagnostics output expected version and syntax"""
|
||||||
code, out, err = self.t("_version")
|
code, out, err = self.t("_version")
|
||||||
|
|||||||
@@ -43,6 +43,8 @@ extern std::string configurationDefaults;
|
|||||||
int main (int, char**)
|
int main (int, char**)
|
||||||
{
|
{
|
||||||
UnitTest t (1);
|
UnitTest t (1);
|
||||||
|
Context context;
|
||||||
|
Context::setContext(&context);
|
||||||
|
|
||||||
// Ensure environment has no influence.
|
// Ensure environment has no influence.
|
||||||
unsetenv ("TASKDATA");
|
unsetenv ("TASKDATA");
|
||||||
|
|||||||
Reference in New Issue
Block a user