Test: Converted to Python

This commit is contained in:
Paul Beckingham
2015-07-23 22:33:38 -04:00
parent 84b1921b36
commit 3329d5d037

View File

@@ -1,98 +1,90 @@
#! /usr/bin/env perl #!/usr/bin/env python2.7
################################################################################ # -*- coding: utf-8 -*-
## ###############################################################################
## Copyright 2006 - 2015, Paul Beckingham, Federico Hernandez. #
## # Copyright 2006 - 2015, Paul Beckingham, Federico Hernandez.
## Permission is hereby granted, free of charge, to any person obtaining a copy #
## of this software and associated documentation files (the "Software"), to deal # Permission is hereby granted, free of charge, to any person obtaining a copy
## in the Software without restriction, including without limitation the rights # of this software and associated documentation files (the "Software"), to deal
## to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # in the Software without restriction, including without limitation the rights
## copies of the Software, and to permit persons to whom the Software is # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
## furnished to do so, subject to the following conditions: # copies of the Software, and to permit persons to whom the Software is
## # furnished to do so, subject to the following conditions:
## The above copyright notice and this permission notice shall be included #
## in all copies or substantial portions of the Software. # The above copyright notice and this permission notice shall be included
## # in all copies or substantial portions of the Software.
## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS #
## OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
## THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
## LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
## OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
## SOFTWARE. # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
## # SOFTWARE.
## http://www.opensource.org/licenses/mit-license.php #
## # http://www.opensource.org/licenses/mit-license.php
################################################################################ #
###############################################################################
use strict; import sys
use warnings; import os
use Test::More tests => 9; import unittest
# Ensure python finds the local simpletap module
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
# Ensure environment has no influence. from basetest import Task, TestCase
delete $ENV{'TASKDATA'};
delete $ENV{'TASKRC'};
# Create the rc file.
if (open my $fh, '>', 'uda.rc')
{
print $fh "data.location=.\n",
"confirmation=off\n",
"uda.extra.type=string\n",
"uda.extra.label=Extra\n";
close $fh;
}
# Add a task with a defined UDA. class TestUDAOrphans(TestCase):
qx{../src/task rc:uda.rc add one extra:foo 2>&1}; @classmethod
my $output = qx{../src/task rc:uda.rc 1 info 2>&1}; def setUpClass(cls):
like ($output, qr/Extra\s+foo/, 'UDA created'); """Executed once before any test in the class"""
# Eliminate the UDA. def setUp(self):
if (open my $fh, '>', 'uda.rc') """Executed before each test in the class"""
{ self.t = Task()
print $fh "data.location=.\n",
"confirmation=off\n";
close $fh;
}
# Observe the UDA properly reported by the 'info' command. def test_orphan_handling(self):
$output = qx{../src/task rc:uda.rc 1 info 2>&1}; """Verify that orphans are preserved during various operations"""
like ($output, qr/extra\s+foo/, 'UDA orphan shown');
# Modify the task, ensure UDA preserved. self.t("rc.uda.extra.type:string rc.uda.extra.label:Extra add one extra:foo")
qx{../src/task rc:uda.rc 1 modify /one/two/ 2>&1}; code, out, err = self.t("rc.uda.extra.type:string rc.uda.extra.label:Extra _get 1.extra")
$output = qx{../src/task rc:uda.rc 1 info 2>&1}; self.assertEqual("foo\n", out)
like ($output, qr/extra\s+foo/, 'UDA orphan preserved by modification');
# Make sure an orphan UDA is exported. # DOM access for orphans is not supported.
$output = qx{../src/task rc:uda.rc export 2>&1}; self.t.runError("_get 1.extra")
like ($output, qr/"extra":"foo"/, 'UDA orphan exported');
# Make sure an orphan UDA can be exported. # 'info' should show orphans.
if (open my $fh, '>', 'import.txt') code, out, err = self.t("1 info")
{ self.assertRegexpMatches(out, "\[extra\s+foo\]")
print $fh <<EOF;
{"uuid":"00000000-0000-0000-0000-000000000000","description":"two","status":"pending","entry":"1234567889","extra":"bar"}
EOF
close $fh; # 'modify' should not change the orphan
} self.t("1 modify /one/two/")
code, out, err = self.t("1 info")
self.assertRegexpMatches(out, "\[extra\s+foo\]")
$output = qx{../src/task rc:uda.rc import import.txt 2>&1 >/dev/null}; # 'export' should include orphans.
like ($output, qr/Imported 1 tasks\./, 'UDA orphan import'); code, out, err = self.t("1 export")
$output = qx{../src/task rc:uda.rc 2 info 2>&1}; self.assertIn('"extra":"foo"', out)
like ($output, qr/extra\s+bar/, 'UDA orphan imported and visible');
# Make sure an orphan cannot be created from the command line. def test_orphan_import(self):
$output = qx{../src/task rc:uda.rc add three name:value 2>&1}; """Verify importing an orphan succeeds and is visible"""
like ($output, qr/Created task 3/, 'Task with orphan added, but as description'); json = '{"description":"one","extra":"foo","status":"pending"}'
$output = qx{../src/task rc:uda.rc _get 3.name}; code, out, err = self.t("import -", input=json)
is ($output, "\n", 'name:value not added as <name>:<value>'); self.assertIn("Imported 1 tasks.", err)
$output = qx{../src/task rc:uda.rc _get 3.description};
is ($output, "three name:value\n", 'name:value added as description');
# Cleanup. code, out, err = self.t("export")
unlink qw(pending.data completed.data undo.data backlog.data uda.rc import.txt); self.assertIn('"extra":"foo"', out)
exit 0;
def test_orphan_creation_forbidden(self):
"""It should not be possible to create and orphan from the command line"""
self.t("add one extra:foo")
code, out, err = self.t("_get 1.description")
self.assertIn("one extra:foo", out)
if __name__ == "__main__":
from simpletap import TAPTestRunner
unittest.main(testRunner=TAPTestRunner())
# vim: ai sts=4 et sw=4