diff --git a/lib/src/commands/test/templates/test_runner_bundle.dart b/lib/src/commands/test/templates/test_runner_bundle.dart index 828e61699..01708f543 100644 --- a/lib/src/commands/test/templates/test_runner_bundle.dart +++ b/lib/src/commands/test/templates/test_runner_bundle.dart @@ -8,7 +8,7 @@ final testRunnerBundle = MasonBundle.fromJson({ { "path": "test/.test_runner.dart", "data": - "Ly8gR0VORVJBVEVEIENPREUgLSBETyBOT1QgTU9ESUZZIEJZIEhBTkQKLy8gQ29uc2lkZXIgYWRkaW5nIHRoaXMgZmlsZSB0byB5b3VyIC5naXRpZ25vcmUuCgppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKe3sjdGVzdHN9fWltcG9ydCAne3t7Ln19fScgYXMge3sjc25ha2VDYXNlfX17e3sufX19e3svc25ha2VDYXNlfX07Cnt7L3Rlc3RzfX0Kdm9pZCBtYWluKCkgewp7eyN0ZXN0c319ICBncm91cCgne3sjc25ha2VDYXNlfX17e3sufX19e3svc25ha2VDYXNlfX0nLCB7eyNzbmFrZUNhc2V9fXt7ey59fX17ey9zbmFrZUNhc2V9fS5tYWluKTsKe3svdGVzdHN9fX0K", + "Ly8gR0VORVJBVEVEIENPREUgLSBETyBOT1QgTU9ESUZZIEJZIEhBTkQKLy8gQ29uc2lkZXIgYWRkaW5nIHRoaXMgZmlsZSB0byB5b3VyIC5naXRpZ25vcmUuCgp7eyNpc0ZsdXR0ZXJ9fWltcG9ydCAncGFja2FnZTpmbHV0dGVyX3Rlc3QvZmx1dHRlcl90ZXN0LmRhcnQnO3t7L2lzRmx1dHRlcn19e3teaXNGbHV0dGVyfX1pbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnO3t7L2lzRmx1dHRlcn19Cgp7eyN0ZXN0c319aW1wb3J0ICd7e3sufX19JyBhcyB7eyNzbmFrZUNhc2V9fXt7ey59fX17ey9zbmFrZUNhc2V9fTsKe3svdGVzdHN9fQp2b2lkIG1haW4oKSB7Cnt7I3Rlc3RzfX0gIGdyb3VwKCd7eyNzbmFrZUNhc2V9fXt7ey59fX17ey9zbmFrZUNhc2V9fScsIHt7I3NuYWtlQ2FzZX19e3t7Ln19fXt7L3NuYWtlQ2FzZX19Lm1haW4pOwp7ey90ZXN0c319fQo=", "type": "text" } ], @@ -16,7 +16,7 @@ final testRunnerBundle = MasonBundle.fromJson({ { "path": "pre_gen.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKRnV0dXJlPHZvaWQ+IHJ1bihIb29rQ29udGV4dCBjb250ZXh0KSBhc3luYyB7CiAgZmluYWwgdGVzdERpciA9IERpcmVjdG9yeShwYXRoLmpvaW4oY29udGV4dC52YXJzWydwYWNrYWdlLXJvb3QnXSwgJ3Rlc3QnKSk7CiAgaWYgKCF0ZXN0RGlyLmV4aXN0c1N5bmMoKSkgewogICAgY29udGV4dC5sb2dnZXIuZXJyKCdDb3VsZCBub3QgZmluZCBkaXJlY3RvcnkgJHt0ZXN0RGlyLnBhdGh9Jyk7CiAgICBleGl0KDEpOwogIH0KCiAgZmluYWwgdGVzdHMgPSB0ZXN0RGlyCiAgICAgIC5saXN0U3luYyhyZWN1cnNpdmU6IHRydWUpCiAgICAgIC53aGVyZSgoZW50aXR5KSA9PiBlbnRpdHkuaXNUZXN0KQogICAgICAubWFwKChlbnRpdHkpID0+IHBhdGgucmVsYXRpdmUoZW50aXR5LnBhdGgsIGZyb206IHRlc3REaXIucGF0aCkpCiAgICAgIC50b0xpc3QoKTsKCiAgY29udGV4dC52YXJzID0geyd0ZXN0cyc6IHRlc3RzfTsKfQoKZXh0ZW5zaW9uIG9uIEZpbGVTeXN0ZW1FbnRpdHkgewogIGJvb2wgZ2V0IGlzVGVzdCB7CiAgICByZXR1cm4gdGhpcyBpcyBGaWxlICYmIHBhdGguYmFzZW5hbWUodGhpcy5wYXRoKS5lbmRzV2l0aCgnX3Rlc3QuZGFydCcpOwogIH0KfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKRnV0dXJlPHZvaWQ+IHJ1bihIb29rQ29udGV4dCBjb250ZXh0KSBhc3luYyB7CiAgZmluYWwgcGFja2FnZVJvb3QgPSBjb250ZXh0LnZhcnNbJ3BhY2thZ2Utcm9vdCddOwogIGZpbmFsIHRlc3REaXIgPSBEaXJlY3RvcnkocGF0aC5qb2luKHBhY2thZ2VSb290LCAndGVzdCcpKTsKCiAgaWYgKCF0ZXN0RGlyLmV4aXN0c1N5bmMoKSkgewogICAgY29udGV4dC5sb2dnZXIuZXJyKCdDb3VsZCBub3QgZmluZCBkaXJlY3RvcnkgJHt0ZXN0RGlyLnBhdGh9Jyk7CiAgICBleGl0KDEpOwogIH0KCiAgZmluYWwgcHVic3BlYyA9IEZpbGUocGF0aC5qb2luKHBhY2thZ2VSb290LCAncHVic3BlYy55YW1sJykpOwogIGlmICghcHVic3BlYy5leGlzdHNTeW5jKCkpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignQ291bGQgbm90IGZpbmQgcHVic3BlYy55YW1sIGF0ICR7dGVzdERpci5wYXRofScpOwogICAgZXhpdCgxKTsKICB9CgogIGZpbmFsIHB1YnNwZWNDb250ZW50cyA9IGF3YWl0IHB1YnNwZWMucmVhZEFzU3RyaW5nKCk7CiAgZmluYWwgZmx1dHRlclNka1JlZ0V4cCA9IFJlZ0V4cChyJ3NkazpccypmbHV0dGVyJCcsIG11bHRpTGluZTogdHJ1ZSk7CiAgZmluYWwgaXNGbHV0dGVyID0gZmx1dHRlclNka1JlZ0V4cC5oYXNNYXRjaChwdWJzcGVjQ29udGVudHMpOwoKICBmaW5hbCB0ZXN0cyA9IHRlc3REaXIKICAgICAgLmxpc3RTeW5jKHJlY3Vyc2l2ZTogdHJ1ZSkKICAgICAgLndoZXJlKChlbnRpdHkpID0+IGVudGl0eS5pc1Rlc3QpCiAgICAgIC5tYXAoKGVudGl0eSkgPT4gcGF0aC5yZWxhdGl2ZShlbnRpdHkucGF0aCwgZnJvbTogdGVzdERpci5wYXRoKSkKICAgICAgLnRvTGlzdCgpOwoKICBjb250ZXh0LnZhcnMgPSB7J3Rlc3RzJzogdGVzdHMsICdpc0ZsdXR0ZXInOiBpc0ZsdXR0ZXJ9Owp9CgpleHRlbnNpb24gb24gRmlsZVN5c3RlbUVudGl0eSB7CiAgYm9vbCBnZXQgaXNUZXN0IHsKICAgIHJldHVybiB0aGlzIGlzIEZpbGUgJiYgcGF0aC5iYXNlbmFtZSh0aGlzLnBhdGgpLmVuZHNXaXRoKCdfdGVzdC5kYXJ0Jyk7CiAgfQp9Cg==", "type": "text" }, { diff --git a/test/src/cli/flutter_cli_test.dart b/test/src/cli/flutter_cli_test.dart index 23dd19137..b94fd1f4a 100644 --- a/test/src/cli/flutter_cli_test.dart +++ b/test/src/cli/flutter_cli_test.dart @@ -60,6 +60,15 @@ void main() { }); }'''; +const flutterTestContents = ''' +import 'package:flutter_test/flutter_test.dart'; + +void main() { + test('example', () { + expect(true, isTrue); + }); +}'''; + const longTestNameContents = ''' import 'package:test/test.dart'; @@ -151,6 +160,15 @@ environment: dev_dependencies: test: any'''; +const pubspecFlutter = ''' +name: example +environment: + sdk: ">=2.13.0 <3.0.0" + +dev_dependencies: + flutter_test: + sdk: flutter'''; + const invalidPubspec = 'name: example'; class MockLogger extends Mock implements Logger {} @@ -596,7 +614,8 @@ void main() { ).called(1); }); - test('completes when there is a test directory w/optimizations (passing)', + test( + 'completes when there is a test directory w/optimizations Dart (passing)', () async { final directory = Directory.systemTemp.createTempSync(); final testDirectory = Directory(p.join(directory.path, 'test')) @@ -630,6 +649,43 @@ void main() { ).called(1); }); + test( + 'completes when there is a test directory w/optimizations Flutter (passing)', + () async { + final directory = Directory.systemTemp.createTempSync(); + final testDirectory = Directory(p.join(directory.path, 'test')) + ..createSync(); + File( + p.join(directory.path, 'pubspec.yaml'), + ).writeAsStringSync(pubspecFlutter); + File( + p.join(testDirectory.path, 'example_test.dart'), + ).writeAsStringSync(flutterTestContents); + await expectLater( + Flutter.test( + cwd: directory.path, + optimizePerformance: true, + stdout: logger.write, + stderr: logger.err, + progress: logger.progress, + ), + completes, + ); + verify(() => logger.progress('Optimizing tests')).called(1); + verify( + () => logger.write( + any( + that: contains( + 'Running "flutter test" in ${p.dirname(directory.path)}', + ), + ), + ), + ).called(1); + verify( + () => logger.write(any(that: contains('+1: All tests passed!'))), + ).called(1); + }); + test('completes when there is a test directory (recursive)', () async { final directory = Directory.systemTemp.createTempSync(); final nestedDirectory = Directory(p.join(directory.path, 'nested'))