Skip to content

Commit 40f3ca3

Browse files
a7medevHeshamMegid
authored andcommitted
[MOB-12122] Integrate Danger Coverage Plugin (#357)
* Migrate Danger to TypeScript * Integrate Danger coverage plugin * Exclude generated files from coverage * Set Yarn network concurrency to 1 * Remove LCOV installation * Add TypeScript * Add coverage threshold
1 parent cbec55d commit 40f3ca3

File tree

5 files changed

+90
-72
lines changed

5 files changed

+90
-72
lines changed

.circleci/config.yml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ jobs:
8080
- checkout
8181
- node/install-packages:
8282
pkg-manager: yarn
83+
override-ci-command: yarn install --frozen-lockfile --network-concurrency 1
84+
- attach_workspace:
85+
at: coverage
8386
- run:
8487
name: Run Danger
8588
command: yarn danger ci
@@ -96,6 +99,13 @@ jobs:
9699
- run: sh ./scripts/pigeon.sh
97100
- run: flutter pub run build_runner build --delete-conflicting-outputs
98101
- run: flutter test --coverage
102+
- run:
103+
working_directory: coverage
104+
command: lcov --remove lcov.info '*.g.dart' '*.mocks.dart' -o lcov.info
105+
- persist_to_workspace:
106+
root: coverage
107+
paths:
108+
- lcov.info
99109

100110
test_android:
101111
executor:
@@ -234,7 +244,9 @@ workflows:
234244
version: 2
235245
build-test-and-approval-deploy:
236246
jobs:
237-
- danger
247+
- danger:
248+
requires:
249+
- test_flutter-stable
238250
- test_flutter:
239251
name: test_flutter-stable
240252
version: stable

dangerfile.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { danger, fail, schedule, warn } from 'danger';
2+
import collectCoverage, { ReportType } from '@instabug/danger-plugin-coverage';
23

34
const hasSourceChanges = danger.git.modified_files.some((file) =>
45
file.startsWith('lib/')
@@ -27,3 +28,10 @@ async function hasDescription() {
2728
}
2829

2930
schedule(hasDescription());
31+
32+
collectCoverage({
33+
label: 'Dart',
34+
type: ReportType.LCOV,
35+
filePath: 'coverage/lcov.info',
36+
threshold: 80,
37+
});

example/pubspec.lock

Lines changed: 43 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -5,82 +5,72 @@ packages:
55
dependency: transitive
66
description:
77
name: archive
8-
sha256: "80e5141fafcb3361653ce308776cfd7d45e6e9fbb429e14eec571382c0c5fecb"
9-
url: "https://pub.dev"
8+
url: "https://pub.dartlang.org"
109
source: hosted
11-
version: "3.3.2"
10+
version: "3.3.0"
1211
async:
1312
dependency: transitive
1413
description:
1514
name: async
16-
sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0
17-
url: "https://pub.dev"
15+
url: "https://pub.dartlang.org"
1816
source: hosted
19-
version: "2.10.0"
17+
version: "2.9.0"
2018
boolean_selector:
2119
dependency: transitive
2220
description:
2321
name: boolean_selector
24-
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
25-
url: "https://pub.dev"
22+
url: "https://pub.dartlang.org"
2623
source: hosted
27-
version: "2.1.1"
24+
version: "2.1.0"
2825
characters:
2926
dependency: transitive
3027
description:
3128
name: characters
32-
sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c
33-
url: "https://pub.dev"
29+
url: "https://pub.dartlang.org"
3430
source: hosted
3531
version: "1.2.1"
3632
clock:
3733
dependency: transitive
3834
description:
3935
name: clock
40-
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
41-
url: "https://pub.dev"
36+
url: "https://pub.dartlang.org"
4237
source: hosted
4338
version: "1.1.1"
4439
collection:
4540
dependency: transitive
4641
description:
4742
name: collection
48-
sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0
49-
url: "https://pub.dev"
43+
url: "https://pub.dartlang.org"
5044
source: hosted
51-
version: "1.17.0"
45+
version: "1.16.0"
5246
crypto:
5347
dependency: transitive
5448
description:
5549
name: crypto
56-
sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67
57-
url: "https://pub.dev"
50+
url: "https://pub.dartlang.org"
5851
source: hosted
5952
version: "3.0.2"
6053
espresso:
6154
dependency: "direct dev"
6255
description:
6356
name: espresso
64-
sha256: "641bdfcaec98b2fe2f5c90d61a16cdf6879ddac4d7333a6467ef03d60933596b"
65-
url: "https://pub.dev"
57+
url: "https://pub.dartlang.org"
6658
source: hosted
6759
version: "0.2.0+5"
6860
fake_async:
6961
dependency: transitive
7062
description:
7163
name: fake_async
72-
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
73-
url: "https://pub.dev"
64+
url: "https://pub.dartlang.org"
7465
source: hosted
7566
version: "1.3.1"
7667
file:
7768
dependency: transitive
7869
description:
7970
name: file
80-
sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
81-
url: "https://pub.dev"
71+
url: "https://pub.dartlang.org"
8272
source: hosted
83-
version: "6.1.4"
73+
version: "6.1.2"
8474
flutter:
8575
dependency: "direct main"
8676
description: flutter
@@ -120,48 +110,42 @@ packages:
120110
dependency: transitive
121111
description:
122112
name: matcher
123-
sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72"
124-
url: "https://pub.dev"
113+
url: "https://pub.dartlang.org"
125114
source: hosted
126-
version: "0.12.13"
115+
version: "0.12.12"
127116
material_color_utilities:
128117
dependency: transitive
129118
description:
130119
name: material_color_utilities
131-
sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
132-
url: "https://pub.dev"
120+
url: "https://pub.dartlang.org"
133121
source: hosted
134-
version: "0.2.0"
122+
version: "0.1.5"
135123
meta:
136124
dependency: transitive
137125
description:
138126
name: meta
139-
sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42"
140-
url: "https://pub.dev"
127+
url: "https://pub.dartlang.org"
141128
source: hosted
142129
version: "1.8.0"
143130
path:
144131
dependency: transitive
145132
description:
146133
name: path
147-
sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b
148-
url: "https://pub.dev"
134+
url: "https://pub.dartlang.org"
149135
source: hosted
150136
version: "1.8.2"
151137
platform:
152138
dependency: transitive
153139
description:
154140
name: platform
155-
sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76"
156-
url: "https://pub.dev"
141+
url: "https://pub.dartlang.org"
157142
source: hosted
158143
version: "3.1.0"
159144
process:
160145
dependency: transitive
161146
description:
162147
name: process
163-
sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09"
164-
url: "https://pub.dev"
148+
url: "https://pub.dartlang.org"
165149
source: hosted
166150
version: "4.2.4"
167151
sky_engine:
@@ -173,90 +157,79 @@ packages:
173157
dependency: transitive
174158
description:
175159
name: source_span
176-
sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
177-
url: "https://pub.dev"
160+
url: "https://pub.dartlang.org"
178161
source: hosted
179-
version: "1.9.1"
162+
version: "1.9.0"
180163
stack_trace:
181164
dependency: transitive
182165
description:
183166
name: stack_trace
184-
sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
185-
url: "https://pub.dev"
167+
url: "https://pub.dartlang.org"
186168
source: hosted
187-
version: "1.11.0"
169+
version: "1.10.0"
188170
stream_channel:
189171
dependency: transitive
190172
description:
191173
name: stream_channel
192-
sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
193-
url: "https://pub.dev"
174+
url: "https://pub.dartlang.org"
194175
source: hosted
195-
version: "2.1.1"
176+
version: "2.1.0"
196177
string_scanner:
197178
dependency: transitive
198179
description:
199180
name: string_scanner
200-
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
201-
url: "https://pub.dev"
181+
url: "https://pub.dartlang.org"
202182
source: hosted
203-
version: "1.2.0"
183+
version: "1.1.1"
204184
sync_http:
205185
dependency: transitive
206186
description:
207187
name: sync_http
208-
sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961"
209-
url: "https://pub.dev"
188+
url: "https://pub.dartlang.org"
210189
source: hosted
211190
version: "0.3.1"
212191
term_glyph:
213192
dependency: transitive
214193
description:
215194
name: term_glyph
216-
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
217-
url: "https://pub.dev"
195+
url: "https://pub.dartlang.org"
218196
source: hosted
219197
version: "1.2.1"
220198
test_api:
221199
dependency: transitive
222200
description:
223201
name: test_api
224-
sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206
225-
url: "https://pub.dev"
202+
url: "https://pub.dartlang.org"
226203
source: hosted
227-
version: "0.4.16"
204+
version: "0.4.12"
228205
typed_data:
229206
dependency: transitive
230207
description:
231208
name: typed_data
232-
sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5"
233-
url: "https://pub.dev"
209+
url: "https://pub.dartlang.org"
234210
source: hosted
235211
version: "1.3.1"
236212
vector_math:
237213
dependency: transitive
238214
description:
239215
name: vector_math
240-
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
241-
url: "https://pub.dev"
216+
url: "https://pub.dartlang.org"
242217
source: hosted
243-
version: "2.1.4"
218+
version: "2.1.2"
244219
vm_service:
245220
dependency: transitive
246221
description:
247222
name: vm_service
248-
sha256: e7fb6c2282f7631712b69c19d1bff82f3767eea33a2321c14fa59ad67ea391c7
249-
url: "https://pub.dev"
223+
url: "https://pub.dartlang.org"
250224
source: hosted
251-
version: "9.4.0"
225+
version: "9.0.0"
252226
webdriver:
253227
dependency: transitive
254228
description:
255229
name: webdriver
256-
sha256: ef67178f0cc7e32c1494645b11639dd1335f1d18814aa8435113a92e9ef9d841
257-
url: "https://pub.dev"
230+
url: "https://pub.dartlang.org"
258231
source: hosted
259-
version: "3.0.1"
232+
version: "3.0.0"
260233
sdks:
261-
dart: ">=2.18.0 <3.0.0"
234+
dart: ">=2.17.0-0 <3.0.0"
262235
flutter: ">=2.10.0"

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
"name": "Instabug-Flutter",
33
"version": "0.0.0",
44
"devDependencies": {
5-
"danger": "^11.2.5"
5+
"@instabug/danger-plugin-coverage": "Instabug/danger-plugin-coverage",
6+
"danger": "^11.2.5",
7+
"typescript": "^5.0.4"
68
}
79
}

yarn.lock

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@
3232
query-string "^6.12.1"
3333
xcase "^2.0.1"
3434

35+
"@instabug/danger-plugin-coverage@Instabug/danger-plugin-coverage":
36+
version "0.0.0-development"
37+
resolved "git+ssh://[email protected]/Instabug/danger-plugin-coverage.git#a3941bd25421b0978ec636648a557b2280d0c9e6"
38+
dependencies:
39+
fast-xml-parser "^4.2.0"
40+
3541
"@octokit/auth-token@^2.4.4":
3642
version "2.5.0"
3743
resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36"
@@ -410,6 +416,13 @@ fast-json-patch@^3.0.0-1:
410416
resolved "https://registry.yarnpkg.com/fast-json-patch/-/fast-json-patch-3.1.1.tgz#85064ea1b1ebf97a3f7ad01e23f9337e72c66947"
411417
integrity sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==
412418

419+
fast-xml-parser@^4.2.0:
420+
version "4.2.0"
421+
resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.2.0.tgz#6db2ba33b95b8b4af93f94fe024d4b4d02a50855"
422+
integrity sha512-+zVQv4aVTO+o8oRUyRL7PjgeVo1J6oP8Cw2+a8UTZQcj5V0yUK5T63gTN0ldgiHDPghUjKc4OpT6SwMTwnOQug==
423+
dependencies:
424+
strnum "^1.0.5"
425+
413426
fill-range@^7.0.1:
414427
version "7.0.1"
415428
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
@@ -871,6 +884,11 @@ strict-uri-encode@^2.0.0:
871884
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546"
872885
integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==
873886

887+
strnum@^1.0.5:
888+
version "1.0.5"
889+
resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db"
890+
integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==
891+
874892
supports-color@^5.0.0, supports-color@^5.3.0:
875893
version "5.5.0"
876894
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
@@ -898,6 +916,11 @@ tr46@~0.0.3:
898916
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
899917
integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
900918

919+
typescript@^5.0.4:
920+
version "5.0.4"
921+
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b"
922+
integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==
923+
901924
universal-user-agent@^6.0.0:
902925
version "6.0.0"
903926
resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee"

0 commit comments

Comments
 (0)