Skip to content

Commit 7b1aa4c

Browse files
authored
Merge pull request #283 from smstone/negative-time-spent-in-issue
fix: Negative time reported for "time label applied" measurement
2 parents e73a4bb + 6623f77 commit 7b1aa4c

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

labels.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def get_label_metrics(issue: github3.issues.Issue, labels: List[str]) -> dict:
7474

7575
for label in labels:
7676
# if the label is still on there, add the time from the last event to now
77-
if label in labeled and label not in unlabeled:
77+
if label in labeled:
7878
# if the issue is closed, add the time from the issue creation to the closed_at time
7979
if issue.state == "closed":
8080
label_metrics[label] += datetime.fromisoformat(

test_labels.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class TestLabels(unittest.TestCase):
1616
def setUp(self):
1717
self.issue = MagicMock() # type: ignore
1818
self.issue.issue = MagicMock(spec=github3.issues.Issue) # type: ignore
19-
self.issue.created_at = "2020-01-01T00:00:00Z"
19+
self.issue.created_at = "2021-01-01T00:00:00Z"
2020
self.issue.closed_at = "2021-01-05T00:00:00Z"
2121
self.issue.state = "closed"
2222
self.issue.issue.events.return_value = [
@@ -35,29 +35,42 @@ def setUp(self):
3535
label={"name": "bug"},
3636
created_at=datetime(2021, 1, 3, tzinfo=pytz.UTC),
3737
),
38+
MagicMock(
39+
event="labeled",
40+
label={"name": "bug"},
41+
created_at=datetime(2021, 1, 4, tzinfo=pytz.UTC),
42+
),
3843
]
3944

4045
def test_get_label_events(self):
4146
"""Test get_label_events"""
4247
labels = ["bug"]
4348
events = get_label_events(self.issue, labels)
44-
self.assertEqual(len(events), 2)
49+
self.assertEqual(len(events), 3)
4550
self.assertEqual(events[0].label["name"], "bug")
4651
self.assertEqual(events[1].label["name"], "bug")
52+
self.assertEqual(events[2].label["name"], "bug")
4753

4854
def test_get_label_metrics_closed_issue(self):
4955
"""Test get_label_metrics using a closed issue"""
5056
labels = ["bug", "feature"]
5157
metrics = get_label_metrics(self.issue, labels)
52-
self.assertEqual(metrics["bug"], timedelta(days=2))
58+
self.assertEqual(metrics["bug"], timedelta(days=3))
5359
self.assertEqual(metrics["feature"], timedelta(days=3))
5460

5561
def test_get_label_metrics_open_issue(self):
5662
"""Test get_label_metrics using an open issue"""
5763
self.issue.state = "open"
5864
labels = ["bug", "feature"]
5965
metrics = get_label_metrics(self.issue, labels)
60-
self.assertEqual(metrics["bug"], timedelta(days=2))
66+
self.assertLessEqual(
67+
metrics["bug"],
68+
datetime.now(pytz.utc) - datetime(2021, 1, 2, tzinfo=pytz.UTC),
69+
)
70+
self.assertGreater(
71+
metrics["bug"],
72+
datetime.now(pytz.utc) - datetime(2021, 1, 3, tzinfo=pytz.UTC),
73+
)
6174
self.assertLessEqual(
6275
metrics["feature"],
6376
datetime.now(pytz.utc) - datetime(2021, 1, 2, tzinfo=pytz.UTC),

0 commit comments

Comments
 (0)