@@ -21,7 +21,7 @@ void main() {
2121
2222 group ('with the --coverage flag,' , () {
2323 late Directory coverageDirectory;
24- late d. DirectoryDescriptor packageDirectory ;
24+ late String pkgDir ;
2525
2626 Future <void > validateTest (TestProcess test) async {
2727 expect (test.stdout, emitsThrough (contains ('+1: All tests passed!' )));
@@ -47,9 +47,10 @@ void main() {
4747 'test_coverage' ,
4848 );
4949
50- packageDirectory = d.dir (d.sandbox, [
51- d.dir ('lib' , [
52- d.file ('calculate.dart' , '''
50+ final outerDirectory = d.dir (d.sandbox, [
51+ d.dir ('fake_package' , [
52+ d.dir ('lib' , [
53+ d.file ('calculate.dart' , '''
5354 int calculate(int x) {
5455 if (x % 2 == 0) {
5556 return x * 2;
@@ -58,9 +59,9 @@ void main() {
5859 }
5960 }
6061 ''' ),
61- ]),
62- d.dir ('test' , [
63- d.file ('test.dart' , '''
62+ ]),
63+ d.dir ('test' , [
64+ d.file ('test.dart' , '''
6465 import 'package:fake_package/calculate.dart';
6566 import 'package:test/test.dart';
6667
@@ -70,30 +71,66 @@ void main() {
7071 });
7172 }
7273 ''' ),
73- ]),
74- d.file ('pubspec.yaml' , '''
74+ ]),
75+ d.file ('pubspec.yaml' , '''
7576name: fake_package
7677version: 1.0.0
7778environment:
7879 sdk: ^3.5.0
7980dev_dependencies:
8081 test: ^1.26.2
8182 ''' ),
83+ ]),
84+ d.dir ('fake_client' , [
85+ d.dir ('lib' , [
86+ d.file ('calculate.dart' , '''
87+ import 'package:fake_package/calculate.dart' as fake_package;
88+
89+ int calculate(int x) {
90+ return fake_package.calculate(x);
91+ }
92+ ''' ),
93+ ]),
94+ d.dir ('test' , [
95+ d.file ('test.dart' , '''
96+ import 'package:fake_client/calculate.dart';
97+ import 'package:test/test.dart';
98+
99+ void main() {
100+ test('test 1', () {
101+ expect(calculate(6), 12);
102+ });
103+ }
104+ ''' ),
105+ ]),
106+ d.file ('pubspec.yaml' , '''
107+ name: fake_client
108+ version: 1.0.0
109+ environment:
110+ sdk: ^3.5.0
111+ dependencies:
112+ fake_package:
113+ path: ../fake_package
114+ dev_dependencies:
115+ test: ^1.26.2
116+ ''' ),
117+ ]),
82118 ]);
83- await packageDirectory.create ();
119+ await outerDirectory.create ();
120+ pkgDir = p.join (d.sandbox, 'fake_package' );
84121 });
85122
86123 tearDown (() async {
87124 await coverageDirectory.delete (recursive: true );
88125 });
89126
90127 test ('gathers coverage for VM tests' , () async {
91- await (await runPub (['get' ])).shouldExit (0 );
92- var test = await runTest ([
93- '--coverage' ,
94- coverageDirectory.path ,
95- 'test/test.dart' ,
96- ], packageConfig : p. join (d.sandbox, '.dart_tool/package_config.json' ) );
128+ await (await runPub (['get' ], workingDirectory : pkgDir )).shouldExit (0 );
129+ var test = await runTest (
130+ [ '--coverage' , coverageDirectory.path, 'test/test.dart' ] ,
131+ packageConfig : p. join (pkgDir, '.dart_tool/package_config.json' ) ,
132+ workingDirectory : pkgDir ,
133+ );
97134 final coverage = await validateCoverage (test, 'test/test.dart.vm.json' );
98135 final hitmap = coverage['package:fake_package/calculate.dart' ]! ;
99136 expect (hitmap.lineHits, {1 : 1 , 2 : 2 , 3 : 1 , 5 : 0 });
@@ -102,7 +139,7 @@ dev_dependencies:
102139 });
103140
104141 test ('gathers branch coverage for VM tests' , () async {
105- await (await runPub (['get' ])).shouldExit (0 );
142+ await (await runPub (['get' ], workingDirectory : pkgDir )).shouldExit (0 );
106143 var test = await runTest (
107144 [
108145 '--coverage' ,
@@ -111,7 +148,8 @@ dev_dependencies:
111148 'test/test.dart' ,
112149 ],
113150 vmArgs: ['--branch-coverage' ],
114- packageConfig: p.join (d.sandbox, '.dart_tool/package_config.json' ),
151+ packageConfig: p.join (pkgDir, '.dart_tool/package_config.json' ),
152+ workingDirectory: pkgDir,
115153 );
116154 final coverage = await validateCoverage (test, 'test/test.dart.vm.json' );
117155 final hitmap = coverage['package:fake_package/calculate.dart' ]! ;
@@ -121,16 +159,51 @@ dev_dependencies:
121159 });
122160
123161 test ('gathers lcov coverage for VM tests' , () async {
124- await (await runPub (['get' ])).shouldExit (0 );
162+ await (await runPub (['get' ], workingDirectory : pkgDir )).shouldExit (0 );
125163 final lcovFile = p.join (coverageDirectory.path, 'lcov.info' );
126- var test = await runTest ([
127- '--coverage-path' ,
128- lcovFile ,
129- 'test/test.dart' ,
130- ], packageConfig : p. join (d.sandbox, '.dart_tool/package_config.json' ) );
164+ var test = await runTest (
165+ [ '--coverage-path' , lcovFile, 'test/test.dart' ] ,
166+ packageConfig : p. join (pkgDir, '.dart_tool/package_config.json' ) ,
167+ workingDirectory : pkgDir ,
168+ );
131169 await validateTest (test);
132170 expect (File (lcovFile).readAsStringSync (), '''
133- SF:${p .join (d .sandbox , 'lib' , 'calculate.dart' )}
171+ SF:${p .join (pkgDir , 'lib' , 'calculate.dart' )}
172+ DA:1,1
173+ DA:2,2
174+ DA:3,1
175+ DA:5,0
176+ LF:4
177+ LH:3
178+ end_of_record
179+ ''' );
180+ });
181+
182+ test ('gathers coverage for tests in multiple pacakges' , () async {
183+ final clientPkgDir = p.join (d.sandbox, 'fake_client' );
184+ await (await runPub ([
185+ 'get' ,
186+ ], workingDirectory: clientPkgDir)).shouldExit (0 );
187+ final lcovFile = p.join (coverageDirectory.path, 'lcov.info' );
188+ var test = await runTest (
189+ [
190+ '--coverage-path' ,
191+ lcovFile,
192+ '--coverage-package=fake_.*' ,
193+ 'test/test.dart' ,
194+ ],
195+ packageConfig: p.join (clientPkgDir, '.dart_tool/package_config.json' ),
196+ workingDirectory: clientPkgDir,
197+ );
198+ await validateTest (test);
199+ expect (File (lcovFile).readAsStringSync (), '''
200+ SF:${p .join (clientPkgDir , 'lib' , 'calculate.dart' )}
201+ DA:3,1
202+ DA:4,1
203+ LF:2
204+ LH:2
205+ end_of_record
206+ SF:${p .join (pkgDir , 'lib' , 'calculate.dart' )}
134207DA:1,1
135208DA:2,2
136209DA:3,1
@@ -142,14 +215,18 @@ end_of_record
142215 });
143216
144217 test ('gathers coverage for Chrome tests' , () async {
145- await (await runPub (['get' ])).shouldExit (0 );
146- var test = await runTest ([
147- '--coverage' ,
148- coverageDirectory.path,
149- 'test/test.dart' ,
150- '-p' ,
151- 'chrome' ,
152- ], packageConfig: p.join (d.sandbox, '.dart_tool/package_config.json' ));
218+ await (await runPub (['get' ], workingDirectory: pkgDir)).shouldExit (0 );
219+ var test = await runTest (
220+ [
221+ '--coverage' ,
222+ coverageDirectory.path,
223+ 'test/test.dart' ,
224+ '-p' ,
225+ 'chrome' ,
226+ ],
227+ packageConfig: p.join (pkgDir, '.dart_tool/package_config.json' ),
228+ workingDirectory: pkgDir,
229+ );
153230 await validateCoverage (test, 'test/test.dart.chrome.json' );
154231 });
155232
0 commit comments