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

moosetechnology / GitProjectHealth / 15138087322

20 May 2025 12:54PM UTC coverage: 72.626% (-0.6%) from 73.222%
15138087322

Pull #196

github

web-flow
Merge 21b0419a5 into 118855527
Pull Request #196: Pipeline 2

785 of 1734 new or added lines in 15 files covered. (45.27%)

199 existing lines in 4 files now uncovered.

15977 of 21999 relevant lines covered (72.63%)

0.73 hits per line

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

15.63
/src/GitLabHealth-Model/GLHUser.class.st
1
"
2
A GitLab User
3

4
## Relations
5
======================
6

7
### Children
8
| Relation | Origin | Opposite | Type | Comment |
9
|---|
10
| `commits` | `GLHUser` | `commitCreator` | `GLHCommit` | |
11
| `jobs` | `GLHUser` | `user` | `GLHJob` | |
12

13
### Other
14
| Relation | Origin | Opposite | Type | Comment |
15
|---|
16
| `approcheMergeRequests` | `GLHUser` | `approved_by` | `GLHMergeRequest` | |
17
| `assignedMergeRequests` | `GLHUser` | `assignees` | `GLHMergeRequest` | |
18
| `closedMergeRequests` | `GLHUser` | `closed_by` | `GLHMergeRequest` | |
19
| `contributedProjects` | `GLHUser` | `contributors` | `GLHProject` | |
20
| `createdMergeRequests` | `GLHUser` | `author` | `GLHMergeRequest` | |
21
| `createdProjects` | `GLHUser` | `creator` | `GLHProject` | |
22
| `currentlyAssignedMergeRequest` | `GLHUser` | `assignee` | `GLHMergeRequest` | |
23
| `mergerOfMergeRequests` | `GLHUser` | `merged_by` | `GLHMergeRequest` | |
24
| `reviewedMergeResquest` | `GLHUser` | `reviewers` | `GLHMergeRequest` | |
25
| `usedMerges` | `GLHUser` | `merge_user` | `GLHMergeRequest` | |
26

27

28
## Properties
29
======================
30

31
| Name | Type | Default value | Comment |
32
|---|
33
| `avatar_url` | `String` | nil | |
34
| `bio` | `String` | nil | |
35
| `bot` | `String` | nil | |
36
| `commit_email` | `String` | nil | |
37
| `created_at` | `String` | nil | |
38
| `email` | `String` | nil | |
39
| `followers` | `String` | nil | |
40
| `following` | `String` | nil | |
41
| `id` | `Number` | nil | |
42
| `job_title` | `String` | nil | |
43
| `linkedin` | `String` | nil | |
44
| `location` | `String` | nil | |
45
| `name` | `String` | nil | Basic name of the entity, not full reference.|
46
| `name` | `String` | nil | |
47
| `organization` | `String` | nil | |
48
| `pronouns` | `String` | nil | |
49
| `public_email` | `String` | nil | |
50
| `skype` | `String` | nil | |
51
| `state` | `String` | nil | |
52
| `twitter` | `String` | nil | |
53
| `username` | `String` | nil | |
54
| `web_url` | `String` | nil | |
55
| `website_url` | `String` | nil | |
56
| `work_information` | `String` | nil | |
57

58
"
59
Class {
60
        #name : #GLHUser,
61
        #superclass : #GLHEntity,
62
        #traits : 'FamixTNamedEntity',
63
        #classTraits : 'FamixTNamedEntity classTrait',
64
        #instVars : [
65
                '#id => FMProperty',
66
                '#username => FMProperty',
67
                '#name => FMProperty',
68
                '#state => FMProperty',
69
                '#avatar_url => FMProperty',
70
                '#web_url => FMProperty',
71
                '#created_at => FMProperty',
72
                '#bio => FMProperty',
73
                '#location => FMProperty',
74
                '#public_email => FMProperty',
75
                '#email => FMProperty',
76
                '#commit_email => FMProperty',
77
                '#skype => FMProperty',
78
                '#linkedin => FMProperty',
79
                '#twitter => FMProperty',
80
                '#website_url => FMProperty',
81
                '#organization => FMProperty',
82
                '#job_title => FMProperty',
83
                '#pronouns => FMProperty',
84
                '#bot => FMProperty',
85
                '#work_information => FMProperty',
86
                '#followers => FMProperty',
87
                '#following => FMProperty',
88
                '#createdProjects => FMMany type: #GLHProject opposite: #creator',
89
                '#contributedProjects => FMMany type: #GLHProject opposite: #contributors',
90
                '#commits => FMMany type: #GLHCommit opposite: #commitCreator',
91
                '#jobs => FMMany type: #GLHJob opposite: #user',
92
                '#createdMergeRequests => FMMany type: #GLHMergeRequest opposite: #author',
93
                '#approcheMergeRequests => FMMany type: #GLHMergeRequest opposite: #approved_by',
94
                '#usedMerges => FMMany type: #GLHMergeRequest opposite: #merge_user',
95
                '#closedMergeRequests => FMMany type: #GLHMergeRequest opposite: #closed_by',
96
                '#mergerOfMergeRequests => FMMany type: #GLHMergeRequest opposite: #merged_by',
97
                '#assignedMergeRequests => FMMany type: #GLHMergeRequest opposite: #assignees',
98
                '#currentlyAssignedMergeRequest => FMMany type: #GLHMergeRequest opposite: #assignee',
99
                '#reviewedMergeResquest => FMMany type: #GLHMergeRequest opposite: #reviewers'
100
        ],
101
        #category : #'GitLabHealth-Model-Entities'
102
}
103

104
{ #category : #meta }
UNCOV
105
GLHUser class >> annotation [
×
UNCOV
106

×
107
        <FMClass: #User super: #GLHEntity>
×
108
        <package: #'GitLabHealth-Model'>
×
109
        <generated>
×
110
        ^ self
×
111
]
×
112

113
{ #category : #adding }
UNCOV
114
GLHUser >> addApprocheMergeRequest: anObject [
×
UNCOV
115
        <generated>
×
116
        ^ self approcheMergeRequests add: anObject
×
117
]
×
118

119
{ #category : #adding }
UNCOV
120
GLHUser >> addAssignedMergeRequest: anObject [
×
UNCOV
121
        <generated>
×
122
        ^ self assignedMergeRequests add: anObject
×
123
]
×
124

125
{ #category : #adding }
UNCOV
126
GLHUser >> addClosedMergeRequest: anObject [
×
UNCOV
127
        <generated>
×
128
        ^ self closedMergeRequests add: anObject
×
129
]
×
130

131
{ #category : #adding }
UNCOV
132
GLHUser >> addCommit: anObject [
×
UNCOV
133
        <generated>
×
134
        ^ self commits add: anObject
×
135
]
×
136

137
{ #category : #adding }
UNCOV
138
GLHUser >> addContributedProject: anObject [
×
UNCOV
139
        <generated>
×
140
        ^ self contributedProjects add: anObject
×
141
]
×
142

143
{ #category : #adding }
UNCOV
144
GLHUser >> addCreatedMergeRequest: anObject [
×
UNCOV
145
        <generated>
×
146
        ^ self createdMergeRequests add: anObject
×
147
]
×
148

149
{ #category : #adding }
150
GLHUser >> addCreatedProject: anObject [
1✔
151
        <generated>
1✔
152
        ^ self createdProjects add: anObject
1✔
153
]
1✔
154

155
{ #category : #adding }
UNCOV
156
GLHUser >> addCurrentlyAssignedMergeRequest: anObject [
×
UNCOV
157
        <generated>
×
158
        ^ self currentlyAssignedMergeRequest add: anObject
×
159
]
×
160

161
{ #category : #adding }
UNCOV
162
GLHUser >> addJob: anObject [
×
UNCOV
163
        <generated>
×
164
        ^ self jobs add: anObject
×
165
]
×
166

167
{ #category : #adding }
UNCOV
168
GLHUser >> addMergerOfMergeRequest: anObject [
×
NEW
169
        <generated>
×
NEW
170
        ^ self mergerOfMergeRequests add: anObject
×
NEW
171
]
×
172

173
{ #category : #adding }
NEW
174
GLHUser >> addReviewedMergeResquest: anObject [
×
175
        <generated>
×
176
        ^ self reviewedMergeResquest add: anObject
×
177
]
×
178

179
{ #category : #adding }
UNCOV
180
GLHUser >> addUsedMerge: anObject [
×
UNCOV
181
        <generated>
×
182
        ^ self usedMerges add: anObject
×
183
]
×
184

185
{ #category : #accessing }
UNCOV
186
GLHUser >> approcheMergeRequests [
×
UNCOV
187
        "Relation named: #approcheMergeRequests type: #GLHMergeRequest opposite: #approved_by"
×
188

×
189
        <generated>
×
190
        ^ approcheMergeRequests
×
191
]
×
192

193
{ #category : #accessing }
194
GLHUser >> approcheMergeRequests: anObject [
×
195

×
196
        <generated>
×
197
        approcheMergeRequests value: anObject
×
198
]
×
199

200
{ #category : #accessing }
UNCOV
201
GLHUser >> assignedMergeRequests [
×
202
        "Relation named: #assignedMergeRequests type: #GLHMergeRequest opposite: #assignees"
×
203

×
204
        <generated>
×
205
        ^ assignedMergeRequests
×
206
]
×
207

208
{ #category : #accessing }
209
GLHUser >> assignedMergeRequests: anObject [
×
210

×
211
        <generated>
×
212
        assignedMergeRequests value: anObject
×
213
]
×
214

215
{ #category : #accessing }
UNCOV
216
GLHUser >> avatar_url [
×
217

×
218
        <FMProperty: #avatar_url type: #String>
×
219
        <generated>
×
220
        ^ avatar_url
×
221
]
×
222

223
{ #category : #accessing }
224
GLHUser >> avatar_url: anObject [
×
225
        <generated>
×
226
        avatar_url := anObject
×
227
]
×
228

229
{ #category : #accessing }
UNCOV
230
GLHUser >> bio [
×
UNCOV
231

×
232
        <FMProperty: #bio type: #String>
×
233
        <generated>
×
234
        ^ bio
×
235
]
×
236

237
{ #category : #accessing }
238
GLHUser >> bio: anObject [
×
239
        <generated>
×
240
        bio := anObject
×
241
]
×
242

243
{ #category : #accessing }
UNCOV
244
GLHUser >> bot [
×
UNCOV
245

×
246
        <FMProperty: #bot type: #String>
×
247
        <generated>
×
248
        ^ bot
×
249
]
×
250

251
{ #category : #accessing }
252
GLHUser >> bot: anObject [
×
253
        <generated>
×
254
        bot := anObject
×
255
]
×
256

257
{ #category : #accessing }
UNCOV
258
GLHUser >> closedMergeRequests [
×
UNCOV
259
        "Relation named: #closedMergeRequests type: #GLHMergeRequest opposite: #closed_by"
×
260

×
261
        <generated>
×
262
        <derived>
×
263
        ^ closedMergeRequests
×
UNCOV
264
]
×
265

266
{ #category : #accessing }
267
GLHUser >> closedMergeRequests: anObject [
×
268

×
269
        <generated>
×
270
        closedMergeRequests value: anObject
×
271
]
×
272

273
{ #category : #accessing }
UNCOV
274
GLHUser >> commit_email [
×
275

×
276
        <FMProperty: #commit_email type: #String>
×
277
        <generated>
×
278
        ^ commit_email
×
279
]
×
280

281
{ #category : #accessing }
282
GLHUser >> commit_email: anObject [
×
283
        <generated>
×
284
        commit_email := anObject
×
285
]
×
286

287
{ #category : #accessing }
UNCOV
288
GLHUser >> commits [
×
UNCOV
289
        "Relation named: #commits type: #GLHCommit opposite: #commitCreator"
×
290

×
291
        <generated>
×
292
        <derived>
×
293
        ^ commits
×
UNCOV
294
]
×
295

296
{ #category : #accessing }
297
GLHUser >> commits: anObject [
×
298

×
299
        <generated>
×
300
        commits value: anObject
×
301
]
×
302

303
{ #category : #navigation }
UNCOV
304
GLHUser >> commitsGroup [
×
305
        <generated>
×
306
        <navigation: 'Commits'>
×
307
        ^ MooseSpecializedGroup withAll: self commits asSet
×
308
]
×
309

310
{ #category : #accessing }
311
GLHUser >> contributedProjects [
1✔
312
        "Relation named: #contributedProjects type: #GLHProject opposite: #contributors"
1✔
313

1✔
314
        <generated>
1✔
315
        ^ contributedProjects
1✔
316
]
1✔
317

318
{ #category : #accessing }
319
GLHUser >> contributedProjects: anObject [
1✔
320

1✔
321
        <generated>
1✔
322
        contributedProjects value: anObject
1✔
323
]
1✔
324

325
{ #category : #accessing }
UNCOV
326
GLHUser >> createdMergeRequests [
×
UNCOV
327
        "Relation named: #createdMergeRequests type: #GLHMergeRequest opposite: #author"
×
UNCOV
328

×
UNCOV
329
        <generated>
×
UNCOV
330
        <derived>
×
UNCOV
331
        ^ createdMergeRequests
×
UNCOV
332
]
×
333

334
{ #category : #accessing }
335
GLHUser >> createdMergeRequests: anObject [
×
336

×
337
        <generated>
×
338
        createdMergeRequests value: anObject
×
339
]
×
340

341
{ #category : #accessing }
342
GLHUser >> createdProjects [
1✔
343
        "Relation named: #createdProjects type: #GLHProject opposite: #creator"
1✔
344

1✔
345
        <generated>
1✔
346
        <derived>
1✔
347
        ^ createdProjects
1✔
348
]
1✔
349

350
{ #category : #accessing }
UNCOV
351
GLHUser >> createdProjects: anObject [
×
UNCOV
352

×
UNCOV
353
        <generated>
×
UNCOV
354
        createdProjects value: anObject
×
UNCOV
355
]
×
356

357
{ #category : #accessing }
UNCOV
358
GLHUser >> created_at [
×
359

×
360
        <FMProperty: #created_at type: #String>
×
361
        <generated>
×
362
        ^ created_at
×
363
]
×
364

365
{ #category : #accessing }
366
GLHUser >> created_at: anObject [
×
367
        <generated>
×
368
        created_at := anObject
×
369
]
×
370

371
{ #category : #accessing }
UNCOV
372
GLHUser >> currentlyAssignedMergeRequest [
×
UNCOV
373
        "Relation named: #currentlyAssignedMergeRequest type: #GLHMergeRequest opposite: #assignee"
×
374

×
375
        <generated>
×
376
        <derived>
×
377
        ^ currentlyAssignedMergeRequest
×
UNCOV
378
]
×
379

380
{ #category : #accessing }
381
GLHUser >> currentlyAssignedMergeRequest: anObject [
×
382

×
383
        <generated>
×
384
        currentlyAssignedMergeRequest value: anObject
×
385
]
×
386

387
{ #category : #accessing }
388
GLHUser >> email [
1✔
389

1✔
390
        <FMProperty: #email type: #String>
1✔
391
        <generated>
1✔
392
        ^ email
1✔
393
]
1✔
394

395
{ #category : #accessing }
UNCOV
396
GLHUser >> email: anObject [
×
UNCOV
397
        <generated>
×
UNCOV
398
        email := anObject
×
UNCOV
399
]
×
400

401
{ #category : #accessing }
UNCOV
402
GLHUser >> followers [
×
UNCOV
403

×
404
        <FMProperty: #followers type: #String>
×
405
        <generated>
×
406
        ^ followers
×
407
]
×
408

409
{ #category : #accessing }
410
GLHUser >> followers: anObject [
×
411
        <generated>
×
412
        followers := anObject
×
413
]
×
414

415
{ #category : #accessing }
UNCOV
416
GLHUser >> following [
×
UNCOV
417

×
418
        <FMProperty: #following type: #String>
×
419
        <generated>
×
420
        ^ following
×
421
]
×
422

423
{ #category : #accessing }
424
GLHUser >> following: anObject [
×
425
        <generated>
×
426
        following := anObject
×
427
]
×
428

429
{ #category : #accessing }
430
GLHUser >> id [
1✔
431

1✔
432
        <FMProperty: #id type: #Number>
1✔
433
        <generated>
1✔
434
        ^ id
1✔
435
]
1✔
436

437
{ #category : #accessing }
438
GLHUser >> id: anObject [
1✔
439
        <generated>
1✔
440
        id := anObject
1✔
441
]
1✔
442

443
{ #category : #accessing }
UNCOV
444
GLHUser >> job_title [
×
UNCOV
445

×
UNCOV
446
        <FMProperty: #job_title type: #String>
×
UNCOV
447
        <generated>
×
UNCOV
448
        ^ job_title
×
UNCOV
449
]
×
450

451
{ #category : #accessing }
452
GLHUser >> job_title: anObject [
×
453
        <generated>
×
454
        job_title := anObject
×
455
]
×
456

457
{ #category : #accessing }
UNCOV
458
GLHUser >> jobs [
×
UNCOV
459
        "Relation named: #jobs type: #GLHJob opposite: #user"
×
460

×
461
        <generated>
×
462
        <derived>
×
463
        ^ jobs
×
UNCOV
464
]
×
465

466
{ #category : #accessing }
467
GLHUser >> jobs: anObject [
×
468

×
469
        <generated>
×
470
        jobs value: anObject
×
471
]
×
472

473
{ #category : #navigation }
UNCOV
474
GLHUser >> jobsGroup [
×
475
        <generated>
×
476
        <navigation: 'Jobs'>
×
477
        ^ MooseSpecializedGroup withAll: self jobs asSet
×
478
]
×
479

480
{ #category : #accessing }
UNCOV
481
GLHUser >> linkedin [
×
482

×
483
        <FMProperty: #linkedin type: #String>
×
484
        <generated>
×
485
        ^ linkedin
×
486
]
×
487

488
{ #category : #accessing }
NEW
489
GLHUser >> linkedin: anObject [
×
NEW
490
        <generated>
×
NEW
491
        linkedin := anObject
×
NEW
492
]
×
493

494
{ #category : #accessing }
NEW
495
GLHUser >> location [
×
NEW
496

×
NEW
497
        <FMProperty: #location type: #String>
×
NEW
498
        <generated>
×
NEW
499
        ^ location
×
NEW
500
]
×
501

502
{ #category : #accessing }
NEW
503
GLHUser >> location: anObject [
×
504
        <generated>
×
505
        location := anObject
×
506
]
×
507

508
{ #category : #accessing }
509
GLHUser >> mergerOfMergeRequests [
×
510
        "Relation named: #mergerOfMergeRequests type: #GLHMergeRequest opposite: #merged_by"
×
UNCOV
511

×
UNCOV
512
        <generated>
×
513
        <derived>
×
514
        ^ mergerOfMergeRequests
×
515
]
×
516

517
{ #category : #accessing }
UNCOV
518
GLHUser >> mergerOfMergeRequests: anObject [
×
519

×
520
        <generated>
×
521
        mergerOfMergeRequests value: anObject
×
522
]
×
523

524
{ #category : #accessing }
525
GLHUser >> name [
1✔
526

1✔
527
        <FMProperty: #name type: #String>
1✔
528
        <generated>
1✔
529
        ^ name
1✔
530
]
1✔
531

532
{ #category : #accessing }
533
GLHUser >> name: anObject [
1✔
534
        <generated>
1✔
535
        name := anObject
1✔
536
]
1✔
537

538
{ #category : #accessing }
539
GLHUser >> organization [
×
UNCOV
540

×
UNCOV
541
        <FMProperty: #organization type: #String>
×
542
        <generated>
×
543
        ^ organization
×
544
]
×
545

546
{ #category : #accessing }
UNCOV
547
GLHUser >> organization: anObject [
×
UNCOV
548
        <generated>
×
UNCOV
549
        organization := anObject
×
UNCOV
550
]
×
551

552
{ #category : #accessing }
UNCOV
553
GLHUser >> pronouns [
×
UNCOV
554

×
UNCOV
555
        <FMProperty: #pronouns type: #String>
×
UNCOV
556
        <generated>
×
UNCOV
557
        ^ pronouns
×
UNCOV
558
]
×
559

560
{ #category : #accessing }
UNCOV
561
GLHUser >> pronouns: anObject [
×
UNCOV
562
        <generated>
×
563
        pronouns := anObject
×
564
]
×
565

566
{ #category : #accessing }
567
GLHUser >> public_email [
1✔
568

1✔
569
        <FMProperty: #public_email type: #String>
1✔
570
        <generated>
1✔
571
        ^ public_email
1✔
572
]
1✔
573

574
{ #category : #accessing }
575
GLHUser >> public_email: anObject [
1✔
576
        <generated>
1✔
577
        public_email := anObject
1✔
578
]
1✔
579

580
{ #category : #accessing }
581
GLHUser >> reviewedMergeResquest [
×
582
        "Relation named: #reviewedMergeResquest type: #GLHMergeRequest opposite: #reviewers"
×
UNCOV
583

×
UNCOV
584
        <generated>
×
585
        ^ reviewedMergeResquest
×
586
]
×
587

588
{ #category : #accessing }
UNCOV
589
GLHUser >> reviewedMergeResquest: anObject [
×
UNCOV
590

×
UNCOV
591
        <generated>
×
UNCOV
592
        reviewedMergeResquest value: anObject
×
UNCOV
593
]
×
594

595
{ #category : #accessing }
UNCOV
596
GLHUser >> skype [
×
UNCOV
597

×
UNCOV
598
        <FMProperty: #skype type: #String>
×
UNCOV
599
        <generated>
×
UNCOV
600
        ^ skype
×
UNCOV
601
]
×
602

603
{ #category : #accessing }
UNCOV
604
GLHUser >> skype: anObject [
×
605
        <generated>
×
606
        skype := anObject
×
607
]
×
608

609
{ #category : #accessing }
610
GLHUser >> state [
×
UNCOV
611

×
UNCOV
612
        <FMProperty: #state type: #String>
×
613
        <generated>
×
614
        ^ state
×
615
]
×
616

617
{ #category : #accessing }
UNCOV
618
GLHUser >> state: anObject [
×
UNCOV
619
        <generated>
×
620
        state := anObject
×
621
]
×
622

623
{ #category : #accessing }
624
GLHUser >> twitter [
×
625

×
UNCOV
626
        <FMProperty: #twitter type: #String>
×
UNCOV
627
        <generated>
×
628
        ^ twitter
×
629
]
×
630

631
{ #category : #accessing }
UNCOV
632
GLHUser >> twitter: anObject [
×
UNCOV
633
        <generated>
×
634
        twitter := anObject
×
635
]
×
636

637
{ #category : #accessing }
638
GLHUser >> usedMerges [
×
639
        "Relation named: #usedMerges type: #GLHMergeRequest opposite: #merge_user"
×
UNCOV
640

×
UNCOV
641
        <generated>
×
642
        <derived>
×
643
        ^ usedMerges
×
644
]
×
645

646
{ #category : #accessing }
UNCOV
647
GLHUser >> usedMerges: anObject [
×
648

×
649
        <generated>
×
650
        usedMerges value: anObject
×
651
]
×
652

653
{ #category : #accessing }
654
GLHUser >> username [
1✔
655

1✔
656
        <FMProperty: #username type: #String>
1✔
657
        <generated>
1✔
658
        ^ username
1✔
659
]
1✔
660

661
{ #category : #accessing }
662
GLHUser >> username: anObject [
1✔
663
        <generated>
1✔
664
        username := anObject
1✔
665
]
1✔
666

667
{ #category : #accessing }
668
GLHUser >> web_url [
×
UNCOV
669

×
UNCOV
670
        <FMProperty: #web_url type: #String>
×
671
        <generated>
×
672
        ^ web_url
×
673
]
×
674

675
{ #category : #accessing }
UNCOV
676
GLHUser >> web_url: anObject [
×
UNCOV
677
        <generated>
×
UNCOV
678
        web_url := anObject
×
UNCOV
679
]
×
680

681
{ #category : #accessing }
UNCOV
682
GLHUser >> website_url [
×
UNCOV
683

×
UNCOV
684
        <FMProperty: #website_url type: #String>
×
UNCOV
685
        <generated>
×
UNCOV
686
        ^ website_url
×
UNCOV
687
]
×
688

689
{ #category : #accessing }
UNCOV
690
GLHUser >> website_url: anObject [
×
UNCOV
691
        <generated>
×
692
        website_url := anObject
×
693
]
×
694

695
{ #category : #accessing }
696
GLHUser >> work_information [
×
697

×
UNCOV
698
        <FMProperty: #work_information type: #String>
×
UNCOV
699
        <generated>
×
700
        ^ work_information
×
701
]
×
702

703
{ #category : #accessing }
UNCOV
704
GLHUser >> work_information: anObject [
×
UNCOV
705
        <generated>
×
706
        work_information := anObject
×
707
]
×
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

© 2025 Coveralls, Inc