summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2010-06-10 11:55:18 +0200
committerMichael Vogt <michael.vogt@ubuntu.com>2010-06-10 11:55:18 +0200
commit3b4330920da718d2dbb2a4a94577c07eaa58a8c5 (patch)
tree90dd732cd2c9cb8a3abcc95bb06238aa15b715b5
parent919e1b4d3dad602130aff9bb56d6741be02d831d (diff)
downloadpython-apt-3b4330920da718d2dbb2a4a94577c07eaa58a8c5.tar.gz
* apt/utils.py:
- fix end date calculation for releases in june
-rw-r--r--apt/utils.py5
-rw-r--r--debian/changelog7
-rw-r--r--tests/test_utils.py56
3 files changed, 68 insertions, 0 deletions
diff --git a/apt/utils.py b/apt/utils.py
index 80ba6d65..8fc69215 100644
--- a/apt/utils.py
+++ b/apt/utils.py
@@ -28,11 +28,16 @@ def get_maintenance_end_date(release_date, m_months):
ends. Needs the data of the release and the number of months that
its is supported as input
"""
+ # calc end date
years = m_months / 12
months = m_months % 12
support_end_year = (release_date.year + years +
(release_date.month + months)/12)
support_end_month = (release_date.month + months) % 12
+ # special case: this happens when e.g. doing 2010-06 + 18 months
+ if support_end_month == 0:
+ support_end_month = 12
+ support_end_year -= 1
return (support_end_year, support_end_month)
diff --git a/debian/changelog b/debian/changelog
index dde80a4f..9fe79188 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+python-apt (0.7.95ubuntu2) maverick; urgency=low
+
+ * apt/utils.py:
+ - fix end date calculation for releases in june
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 10 Jun 2010 11:50:21 +0200
+
python-apt (0.7.95ubuntu1) maverick; urgency=low
* merge from debian bzr, remaining changes:
diff --git a/tests/test_utils.py b/tests/test_utils.py
new file mode 100644
index 00000000..19dd977d
--- /dev/null
+++ b/tests/test_utils.py
@@ -0,0 +1,56 @@
+#!/usr/bin/python
+#
+# Copyright (C) 2010 Michael Vogt <michael.vogt@ubuntu.com>
+#
+# Copying and distribution of this file, with or without modification,
+# are permitted in any medium without royalty provided the copyright
+# notice and this notice are preserved.
+
+import sys
+sys.path.insert(0, "..")
+import apt_pkg
+import apt.utils
+import datetime
+import unittest
+
+class TestUtils(unittest.TestCase):
+
+
+ def test_maintenance_time(self):
+ from apt.utils import get_maintenance_end_date
+ months_of_support = 18
+ # test historic releases, jaunty
+ release_date = datetime.datetime(2009, 04, 23)
+ (end_year, end_month) = get_maintenance_end_date(release_date, months_of_support)
+ self.assertEqual(end_year, 2010)
+ self.assertEqual(end_month, 10)
+ # test historic releases, karmic
+ release_date = datetime.datetime(2009, 10, 29)
+ (end_year, end_month) = get_maintenance_end_date(release_date, months_of_support)
+ self.assertEqual(end_year, 2011)
+ self.assertEqual(end_month, 04)
+ # test maverick
+ release_date = datetime.datetime(2010, 10, 10)
+ (end_year, end_month) = get_maintenance_end_date(release_date, months_of_support)
+ self.assertEqual(end_year, 2012)
+ self.assertEqual(end_month, 04)
+
+ # test with modulo zero
+ release_date = datetime.datetime(2010, 06, 10)
+ (end_year, end_month) = get_maintenance_end_date(release_date, months_of_support)
+ self.assertEqual(end_year, 2011)
+ self.assertEqual(end_month, 12)
+
+ # test dapper
+ months_of_support = 60
+ release_date = datetime.datetime(2008, 04, 24)
+ (end_year, end_month) = get_maintenance_end_date(release_date, months_of_support)
+ self.assertEqual(end_year, 2013)
+ self.assertEqual(end_month, 04)
+
+ # what datetime says
+ #d = datetime.timedelta(18*30)
+ #print "end date: ", release_date + d
+
+if __name__ == "__main__":
+ unittest.main()