diff options
author | Petr Viktorin <pviktori@redhat.com> | 2014-03-12 12:59:46 +0100 |
---|---|---|
committer | Petr Viktorin <pviktori@redhat.com> | 2014-03-13 18:15:43 +0100 |
commit | 7c9fa8fad96c039b96939f8df8d740ad6b50eec9 (patch) | |
tree | 9c71bcfd1a2c2a004a9b52852d96d9b0a76c688d | |
parent | 62426970b7b2abd7941ce5df1f1f0e5554ec5a7d (diff) | |
download | freeipa-7c9fa8fad96c039b96939f8df8d740ad6b50eec9.tar.gz freeipa-7c9fa8fad96c039b96939f8df8d740ad6b50eec9.tar.xz freeipa-7c9fa8fad96c039b96939f8df8d740ad6b50eec9.zip |
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
Reviewed-By: Rob Crittenden <rcritten@redhat.com>
-rw-r--r-- | ipaserver/install/service.py | 30 | ||||
-rw-r--r-- | ipatests/test_ipaserver/test_install/test_service.py | 36 |
2 files changed, 53 insertions, 13 deletions
diff --git a/ipaserver/install/service.py b/ipaserver/install/service.py index 0d7a66456..5d5db966f 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 @@ class Service(object): 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 000000000..956ae6256 --- /dev/null +++ b/ipatests/test_ipaserver/test_install/test_service.py @@ -0,0 +1,36 @@ +# Authors: +# Petr Viktorin <pviktori@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' |