From bc64a0805459707c63d6d8866658120cdd6ca0d4 Mon Sep 17 00:00:00 2001 From: Renato Alves Date: Fri, 17 Jul 2015 18:59:48 +0100 Subject: [PATCH] Test: Convert roundtrip.t to Python and merge with import.t --- test/import.t | 43 ++++++++++++++++++++++-- test/roundtrip.t | 86 ------------------------------------------------ 2 files changed, 41 insertions(+), 88 deletions(-) delete mode 100755 test/roundtrip.t diff --git a/test/import.t b/test/import.t index 81e5a6ff8..d0e544d0c 100755 --- a/test/import.t +++ b/test/import.t @@ -146,14 +146,53 @@ class TestImport(TestCase): def test_import_newlines_whitespace(self): """JSON array with whitespace before and after names and values""" _data = """[ -{ "uuid":"00000000-0000-0000-0000-000000000000" , "description" : "zero" ,"project":"A", "status":"pending","entry":"1234567889" } , -{ "uuid":"11111111-1111-1111-1111-111111111111","description":"one","project":"B","status":"pending","entry":"1234567889"}, {"uuid":"22222222-2222-2222-2222-222222222222","description":"two","status":"completed","entry":"1234524689","end":"1234524690" } +{ "uuid":"a0000000-a000-a000-a000-a00000000000" , "description" : "zero" ,"project":"A", "status":"pending","entry":"1234567889" } , +{ "uuid":"a1111111-a111-a111-a111-a11111111111","description":"one","project":"B","status":"pending","entry":"1234567889"}, {"uuid":"a2222222-a222-a222-a222-a22222222222","description":"two","status":"completed","entry":"1234524689","end":"1234524690" } ]""" code, out, err = self.t("import", input=_data) self.assertIn("Imported 3 tasks", err) self.assertData1() +class TestImportExportRoundtrip(TestCase): + def setUp(self): + self.t1 = Task() + self.t2 = Task() + + for client in (self.t1, self.t2): + client.config("dateformat", "m/d/Y") + client.config("verbose", "off") + client.config("defaultwidth", "100") + client.config("json.array", "off") + + def _validate_data(self, client): + code, out, err = client("_get 1.priority") + self.assertEqual("H\n", out) + code, out, err = client("_get 1.project") + self.assertEqual("A\n", out) + code, out, err = client("_get 1.description") + self.assertEqual("one/1\n", out) + code, out, err = client("_get 2.tags") + self.assertEqual("tag1,tag2\n", out) + code, out, err = client("_get 2.description") + self.assertEqual("two\n", out) + + def test_import_export(self): + """Test importing exported data""" + self.t1("add priority:H project:A -- one/1") + self.t1("add +tag1 +tag2 two") + + code, out1, err = self.t1("export") + + self.t2("import -", input=out1) + code, out2, err = self.t2("export") + + self.assertEqual(out1, out2) + + self._validate_data(self.t1) + self._validate_data(self.t2) + + if __name__ == "__main__": from simpletap import TAPTestRunner unittest.main(testRunner=TAPTestRunner()) diff --git a/test/roundtrip.t b/test/roundtrip.t deleted file mode 100755 index 06fa8b3ee..000000000 --- a/test/roundtrip.t +++ /dev/null @@ -1,86 +0,0 @@ -#! /usr/bin/env perl -################################################################################ -## -## 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 -## in the Software without restriction, including without limitation the rights -## to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -## 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -## OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -## THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -## LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -## 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 -## -################################################################################ - -use strict; -use warnings; -use Test::More tests => 5; - -# Ensure environment has no influence. -delete $ENV{'TASKDATA'}; -delete $ENV{'TASKRC'}; - -use File::Basename; -my $ut = basename ($0); -my $rc = $ut . '.rc'; - -# Create the rc file. -if (open my $fh, '>', $rc) -{ - print $fh "data.location=.\n", - "verbose=off\n", - "confirmation=no\n", - "defaultwidth=100\n", - "dateformat=m/d/Y\n", - "json.array=off"; - close $fh; -} - -# Add two tasks. -qx{../src/task rc:$rc add priority:H project:A -- one/1 2>&1}; -qx{../src/task rc:$rc add +tag1 +tag2 two 2>&1}; - -# trip 1. -qx{../src/task rc:$rc export > roundtrip1.json 2>/dev/null}; -ok (-s 'roundtrip1.json' > 0, "$ut: roundtrip1.json is not empty"); -unlink 'pending.data', 'completed.data', 'undo.data', 'backlog.data'; -qx{../src/task rc:$rc import roundtrip1.json 2>/dev/null}; - -# trip 2. -qx{../src/task rc:$rc export > roundtrip2.json 2>/dev/null}; -ok (-s 'roundtrip2.json' > 0, "$ut: roundtrip2.json is not empty"); -unlink 'pending.data', 'completed.data', 'undo.data', 'backlog.data'; -qx{../src/task rc:$rc import roundtrip2.json 2>/dev/null}; - -# Examine. -# -# ID Created P Project Tags Description -# -- ---------- - ------- --------- ----------- -# 1 1/7/2014 H A one/1 -# 2 1/7/2014 tag1 tag2 two - -my $output = qx{../src/task rc:$rc long 2>&1}; -like ($output, qr/1\s+\d+\/\d+\/\d+.+\sH\s+A\s+one\/1/, "$ut: 2 round trips task 1 identical"); -like ($output, qr/2\s+\d+\/\d+\/\d+.+\stag1\s+tag2\s+two/, "$ut: 2 round trips task 2 identical"); - -# Compare the actual JSON files. -$output = qx{diff roundtrip1.json roundtrip2.json 2>&1}; -like ($output, qr/^$/, "$ut: JSON files roundtrip1.json and roundtrip2.json identical"); - -# Cleanup. -unlink qw(roundtrip1.json roundtrip2.json pending.data completed.data undo.data backlog.data), $rc; -exit 0; -