gnu: Add timewarrior.
* gnu/packages/task-management.scm (timewarrior): New variable. * gnu/packages/patches/timewarrior-time-sensitive-tests.patch: New file. * gnu/local.mk (dist_patch_DATA): Register new file. Signed-off-by: Nicolas Goaziou <mail@nicolasgoaziou.fr>master
parent
09ffaaa436
commit
2083bd052e
|
@ -1898,6 +1898,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/texlive-hyph-utf8-no-byebug.patch \
|
||||
%D%/packages/patches/thefuck-test-environ.patch \
|
||||
%D%/packages/patches/tidy-CVE-2015-5522+5523.patch \
|
||||
%D%/packages/patches/timewarrior-time-sensitive-tests.patch \
|
||||
%D%/packages/patches/tinyxml-use-stl.patch \
|
||||
%D%/packages/patches/tipp10-disable-downloader.patch \
|
||||
%D%/packages/patches/tipp10-fix-compiling.patch \
|
||||
|
|
|
@ -0,0 +1,163 @@
|
|||
From: Gordon Ball <gordon@chronitis.net>
|
||||
Date: Sat, 23 Nov 2019 18:59:39 +0000
|
||||
Subject: skip tests which are sensitive to server time
|
||||
|
||||
---
|
||||
test/continue.t | 2 +-
|
||||
test/export.t | 1 +
|
||||
test/help.t | 1 +
|
||||
test/lengthen.t | 1 +
|
||||
test/move.t | 2 ++
|
||||
test/run_all | 2 +-
|
||||
test/shorten.t | 1 +
|
||||
test/summary.t | 3 +++
|
||||
test/tag.t | 1 +
|
||||
test/tags.t | 1 +
|
||||
10 files changed, 13 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/test/continue.t b/test/continue.t
|
||||
index 917699e..428f714 100755
|
||||
--- a/test/continue.t
|
||||
+++ b/test/continue.t
|
||||
@@ -37,7 +37,7 @@ sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
from basetest import Timew, TestCase
|
||||
|
||||
-
|
||||
+@unittest.skip("Time-of-day sensitive")
|
||||
class TestContinue(TestCase):
|
||||
def setUp(self):
|
||||
"""Executed before each test in the class"""
|
||||
diff --git a/test/export.t b/test/export.t
|
||||
index c6726e6..8b511ff 100755
|
||||
--- a/test/export.t
|
||||
+++ b/test/export.t
|
||||
@@ -62,6 +62,7 @@ class TestExport(TestCase):
|
||||
expectedEnd=now_utc,
|
||||
expectedTags=["foo"])
|
||||
|
||||
+ @unittest.skip("flaky")
|
||||
def test_changing_exclusion_does_not_change_flattened_intervals(self):
|
||||
"""Changing exclusions does not change flattened intervals"""
|
||||
now = datetime.now()
|
||||
diff --git a/test/help.t b/test/help.t
|
||||
index 786def0..9ecf5e6 100755
|
||||
--- a/test/help.t
|
||||
+++ b/test/help.t
|
||||
@@ -58,6 +58,7 @@ class TestHelp(TestCase):
|
||||
code, out2, err2 = self.t("-h")
|
||||
self.assertEqual(out1, out2)
|
||||
|
||||
+ @unittest.skip("flaky")
|
||||
def test_help_with_command_should_show_man_page(self):
|
||||
"""timew help with command should show man page"""
|
||||
code, out, err = self.t("help start")
|
||||
diff --git a/test/lengthen.t b/test/lengthen.t
|
||||
index a6f1d77..f9ab54d 100755
|
||||
--- a/test/lengthen.t
|
||||
+++ b/test/lengthen.t
|
||||
@@ -55,6 +55,7 @@ class TestLengthen(TestCase):
|
||||
code, out, err = self.t.runError("lengthen @1 10mins")
|
||||
self.assertIn('Cannot lengthen open interval @1', err)
|
||||
|
||||
+ @unittest.skip("time sensitive")
|
||||
def test_lengthen_synthetic_interval(self):
|
||||
"""Lengthen a synthetic interval."""
|
||||
now = datetime.now()
|
||||
diff --git a/test/move.t b/test/move.t
|
||||
index 2d7fdd9..b2336f5 100755
|
||||
--- a/test/move.t
|
||||
+++ b/test/move.t
|
||||
@@ -145,6 +145,7 @@ class TestMove(TestCase):
|
||||
expectedEnd="20170301T143000Z",
|
||||
expectedTags=["bar"])
|
||||
|
||||
+ @unittest.skip("time sensitive")
|
||||
def test_move_synthetic_interval_into_exclusion(self):
|
||||
"""Move a synthetic interval into exclusion"""
|
||||
now = datetime.now()
|
||||
@@ -175,6 +176,7 @@ class TestMove(TestCase):
|
||||
expectedTags=[],
|
||||
description="unmodified interval")
|
||||
|
||||
+ @unittest.skip("time sensitive")
|
||||
def test_move_synthetic_interval_away_from_exclusion(self):
|
||||
"""Move a synthetic interval away from exclusion"""
|
||||
now = datetime.now()
|
||||
diff --git a/test/run_all b/test/run_all
|
||||
index ea7dd8f..afc6731 100755
|
||||
--- a/test/run_all
|
||||
+++ b/test/run_all
|
||||
@@ -14,7 +14,7 @@ from queue import Queue, Empty
|
||||
from subprocess import call, Popen, PIPE
|
||||
from threading import Thread
|
||||
|
||||
-TIMEOUT = .2
|
||||
+TIMEOUT = 2.
|
||||
|
||||
|
||||
def run_test(testqueue, outqueue, threadname):
|
||||
diff --git a/test/shorten.t b/test/shorten.t
|
||||
index 7058cc0..94e0067 100755
|
||||
--- a/test/shorten.t
|
||||
+++ b/test/shorten.t
|
||||
@@ -69,6 +69,7 @@ class TestShorten(TestCase):
|
||||
self.t("move @1 20170308T113000")
|
||||
self.t("shorten @1 5min") # Does not work.
|
||||
|
||||
+ @unittest.skip("time sensitive")
|
||||
def test_shorten_synthetic_interval(self):
|
||||
"""Shorten a synthetic interval."""
|
||||
now = datetime.now()
|
||||
diff --git a/test/summary.t b/test/summary.t
|
||||
index 6fd3352..f91e992 100755
|
||||
--- a/test/summary.t
|
||||
+++ b/test/summary.t
|
||||
@@ -192,6 +192,7 @@ W10 2017-03-09 Thu @4 Tag1 8:43:08 9:38:15 0:55:07
|
||||
1:09:03
|
||||
""", out)
|
||||
|
||||
+ @unittest.skip("fails w1-9")
|
||||
def test_with_all_hint(self):
|
||||
"""Summary should work with :all hint"""
|
||||
now = datetime.now()
|
||||
@@ -236,6 +237,7 @@ W{5} {2:%Y-%m-%d} {2:%a} @1 BAZ 10:00:00 11:00:00 1:00:00 1:00:00
|
||||
self.assertIn("@1", out)
|
||||
self.assertRegex(out, r'\s{30}0:00:02')
|
||||
|
||||
+ @unittest.skip("fails w1-9")
|
||||
def test_with_named_date_yesterday(self):
|
||||
"""Summary should work with 'yesterday'"""
|
||||
now = datetime.now()
|
||||
@@ -260,6 +262,7 @@ W{1} {0:%Y-%m-%d} {0:%a} @3 FOO 10:00:00 11:00:00 1:00:00 1:00:00
|
||||
{2} 1:00:00
|
||||
""".format(yesterday, week_yesterday, " " if two_digit_week is True else "", "-" if two_digit_week is True else ""), out)
|
||||
|
||||
+ @unittest.skip("fails w1-9")
|
||||
def test_with_named_date_today(self):
|
||||
"""Summary should work with 'today'"""
|
||||
now = datetime.now()
|
||||
diff --git a/test/tag.t b/test/tag.t
|
||||
index 8b2f847..21b8c16 100755
|
||||
--- a/test/tag.t
|
||||
+++ b/test/tag.t
|
||||
@@ -178,6 +178,7 @@ class TestTag(TestCase):
|
||||
self.assertClosedInterval(j[0], expectedTags=["bar", "foo", "one"])
|
||||
self.assertClosedInterval(j[1], expectedTags=["bar", "foo", "two"])
|
||||
|
||||
+ @unittest.skip("time sensitive")
|
||||
def test_tag_synthetic_interval(self):
|
||||
"""Tag a synthetic interval."""
|
||||
now = datetime.now()
|
||||
diff --git a/test/tags.t b/test/tags.t
|
||||
index 6cfe143..4f84d06 100755
|
||||
--- a/test/tags.t
|
||||
+++ b/test/tags.t
|
||||
@@ -63,6 +63,7 @@ class TestTags(TestCase):
|
||||
self.assertIn('foo', out)
|
||||
self.assertIn('bar', out)
|
||||
|
||||
+ @unittest.skip("time sensitive")
|
||||
def test_tags_filtered(self):
|
||||
"""Test that tags command filtering excludes tags that are outside the filter range"""
|
||||
self.t("track 20160101T0100 - 20160101T1000 foo")
|
|
@ -29,6 +29,7 @@
|
|||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages check)
|
||||
#:use-module (gnu packages freedesktop)
|
||||
#:use-module (gnu packages gettext)
|
||||
|
@ -46,6 +47,7 @@
|
|||
#:use-module (gnu packages python-xyz)
|
||||
#:use-module (gnu packages qt)
|
||||
#:use-module (gnu packages readline)
|
||||
#:use-module (gnu packages ruby)
|
||||
#:use-module (gnu packages time)
|
||||
#:use-module (gnu packages tls)
|
||||
#:use-module (guix download)
|
||||
|
@ -181,6 +183,57 @@ environment for list management. It has a review feature, shell command
|
|||
execution, and libreadline support.")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public timewarrior
|
||||
(package
|
||||
(name "timewarrior")
|
||||
(version "1.4.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://github.com/GothenburgBitFactory/timewarrior/releases/download/v" version
|
||||
"/timew-" version ".tar.gz"))
|
||||
(patches (search-patches "timewarrior-time-sensitive-tests.patch"))
|
||||
(sha256 (base32
|
||||
"0lyaqzcg8np2fpsmih0hlkjxd3qbadc7khr24m1pq9lsdhq7xpy4"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'patch-source-shebangs 'patch-cmake-shell
|
||||
(lambda _
|
||||
(substitute* "src/commands/CMakeLists.txt"
|
||||
(("/bin/sh") "sh"))))
|
||||
;; Fix out of source building of manual pages
|
||||
(add-after 'patch-source-shebangs 'patch-man-cmake
|
||||
(lambda _
|
||||
(substitute* "doc/man1/CMakeLists.txt"
|
||||
(("\\$\\{CMAKE_CURRENT_BINARY_DIR\\}")
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}"))
|
||||
(substitute* "doc/man7/CMakeLists.txt"
|
||||
(("\\$\\{CMAKE_CURRENT_BINARY_DIR\\}")
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}"))))
|
||||
(add-after 'install 'install-completions
|
||||
(lambda _
|
||||
(let ((bash-completion-install-dir
|
||||
(string-append #$output "/etc/bash_completion.d")))
|
||||
(mkdir-p bash-completion-install-dir)
|
||||
(copy-file
|
||||
"../timew-1.4.3/completion/timew-completion.bash"
|
||||
(string-append bash-completion-install-dir "/timew"))))))))
|
||||
(native-inputs
|
||||
(list ruby-asciidoctor))
|
||||
(inputs
|
||||
(list gnutls python `(,util-linux "lib")))
|
||||
(home-page "https://timewarrior.net")
|
||||
(synopsis "Command line utility to track and report time")
|
||||
(description
|
||||
"Timewarrior is a command line time tracking application, which allows
|
||||
you to record time spent on activities. You may be tracking your time for
|
||||
curiosity, or because your work requires it.")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public worklog
|
||||
(let ((commit "0f545ad6697ef4de7f68d92cd7cc5c6a4c60517b")
|
||||
(revision "1"))
|
||||
|
|
Reference in New Issue