• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

moosetechnology / GitProjectHealth / 11665907955

04 Nov 2024 02:09PM UTC coverage: 59.095% (-0.01%) from 59.105%
11665907955

Pull #104

github

web-flow
Merge 3fc9bdb1f into 49a2752be
Pull Request #104: WIP: fix email import

122 of 476 new or added lines in 22 files covered. (25.63%)

402 existing lines in 22 files now uncovered.

9506 of 16086 relevant lines covered (59.09%)

0.59 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/GitLabHealth-Model-Generator/GLHMetamodelGenerator.class.st
1
Class {
2
        #name : 'GLHMetamodelGenerator',
3
        #superclass : 'FamixMetamodelGenerator',
4
        #instVars : [
5
                'project',
6
                'group',
7
                'pipeline',
8
                'user',
9
                'repository',
10
                'branch',
11
                'file',
12
                'fileBlob',
13
                'fileDirectory',
14
                'commit',
15
                'commitStats',
16
                'diff',
17
                'job',
18
                'mergeRequest',
19
                'diffRange',
20
                'change',
21
                'addition',
22
                'deletion',
23
                'lineOfCode'
24
        ],
25
        #category : 'GitLabHealth-Model-Generator',
26
        #package : 'GitLabHealth-Model-Generator'
27
}
28

29
{ #category : 'accessing' }
30
GLHMetamodelGenerator class >> packageName [
×
31
        ^ #'GitLabHealth-Model'
×
UNCOV
32
]
×
33

34
{ #category : 'accessing' }
35
GLHMetamodelGenerator class >> prefix [
×
36
        ^ #GLH
×
UNCOV
37
]
×
38

39
{ #category : 'accessing' }
40
GLHMetamodelGenerator class >> submetamodels [
×
41

×
42
        ^ { FamixMooseQueryGenerator . FamixGenerator }
×
UNCOV
43
]
×
44

45
{ #category : 'definition' }
46
GLHMetamodelGenerator >> branchProperties [
×
47

×
48
        branch property: #name type: #String
×
UNCOV
49
]
×
50

51
{ #category : 'definition' }
52
GLHMetamodelGenerator >> changeProperties [
×
53

×
54
        change property: #index type: #Number.
×
55
        change property: #relativeIndex type: #Number.
×
56
        change property: #sourceCode type: #String. 
×
57
        addition property: #delimiter type: #String defaultValue: '#+'.
×
58
        deletion property: #delimiter type: #String defaultValue: '#-'
×
UNCOV
59
]
×
60

61
{ #category : 'definition' }
62
GLHMetamodelGenerator >> commitProperties [
×
63

×
64
        commit property: #parent_ids type: #Object defaultValue: 'OrderedCollection new'.
×
65

×
66
        commit property: #id type: #String.
×
67
        commit property: #short_id type: #String.
×
68
        commit property: #title type: #String.
×
69
        commit property: #author_name type: #String.
×
70
        commit property: #author_email type: #String.
×
71
        commit property: #authored_date type: #Object.
×
72
        commit property: #committer_name type: #String.
×
73
        commit property: #committer_email type: #String.
×
74
        commit property: #committed_date type: #Object.
×
75
        commit property: #created_at type: #Object.
×
76
        commit property: #message type: #String.
×
77
        commit property: #web_url type: #String.
×
78

×
79

×
80
        (commit property: #additions type: #Number) comment:
×
81
                'The number of line that git consider added'.
×
82
        (commit property: #deletions type: #Number) comment:
×
83
                'The number of line that git consider deleted'
×
UNCOV
84
]
×
85

86
{ #category : 'definition' }
87
GLHMetamodelGenerator >> defineClasses [
×
88

×
89
        super defineClasses.
×
90
        group := builder newClassNamed: #Group comment: 'A GitLab Group'.
×
91
        group withGroup.
×
92
        project := builder
×
93
                           newClassNamed: #Project
×
94
                           comment: 'A GitLab Project'.
×
95
        pipeline := builder
×
96
                            newClassNamed: #Pipeline
×
97
                            comment: 'A GitLab Pipeline execution'.
×
98
        user := builder newClassNamed: #User comment: 'A GitLab User'.
×
99
        repository := builder
×
100
                              newClassNamed: #Repository
×
101
                              comment: 'A git repository'.
×
102
        branch := builder newClassNamed: #Branch comment: 'A git branch'.
×
103
        file := builder newClassNamed: #File comment: 'A file'.
×
104
        fileBlob := builder newClassNamed: #FileBlob comment: 'A file blob'.
×
105
        fileDirectory := builder
×
106
                                 newClassNamed: #FileDirectory
×
107
                                 comment: 'A file directory'.
×
108
        commit := builder
×
109
                          newClassNamed: #Commit
×
110
                          comment: 'a commit attached to a repository'.
×
111
        diff := builder newClassNamed: #Diff comment: 'The diff of a commit'.
×
112
        
×
113
        job := builder newClassNamed: #Job comment: 'A CI Job'.
×
114
        
×
115
        mergeRequest := builder
×
116
                                newClassNamed: #MergeRequest
×
117
                                comment: 'a gitlab merge request'.
×
118

×
119
        change := builder
×
120
                          newClassNamed: #Change
×
121
                          comment: 'super class for addition and deletion '.
×
122

×
123
        addition := builder
×
124
                            newClassNamed: #Addition
×
125
                            comment:
×
126
                            'a detected addition of a line, seen within a diff '.
×
127
        addition withTesting.
×
128
        deletion := builder
×
129
                            newClassNamed: #Deletion
×
130
                            comment:
×
131
                            'a detected deletion of a line, seen within a diff '.
×
132
        deletion withTesting.
×
133

×
134
        lineOfCode := builder
×
135
                              newClassNamed: #LineOfCode
×
136
                              comment: 'a line of code in a diff comparaison '.
×
137

×
138
        diffRange := builder
×
139
                             newClassNamed: #DiffRange
×
140
                             comment:
×
141
                             'a indicate on which line of code are concerned by a diff (usually declared with @@ oldRange, newRange @@) '.
×
UNCOV
142
]
×
143

144
{ #category : 'definition' }
145
GLHMetamodelGenerator >> defineHierarchy [
×
146

×
147
        super defineHierarchy.
×
148
        (builder ensureClassNamed: #Entity) --|> #TEntityMetaLevelDependency.
×
149
        fileDirectory --|> file.
×
150
        fileBlob --|> file.
×
151

×
152
        group --|> #TNamedEntity.
×
153
        project --|> #TNamedEntity.
×
154
        user --|> #TNamedEntity.
×
155
        commit --|> #TNamedEntity.
×
156
        diff --|> #TNamedEntity.
×
157
        job --|> #TNamedEntity.
×
158

×
159
        change --|> #TNamedEntity.
×
160
        change <|-- addition.
×
161
        change <|-- deletion.
×
162
        change <|-- lineOfCode.
×
163
        mergeRequest --|> #TNamedEntity
×
UNCOV
164
]
×
165

166
{ #category : 'definition' }
167
GLHMetamodelGenerator >> defineProperties [
×
168

×
169
        super defineProperties.
×
170
        "Group properties"
×
171
        group property: #id type: #Number.
×
172
        group property: #web_url type: #String.
×
173
        group property: #description type: #String.
×
174
        group property: #visibility type: #String.
×
175
        group property: #avatar_url type: #String.
×
176

×
177
        "Project properties"
×
178
        project property: #id type: #Number.
×
179
        project property: #topics type: #Object.
×
180
        project property: #archived type: #Boolean.
×
181
        project property: #archived type: #Boolean.
×
182
        project property: #description type: #String.
×
183
        project property: #readme_url type: #String.
×
184
        project property: #avatar_url type: #String.
×
185
        project property: #web_url type: #String.
×
186
        project property: #creator_id type: #Number.
×
187

×
188
        "Pipelines properties"
×
189
        (pipeline property: #status type: #String) comment:
×
190
                '#success or #failure'.
×
191
        (pipeline property: #runDate type: #Object) comment:
×
192
                'Date this pipeline was run'.
×
193
        (pipeline property: #id type: #String) comment:
×
194
                'The id of the pipeline'.
×
195

×
196

×
197
        self userProperties.
×
198
        self branchProperties.
×
199
        self fileProperties.
×
200
        self commitProperties.
×
201
        self diffProperties.
×
202
        self jobProperties.
×
203
        self changeProperties.
×
204
        self mergeRequestProperties.
×
205
        self diffRangeProperties
×
UNCOV
206
]
×
207

208
{ #category : 'definition' }
209
GLHMetamodelGenerator >> defineRelations [
×
210

×
211
        super defineRelations.
×
212
        (group property: #projects) <>-* (project property: #group).
×
213
        (group property: #subGroups) <>-* (group property: #group).
×
214
        (project property: #pipelines) <>-* (pipeline property: #project).
×
215
        (project property: #creator) *- (user property: #createdProjects).
×
216
        (project property: #contributors)
×
217
        *-* (user property: #contributedProjects).
×
218
        (project property: #repository) <>- (repository property: #project).
×
219
        (repository property: #branches) <>-* (branch property: #repository).
×
220
        (branch property: #files) <>-* (file property: #branch).
×
221
        (fileDirectory property: #files)
×
222
        <>-* (file property: #directoryOwner).
×
223
        (repository property: #commits) <>-* (commit property: #repository).
×
224
        (branch property: #commits) <>-* (commit property: #branch).
×
225

×
226
        (commit property: #diffs) <>-* (diff property: #commit).
×
227
        (user property: #commits) <>-* (commit property: #commitCreator).
×
228
        (commit property: #parentCommits)
×
229
        *-* (commit property: #childCommits).
×
230
        (commit property: #jobs) <>-* (job property: #commit).
×
231
        (pipeline property: #jobs) <>-* (job property: #pipeline).
×
232
        (user property: #jobs) <>-* (job property: #user).
×
233

×
234
        "MERGE REQUEST RELATIONS"
×
235
        (mergeRequest property: #author)
×
236
        *- (user property: #createdMergeRequests).
×
237

×
238
        (mergeRequest property: #approved_by)
×
239
        *-* (user property: #approcheMergeRequests).
×
240

×
241
        (mergeRequest property: #merge_user) *- (user property: #usedMerges).
×
242

×
243
        (mergeRequest property: #closed_by)
×
244
        *- (user property: #closedMergeRequests).
×
245

×
246
        (mergeRequest property: #merged_by)
×
247
        *- (user property: #mergerOfMergeRequests).
×
248

×
249
        (mergeRequest property: #assignees)
×
250
        *-* (user property: #assignedMergeRequests).
×
251

×
252
        (mergeRequest property: #assignee)
×
253
        *- (user property: #currentlyAssignedMergeRequest).
×
254

×
255
        (mergeRequest property: #reviewers)
×
256
        *-* (user property: #reviewedMergeResquest).
×
257

×
258
        (mergeRequest property: #pipeline)
×
259
        - (pipeline property: #mergeResquest).
×
260

×
261
        (mergeRequest property: #mergedCommit)
×
262
        - (commit property: #commitedMergeRequest).
×
263

×
264
        (mergeRequest property: #mergeRequestCommit)
×
265
        - (commit property: #commitedMergeRequest).
×
266

×
267
        (mergeRequest property: #squashCommit)
×
268
        - (commit property: #squashedMergeRequest).
×
269

×
270
        (mergeRequest property: #diffs) -* (diff property: #mergeRequest).
×
271

×
272
        (project property: #mergeRequests)
×
273
        <>-* (mergeRequest property: #project).
×
274

×
275
        "DIFF"
×
276
        (diff property: #file) <>-* (file property: #diffs).
×
277
        (diff property: #diffRanges) <>-* (diffRange property: #diff).
×
278
        (diffRange property: #changes) -* (change property: #diffRange)
×
UNCOV
279
]
×
280

281
{ #category : 'definition' }
282
GLHMetamodelGenerator >> diffProperties [
×
283

×
284
        (diff property: #diffString type: #String) comment:
×
285
                'The string presenting the diff. It should follow the [Detailed-Unified](https://www.gnu.org/software/diffutils/manual/html_node/Detailed-Unified.html) format'.
×
286
                
×
287
        (diff property: #new_path type: #String) comment:
×
288
                'The path to the file in the resulted repository commitish'.
×
289
                
×
290
        (diff property: #old_path type: #String) comment:
×
291
                'The path to the file in the origin repository commitish'.
×
292
                
×
293
        (diff property: #new_file type: #Boolean defaultValue: false)
×
294
                comment: 'Is the file of the diff is a new file'.
×
295
                
×
296
        (diff property: #renamed_file type: #Boolean defaultValue: false)
×
297
                comment:
×
298
                'Is the file of the diff has been renamed (see old_path/new_path) file'.
×
299
                
×
300
        (diff property: #deleted_file type: #Boolean defaultValue: false)
×
301
                comment: 'Is the file of the diff has been removed'
×
UNCOV
302
]
×
303

304
{ #category : 'definition' }
305
GLHMetamodelGenerator >> diffRangeProperties [
×
306
"must parse the range. 
×
307
        originalLineRange = '-120,5' --> change starts at line #120
×
308
        5 is the number of lines in the original file affected by the change"
×
309
        diffRange property: #originalLineRange type: #String.
×
310
        diffRange property: #newLineRange type: #String.
×
311
        diffRange property: #lineOfCode type: #String
×
312
]
×
NEW
313

×
314
{ #category : 'definition' }
×
315
GLHMetamodelGenerator >> fileProperties [
×
316

×
317
        file property: #name type: #String
×
318
]
×
NEW
319

×
320
{ #category : 'definition' }
×
321
GLHMetamodelGenerator >> jobProperties [
×
322

×
323
        job property: #id type: #Number.
×
324
        job property: #allow_failure type: #Boolean.
×
325
        job property: #web_url type: #String.
×
326
        job property: #duration type: #Object.
×
327
        job property: #allow_failure type: #Boolean
×
328
]
×
NEW
329

×
330
{ #category : 'definition' }
×
331
GLHMetamodelGenerator >> mergeRequestProperties [
×
332

×
333
        mergeRequest property: #id type: #Number.
×
334
        mergeRequest property: #iid type: #Number.
×
335
        mergeRequest property: #project_id type: #Number.
×
336
        mergeRequest property: #title type: #String.
×
337
        mergeRequest property: #description type: #String.
×
338
        mergeRequest property: #state type: #String.
×
339
        mergeRequest property: #created_at type: #Object.
×
340
        mergeRequest property: #updated_at type: #Object.
×
341
        mergeRequest property: #merged_at type: #Object.
×
342
        mergeRequest property: #closed_at type: #Object.
×
343
        mergeRequest property: #target_branch type: #String.
×
344
        mergeRequest property: #source_branch type: #String.
×
345
        mergeRequest property: #user_notes_count type: #Number.
×
346
        mergeRequest property: #upvotes type: #Number.
×
347
        mergeRequest property: #downvotes type: #Number.
×
348
        mergeRequest property: #source_project_id type: #Number.
×
349
        mergeRequest property: #target_project_id type: #Number.
×
350
        mergeRequest property: #labels type: #Object.
×
351
        mergeRequest property: #draft type: #Boolean.
×
352
        mergeRequest property: #work_in_progress type: #Boolean.
×
353
        mergeRequest property: #milestone type: #String.
×
354
        mergeRequest property: #merge_when_pipeline_succeeds type: #Boolean.
×
355
        mergeRequest property: #merge_status type: #String.
×
356
        mergeRequest property: #detailed_merge_status type: #String.
×
357
        mergeRequest property: #sha type: #String.
×
358
        mergeRequest property: #merge_commit_sha type: #String.
×
359
        mergeRequest property: #squash_commit_sha type: #String.
×
360
        mergeRequest property: #discussion_locked type: #String.
×
361
        mergeRequest property: #should_remove_source_branch type: #Boolean.
×
362
        mergeRequest property: #force_remove_source_branch type: #Boolean.
×
363
        mergeRequest property: #reference type: #String.
×
364
        mergeRequest property: #references_short type: #String.
×
365
        mergeRequest property: #references_relative type: #String.
×
366
        mergeRequest property: #references_full type: #String.
×
367
        mergeRequest property: #web_url type: #String.
×
368
        mergeRequest property: #time_stats_time_estimate type: #Number.
×
369
        mergeRequest property: #time_stats_total_time_spent type: #Number.
×
370
        mergeRequest property: #time_stats_human_time_estimate type: #String.
×
371
        mergeRequest
×
372
                property: #time_stats_human_total_time_spent
×
373
                type: #String.
×
374
        mergeRequest property: #squash type: #Boolean.
×
375
        mergeRequest property: #squash_on_merge type: #Boolean.
×
376
        mergeRequest property: #task_completion_status_count type: #Number.
×
377
        mergeRequest
×
378
                property: #task_completion_status_completed_count
×
379
                type: #Number.
×
380
        mergeRequest property: #has_conflicts type: #Boolean.
×
381
        mergeRequest property: #blocking_discussions_resolved type: #Boolean.
×
382
        mergeRequest property: #subscribed type: #Boolean.
×
383
        mergeRequest property: #changes_count type: #String.
×
384
        mergeRequest property: #latest_build_started_at type: #String.
×
385
        mergeRequest property: #latest_build_finished_at type: #String.
×
386
        mergeRequest property: #first_deployed_to_production_at type: #String.
×
387
        mergeRequest property: #approved type: #Boolean.
×
388

×
389
        "see https://github.com/moosetechnology/GitProjectHealth/issues/88"
×
390
        mergeRequest property: #commits type: #Object
×
391
]
×
NEW
392

×
393
{ #category : 'definition' }
×
NEW
394
GLHMetamodelGenerator >> userProperties [
×
395
        user property: #id type: #Number.
×
396
        user property: #username type: #String.
×
397
        user property: #name type: #String.
×
398
        user property: #state type: #String.
×
399
        user property: #avatar_url type: #String.
×
400
        user property: #web_url type: #String.
×
401
        user property: #created_at type: #String.
×
402
        user property: #bio type: #String.
×
403
        user property: #location type: #String.
×
404
        user property: #public_email type: #String.
×
NEW
405
        user property: #skype type: #String.
×
NEW
406
        user property: #linkedin type: #String.
×
407
        user property: #twitter type: #String.
×
408
        user property: #website_url type: #String.
×
409
        user property: #organization type: #String.
×
410
        user property: #job_title type: #String.
×
411
        user property: #pronouns type: #String.
×
412
        user property: #bot type: #String.
×
413
        user property: #work_information type: #String.
×
414
        user property: #followers type: #String.
×
415
        user property: #following type: #String
×
416
]
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc