Express idea 'fixed later'

This commit is contained in:
Klaas van Schelven
2023-11-29 20:44:06 +01:00
parent 2282b84d62
commit a98fe2c798
2 changed files with 32 additions and 2 deletions

View File

@@ -18,3 +18,24 @@ def is_regression(sorted_releases, fixed_at, events_at, current_event_at):
return marked_as_resolved
raise Exception("Can't find release '%s'" % current_event_at)
def is_regression_2(sorted_releases, fixed_at, events_at, current_event_at):
# AKA is_regression_with_fixed_later_info
# for lack of a better name; I want to express this idea somewhere first; let's see how we utilize it in actual code
# later; hence also copy/pasta
fixed_at = fixed_at[:]
marked_as_resolved = False
for r in sorted_releases:
if r in events_at:
marked_as_resolved = False
elif r in fixed_at:
marked_as_resolved = True
fixed_at.remove(r)
if current_event_at == r:
return marked_as_resolved, len(fixed_at) > 0
raise Exception("Can't find release '%s'" % current_event_at)

View File

@@ -1,6 +1,6 @@
from unittest import TestCase
from .regressions import is_regression
from .regressions import is_regression, is_regression_2
class RegressionTestCase(TestCase):
@@ -86,7 +86,6 @@ class RegressionTestCase(TestCase):
events_at = ["a", "e"]
fixed_at = ["c", "f"]
# NOTE should we not want to express the "fixed later" property here?
self.assertEquals(False, is_regression(self.releases, fixed_at, events_at, current_event_at="a"))
self.assertEquals(False, is_regression(self.releases, fixed_at, events_at, current_event_at="b"))
self.assertEquals(True, is_regression(self.releases, fixed_at, events_at, current_event_at="c"))
@@ -96,6 +95,16 @@ class RegressionTestCase(TestCase):
self.assertEquals(True, is_regression(self.releases, fixed_at, events_at, current_event_at="g"))
self.assertEquals(True, is_regression(self.releases, fixed_at, events_at, current_event_at="h"))
self.assertEquals((False, True), is_regression_2(self.releases, fixed_at, events_at, current_event_at="a"))
self.assertEquals((False, True), is_regression_2(self.releases, fixed_at, events_at, current_event_at="b"))
# the interesting bit from this block: a regression, but fixed already (for a later version)
self.assertEquals((True, True), is_regression_2(self.releases, fixed_at, events_at, current_event_at="c"))
self.assertEquals((True, True), is_regression_2(self.releases, fixed_at, events_at, current_event_at="d"))
self.assertEquals((False, True), is_regression_2(self.releases, fixed_at, events_at, current_event_at="e"))
self.assertEquals((True, False), is_regression_2(self.releases, fixed_at, events_at, current_event_at="f"))
self.assertEquals((True, False), is_regression_2(self.releases, fixed_at, events_at, current_event_at="g"))
self.assertEquals((True, False), is_regression_2(self.releases, fixed_at, events_at, current_event_at="h"))
def test_documented_thoughts_about_minor_and_patch_releases(self):
# this test-case documents the limitation of our approach in the following combination of circumstances:
#