Skip to content

Commit

Permalink
test: refactor e2e tests (#700)
Browse files Browse the repository at this point in the history
* test: refactor e2e tests

* refactor process run on e2e on test

* fix test e2e

* remove flutter test from non flutter templates

* fix docs site

* update version
  • Loading branch information
renancaraujo committed Mar 28, 2023
1 parent 8715f51 commit d22e66b
Show file tree
Hide file tree
Showing 19 changed files with 282 additions and 290 deletions.
2 changes: 1 addition & 1 deletion lib/src/version.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions test/fixtures/async_main/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ environment:

dev_dependencies:
test: ^1.19.2
test_api: 0.4.18
29 changes: 29 additions & 0 deletions test/helpers/expect_successful_process_result.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import 'dart:io';

import 'package:mason/mason.dart';
import 'package:test/test.dart';

Future<ProcessResult> expectSuccessfulProcessResult(
String executable,
List<String> arguments, {
required String workingDirectory,
bool validateStderr = true,
}) async {
final result = await Process.run(
executable,
arguments,
workingDirectory: workingDirectory,
runInShell: true,
);
expect(
result.exitCode,
equals(ExitCode.success.code),
reason:
'''`$executable ${arguments.join(' ')}` in $workingDirectory failed with "${result.stderr}" and "${result.stdout}"''',
);
if (validateStderr) {
expect(result.stderr, isEmpty);
}

return result;
}
1 change: 1 addition & 0 deletions test/helpers/helpers.dart
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
export 'command_helper.dart';
export 'copy_directory.dart';
export 'expect_successful_process_result.dart';
57 changes: 35 additions & 22 deletions test/src/commands/create/e2e/dart_cli/dart_cli_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -25,43 +25,56 @@ void main() {
);
expect(result, equals(ExitCode.success.code));

final formatResult = await Process.run(
final workingDirectory = path.join(directory.path, 'very_good_dart_cli');

// add coverage to collect coverage on dart test
await expectSuccessfulProcessResult(
'dart',
['pub', 'add', 'coverage:1.2.0'],
workingDirectory: workingDirectory,
);

await expectSuccessfulProcessResult(
'dart',
['format', '--set-exit-if-changed', '.'],
workingDirectory: path.join(directory.path, 'very_good_dart_cli'),
runInShell: true,
workingDirectory: workingDirectory,
);
expect(formatResult.exitCode, equals(ExitCode.success.code));
expect(formatResult.stderr, isEmpty);

final analyzeResult = await Process.run(
final analyzeResult = await expectSuccessfulProcessResult(
'flutter',
['analyze', '.'],
workingDirectory: path.join(directory.path, 'very_good_dart_cli'),
runInShell: true,
workingDirectory: workingDirectory,
);
expect(analyzeResult.exitCode, equals(ExitCode.success.code));
expect(analyzeResult.stderr, isEmpty);
expect(analyzeResult.stdout, contains('No issues found!'));

final testResult = await Process.run(
'flutter',
['test', '--no-pub', '--coverage', '--reporter', 'compact'],
workingDirectory: path.join(directory.path, 'very_good_dart_cli'),
runInShell: true,
final testResult = await expectSuccessfulProcessResult(
'dart',
['test', '--coverage=coverage', '--reporter=compact'],
workingDirectory: workingDirectory,
);
expect(testResult.exitCode, equals(ExitCode.success.code));
expect(testResult.stderr, isEmpty);
expect(testResult.stdout, contains('All tests passed!'));

final testCoverageResult = await Process.run(
// collect coverage
await expectSuccessfulProcessResult(
'dart',
[
'pub',
'run',
'coverage:format_coverage',
'--lcov',
'--in=coverage',
'--out=coverage/lcov.info',
'--packages=.dart_tool/package_config.json',
'--report-on=lib',
],
workingDirectory: workingDirectory,
);

final testCoverageResult = await expectSuccessfulProcessResult(
'genhtml',
['coverage/lcov.info', '-o', 'coverage'],
workingDirectory: path.join(directory.path, 'very_good_dart_cli'),
runInShell: true,
workingDirectory: workingDirectory,
);
expect(testCoverageResult.exitCode, equals(ExitCode.success.code));
expect(testCoverageResult.stderr, isEmpty);
expect(testCoverageResult.stdout, contains('lines......: 100.0%'));
}),
timeout: const Timeout(Duration(minutes: 2)),
Expand Down
57 changes: 35 additions & 22 deletions test/src/commands/create/e2e/dart_package/dart_pkg_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -19,43 +19,56 @@ void main() {
);
expect(result, equals(ExitCode.success.code));

final formatResult = await Process.run(
final workingDirectory = path.join(directory.path, 'very_good_dart');

// add coverage to collect coverage on dart test
await expectSuccessfulProcessResult(
'dart',
['pub', 'add', 'coverage:1.2.0'],
workingDirectory: workingDirectory,
);

await expectSuccessfulProcessResult(
'dart',
['format', '--set-exit-if-changed', '.'],
workingDirectory: path.join(directory.path, 'very_good_dart'),
runInShell: true,
workingDirectory: workingDirectory,
);
expect(formatResult.exitCode, equals(ExitCode.success.code));
expect(formatResult.stderr, isEmpty);

final analyzeResult = await Process.run(
final analyzeResult = await expectSuccessfulProcessResult(
'flutter',
['analyze', '.'],
workingDirectory: path.join(directory.path, 'very_good_dart'),
runInShell: true,
workingDirectory: workingDirectory,
);
expect(analyzeResult.exitCode, equals(ExitCode.success.code));
expect(analyzeResult.stderr, isEmpty);
expect(analyzeResult.stdout, contains('No issues found!'));

final testResult = await Process.run(
'flutter',
['test', '--no-pub', '--coverage', '--reporter', 'compact'],
workingDirectory: path.join(directory.path, 'very_good_dart'),
runInShell: true,
final testResult = await expectSuccessfulProcessResult(
'dart',
['test', '--coverage=coverage', '--reporter=compact'],
workingDirectory: workingDirectory,
);
expect(testResult.exitCode, equals(ExitCode.success.code));
expect(testResult.stderr, isEmpty);
expect(testResult.stdout, contains('All tests passed!'));

final testCoverageResult = await Process.run(
// collect coverage
await expectSuccessfulProcessResult(
'dart',
[
'pub',
'run',
'coverage:format_coverage',
'--lcov',
'--in=coverage',
'--out=coverage/lcov.info',
'--packages=.dart_tool/package_config.json',
'--report-on=lib',
],
workingDirectory: workingDirectory,
);

final testCoverageResult = await expectSuccessfulProcessResult(
'genhtml',
['coverage/lcov.info', '-o', 'coverage'],
workingDirectory: path.join(directory.path, 'very_good_dart'),
runInShell: true,
workingDirectory: workingDirectory,
);
expect(testCoverageResult.exitCode, equals(ExitCode.success.code));
expect(testCoverageResult.stderr, isEmpty);
expect(testCoverageResult.stdout, contains('lines......: 100.0%'));
}),
timeout: const Timeout(Duration(minutes: 2)),
Expand Down
30 changes: 11 additions & 19 deletions test/src/commands/create/e2e/docs_site/docs_site_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -18,40 +18,32 @@ void main() {
);
expect(result, equals(ExitCode.success.code));

final installResult = await Process.run(
final workingDirectory = path.join(directory.path, 'very_good_docs_site');

await expectSuccessfulProcessResult(
'npm',
['install'],
workingDirectory: path.join(directory.path, 'very_good_docs_site'),
runInShell: true,
workingDirectory: workingDirectory,
validateStderr: false,
);
expect(installResult.exitCode, equals(ExitCode.success.code));

final formatResult = await Process.run(
await expectSuccessfulProcessResult(
'npm',
['run', 'format'],
workingDirectory: path.join(directory.path, 'very_good_docs_site'),
runInShell: true,
workingDirectory: workingDirectory,
);
expect(formatResult.exitCode, equals(ExitCode.success.code));
expect(formatResult.stderr, isEmpty);

final lintResult = await Process.run(
await expectSuccessfulProcessResult(
'npm',
['run', 'lint'],
workingDirectory: path.join(directory.path, 'very_good_docs_site'),
runInShell: true,
workingDirectory: workingDirectory,
);
expect(lintResult.exitCode, equals(ExitCode.success.code));
expect(lintResult.stderr, isEmpty);

final buildResult = await Process.run(
await expectSuccessfulProcessResult(
'npm',
['run', 'build'],
workingDirectory: path.join(directory.path, 'very_good_docs_site'),
runInShell: true,
workingDirectory: workingDirectory,
);
expect(buildResult.exitCode, equals(ExitCode.success.code));
expect(buildResult.stderr, isEmpty);
}),
timeout: const Timeout(Duration(minutes: 2)),
);
Expand Down
33 changes: 13 additions & 20 deletions test/src/commands/create/e2e/flame_game/flame_game_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -26,43 +26,36 @@ void main() {
);
expect(result, equals(ExitCode.success.code));

final formatResult = await Process.run(
final workingDirectory = path.join(
directory.path,
'very_good_flame_game',
);

await expectSuccessfulProcessResult(
'dart',
['format', '--set-exit-if-changed', '.'],
workingDirectory: path.join(directory.path, 'very_good_flame_game'),
runInShell: true,
workingDirectory: workingDirectory,
);
expect(formatResult.exitCode, equals(ExitCode.success.code));
expect(formatResult.stderr, isEmpty);

final analyzeResult = await Process.run(
final analyzeResult = await expectSuccessfulProcessResult(
'flutter',
['analyze', '.'],
workingDirectory: path.join(directory.path, 'very_good_flame_game'),
runInShell: true,
workingDirectory: workingDirectory,
);
expect(analyzeResult.exitCode, equals(ExitCode.success.code));
expect(analyzeResult.stderr, isEmpty);
expect(analyzeResult.stdout, contains('No issues found!'));

final testResult = await Process.run(
final testResult = await expectSuccessfulProcessResult(
'flutter',
['test', '--no-pub', '--coverage', '--reporter', 'compact'],
workingDirectory: path.join(directory.path, 'very_good_flame_game'),
runInShell: true,
workingDirectory: workingDirectory,
);
expect(testResult.exitCode, equals(ExitCode.success.code));
expect(testResult.stderr, isEmpty);
expect(testResult.stdout, contains('All tests passed!'));

final testCoverageResult = await Process.run(
final testCoverageResult = await expectSuccessfulProcessResult(
'genhtml',
['coverage/lcov.info', '-o', 'coverage'],
workingDirectory: path.join(directory.path, 'very_good_flame_game'),
runInShell: true,
workingDirectory: workingDirectory,
);
expect(testCoverageResult.exitCode, equals(ExitCode.success.code));
expect(testCoverageResult.stderr, isEmpty);
expect(testCoverageResult.stdout, contains('lines......: 97.8%'));
}),
);
Expand Down
30 changes: 10 additions & 20 deletions test/src/commands/create/e2e/flutter_app/core_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -19,43 +19,33 @@ void main() {
);
expect(result, equals(ExitCode.success.code));

final formatResult = await Process.run(
final workingDirectory = path.join(directory.path, 'very_good_core');

await expectSuccessfulProcessResult(
'dart',
['format', '--set-exit-if-changed', '.'],
workingDirectory: path.join(directory.path, 'very_good_core'),
runInShell: true,
workingDirectory: workingDirectory,
);
expect(formatResult.exitCode, equals(ExitCode.success.code));
expect(formatResult.stderr, isEmpty);

final analyzeResult = await Process.run(
final analyzeResult = await expectSuccessfulProcessResult(
'flutter',
['analyze', '.'],
workingDirectory: path.join(directory.path, 'very_good_core'),
runInShell: true,
workingDirectory: workingDirectory,
);
expect(analyzeResult.exitCode, equals(ExitCode.success.code));
expect(analyzeResult.stderr, isEmpty);
expect(analyzeResult.stdout, contains('No issues found!'));

final testResult = await Process.run(
final testResult = await expectSuccessfulProcessResult(
'flutter',
['test', '--no-pub', '--coverage', '--reporter', 'compact'],
workingDirectory: path.join(directory.path, 'very_good_core'),
runInShell: true,
workingDirectory: workingDirectory,
);
expect(testResult.exitCode, equals(ExitCode.success.code));
expect(testResult.stderr, isEmpty);
expect(testResult.stdout, contains('All tests passed!'));

final testCoverageResult = await Process.run(
final testCoverageResult = await expectSuccessfulProcessResult(
'genhtml',
['coverage/lcov.info', '-o', 'coverage'],
workingDirectory: path.join(directory.path, 'very_good_core'),
runInShell: true,
workingDirectory: workingDirectory,
);
expect(testCoverageResult.exitCode, equals(ExitCode.success.code));
expect(testCoverageResult.stderr, isEmpty);
expect(testCoverageResult.stdout, contains('lines......: 100.0%'));
}),
timeout: const Timeout(Duration(minutes: 2)),
Expand Down
Loading

0 comments on commit d22e66b

Please sign in to comment.