From c79c5714f45d0846e41aed008f5e4ea6660385b9 Mon Sep 17 00:00:00 2001 From: Benoit Verhaeghe Date: Mon, 22 Jun 2026 10:21:07 +0200 Subject: [PATCH 01/10] fix date read in metric class --- src/GitLabHealth-Model-Analysis/Metric.class.st | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/GitLabHealth-Model-Analysis/Metric.class.st b/src/GitLabHealth-Model-Analysis/Metric.class.st index 62b2652e..e34fceb1 100644 --- a/src/GitLabHealth-Model-Analysis/Metric.class.st +++ b/src/GitLabHealth-Model-Analysis/Metric.class.st @@ -90,6 +90,13 @@ Metric >> over: anObject [ over := anObject ] +{ #category : #'utils - date' } +Metric >> readDate: aDateString [ + "date is supposed to the the format mm-dd-yyyy for compatibility with Moose 12" + + ^ Date readFrom: aDateString pattern: 'mm-dd-yyyy' +] + { #category : #initialization } Metric >> setPeriodSince: since until: until [ @@ -119,9 +126,9 @@ Metric >> setupGroupedDate [ over := #day ]. - [ groupedByDate keys last asDate < end ] whileTrue: [ + [ (self readDate: groupedByDate keys last) < end ] whileTrue: [ | index | - index := groupedByDate keys last asDate + index := (self readDate: groupedByDate keys last) + (increment perform: overSymbol). index := self transformDate: index to: over. groupedByDate @@ -132,7 +139,7 @@ Metric >> setupGroupedDate [ over = #day ifTrue: [ groupedByDate := (groupedByDate associations select: [ :date | | aWeekday | - aWeekday := date key asDate weekday. + aWeekday := (self readDate: date key) weekday. (aWeekday = #Sunday or: [ aWeekday = #Saturday ]) not ]) asOrderedDictionary ]. From 4d4f4e4ff0f335df667039168777c61ae4c8e9df Mon Sep 17 00:00:00 2001 From: Benoit Verhaeghe Date: Mon, 22 Jun 2026 11:21:49 +0200 Subject: [PATCH 02/10] groupedByDate should use date instead of printString --- .../CommitFrequencyMetricTest.class.st | 21 ++++++++----------- .../MetricTest.class.st | 6 +++--- .../ActiveBranchesProjectMetric.class.st | 2 +- ...eviewCommitFrequencyProjectMetric.class.st | 2 +- ...MergeRequestDurationProjectMetric.class.st | 2 +- .../ClosedMergeRequestMetric.class.st | 2 +- .../ClosedMergeRequestProjectMetric.class.st | 2 +- .../ClosedTicketsMetric.class.st | 2 +- ...CodeAdditionByCommitProjectMetric.class.st | 2 +- .../CodeAdditionByMRMetric.class.st | 2 +- ...ditionByMergeRequestProjectMetric.class.st | 2 +- .../CodeAdditionByTicketMetric.class.st | 2 +- ...ingAndByMergeRequestProjectMetric.class.st | 2 +- .../CodeAdditionMetric.class.st | 2 +- .../CodeChurnMetric.class.st | 2 +- .../CodeChurnOnCommitsProjectMetric.class.st | 2 +- ...OnMergedMergeRequestProjectMetric.class.st | 2 +- .../CodeDeletionByMRMetric.class.st | 2 +- ...letionByMergeRequestProjectMetric.class.st | 2 +- .../CodeDeletionByTicketMetric.class.st | 2 +- ...ingAndByMergeRequestProjectMetric.class.st | 2 +- .../CodeDeletionMetric.class.st | 2 +- .../CodeDeletionProjectMetric.class.st | 2 +- .../CommentContributionMetric.class.st | 2 +- .../CommentLinesAddedProjectMetric.class.st | 2 +- .../CommitFrequencyMetric.class.st | 2 +- .../CommitFrequencyProjectMetric.class.st | 2 +- .../CommitLinkedToJiraProjectMetric.class.st | 2 +- ...ommitWithoutUsernameProjectMetric.class.st | 2 +- .../CommitsLinkWithTicketMetric.class.st | 2 +- .../CommitsNumberByJiraTicketsMetric.class.st | 2 +- .../ContributedProjectMetric.class.st | 2 +- .../ContributorsProjectMetric.class.st | 2 +- .../CreatedACRPipelineByProject.class.st | 2 +- .../CreatedMergeRequestProjectMetric.class.st | 2 +- ...dNoteInMergedOrClosedMergeRequest.class.st | 2 +- .../CreatedNotesByACRByProjectMetric.class.st | 2 +- .../DelayUntilFirstChurnMetric.class.st | 2 +- .../GitMetricExporter.class.st | 11 ++++++++-- .../InactiveBranchesProjectMetric.class.st | 2 +- .../JiraTimeMRTimeDifferenceMetric.class.st | 2 +- ...TimeMRTimeDifferenceProjectMetric.class.st | 2 +- .../MergeRequestDurationMetric.class.st | 2 +- ...eRequestLinkedToJiraProjectMetric.class.st | 2 +- .../MergeRequestMergedByUserMetric.class.st | 2 +- ...MergeRequestDurationProjectMetric.class.st | 11 +++++----- .../MergedMergeRequestMetric.class.st | 2 +- .../MergedMergeRequestProjectMetric.class.st | 2 +- .../Metric.class.st | 20 +++++++++--------- ...MergeRequestDurationProjectMetric.class.st | 2 +- .../OpenedMergeRequestMetric.class.st | 2 +- .../PendingMergeRequestMetric.class.st | 2 +- .../ReviewedByUserMergeRequestMetric.class.st | 2 +- ...gedUnderAMinuteMergeRequestMetric.class.st | 2 +- ...rAMinuteMergeRequestProjectMetric.class.st | 2 +- .../TimeBetweenCommitMetric.class.st | 2 +- 56 files changed, 88 insertions(+), 83 deletions(-) diff --git a/src/GitLabHealth-Model-Analysis-Tests/CommitFrequencyMetricTest.class.st b/src/GitLabHealth-Model-Analysis-Tests/CommitFrequencyMetricTest.class.st index cf647cc9..58cbf5d8 100644 --- a/src/GitLabHealth-Model-Analysis-Tests/CommitFrequencyMetricTest.class.st +++ b/src/GitLabHealth-Model-Analysis-Tests/CommitFrequencyMetricTest.class.st @@ -67,38 +67,35 @@ CommitFrequencyMetricTest >> testCalculate [ CommitFrequencyMetricTest >> testCalculate1CommitByWeek [ | glhImporter result commitFrequency | - glhImporter := GLPHImporterMock new. - glhImporter commits: { - (GLHCommit new + glhImporter commits: { + (GLHCommit new id: 1; repository: project1 repository; created_at: createdAt; additions: 7; commitCreator: user; deletions: 5). - (GLHCommit new + (GLHCommit new id: 2; repository: project1 repository; created_at: createdAt + 7 days; additions: 7; commitCreator: user; deletions: 5). - (GLHCommit new + (GLHCommit new id: 3; repository: project1 repository; - created_at: createdAt + 7 days ; + created_at: createdAt + 7 days; additions: 7; commitCreator: user; - deletions: 5). - }. - + deletions: 5) }. commitFrequency := CommitFrequencyMetric new user: user; glhImporter: glhImporter; - setPeriodSince: createdAt asDate until: (createdAt + (7 + 7) days) asDate ; + setPeriodSince: since until: '09-18-2024'; over: Week. "When" @@ -141,8 +138,8 @@ CommitFrequencyMetricTest >> testCalculate1CommitByWeekFromAnotherUser [ commitFrequency := CommitFrequencyMetric new user: user; glhImporter: glhImporter; - setPeriodSince: createdAt asDate - until: (createdAt + (7 + 7) days) asDate; + setPeriodSince: since + until: '09-18-2024'; over: Week. "When" diff --git a/src/GitLabHealth-Model-Analysis-Tests/MetricTest.class.st b/src/GitLabHealth-Model-Analysis-Tests/MetricTest.class.st index e0fe0881..0d0dc4cf 100644 --- a/src/GitLabHealth-Model-Analysis-Tests/MetricTest.class.st +++ b/src/GitLabHealth-Model-Analysis-Tests/MetricTest.class.st @@ -25,9 +25,9 @@ MetricTest >> setUp [ closedAt := '2024-09-04T11:24:11.803+02:00' asDateAndTime. mergedAt := '2024-09-04T11:24:11.803+02:00' asDateAndTime. updatedAt := '2024-09-04T11:24:11.803+02:00' asDateAndTime. - - since := '2024-09-04'. - until := '2024-09-05' + "mm-dd-yyyy" + since := '09-04-2024'. + until := '09-05-2024' ] { #category : #tests } diff --git a/src/GitLabHealth-Model-Analysis/ActiveBranchesProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/ActiveBranchesProjectMetric.class.st index 5777f2c0..d02f6aaa 100644 --- a/src/GitLabHealth-Model-Analysis/ActiveBranchesProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/ActiveBranchesProjectMetric.class.st @@ -24,7 +24,7 @@ ActiveBranchesProjectMetric >> calculate [ dateOver := self transformDate: commit created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :v | v add: commit created_at ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/AutoCodeReviewCommitFrequencyProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/AutoCodeReviewCommitFrequencyProjectMetric.class.st index 2a16208f..161207f5 100644 --- a/src/GitLabHealth-Model-Analysis/AutoCodeReviewCommitFrequencyProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/AutoCodeReviewCommitFrequencyProjectMetric.class.st @@ -14,7 +14,7 @@ AutoCodeReviewCommitFrequencyProjectMetric >> calculate [ (c title beginsWith: '[ACR]') ifTrue: [ | dateOver | dateOver := self transformDate: c created_at to: over. - groupedByDate at: dateOver printString ifPresent: [ :v | v add: c ] + groupedByDate at: dateOver ifPresent: [ :v | v add: c ] ] ]. diff --git a/src/GitLabHealth-Model-Analysis/ClosedMergeRequestDurationProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/ClosedMergeRequestDurationProjectMetric.class.st index b8743154..5db0a0e1 100644 --- a/src/GitLabHealth-Model-Analysis/ClosedMergeRequestDurationProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/ClosedMergeRequestDurationProjectMetric.class.st @@ -30,7 +30,7 @@ ClosedMergeRequestDurationProjectMetric >> calculate [ overDate := self transformDate: (dic at: #closed_at) to: over. groupedByDate - at: overDate printString + at: overDate ifPresent: [ :durations | durations add: (dic at: #close_duration) ] ]. "deleting the empty array (merge request that are not closed )" diff --git a/src/GitLabHealth-Model-Analysis/ClosedMergeRequestMetric.class.st b/src/GitLabHealth-Model-Analysis/ClosedMergeRequestMetric.class.st index 56fd116a..d704623a 100644 --- a/src/GitLabHealth-Model-Analysis/ClosedMergeRequestMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/ClosedMergeRequestMetric.class.st @@ -18,7 +18,7 @@ ClosedMergeRequestMetric >> calculate [ dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. diff --git a/src/GitLabHealth-Model-Analysis/ClosedMergeRequestProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/ClosedMergeRequestProjectMetric.class.st index eb3e5c66..2484f4ce 100644 --- a/src/GitLabHealth-Model-Analysis/ClosedMergeRequestProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/ClosedMergeRequestProjectMetric.class.st @@ -15,7 +15,7 @@ ClosedMergeRequestProjectMetric >> calculate [ (projectMergeRequests select: [ :mr| mr state= #closed ]) do: [ :c | | dateOver | dateOver := self transformDate: c closed_at to: over. - groupedByDate at: dateOver printString ifPresent: [ :v | v add: c ] ]. + groupedByDate at: dateOver ifPresent: [ :v | v add: c ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/ClosedTicketsMetric.class.st b/src/GitLabHealth-Model-Analysis/ClosedTicketsMetric.class.st index a368fd81..5e4655ef 100644 --- a/src/GitLabHealth-Model-Analysis/ClosedTicketsMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/ClosedTicketsMetric.class.st @@ -15,7 +15,7 @@ ClosedTicketsMetric >> calculate [ userMergeRequests do: [ :userMergeRequest | dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/CodeAdditionByCommitProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeAdditionByCommitProjectMetric.class.st index 8cb2656f..76472418 100644 --- a/src/GitLabHealth-Model-Analysis/CodeAdditionByCommitProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeAdditionByCommitProjectMetric.class.st @@ -23,7 +23,7 @@ CodeAdditionByCommitProjectMetric >> calculate [ | dateOver | dateOver := self transformDate: assoc key created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :v | v add: assoc value ] ]. groupedByDate := groupedByDate collect: [ :contribs | diff --git a/src/GitLabHealth-Model-Analysis/CodeAdditionByMRMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeAdditionByMRMetric.class.st index f16eccb8..9728025b 100644 --- a/src/GitLabHealth-Model-Analysis/CodeAdditionByMRMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeAdditionByMRMetric.class.st @@ -16,7 +16,7 @@ CodeAdditionByMRMetric >> calculate [ userMergeRequests do: [ :userMergeRequest | dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/CodeAdditionByMergeRequestProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeAdditionByMergeRequestProjectMetric.class.st index df27be7a..8bcb1403 100644 --- a/src/GitLabHealth-Model-Analysis/CodeAdditionByMergeRequestProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeAdditionByMergeRequestProjectMetric.class.st @@ -17,7 +17,7 @@ CodeAdditionByMergeRequestProjectMetric >> calculate [ projectMergeRequests do: [ :mr | dateOver := self transformDate: mr created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: mr ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/CodeAdditionByTicketMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeAdditionByTicketMetric.class.st index 3109cc7a..2e7f2da9 100644 --- a/src/GitLabHealth-Model-Analysis/CodeAdditionByTicketMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeAdditionByTicketMetric.class.st @@ -17,7 +17,7 @@ CodeAdditionByTicketMetric >> calculate [ userMergeRequests do: [ :userMergeRequest | dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/CodeAdditionDuringAndByMergeRequestProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeAdditionDuringAndByMergeRequestProjectMetric.class.st index 43d912d2..307f5cd1 100644 --- a/src/GitLabHealth-Model-Analysis/CodeAdditionDuringAndByMergeRequestProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeAdditionDuringAndByMergeRequestProjectMetric.class.st @@ -17,7 +17,7 @@ CodeAdditionDuringAndByMergeRequestProjectMetric >> calculate [ projectMergeRequests do: [ :mr | dateOver := self transformDate: mr created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: mr ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/CodeAdditionMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeAdditionMetric.class.st index 6ed63542..a3ff7087 100644 --- a/src/GitLabHealth-Model-Analysis/CodeAdditionMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeAdditionMetric.class.st @@ -23,7 +23,7 @@ CodeAdditionMetric >> calculate [ | dateOver | dateOver := self transformDate: assoc key created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :v | v add: assoc value ] ]. diff --git a/src/GitLabHealth-Model-Analysis/CodeChurnMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeChurnMetric.class.st index a34aff28..172b4f13 100644 --- a/src/GitLabHealth-Model-Analysis/CodeChurnMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeChurnMetric.class.st @@ -40,7 +40,7 @@ CodeChurnMetric >> calculate [ (#LoCOnCommit -> contribution) } asDictionary. overDate := self transformDate: commit created_at to: over. groupedByDate - at: overDate printString + at: overDate ifPresent: [ :array | array add: churnOnCommit ] ifAbsentPut: [ OrderedCollection new diff --git a/src/GitLabHealth-Model-Analysis/CodeChurnOnCommitsProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeChurnOnCommitsProjectMetric.class.st index aa101f07..27cbedeb 100644 --- a/src/GitLabHealth-Model-Analysis/CodeChurnOnCommitsProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeChurnOnCommitsProjectMetric.class.st @@ -41,7 +41,7 @@ CodeChurnOnCommitsProjectMetric >> calculate [ (#LoCOnCommit -> contribution) } asDictionary. overDate := self transformDate: commit created_at to: over. groupedByDate - at: overDate printString + at: overDate ifPresent: [ :array | array add: churnOnCommit ] ifAbsentPut: [ OrderedCollection new diff --git a/src/GitLabHealth-Model-Analysis/CodeChurnOnMergedMergeRequestProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeChurnOnMergedMergeRequestProjectMetric.class.st index deb00710..b2ffbdfe 100644 --- a/src/GitLabHealth-Model-Analysis/CodeChurnOnMergedMergeRequestProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeChurnOnMergedMergeRequestProjectMetric.class.st @@ -56,7 +56,7 @@ CodeChurnOnMergedMergeRequestProjectMetric >> calculate [ (#LoCOnCommit -> contribution) } asDictionary. overDate := self transformDate: commit created_at to: over. groupedByDate - at: overDate printString + at: overDate ifPresent: [ :array | array add: churnOnCommit ] ifAbsentPut: [ OrderedCollection new diff --git a/src/GitLabHealth-Model-Analysis/CodeDeletionByMRMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeDeletionByMRMetric.class.st index 9797a544..91c839e8 100644 --- a/src/GitLabHealth-Model-Analysis/CodeDeletionByMRMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeDeletionByMRMetric.class.st @@ -17,7 +17,7 @@ CodeDeletionByMRMetric >> calculate [ userMergeRequests do: [ :userMergeRequest | dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/CodeDeletionByMergeRequestProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeDeletionByMergeRequestProjectMetric.class.st index eb78d776..48fffbab 100644 --- a/src/GitLabHealth-Model-Analysis/CodeDeletionByMergeRequestProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeDeletionByMergeRequestProjectMetric.class.st @@ -17,7 +17,7 @@ CodeDeletionByMergeRequestProjectMetric >> calculate [ projectMergeRequests do: [ :mr | dateOver := self transformDate: mr created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: mr ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/CodeDeletionByTicketMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeDeletionByTicketMetric.class.st index 66e71b04..32dfebf6 100644 --- a/src/GitLabHealth-Model-Analysis/CodeDeletionByTicketMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeDeletionByTicketMetric.class.st @@ -17,7 +17,7 @@ CodeDeletionByTicketMetric >> calculate [ userMergeRequests do: [ :userMergeRequest | dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/CodeDeletionDuringAndByMergeRequestProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeDeletionDuringAndByMergeRequestProjectMetric.class.st index e699b920..b6d45b5f 100644 --- a/src/GitLabHealth-Model-Analysis/CodeDeletionDuringAndByMergeRequestProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeDeletionDuringAndByMergeRequestProjectMetric.class.st @@ -17,7 +17,7 @@ CodeDeletionDuringAndByMergeRequestProjectMetric >> calculate [ projectMergeRequests do: [ :mr | dateOver := self transformDate: mr created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: mr ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/CodeDeletionMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeDeletionMetric.class.st index 8a02306e..e0e04d20 100644 --- a/src/GitLabHealth-Model-Analysis/CodeDeletionMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeDeletionMetric.class.st @@ -23,7 +23,7 @@ CodeDeletionMetric >> calculate [ | dateOver | dateOver := self transformDate: assoc key created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :v | v add: assoc value ] ]. diff --git a/src/GitLabHealth-Model-Analysis/CodeDeletionProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeDeletionProjectMetric.class.st index fa87ba03..df2eee70 100644 --- a/src/GitLabHealth-Model-Analysis/CodeDeletionProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeDeletionProjectMetric.class.st @@ -26,7 +26,7 @@ CodeDeletionProjectMetric >> calculate [ | dateOver | dateOver := self transformDate: assoc key created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :v | v add: assoc value ] ]. groupedByDate := groupedByDate collect: [ :contribs | diff --git a/src/GitLabHealth-Model-Analysis/CommentContributionMetric.class.st b/src/GitLabHealth-Model-Analysis/CommentContributionMetric.class.st index 91d25c0c..c561619c 100644 --- a/src/GitLabHealth-Model-Analysis/CommentContributionMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CommentContributionMetric.class.st @@ -23,7 +23,7 @@ CommentContributionMetric >> calculate [ | dateOver | dateOver := self transformDate: assoc key created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :v | v add: assoc value ] ]. groupedByDate := groupedByDate collect: [ :contribs | diff --git a/src/GitLabHealth-Model-Analysis/CommentLinesAddedProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CommentLinesAddedProjectMetric.class.st index 6019a218..fb472082 100644 --- a/src/GitLabHealth-Model-Analysis/CommentLinesAddedProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CommentLinesAddedProjectMetric.class.st @@ -26,7 +26,7 @@ CommentLinesAddedProjectMetric >> calculate [ | dateOver | dateOver := self transformDate: assoc key created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :v | v add: assoc value ] ]. groupedByDate := groupedByDate collect: [ :contribs | diff --git a/src/GitLabHealth-Model-Analysis/CommitFrequencyMetric.class.st b/src/GitLabHealth-Model-Analysis/CommitFrequencyMetric.class.st index 10c7d36b..f05397c5 100644 --- a/src/GitLabHealth-Model-Analysis/CommitFrequencyMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CommitFrequencyMetric.class.st @@ -14,7 +14,7 @@ CommitFrequencyMetric >> calculate [ userCommits do: [ :c | | dateOver | dateOver := self transformDate: c created_at to: over. - groupedByDate at: dateOver printString ifPresent: [ :v | v add: c ] ]. + groupedByDate at: dateOver ifPresent: [ :v | v add: c ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/CommitFrequencyProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CommitFrequencyProjectMetric.class.st index e0e1bb64..910ff623 100644 --- a/src/GitLabHealth-Model-Analysis/CommitFrequencyProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CommitFrequencyProjectMetric.class.st @@ -15,7 +15,7 @@ CommitFrequencyProjectMetric >> calculate [ projectCommits do: [ :c | | dateOver | dateOver := self transformDate: c created_at to: over. - groupedByDate at: dateOver printString ifPresent: [ :v | v add: c ] ]. + groupedByDate at: dateOver ifPresent: [ :v | v add: c ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/CommitLinkedToJiraProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CommitLinkedToJiraProjectMetric.class.st index 2c0ed742..4967f8cc 100644 --- a/src/GitLabHealth-Model-Analysis/CommitLinkedToJiraProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CommitLinkedToJiraProjectMetric.class.st @@ -21,7 +21,7 @@ CommitLinkedToJiraProjectMetric >> calculate [ dateOver := self transformDate: mr created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: mr ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/CommitWithoutUsernameProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CommitWithoutUsernameProjectMetric.class.st index ab1f8269..4c1ea0b7 100644 --- a/src/GitLabHealth-Model-Analysis/CommitWithoutUsernameProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CommitWithoutUsernameProjectMetric.class.st @@ -20,7 +20,7 @@ CommitWithoutUsernameProjectMetric >> calculate [ filteredCommits do: [ :c | | dateOver | dateOver := self transformDate: c created_at to: over. - groupedByDate at: dateOver printString ifPresent: [ :v | v add: c ] ]. + groupedByDate at: dateOver ifPresent: [ :v | v add: c ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/CommitsLinkWithTicketMetric.class.st b/src/GitLabHealth-Model-Analysis/CommitsLinkWithTicketMetric.class.st index ac783f32..2fe9504d 100644 --- a/src/GitLabHealth-Model-Analysis/CommitsLinkWithTicketMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CommitsLinkWithTicketMetric.class.st @@ -14,7 +14,7 @@ CommitsLinkWithTicketMetric >> calculate [ userCommits do: [ :c | | dateOver | dateOver := self transformDate: c created_at to: over. - groupedByDate at: dateOver printString ifPresent: [ :v | v add: c ] ]. + groupedByDate at: dateOver ifPresent: [ :v | v add: c ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/CommitsNumberByJiraTicketsMetric.class.st b/src/GitLabHealth-Model-Analysis/CommitsNumberByJiraTicketsMetric.class.st index 9114c13a..6423350b 100644 --- a/src/GitLabHealth-Model-Analysis/CommitsNumberByJiraTicketsMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CommitsNumberByJiraTicketsMetric.class.st @@ -14,7 +14,7 @@ CommitsNumberByJiraTicketsMetric >> calculate [ userMergeRequests do: [ :userMergeRequest | dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | | average | diff --git a/src/GitLabHealth-Model-Analysis/ContributedProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/ContributedProjectMetric.class.st index 8cc89bcc..1435a696 100644 --- a/src/GitLabHealth-Model-Analysis/ContributedProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/ContributedProjectMetric.class.st @@ -15,7 +15,7 @@ ContributedProjectMetric >> calculate [ dateOver := self transformDate: userCommit committed_date to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userCommit repository project ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/ContributorsProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/ContributorsProjectMetric.class.st index 53c21ac0..75ec3df7 100644 --- a/src/GitLabHealth-Model-Analysis/ContributorsProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/ContributorsProjectMetric.class.st @@ -19,7 +19,7 @@ ContributorsProjectMetric >> calculate [ projectCommits do: [ :commit | | dateOver | dateOver := self transformDate: commit created_at to: over. - groupedByDate at: dateOver printString ifPresent: [ :v | v add: commit commitCreator ] ]. + groupedByDate at: dateOver ifPresent: [ :v | v add: commit commitCreator ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/CreatedACRPipelineByProject.class.st b/src/GitLabHealth-Model-Analysis/CreatedACRPipelineByProject.class.st index ef496dcd..6c39830c 100644 --- a/src/GitLabHealth-Model-Analysis/CreatedACRPipelineByProject.class.st +++ b/src/GitLabHealth-Model-Analysis/CreatedACRPipelineByProject.class.st @@ -20,7 +20,7 @@ CreatedACRPipelineByProject >> calculate [ mr note do: [ :note | | dateOver | dateOver := self transformDate: note created_at to: over. - groupedByDate at: dateOver printString ifPresent: [ :v | v add: note ]. + groupedByDate at: dateOver ifPresent: [ :v | v add: note ]. ] ]. groupedByDate := groupedByDate collect: [ :notesGroup | diff --git a/src/GitLabHealth-Model-Analysis/CreatedMergeRequestProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CreatedMergeRequestProjectMetric.class.st index 97971a5f..21a9968c 100644 --- a/src/GitLabHealth-Model-Analysis/CreatedMergeRequestProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CreatedMergeRequestProjectMetric.class.st @@ -15,7 +15,7 @@ CreatedMergeRequestProjectMetric >> calculate [ projectMergeRequests do: [ :c | | dateOver | dateOver := self transformDate: c created_at to: over. - groupedByDate at: dateOver printString ifPresent: [ :v | v add: c ] ]. + groupedByDate at: dateOver ifPresent: [ :v | v add: c ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/CreatedNoteInMergedOrClosedMergeRequest.class.st b/src/GitLabHealth-Model-Analysis/CreatedNoteInMergedOrClosedMergeRequest.class.st index 1f190105..ce2b37a2 100644 --- a/src/GitLabHealth-Model-Analysis/CreatedNoteInMergedOrClosedMergeRequest.class.st +++ b/src/GitLabHealth-Model-Analysis/CreatedNoteInMergedOrClosedMergeRequest.class.st @@ -20,7 +20,7 @@ CreatedNoteInMergedOrClosedMergeRequest >> calculate [ ifFalse: [ mergeRequest merged_at ]. dateOver := self transformDate: mrDate to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :v | v add: mergeRequest ] ]. groupedByDate := groupedByDate collect: [ :mergeRequestGroup | diff --git a/src/GitLabHealth-Model-Analysis/CreatedNotesByACRByProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CreatedNotesByACRByProjectMetric.class.st index 42ea9619..e50da5a0 100644 --- a/src/GitLabHealth-Model-Analysis/CreatedNotesByACRByProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CreatedNotesByACRByProjectMetric.class.st @@ -21,7 +21,7 @@ CreatedNotesByACRByProjectMetric >> calculate [ mr note do: [ :note | | dateOver | dateOver := self transformDate: note created_at to: over. - groupedByDate at: dateOver printString ifPresent: [ :v | v add: note ]. + groupedByDate at: dateOver ifPresent: [ :v | v add: note ]. ] ]. diff --git a/src/GitLabHealth-Model-Analysis/DelayUntilFirstChurnMetric.class.st b/src/GitLabHealth-Model-Analysis/DelayUntilFirstChurnMetric.class.st index f90f2022..fffb2d17 100644 --- a/src/GitLabHealth-Model-Analysis/DelayUntilFirstChurnMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/DelayUntilFirstChurnMetric.class.st @@ -25,7 +25,7 @@ DelayUntilFirstChurnMetric >> calculate [ overDate := self transformDate: commit created_at to: over. groupedByDate - at: overDate printString + at: overDate ifPresent: [ :arrayOfCommits | arrayOfCommits add: commit ] ] ]. diff --git a/src/GitLabHealth-Model-Analysis/GitMetricExporter.class.st b/src/GitLabHealth-Model-Analysis/GitMetricExporter.class.st index d2172900..8c61a9f0 100644 --- a/src/GitLabHealth-Model-Analysis/GitMetricExporter.class.st +++ b/src/GitLabHealth-Model-Analysis/GitMetricExporter.class.st @@ -31,8 +31,8 @@ GitMetricExporter class >> demoPeriod [ GitMetricExporter >> addAPeriodFrom: since to: until [ runningPeriods add: { - (#since -> since asDate). - (#until -> until asDate) } asDictionary. + (#since -> (self readDate: since)). + (#until -> (self readDate: until)) } asDictionary. ^ runningPeriods ] @@ -542,6 +542,13 @@ GitMetricExporter >> projectMetrics [ ^ metrics select: [ :metric | metric inheritsFrom: ProjectMetric ] ] +{ #category : #accessing } +GitMetricExporter >> readDate: aDateString [ + "date is supposed to the the format mm-dd-yyyy for compatibility with Moose 12" + + ^ Date readFrom: aDateString pattern: 'mm-dd-yyyy' +] + { #category : #setup } GitMetricExporter >> setupAnalysisForProjectsWithIds: projectIds [ diff --git a/src/GitLabHealth-Model-Analysis/InactiveBranchesProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/InactiveBranchesProjectMetric.class.st index 05f3f6b7..62bc8ec7 100644 --- a/src/GitLabHealth-Model-Analysis/InactiveBranchesProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/InactiveBranchesProjectMetric.class.st @@ -23,7 +23,7 @@ InactiveBranchesProjectMetric >> calculate [ "sort commits by ASC date" commit := (branch commits sort: [ :c1 :c2 | c1 created_at > c2 created_at]) first. dateOver := self transformDate: commit created_at to: over. - groupedByDate at: dateOver printString ifAbsent: [ outside add: branch ] ]. + groupedByDate at: dateOver ifAbsent: [ outside add: branch ] ]. ^ outside size asFloat diff --git a/src/GitLabHealth-Model-Analysis/JiraTimeMRTimeDifferenceMetric.class.st b/src/GitLabHealth-Model-Analysis/JiraTimeMRTimeDifferenceMetric.class.st index 006e809e..9627d2ce 100644 --- a/src/GitLabHealth-Model-Analysis/JiraTimeMRTimeDifferenceMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/JiraTimeMRTimeDifferenceMetric.class.st @@ -15,7 +15,7 @@ JiraTimeMRTimeDifferenceMetric >> calculate [ userMergeRequests do: [ :userMergeRequest | dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/JiraTimeMRTimeDifferenceProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/JiraTimeMRTimeDifferenceProjectMetric.class.st index 021fb69f..f3a80372 100644 --- a/src/GitLabHealth-Model-Analysis/JiraTimeMRTimeDifferenceProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/JiraTimeMRTimeDifferenceProjectMetric.class.st @@ -24,7 +24,7 @@ JiraTimeMRTimeDifferenceProjectMetric >> calculate [ jiraID := GPJCConnector new jiraKeyFromCommitMessage: mr title. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: mr ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/MergeRequestDurationMetric.class.st b/src/GitLabHealth-Model-Analysis/MergeRequestDurationMetric.class.st index 924d19cf..3761eaec 100644 --- a/src/GitLabHealth-Model-Analysis/MergeRequestDurationMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/MergeRequestDurationMetric.class.st @@ -26,7 +26,7 @@ MergeRequestDurationMetric >> calculate [ overDate := self transformDate: (dic at: #created_at) to: over. groupedByDate - at: overDate printString + at: overDate ifPresent: [ :durations | durations add: (dic at: #duration) ] ]. diff --git a/src/GitLabHealth-Model-Analysis/MergeRequestLinkedToJiraProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/MergeRequestLinkedToJiraProjectMetric.class.st index 8b873e17..8238ca63 100644 --- a/src/GitLabHealth-Model-Analysis/MergeRequestLinkedToJiraProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/MergeRequestLinkedToJiraProjectMetric.class.st @@ -21,7 +21,7 @@ MergeRequestLinkedToJiraProjectMetric >> calculate [ dateOver := self transformDate: mr created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: mr ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/MergeRequestMergedByUserMetric.class.st b/src/GitLabHealth-Model-Analysis/MergeRequestMergedByUserMetric.class.st index fe35e940..6b1ee3d8 100644 --- a/src/GitLabHealth-Model-Analysis/MergeRequestMergedByUserMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/MergeRequestMergedByUserMetric.class.st @@ -29,7 +29,7 @@ MergeRequestMergedByUserMetric >> calculate [ userMergedMergeRequests do: [ :userMergeRequest | "here we look at the specific date of its merged" dateOver := self transformDate: userMergeRequest merged_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/MergedMergeRequestDurationProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/MergedMergeRequestDurationProjectMetric.class.st index 62330d2b..8a7f2024 100644 --- a/src/GitLabHealth-Model-Analysis/MergedMergeRequestDurationProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/MergedMergeRequestDurationProjectMetric.class.st @@ -10,11 +10,12 @@ MergedMergeRequestDurationProjectMetric >> calculate [ | groupedByDate gitAnalyzer mergeRequestsValidation filterGroups | projectMergeRequests ifNil: [ self load ]. - groupedByDate := self setupGroupedDate. - + groupedByDate := self setupGroupedDate. + "Filtrer les merge requests pour ne garder que celles qui ont une date de clĂ´ture (merged_at) et un statut 'merged'" - projectMergeRequests := projectMergeRequests select: [ :mr | - (mr merged_at) notNil and: [(mr state) = 'merged'] ]. + projectMergeRequests := projectMergeRequests select: [ :mr | + mr merged_at notNil and: [ + mr state = 'merged' ] ]. projectMergeRequests ifEmpty: [ ^ nil ]. @@ -30,7 +31,7 @@ MergedMergeRequestDurationProjectMetric >> calculate [ overDate := self transformDate: (dic at: #merged_at) to: over. groupedByDate - at: overDate printString + at: overDate ifPresent: [ :durations | durations add: (dic at: #duration) ] ]. "deleting the empty array (merge request that are not merged )" diff --git a/src/GitLabHealth-Model-Analysis/MergedMergeRequestMetric.class.st b/src/GitLabHealth-Model-Analysis/MergedMergeRequestMetric.class.st index 5357c35f..14bc2aff 100644 --- a/src/GitLabHealth-Model-Analysis/MergedMergeRequestMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/MergedMergeRequestMetric.class.st @@ -26,7 +26,7 @@ MergedMergeRequestMetric >> calculate [ userMergeRequests do: [ :userMergeRequest | "here we look at the specific date of its merged" dateOver := self transformDate: userMergeRequest merged_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/MergedMergeRequestProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/MergedMergeRequestProjectMetric.class.st index eb5a4374..0ce79d7f 100644 --- a/src/GitLabHealth-Model-Analysis/MergedMergeRequestProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/MergedMergeRequestProjectMetric.class.st @@ -17,7 +17,7 @@ MergedMergeRequestProjectMetric >> calculate [ thenDo: [ :c | | dateOver | dateOver := self transformDate: c merged_at to: over. - groupedByDate at: dateOver printString ifPresent: [ :v | v add: c ] ]. + groupedByDate at: dateOver ifPresent: [ :v | v add: c ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/Metric.class.st b/src/GitLabHealth-Model-Analysis/Metric.class.st index e34fceb1..1096ecf2 100644 --- a/src/GitLabHealth-Model-Analysis/Metric.class.st +++ b/src/GitLabHealth-Model-Analysis/Metric.class.st @@ -93,16 +93,16 @@ Metric >> over: anObject [ { #category : #'utils - date' } Metric >> readDate: aDateString [ "date is supposed to the the format mm-dd-yyyy for compatibility with Moose 12" - + ^ Date readFrom: aDateString pattern: 'mm-dd-yyyy' ] { #category : #initialization } Metric >> setPeriodSince: since until: until [ - period := { - (#since -> since asDate). - (#until -> until asDate) } asDictionary + period := { + (#since -> (self readDate: since)). + (#until -> (self readDate: until)) } asDictionary ] { #category : #'utils - date' } @@ -116,7 +116,7 @@ Metric >> setupGroupedDate [ end := self transformDate: (period at: #until) to: over. groupedByDate - at: start printString + at: start ifAbsentPut: [ OrderedCollection new ]. overSymbol := over name asLowercase asSymbol. @@ -126,26 +126,26 @@ Metric >> setupGroupedDate [ over := #day ]. - [ (self readDate: groupedByDate keys last) < end ] whileTrue: [ + [ groupedByDate keys last < end ] whileTrue: [ | index | - index := (self readDate: groupedByDate keys last) + index := groupedByDate keys last + (increment perform: overSymbol). index := self transformDate: index to: over. groupedByDate - at: index printString + at: index ifAbsentPut: [ OrderedCollection new ] ]. over = #day ifTrue: [ groupedByDate := (groupedByDate associations select: [ :date | | aWeekday | - aWeekday := (self readDate: date key) weekday. + aWeekday := date key weekday. (aWeekday = #Sunday or: [ aWeekday = #Saturday ]) not ]) asOrderedDictionary ]. groupedByDate - at: end printString + at: end ifAbsentPut: [ OrderedCollection new ]. ^ groupedByDate diff --git a/src/GitLabHealth-Model-Analysis/OpenedMergeRequestDurationProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/OpenedMergeRequestDurationProjectMetric.class.st index ff3f367d..70318db1 100644 --- a/src/GitLabHealth-Model-Analysis/OpenedMergeRequestDurationProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/OpenedMergeRequestDurationProjectMetric.class.st @@ -26,7 +26,7 @@ OpenedMergeRequestDurationProjectMetric >> calculate [ overDate := self transformDate: (dic at: #created_at) to: over. groupedByDate - at: overDate printString + at: overDate ifPresent: [ :durations | durations add: (dic at: #open_duration) ] ]. "deleting the empty array" diff --git a/src/GitLabHealth-Model-Analysis/OpenedMergeRequestMetric.class.st b/src/GitLabHealth-Model-Analysis/OpenedMergeRequestMetric.class.st index 2e1c4b2d..c9b9fe73 100644 --- a/src/GitLabHealth-Model-Analysis/OpenedMergeRequestMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/OpenedMergeRequestMetric.class.st @@ -16,7 +16,7 @@ OpenedMergeRequestMetric >> calculate [ dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/PendingMergeRequestMetric.class.st b/src/GitLabHealth-Model-Analysis/PendingMergeRequestMetric.class.st index a3c1e92a..5d81a97a 100644 --- a/src/GitLabHealth-Model-Analysis/PendingMergeRequestMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/PendingMergeRequestMetric.class.st @@ -19,7 +19,7 @@ PendingMergeRequestMetric >> calculate [ "here we look at the specific date of its created" dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/ReviewedByUserMergeRequestMetric.class.st b/src/GitLabHealth-Model-Analysis/ReviewedByUserMergeRequestMetric.class.st index ca408fef..8d3d0ae2 100644 --- a/src/GitLabHealth-Model-Analysis/ReviewedByUserMergeRequestMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/ReviewedByUserMergeRequestMetric.class.st @@ -28,7 +28,7 @@ ReviewedByUserMergeRequestMetric >> calculate [ dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/SelfMergedUnderAMinuteMergeRequestMetric.class.st b/src/GitLabHealth-Model-Analysis/SelfMergedUnderAMinuteMergeRequestMetric.class.st index 4bba9611..c8331ddf 100644 --- a/src/GitLabHealth-Model-Analysis/SelfMergedUnderAMinuteMergeRequestMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/SelfMergedUnderAMinuteMergeRequestMetric.class.st @@ -33,7 +33,7 @@ SelfMergedUnderAMinuteMergeRequestMetric >> calculate [ noVerificationMergeRequests do: [ :userMergeRequest | dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. diff --git a/src/GitLabHealth-Model-Analysis/SelfMergedUnderAMinuteMergeRequestProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/SelfMergedUnderAMinuteMergeRequestProjectMetric.class.st index c4f3bf13..56004f12 100644 --- a/src/GitLabHealth-Model-Analysis/SelfMergedUnderAMinuteMergeRequestProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/SelfMergedUnderAMinuteMergeRequestProjectMetric.class.st @@ -32,7 +32,7 @@ SelfMergedUnderAMinuteMergeRequestProjectMetric >> calculate [ | dateOver | dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/TimeBetweenCommitMetric.class.st b/src/GitLabHealth-Model-Analysis/TimeBetweenCommitMetric.class.st index 5af96884..535bf5e7 100644 --- a/src/GitLabHealth-Model-Analysis/TimeBetweenCommitMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/TimeBetweenCommitMetric.class.st @@ -19,7 +19,7 @@ TimeBetweenCommitMetric >> calculate [ dateOver := self transformDate: commit committed_date to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: commit ] ]. groupedByDate := groupedByDate select: [ :group | group size >= 2 ]. From fcf145c43893e6ca675403ceb14a1ad8a057db6b Mon Sep 17 00:00:00 2001 From: Benoit Verhaeghe Date: Mon, 22 Jun 2026 11:51:02 +0200 Subject: [PATCH 03/10] removing asDate --- .../GitAnalyzerLocalTest.class.st | 7 ++++--- .../GitAnalyzerTest.class.st | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/GitLabHealth-Model-Analysis-Tests/GitAnalyzerLocalTest.class.st b/src/GitLabHealth-Model-Analysis-Tests/GitAnalyzerLocalTest.class.st index 737cf5e8..668879b4 100644 --- a/src/GitLabHealth-Model-Analysis-Tests/GitAnalyzerLocalTest.class.st +++ b/src/GitLabHealth-Model-Analysis-Tests/GitAnalyzerLocalTest.class.st @@ -21,10 +21,11 @@ GitAnalyzerLocalTest >> setUp [ gitAnalyzer := GitAnalyzer new onModel: glphModel. fromCommit := GLHCommit new. fromCommit short_id: 'testFromCommit'. - fromCommit created_at: ('3 August 2021' asDate). + "3 august 2021" + fromCommit created_at: (Date newDay: 3 month: 8 year: 2021). glphModel add: fromCommit. - - gitAnalyzer fromCommit: fromCommit. + + gitAnalyzer fromCommit: fromCommit ] { #category : #test } diff --git a/src/GitLabHealth-Model-Analysis-Tests/GitAnalyzerTest.class.st b/src/GitLabHealth-Model-Analysis-Tests/GitAnalyzerTest.class.st index 8743b651..f4ed1281 100644 --- a/src/GitLabHealth-Model-Analysis-Tests/GitAnalyzerTest.class.st +++ b/src/GitLabHealth-Model-Analysis-Tests/GitAnalyzerTest.class.st @@ -42,7 +42,7 @@ GitAnalyzerTest >> setUp [ glhImporter importCommitsOfProject: projects first - since: since asDate + since: since until: nil. gitAnalyzer := GitAnalyzer new From e6a2579f165ac24f59eb608ac03c29491489704a Mon Sep 17 00:00:00 2001 From: Benoit Verhaeghe Date: Mon, 22 Jun 2026 11:54:55 +0200 Subject: [PATCH 04/10] fix test spec --- .../JiraTimeMRTimeDifferenceMetricTest.class.st | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/GitProject-JiraConnector-Tests/JiraTimeMRTimeDifferenceMetricTest.class.st b/src/GitProject-JiraConnector-Tests/JiraTimeMRTimeDifferenceMetricTest.class.st index bd7ddc85..ad28ea8a 100644 --- a/src/GitProject-JiraConnector-Tests/JiraTimeMRTimeDifferenceMetricTest.class.st +++ b/src/GitProject-JiraConnector-Tests/JiraTimeMRTimeDifferenceMetricTest.class.st @@ -85,8 +85,8 @@ JiraTimeMRTimeDifferenceMetricTest >> testCalculate2PeriodWith1EmptyPeriod [ user: user; glhImporter: glhImporter; jiraImporter: jiraImporter; - setPeriodSince: '2024-09-01' - until: '2024-09-09'; + setPeriodSince: '09-01-2024' + until: '09-09-2024'; over: Week. "When" From 32044bf07b7f4189f1841f11031264b20a34db59 Mon Sep 17 00:00:00 2001 From: Benoit Verhaeghe Date: Mon, 22 Jun 2026 12:02:39 +0200 Subject: [PATCH 05/10] organize packages dependencies for log in ci/cd --- .../BaselineOfGitLabHealth.class.st | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/src/BaselineOfGitLabHealth/BaselineOfGitLabHealth.class.st b/src/BaselineOfGitLabHealth/BaselineOfGitLabHealth.class.st index 5f353c40..2cb40145 100644 --- a/src/BaselineOfGitLabHealth/BaselineOfGitLabHealth.class.st +++ b/src/BaselineOfGitLabHealth/BaselineOfGitLabHealth.class.st @@ -129,16 +129,16 @@ BaselineOfGitLabHealth >> defineJiraConnector: spec [ { #category : #baselines } BaselineOfGitLabHealth >> definePackages: spec [ + "generic" - spec package: 'GitProjectHealth-Model-Importer' - with: [ spec requires: #( 'GitlabAPI' ) ]. + with: [ spec requires: #( 'GitLabHealth-Model' ) ]. spec package: 'GitProjectHealth-Model-Importer-Tests' with: [ spec requires: #( 'GitProjectHealth-Model-Importer' ) ]. - "gitlab" + "model" spec package: 'GitLabHealth-Model'; package: 'GitLabHealth-Model-Extension' @@ -148,34 +148,33 @@ BaselineOfGitLabHealth >> definePackages: spec [ package: 'GitLabHealth-Model-Generator'; package: 'GitLabHealth-Model-Inspector' with: [ spec requires: #( 'GitLabHealth-Model-Visualization' ) ]; - package: 'GitLabHealth-Model-Visualization'; + package: 'GitLabHealth-Model-Visualization'. + + "Gitlab importer" + spec package: 'GitLabHealth-Model-Importer' with: [ spec requires: - #( 'NeoJSON' 'MoreLogger' 'GitProjectHealth-Model-Importer' ) ]; - package: 'GitHubHealth-Model-Importer' with: [ - spec requires: - #( 'NeoJSON' 'MoreLogger' 'GitProjectHealth-Model-Importer' ) ]; + #( 'NeoJSON' 'MoreLogger' 'GitlabAPI' 'GitProjectHealth-Model-Importer' ) ]; package: 'GitLabHealth-Model-Importer-Tests' with: [ spec requires: #( 'GitLabHealth-Model-Importer' 'GitHubHealth-Model-Importer' ) ]. spec package: 'GitLabHealth-Model-Tests' with: [ spec requires: #( 'GitLabHealth-Model' ) ]. - spec - package: 'GitHubHealth-Model-Importer-Tests' - with: [ spec requires: #( 'GitHubHealth-Model-Importer' ) ]. "Bitbucket" spec - package: 'BitBucketHealth-Model-Importer' - with: [ spec requires: #( 'BitbucketPharoAPI' ) ]; + package: 'BitBucketHealth-Model-Importer' with: [ + spec requires: + #( 'BitbucketPharoAPI' 'GitProjectHealth-Model-Importer' ) ]; package: 'BitBucketHealth-Model-Importer-Tests' with: [ spec requires: #( 'BitBucketHealth-Model-Importer' ) ]. "github" - spec - package: 'GitHubHealth-Model-Importer' - with: [ spec requires: #( 'GithubAPI' ) ]; + spec + package: 'GitHubHealth-Model-Importer' with: [ + spec requires: + #( 'GithubAPI' 'NeoJSON' 'MoreLogger' 'GitProjectHealth-Model-Importer' ) ]; package: 'GitHubHealth-Model-Importer-Tests' with: [ spec requires: #( 'GitHubHealth-Model-Importer' ) ]. From 4cfe77be99c7c9ed7e6ba2cf55b893326acc7b9b Mon Sep 17 00:00:00 2001 From: Benoit Verhaeghe Date: Mon, 22 Jun 2026 14:28:48 +0200 Subject: [PATCH 06/10] remove more asDate --- .../GitAnalyzer.class.st | 15 +++++----- .../GitMetricExporter.class.st | 30 +++++++++++-------- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/GitLabHealth-Model-Analysis/GitAnalyzer.class.st b/src/GitLabHealth-Model-Analysis/GitAnalyzer.class.st index 304b379c..37c5b754 100644 --- a/src/GitLabHealth-Model-Analysis/GitAnalyzer.class.st +++ b/src/GitLabHealth-Model-Analysis/GitAnalyzer.class.st @@ -82,19 +82,18 @@ GitAnalyzer >> analyseCommitFrequencyFromCommits: initialCommits [ commits := self arrangeCommitsByDate: initialCommits. commits := (commits associations sortAscending: [ :entry | - entry key asDate ]) asOrderedDictionary. + entry key ]) asOrderedDictionary. ^ commits ] { #category : #analyze } -GitAnalyzer >> analyseCommitFrequencySince: since until: until [ +GitAnalyzer >> analyseCommitFrequencySince: since until: until [ | commits response | - - ('GitAnalyzer, analyse commit Frequency on: ', onProject printString ) + ('GitAnalyzer, analyse commit Frequency on: ' , onProject printString) recordInfo. - + response := { (#numberOfCommit -> nil). (#frequency -> nil) } asDictionary. @@ -105,8 +104,8 @@ GitAnalyzer >> analyseCommitFrequencySince: since until: until [ until: until. commits := self arrangeCommitsByDate: commits. - commits := (commits associations sortAscending: [ :entry | - entry key asDate ]) asOrderedDictionary. + commits := (commits associations sortAscending: [ :entry | entry key ]) + asOrderedDictionary. ^ commits ] @@ -196,7 +195,7 @@ GitAnalyzer >> arrangeCommitsByDate: commits [ | date | date := commit created_at asDate. date2commits - at: date printString + at: date ifPresent: [ :v | v add: commit ] ifAbsentPut: [ OrderedCollection new diff --git a/src/GitLabHealth-Model-Analysis/GitMetricExporter.class.st b/src/GitLabHealth-Model-Analysis/GitMetricExporter.class.st index 8c61a9f0..2a6a2b1a 100644 --- a/src/GitLabHealth-Model-Analysis/GitMetricExporter.class.st +++ b/src/GitLabHealth-Model-Analysis/GitMetricExporter.class.st @@ -343,15 +343,22 @@ GitMetricExporter >> findParticipationOfCommitAuthorNamed: username amongProject size. ']' }) recordInfo. - params := { - #author -> username. - #since -> '01 january 2023' asDate asDateAndTime asString. - #until -> Date today asDateAndTime asString - } asDictionary. - response := glhImporter repoApi commits getAllInProject: project id withParams: params. - response := (response collect: [ :commitsJson | glhImporter parseCommitsResult: commitsJson]) flattened. - response isNotEmpty - ]. + params := { + (#author -> username). + (#since + -> + (Date newDay: 1 month: 1 year: 2023) + asDateAndTime asString). + (#until + -> Date today asDateAndTime asString) } + asDictionary. + response := glhImporter repoApi commits + getAllInProject: project id + withParams: params. + response := (response collect: [ :commitsJson | + glhImporter parseCommitsResult: + commitsJson ]) flattened. + response isNotEmpty ]. ^ itsProjects ] @@ -477,15 +484,14 @@ GitMetricExporter >> initialize [ entities := OrderedCollection new. "set up the minimal date from which we are looking for the commits a particular user in projects" - sinceTimeLimit := '2024-01-01' asDate asDateAndTime. + sinceTimeLimit := (Date newDay: 1 month: 1 year: 2024) asDateAndTime. runningPeriods := OrderedCollection new. maxCommitWindow := 3. over := Date. analyses := OrderedCollection new. - metrics := Metric allSubclasses reject: #isAbstract. - + metrics := Metric allSubclasses reject: #isAbstract ] { #category : #accessing } From 74077600e233fae73b4b39f92a0d44e4d2d60556 Mon Sep 17 00:00:00 2001 From: Benoit Verhaeghe Date: Mon, 22 Jun 2026 16:04:22 +0200 Subject: [PATCH 07/10] ignore offset explicitly for ci and local working --- .../GitAnalyzerLocalTest.class.st | 37 ++++++++++--------- .../MetricTest.class.st | 8 ++-- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/src/GitLabHealth-Model-Analysis-Tests/GitAnalyzerLocalTest.class.st b/src/GitLabHealth-Model-Analysis-Tests/GitAnalyzerLocalTest.class.st index 668879b4..3dbe252f 100644 --- a/src/GitLabHealth-Model-Analysis-Tests/GitAnalyzerLocalTest.class.st +++ b/src/GitLabHealth-Model-Analysis-Tests/GitAnalyzerLocalTest.class.st @@ -28,7 +28,7 @@ GitAnalyzerLocalTest >> setUp [ gitAnalyzer fromCommit: fromCommit ] -{ #category : #test } +{ #category : #tests } GitAnalyzerLocalTest >> testAnalyseCommentContributionsJavaComment [ | diffA diffARange addition | @@ -47,7 +47,7 @@ GitAnalyzerLocalTest >> testAnalyseCommentContributionsJavaComment [ self assert: gitAnalyzer analyseCommentContribution equals: 1 ] -{ #category : #test } +{ #category : #tests } GitAnalyzerLocalTest >> testAnalyseCommentContributionsJavaContinueComment [ | diffA diffARange addition | @@ -66,7 +66,7 @@ GitAnalyzerLocalTest >> testAnalyseCommentContributionsJavaContinueComment [ self assert: gitAnalyzer analyseCommentContribution equals: 1 ] -{ #category : #test } +{ #category : #tests } GitAnalyzerLocalTest >> testAnalyseCommentContributionsJavaStopComment [ | diffA diffARange addition | @@ -85,7 +85,7 @@ GitAnalyzerLocalTest >> testAnalyseCommentContributionsJavaStopComment [ self assert: gitAnalyzer analyseCommentContribution equals: 1 ] -{ #category : #test } +{ #category : #tests } GitAnalyzerLocalTest >> testAnalyseCommentContributionsMixedMultipleComments [ | diffA diffARange addition additionB additionC | @@ -112,7 +112,7 @@ GitAnalyzerLocalTest >> testAnalyseCommentContributionsMixedMultipleComments [ self assert: gitAnalyzer analyseCommentContribution equals: 2 ] -{ #category : #test } +{ #category : #tests } GitAnalyzerLocalTest >> testAnalyseCommentContributionsMultipleComments [ | diffA diffARange addition additionB additionC | @@ -139,7 +139,7 @@ GitAnalyzerLocalTest >> testAnalyseCommentContributionsMultipleComments [ self assert: gitAnalyzer analyseCommentContribution equals: 3 ] -{ #category : #test } +{ #category : #tests } GitAnalyzerLocalTest >> testAnalyseCommentContributionsPythonComment [ | diffA diffARange addition | @@ -158,7 +158,7 @@ GitAnalyzerLocalTest >> testAnalyseCommentContributionsPythonComment [ self assert: gitAnalyzer analyseCommentContribution equals: 1 ] -{ #category : #test } +{ #category : #tests } GitAnalyzerLocalTest >> testAnalyseCommentContributionsShouldBe0 [ | diffA diffARange addition | @@ -177,7 +177,7 @@ GitAnalyzerLocalTest >> testAnalyseCommentContributionsShouldBe0 [ self assert: gitAnalyzer analyseCommentContribution equals: 0 ] -{ #category : #test } +{ #category : #tests } GitAnalyzerLocalTest >> testAnalyseCommentInSomeAroundCode [ | diffA diffARange addition | @@ -196,7 +196,7 @@ GitAnalyzerLocalTest >> testAnalyseCommentInSomeAroundCode [ self assert: gitAnalyzer analyseCommentContribution equals: 0 ] -{ #category : #test } +{ #category : #tests } GitAnalyzerLocalTest >> testAnalyseCommentNotAnAddition [ | diffA diffARange addition | @@ -215,23 +215,26 @@ GitAnalyzerLocalTest >> testAnalyseCommentNotAnAddition [ self assert: gitAnalyzer analyseCommentContribution equals: 0 ] -{ #category : #test } +{ #category : #tests } GitAnalyzerLocalTest >> testArrangeCommitsByDate [ - | commitA2 commitA3 commitB result | + | commitA2 commitA3 commitB result threeAugust fourAugust | + threeAugust := Date newDay: 3 month: 8 year: 2021. + fourAugust := Date newDay: 4 month: 8 year: 2021. + commitA2 := GLHCommit new. commitA2 short_id: 'testFromCommit2'. - commitA2 created_at: ('3 August 2021' asDate). + commitA2 created_at: threeAugust. glphModel add: commitA2. commitA3 := GLHCommit new. commitA3 short_id: 'testFromCommit3'. - commitA3 created_at: ('3 August 2021' asDate). + commitA3 created_at: threeAugust. glphModel add: commitA3. commitB := GLHCommit new. commitB short_id: 'testFromCommitB'. - commitB created_at: ('4 August 2021' asDate). + commitB created_at: fourAugust. glphModel add: commitB. result := gitAnalyzer arrangeCommitsByDate: { @@ -239,8 +242,8 @@ GitAnalyzerLocalTest >> testArrangeCommitsByDate [ commitA2. commitA3. commitB }. - + self assert: result size equals: 2. - self assert: (result at: '3 August 2021') size equals: 3. - self assert: (result at: '4 August 2021') size equals: 1. + self assert: (result at: threeAugust) size equals: 3. + self assert: (result at: fourAugust) size equals: 1 ] diff --git a/src/GitLabHealth-Model-Analysis-Tests/MetricTest.class.st b/src/GitLabHealth-Model-Analysis-Tests/MetricTest.class.st index 0d0dc4cf..23ba7c5c 100644 --- a/src/GitLabHealth-Model-Analysis-Tests/MetricTest.class.st +++ b/src/GitLabHealth-Model-Analysis-Tests/MetricTest.class.st @@ -21,10 +21,10 @@ MetricTest >> setUp [ super setUp. "Put here a common initialization logic for tests" - createdAt := '2024-09-04T10:24:11.803+02:00' asDateAndTime. - closedAt := '2024-09-04T11:24:11.803+02:00' asDateAndTime. - mergedAt := '2024-09-04T11:24:11.803+02:00' asDateAndTime. - updatedAt := '2024-09-04T11:24:11.803+02:00' asDateAndTime. + createdAt := '2024-09-04T10:24:11.803' asDateAndTime. + closedAt := '2024-09-04T11:24:11.803' asDateAndTime. + mergedAt := '2024-09-04T11:24:11.803' asDateAndTime. + updatedAt := '2024-09-04T11:24:11.803' asDateAndTime. "mm-dd-yyyy" since := '09-04-2024'. until := '09-05-2024' From 94fb18eb53aafa9c697cc4319cf88de1ddc6177a Mon Sep 17 00:00:00 2001 From: Benoit Verhaeghe Date: Mon, 22 Jun 2026 16:43:58 +0200 Subject: [PATCH 08/10] fix date-metrics --- .../GitAnalyzerTest.class.st | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/GitLabHealth-Model-Analysis-Tests/GitAnalyzerTest.class.st b/src/GitLabHealth-Model-Analysis-Tests/GitAnalyzerTest.class.st index f4ed1281..9eb51a2c 100644 --- a/src/GitLabHealth-Model-Analysis-Tests/GitAnalyzerTest.class.st +++ b/src/GitLabHealth-Model-Analysis-Tests/GitAnalyzerTest.class.st @@ -106,8 +106,8 @@ GitAnalyzerTest >> testAnalyseCommitFrequencySinceUntil [ onProject: projects first; analyseCommitFrequencySince: from asDate until: since asDate. - self assert: (res at: from) size equals: 1. - self assert: (res at: '14 May 2024') size equals: 4 + self assert: (res values at: 1) size equals: 1. + self assert: (res values at: 2) size equals: 4 ] { #category : #tests } From e6bbfdb35225f714bdfabc429ef0a4470741be1c Mon Sep 17 00:00:00 2001 From: Benoit Verhaeghe Date: Tue, 23 Jun 2026 11:22:40 +0200 Subject: [PATCH 09/10] nil commit cannot be imported. A guard should return nil since the commit cannot exist --- src/GitLabHealth-Model-Analysis/GitMetricExporter.class.st | 7 +++++-- src/GitLabHealth-Model-Analysis/Metric.class.st | 7 +++++-- .../GitlabCommitsMock.class.st | 2 +- .../GitlabModelImporter.class.st | 2 ++ 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/GitLabHealth-Model-Analysis/GitMetricExporter.class.st b/src/GitLabHealth-Model-Analysis/GitMetricExporter.class.st index 2a6a2b1a..2d553d8c 100644 --- a/src/GitLabHealth-Model-Analysis/GitMetricExporter.class.st +++ b/src/GitLabHealth-Model-Analysis/GitMetricExporter.class.st @@ -549,10 +549,13 @@ GitMetricExporter >> projectMetrics [ ] { #category : #accessing } -GitMetricExporter >> readDate: aDateString [ +GitMetricExporter >> readDate: aDateOrDateString [ "date is supposed to the the format mm-dd-yyyy for compatibility with Moose 12" - ^ Date readFrom: aDateString pattern: 'mm-dd-yyyy' + (aDateOrDateString isKindOf: DateAndTime) ifTrue: [ + ^ aDateOrDateString asDate ]. + (aDateOrDateString isKindOf: Date) ifTrue: [ ^ aDateOrDateString ]. + ^ Date readFrom: aDateOrDateString pattern: 'mm-dd-yyyy' ] { #category : #setup } diff --git a/src/GitLabHealth-Model-Analysis/Metric.class.st b/src/GitLabHealth-Model-Analysis/Metric.class.st index 1096ecf2..c0a37cd5 100644 --- a/src/GitLabHealth-Model-Analysis/Metric.class.st +++ b/src/GitLabHealth-Model-Analysis/Metric.class.st @@ -91,10 +91,13 @@ Metric >> over: anObject [ ] { #category : #'utils - date' } -Metric >> readDate: aDateString [ +Metric >> readDate: aDateOrDateString [ "date is supposed to the the format mm-dd-yyyy for compatibility with Moose 12" - ^ Date readFrom: aDateString pattern: 'mm-dd-yyyy' + (aDateOrDateString isKindOf: DateAndTime) ifTrue: [ + ^ aDateOrDateString asDate ]. + (aDateOrDateString isKindOf: Date) ifTrue: [ ^ aDateOrDateString ]. + ^ Date readFrom: aDateOrDateString pattern: 'mm-dd-yyyy' ] { #category : #initialization } diff --git a/src/GitLabHealth-Model-Importer-Tests/GitlabCommitsMock.class.st b/src/GitLabHealth-Model-Importer-Tests/GitlabCommitsMock.class.st index 6d58326f..4ce261e5 100644 --- a/src/GitLabHealth-Model-Importer-Tests/GitlabCommitsMock.class.st +++ b/src/GitLabHealth-Model-Importer-Tests/GitlabCommitsMock.class.st @@ -14,7 +14,7 @@ GitlabCommitsMock >> diffOf: commitSha inProject: projectId uniDiff: unidiff [ { #category : #api } GitlabCommitsMock >> get: aString inProject: anUndefinedObject [ - + aString ifNil: [ ^ nil ]. ^ '{ "id": "6104942438c14ec7bd21c6cd5bd995272b3faff6", "short_id": "6104942438c", diff --git a/src/GitLabHealth-Model-Importer/GitlabModelImporter.class.st b/src/GitLabHealth-Model-Importer/GitlabModelImporter.class.st index 10813103..16953646 100644 --- a/src/GitLabHealth-Model-Importer/GitlabModelImporter.class.st +++ b/src/GitLabHealth-Model-Importer/GitlabModelImporter.class.st @@ -742,6 +742,8 @@ GitlabModelImporter >> importBranchesOfProject: aGLHProject [ GitlabModelImporter >> importCommit: aCommitID ofProject: aGLHProject [ | result parsedResult | + "This commit cannot exist" + aCommitID ifNil: [ ^ nil ]. (self glhModel allWithType: GLHCommit) asOrderedCollection detect: [ :commit | commit id = aCommitID ] ifFound: [ :commit | ^ commit ]. From e4f29891333e9a78613566e2c69ded55ceed377a Mon Sep 17 00:00:00 2001 From: Benoit Verhaeghe Date: Tue, 23 Jun 2026 17:12:32 +0200 Subject: [PATCH 10/10] add test for transformDate: date to: aWeekOrMonthOrYear It shoulds always return the same kind of date --- .../MetricTest.class.st | 75 +++++++++++++++++++ .../Metric.class.st | 9 ++- 2 files changed, 81 insertions(+), 3 deletions(-) diff --git a/src/GitLabHealth-Model-Analysis-Tests/MetricTest.class.st b/src/GitLabHealth-Model-Analysis-Tests/MetricTest.class.st index 23ba7c5c..3303a9fb 100644 --- a/src/GitLabHealth-Model-Analysis-Tests/MetricTest.class.st +++ b/src/GitLabHealth-Model-Analysis-Tests/MetricTest.class.st @@ -43,3 +43,78 @@ MetricTest >> testName [ "Then" self assert: name equals: 'ProjectMetric'. ] + +{ #category : #tests } +MetricTest >> testTransformDateTo [ + + | metric startingDate aWeekDateAndTime | + metric := Metric new. + aWeekDateAndTime := '2024-09-04T11:24:11.803+02:00' asDateAndTime. + + startingDate := Date starting: + '2024-09-01T00:00:00.000+00:00' asDateAndTime. + + self + assert: (metric transformDate: aWeekDateAndTime to: Week) + equals: startingDate +] + +{ #category : #tests } +MetricTest >> testTransformDateToMonth [ + + | metric startingDate aWeekDateAndTime | + metric := Metric new. + aWeekDateAndTime := '2024-09-17T00:00:00.000+00:00' asDateAndTime. + + startingDate := Date starting: + '2024-09-01T00:00:00.000+00:00' asDateAndTime. + + self + assert: (metric transformDate: aWeekDateAndTime to: Month) + equals: startingDate +] + +{ #category : #tests } +MetricTest >> testTransformDateToSameDate [ + + | metric startingDate aWeekDateAndTime | + metric := Metric new. + aWeekDateAndTime := '2024-09-01T00:00:00.000+00:00' asDateAndTime. + + startingDate := Date starting: + '2024-09-01T00:00:00.000+00:00' asDateAndTime. + + self + assert: (metric transformDate: aWeekDateAndTime to: Week) + equals: startingDate +] + +{ #category : #tests } +MetricTest >> testTransformDateToSameDateWithOffset [ + + | metric startingDate aWeekDateAndTime | + metric := Metric new. + aWeekDateAndTime := '2024-09-01T00:00:00.000+02:00' asDateAndTime. + + startingDate := Date starting: + '2024-09-01T00:00:00.000+00:00' asDateAndTime. + + self + assert: (metric transformDate: aWeekDateAndTime to: Week) + equals: startingDate +] + +{ #category : #tests } +MetricTest >> testTransformDateToWithDate [ + + | metric startingDate aWeekDateAndTime | + metric := Metric new. + aWeekDateAndTime := Date starting: '2024-09-04T11:24:11.803+02:00' asDateAndTime. + + startingDate := Date starting: + '2024-09-01T00:00:00.000+00:00' asDateAndTime. + + self + assert: (metric transformDate: aWeekDateAndTime to: Week) + equals: startingDate +] diff --git a/src/GitLabHealth-Model-Analysis/Metric.class.st b/src/GitLabHealth-Model-Analysis/Metric.class.st index c0a37cd5..2ce23f7f 100644 --- a/src/GitLabHealth-Model-Analysis/Metric.class.st +++ b/src/GitLabHealth-Model-Analysis/Metric.class.st @@ -157,8 +157,11 @@ Metric >> setupGroupedDate [ { #category : #'utils - date' } Metric >> transformDate: date to: aWeekOrMonthOrYear [ - aWeekOrMonthOrYear = Month ifTrue: [ ^ date asDate month asDate ]. + | dateWithoutOffSet | + dateWithoutOffSet := (date asDateAndTime + date offset) withoutOffset. + aWeekOrMonthOrYear = Month ifTrue: [ + ^ dateWithoutOffSet asDate month asDate ]. - ^ (date asDate perform: ('as' , aWeekOrMonthOrYear name) asSymbol) - asDate + ^ (dateWithoutOffSet asDate perform: + ('as' , aWeekOrMonthOrYear name) asSymbol) asDate ]