@@ -283,6 +283,95 @@ end_of_record
283283''' );
284284 });
285285
286+ test ('gathers coverage for code outside of lib in json mode' , () async {
287+ await d.dir (d.sandbox, [
288+ d.dir ('dart_frog_sample' , [
289+ d.file ('pubspec.yaml' , '''
290+ name: dart_frog_sample
291+ version: 1.0.0
292+ environment:
293+ sdk: ^3.5.0
294+ dependencies:
295+ dart_frog: ^1.0.0
296+ dev_dependencies:
297+ mocktail: ^1.0.0
298+ test: ^1.26.2
299+ ''' ),
300+ d.dir ('routes' , [
301+ d.file ('index.dart' , '''
302+ import 'package:dart_frog/dart_frog.dart';
303+ Response onRequest(RequestContext context) {
304+ return Response(body: 'Welcome to Dart Frog!');
305+ }
306+ ''' ),
307+ ]),
308+ d.dir ('test' , [
309+ d.dir ('routes' , [
310+ d.file ('index_test.dart' , '''
311+ import 'dart:io';
312+ import 'package:dart_frog/dart_frog.dart';
313+ import 'package:mocktail/mocktail.dart';
314+ import 'package:test/test.dart';
315+
316+ import '../../routes/index.dart' as route;
317+
318+ class _MockRequestContext extends Mock implements RequestContext {}
319+
320+ void main() {
321+ group('GET /', () {
322+ test('responds with a 200 and "Welcome to Dart Frog!".', () {
323+ final context = _MockRequestContext();
324+ final response = route.onRequest(context);
325+ expect(response.statusCode, equals(HttpStatus.ok));
326+ expect(
327+ response.body(),
328+ completion(equals('Welcome to Dart Frog!')),
329+ );
330+ });
331+ });
332+ }
333+ ''' ),
334+ ]),
335+ ]),
336+ ]),
337+ ]).create ();
338+
339+ final pkgDir = p.join (d.sandbox, 'dart_frog_sample' );
340+ await (await runPub ([
341+ 'global' ,
342+ 'activate' ,
343+ 'coverage' ,
344+ ], workingDirectory: pkgDir)).shouldExit (0 );
345+ await (await runPub (['get' ], workingDirectory: pkgDir)).shouldExit (0 );
346+ final lcovFile = p.join (coverageDirectory.path, 'lcov.info' );
347+ var test = await runTest (
348+ ['--coverage' , coverageDirectory.path, 'test/routes/index_test.dart' ],
349+ packageConfig: p.join (pkgDir, '.dart_tool/package_config.json' ),
350+ workingDirectory: pkgDir,
351+ );
352+ await validateTest (test);
353+ await (await runPub ([
354+ 'global' ,
355+ 'run' ,
356+ 'coverage:format_coverage' ,
357+ '--lcov' ,
358+ '--in=${coverageDirectory .path }' ,
359+ '--out=$lcovFile ' ,
360+ '--report-on=lib,routes' ,
361+ ], workingDirectory: pkgDir)).shouldExit (0 );
362+ expect (
363+ File (lcovFile).readAsStringSync (),
364+ contains ('''
365+ SF:${p .join (pkgDir , 'routes' , 'index.dart' )}
366+ DA:2,1
367+ DA:3,1
368+ LF:2
369+ LH:2
370+ end_of_record
371+ ''' ),
372+ );
373+ });
374+
286375 test ('gathers coverage for Chrome tests' , () async {
287376 await (await runPub (['get' ], workingDirectory: pkgDir)).shouldExit (0 );
288377 var test = await runTest (
0 commit comments