// Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'package:args/command_runner.dart'; import 'package:file/file.dart'; import 'package:flutter_plugin_tools/src/java_test_command.dart'; import 'package:path/path.dart' as p; import 'package:test/test.dart'; import 'util.dart'; void main() { group('$JavaTestCommand', () { late CommandRunner runner; final RecordingProcessRunner processRunner = RecordingProcessRunner(); setUp(() { initializeFakePackages(); final JavaTestCommand command = JavaTestCommand( mockPackagesDir, mockFileSystem, processRunner: processRunner); runner = CommandRunner('java_test_test', 'Test for $JavaTestCommand'); runner.addCommand(command); }); tearDown(() { cleanupPackages(); processRunner.recordedCalls.clear(); }); test('Should run Java tests in Android implementation folder', () async { final Directory plugin = createFakePlugin( 'plugin1', isAndroidPlugin: true, isFlutter: true, withSingleExample: true, withExtraFiles: >[ ['example/android', 'gradlew'], ['android/src/test', 'example_test.java'], ], ); await runner.run(['java-test']); expect( processRunner.recordedCalls, orderedEquals([ ProcessCall( p.join(plugin.path, 'example/android/gradlew'), const ['testDebugUnitTest', '--info'], p.join(plugin.path, 'example/android'), ), ]), ); }); test('Should run Java tests in example folder', () async { final Directory plugin = createFakePlugin( 'plugin1', isAndroidPlugin: true, isFlutter: true, withSingleExample: true, withExtraFiles: >[ ['example/android', 'gradlew'], ['example/android/app/src/test', 'example_test.java'], ], ); await runner.run(['java-test']); expect( processRunner.recordedCalls, orderedEquals([ ProcessCall( p.join(plugin.path, 'example/android/gradlew'), const ['testDebugUnitTest', '--info'], p.join(plugin.path, 'example/android'), ), ]), ); }); }); }