Hello, The time estimate display is broken, so I wrote a test for it. Also the bug should be fixed now.
https://fedorahosted.org/freeipa/ticket/4242 -- PetrĀ³
From 4aee528f2f3085157ee9b1c888d4c35db45b694b Mon Sep 17 00:00:00 2001 From: Petr Viktorin <pvikt...@redhat.com> Date: Wed, 12 Mar 2014 12:59:46 +0100 Subject: [PATCH] ipaserver.install.service: Fix estimated time display Use basic math rather than timezone conversion to get minutes and seconds. Break out the message generation into a small tested function. https://fedorahosted.org/freeipa/ticket/4242 --- ipaserver/install/service.py | 30 ++++++++++-------- .../test_ipaserver/test_install/test_service.py | 36 ++++++++++++++++++++++ 2 files changed, 53 insertions(+), 13 deletions(-) create mode 100644 ipatests/test_ipaserver/test_install/test_service.py diff --git a/ipaserver/install/service.py b/ipaserver/install/service.py index 0d7a664561fdf2b02353dd7284392e250f61a9f2..5d5db966f2616b27ba02cfb60e0e6cbf566d981b 100644 --- a/ipaserver/install/service.py +++ b/ipaserver/install/service.py @@ -58,6 +58,21 @@ def print_msg(message, output_fd=sys.stdout): output_fd.flush() +def format_seconds(seconds): + """Format a number of seconds as an English minutes+seconds message""" + parts = [] + minutes, seconds = divmod(seconds, 60) + if minutes: + parts.append('%d minute' % minutes) + if minutes != 1: + parts[-1] += 's' + if seconds or not minutes: + parts.append('%d second' % seconds) + if seconds != 1: + parts[-1] += 's' + return ' '.join(parts) + + class Service(object): def __init__(self, service_name, service_desc=None, sstore=None, dm_password=None, ldapi=True, autobind=AUTO): self.service_name = service_name @@ -341,19 +356,8 @@ def start_creation(self, start_message=None, end_message=None, end_message = "Done configuring %s." % self.service_desc if runtime > 0: - plural='' - est = time.localtime(runtime) - if est.tm_min > 0: - if est.tm_min > 1: - plural = 's' - if est.tm_sec > 0: - self.print_msg('%s: Estimated time %d minute%s %d seconds' % (start_message, est.tm_min, plural, est.tm_sec)) - else: - self.print_msg('%s: Estimated time %d minute%s' % (start_message, est.tm_min, plural)) - else: - if est.tm_sec > 1: - plural = 's' - self.print_msg('%s: Estimated time %d second%s' % (start_message, est.tm_sec, plural)) + self.print_msg('%s: Estimated time %s' % (start_message, + format_seconds(runtime))) else: self.print_msg(start_message) diff --git a/ipatests/test_ipaserver/test_install/test_service.py b/ipatests/test_ipaserver/test_install/test_service.py new file mode 100644 index 0000000000000000000000000000000000000000..956ae62564dfb9453a720c174a955fad53bb1103 --- /dev/null +++ b/ipatests/test_ipaserver/test_install/test_service.py @@ -0,0 +1,36 @@ +# Authors: +# Petr Viktorin <pvikt...@redhat.com> +# +# Copyright (C) 2014 Red Hat +# see file 'COPYING' for use and warranty information +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +""" +Tests for the `ipaserver.service` module. +""" + +from ipaserver.install import service + + +def test_format_seconds(): + assert service.format_seconds(0) == '0 seconds' + assert service.format_seconds(1) == '1 second' + assert service.format_seconds(2) == '2 seconds' + assert service.format_seconds(11) == '11 seconds' + assert service.format_seconds(60) == '1 minute' + assert service.format_seconds(61) == '1 minute 1 second' + assert service.format_seconds(62) == '1 minute 2 seconds' + assert service.format_seconds(120) == '2 minutes' + assert service.format_seconds(125) == '2 minutes 5 seconds' -- 1.8.5.3
_______________________________________________ Freeipa-devel mailing list Freeipa-devel@redhat.com https://www.redhat.com/mailman/listinfo/freeipa-devel