From 46d737f1d91cdbf011e1feb3e6d0dea6bac84818 Mon Sep 17 00:00:00 2001 From: Ronnie Dutta <61982285+MetRonnie@users.noreply.github.com> Date: Mon, 13 Nov 2023 12:08:27 +0000 Subject: [PATCH 1/2] Rewrite doctest as unit test --- cylc/flow/timer.py | 54 +------------------------------------- tests/unit/test_timer.py | 56 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 53 deletions(-) create mode 100644 tests/unit/test_timer.py diff --git a/cylc/flow/timer.py b/cylc/flow/timer.py index e3a82ec7629..cbc4a644af6 100644 --- a/cylc/flow/timer.py +++ b/cylc/flow/timer.py @@ -26,59 +26,7 @@ class Timer: - """Simple timer class for workflow timers. - - Examples: - >>> from time import sleep - - # Patch LOG.warning to capture warning messages - >>> warnings = [] - >>> orig_log_warning = LOG.warning - >>> LOG.warning = lambda msg: warnings.append(msg) - - >>> timer = Timer("bob timeout", 1.0) - - # timer attributes - >>> timer.name - 'bob timer' - >>> timer.interval - 'PT1S' - - # start timer - >>> timer.reset() - >>> warnings[-1] - 'PT1S bob timer starts NOW' - - # check timeout - >>> sleep(2) - >>> timer.timed_out() - True - >>> warnings[-1] - 'bob timer timed out after PT1S' - - # stop should do nothing after timeou - >>> warnings = [] - >>> timer.stop() - >>> warnings - [] - - # start timer again, then stop it - >>> timer.reset() - >>> warnings[-1] - 'PT1S bob timer starts NOW' - >>> timer.stop() - >>> warnings[-1] - 'bob timer stopped' - - # another stop should do nothing - >>> warnings = [] - >>> timer.stop() - >>> warnings - [] - - # Un-patch LOG.warning to avoid breaking subsequent unit tests! - >>> LOG.warning = orig_log_warning - """ + """Simple timer class for workflow timers.""" def __init__( self, name: str, interval: float, diff --git a/tests/unit/test_timer.py b/tests/unit/test_timer.py new file mode 100644 index 00000000000..3cd6704752e --- /dev/null +++ b/tests/unit/test_timer.py @@ -0,0 +1,56 @@ +# THIS FILE IS PART OF THE CYLC WORKFLOW ENGINE. +# Copyright (C) NIWA & British Crown (Met Office) & Contributors. +# +# 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 . + +from time import sleep + +import pytest + +from cylc.flow.timer import Timer + + +def test_Timer(caplog: pytest.LogCaptureFixture): + """Test the Timer class.""" + caplog.set_level('WARNING') + timer = Timer("bob timeout", 1.0) + + # timer attributes + assert timer.name == "bob timer" + assert timer.interval == "PT1S" + + # start timer + timer.reset() + assert caplog.records[-1].message == "PT1S bob timer starts NOW" + + # check timeout + sleep(2) + assert timer.timed_out() + assert caplog.records[-1].message == "bob timer timed out after PT1S" + + # stop should do nothing after timeout + caplog.clear() + timer.stop() + assert not caplog.records + + # start timer again, then stop it + timer.reset() + assert caplog.records[-1].message == "PT1S bob timer starts NOW" + timer.stop() + assert caplog.records[-1].message == "bob timer stopped" + + # another stop should do nothing + caplog.clear() + timer.stop() + assert not caplog.records From c2e91ac94acc9ae0dd54d1190557658be0b8c6e4 Mon Sep 17 00:00:00 2001 From: Ronnie Dutta <61982285+MetRonnie@users.noreply.github.com> Date: Mon, 19 Feb 2024 17:23:37 +0000 Subject: [PATCH 2/2] Add note about Copilot to README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index e97a7731ab4..3c803396a1e 100644 --- a/README.md +++ b/README.md @@ -109,3 +109,5 @@ Contributions welcome: [admin pages](https://cylc.github.io/cylc-admin/#change-proposals). * Touch base in the [developers chat](https://matrix.to/#/#cylc-general:matrix.org). + +This repository contains some code that was generated by GitHub Copilot.