Skip to content

Commit d22e66b

Browse files
authored
test: refactor e2e tests (#700)
* 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
1 parent 8715f51 commit d22e66b

File tree

19 files changed

+282
-290
lines changed

19 files changed

+282
-290
lines changed

lib/src/version.dart

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/fixtures/async_main/pubspec.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ environment:
88

99
dev_dependencies:
1010
test: ^1.19.2
11+
test_api: 0.4.18
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import 'dart:io';
2+
3+
import 'package:mason/mason.dart';
4+
import 'package:test/test.dart';
5+
6+
Future<ProcessResult> expectSuccessfulProcessResult(
7+
String executable,
8+
List<String> arguments, {
9+
required String workingDirectory,
10+
bool validateStderr = true,
11+
}) async {
12+
final result = await Process.run(
13+
executable,
14+
arguments,
15+
workingDirectory: workingDirectory,
16+
runInShell: true,
17+
);
18+
expect(
19+
result.exitCode,
20+
equals(ExitCode.success.code),
21+
reason:
22+
'''`$executable ${arguments.join(' ')}` in $workingDirectory failed with "${result.stderr}" and "${result.stdout}"''',
23+
);
24+
if (validateStderr) {
25+
expect(result.stderr, isEmpty);
26+
}
27+
28+
return result;
29+
}

test/helpers/helpers.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
export 'command_helper.dart';
22
export 'copy_directory.dart';
3+
export 'expect_successful_process_result.dart';

test/src/commands/create/e2e/dart_cli/dart_cli_test.dart

Lines changed: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -25,43 +25,56 @@ void main() {
2525
);
2626
expect(result, equals(ExitCode.success.code));
2727

28-
final formatResult = await Process.run(
28+
final workingDirectory = path.join(directory.path, 'very_good_dart_cli');
29+
30+
// add coverage to collect coverage on dart test
31+
await expectSuccessfulProcessResult(
32+
'dart',
33+
['pub', 'add', 'coverage:1.2.0'],
34+
workingDirectory: workingDirectory,
35+
);
36+
37+
await expectSuccessfulProcessResult(
2938
'dart',
3039
['format', '--set-exit-if-changed', '.'],
31-
workingDirectory: path.join(directory.path, 'very_good_dart_cli'),
32-
runInShell: true,
40+
workingDirectory: workingDirectory,
3341
);
34-
expect(formatResult.exitCode, equals(ExitCode.success.code));
35-
expect(formatResult.stderr, isEmpty);
3642

37-
final analyzeResult = await Process.run(
43+
final analyzeResult = await expectSuccessfulProcessResult(
3844
'flutter',
3945
['analyze', '.'],
40-
workingDirectory: path.join(directory.path, 'very_good_dart_cli'),
41-
runInShell: true,
46+
workingDirectory: workingDirectory,
4247
);
43-
expect(analyzeResult.exitCode, equals(ExitCode.success.code));
44-
expect(analyzeResult.stderr, isEmpty);
4548
expect(analyzeResult.stdout, contains('No issues found!'));
4649

47-
final testResult = await Process.run(
48-
'flutter',
49-
['test', '--no-pub', '--coverage', '--reporter', 'compact'],
50-
workingDirectory: path.join(directory.path, 'very_good_dart_cli'),
51-
runInShell: true,
50+
final testResult = await expectSuccessfulProcessResult(
51+
'dart',
52+
['test', '--coverage=coverage', '--reporter=compact'],
53+
workingDirectory: workingDirectory,
5254
);
53-
expect(testResult.exitCode, equals(ExitCode.success.code));
54-
expect(testResult.stderr, isEmpty);
5555
expect(testResult.stdout, contains('All tests passed!'));
5656

57-
final testCoverageResult = await Process.run(
57+
// collect coverage
58+
await expectSuccessfulProcessResult(
59+
'dart',
60+
[
61+
'pub',
62+
'run',
63+
'coverage:format_coverage',
64+
'--lcov',
65+
'--in=coverage',
66+
'--out=coverage/lcov.info',
67+
'--packages=.dart_tool/package_config.json',
68+
'--report-on=lib',
69+
],
70+
workingDirectory: workingDirectory,
71+
);
72+
73+
final testCoverageResult = await expectSuccessfulProcessResult(
5874
'genhtml',
5975
['coverage/lcov.info', '-o', 'coverage'],
60-
workingDirectory: path.join(directory.path, 'very_good_dart_cli'),
61-
runInShell: true,
76+
workingDirectory: workingDirectory,
6277
);
63-
expect(testCoverageResult.exitCode, equals(ExitCode.success.code));
64-
expect(testCoverageResult.stderr, isEmpty);
6578
expect(testCoverageResult.stdout, contains('lines......: 100.0%'));
6679
}),
6780
timeout: const Timeout(Duration(minutes: 2)),

test/src/commands/create/e2e/dart_package/dart_pkg_test.dart

Lines changed: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -19,43 +19,56 @@ void main() {
1919
);
2020
expect(result, equals(ExitCode.success.code));
2121

22-
final formatResult = await Process.run(
22+
final workingDirectory = path.join(directory.path, 'very_good_dart');
23+
24+
// add coverage to collect coverage on dart test
25+
await expectSuccessfulProcessResult(
26+
'dart',
27+
['pub', 'add', 'coverage:1.2.0'],
28+
workingDirectory: workingDirectory,
29+
);
30+
31+
await expectSuccessfulProcessResult(
2332
'dart',
2433
['format', '--set-exit-if-changed', '.'],
25-
workingDirectory: path.join(directory.path, 'very_good_dart'),
26-
runInShell: true,
34+
workingDirectory: workingDirectory,
2735
);
28-
expect(formatResult.exitCode, equals(ExitCode.success.code));
29-
expect(formatResult.stderr, isEmpty);
3036

31-
final analyzeResult = await Process.run(
37+
final analyzeResult = await expectSuccessfulProcessResult(
3238
'flutter',
3339
['analyze', '.'],
34-
workingDirectory: path.join(directory.path, 'very_good_dart'),
35-
runInShell: true,
40+
workingDirectory: workingDirectory,
3641
);
37-
expect(analyzeResult.exitCode, equals(ExitCode.success.code));
38-
expect(analyzeResult.stderr, isEmpty);
3942
expect(analyzeResult.stdout, contains('No issues found!'));
4043

41-
final testResult = await Process.run(
42-
'flutter',
43-
['test', '--no-pub', '--coverage', '--reporter', 'compact'],
44-
workingDirectory: path.join(directory.path, 'very_good_dart'),
45-
runInShell: true,
44+
final testResult = await expectSuccessfulProcessResult(
45+
'dart',
46+
['test', '--coverage=coverage', '--reporter=compact'],
47+
workingDirectory: workingDirectory,
4648
);
47-
expect(testResult.exitCode, equals(ExitCode.success.code));
48-
expect(testResult.stderr, isEmpty);
4949
expect(testResult.stdout, contains('All tests passed!'));
5050

51-
final testCoverageResult = await Process.run(
51+
// collect coverage
52+
await expectSuccessfulProcessResult(
53+
'dart',
54+
[
55+
'pub',
56+
'run',
57+
'coverage:format_coverage',
58+
'--lcov',
59+
'--in=coverage',
60+
'--out=coverage/lcov.info',
61+
'--packages=.dart_tool/package_config.json',
62+
'--report-on=lib',
63+
],
64+
workingDirectory: workingDirectory,
65+
);
66+
67+
final testCoverageResult = await expectSuccessfulProcessResult(
5268
'genhtml',
5369
['coverage/lcov.info', '-o', 'coverage'],
54-
workingDirectory: path.join(directory.path, 'very_good_dart'),
55-
runInShell: true,
70+
workingDirectory: workingDirectory,
5671
);
57-
expect(testCoverageResult.exitCode, equals(ExitCode.success.code));
58-
expect(testCoverageResult.stderr, isEmpty);
5972
expect(testCoverageResult.stdout, contains('lines......: 100.0%'));
6073
}),
6174
timeout: const Timeout(Duration(minutes: 2)),

test/src/commands/create/e2e/docs_site/docs_site_test.dart

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -18,40 +18,32 @@ void main() {
1818
);
1919
expect(result, equals(ExitCode.success.code));
2020

21-
final installResult = await Process.run(
21+
final workingDirectory = path.join(directory.path, 'very_good_docs_site');
22+
23+
await expectSuccessfulProcessResult(
2224
'npm',
2325
['install'],
24-
workingDirectory: path.join(directory.path, 'very_good_docs_site'),
25-
runInShell: true,
26+
workingDirectory: workingDirectory,
27+
validateStderr: false,
2628
);
27-
expect(installResult.exitCode, equals(ExitCode.success.code));
2829

29-
final formatResult = await Process.run(
30+
await expectSuccessfulProcessResult(
3031
'npm',
3132
['run', 'format'],
32-
workingDirectory: path.join(directory.path, 'very_good_docs_site'),
33-
runInShell: true,
33+
workingDirectory: workingDirectory,
3434
);
35-
expect(formatResult.exitCode, equals(ExitCode.success.code));
36-
expect(formatResult.stderr, isEmpty);
3735

38-
final lintResult = await Process.run(
36+
await expectSuccessfulProcessResult(
3937
'npm',
4038
['run', 'lint'],
41-
workingDirectory: path.join(directory.path, 'very_good_docs_site'),
42-
runInShell: true,
39+
workingDirectory: workingDirectory,
4340
);
44-
expect(lintResult.exitCode, equals(ExitCode.success.code));
45-
expect(lintResult.stderr, isEmpty);
4641

47-
final buildResult = await Process.run(
42+
await expectSuccessfulProcessResult(
4843
'npm',
4944
['run', 'build'],
50-
workingDirectory: path.join(directory.path, 'very_good_docs_site'),
51-
runInShell: true,
45+
workingDirectory: workingDirectory,
5246
);
53-
expect(buildResult.exitCode, equals(ExitCode.success.code));
54-
expect(buildResult.stderr, isEmpty);
5547
}),
5648
timeout: const Timeout(Duration(minutes: 2)),
5749
);

test/src/commands/create/e2e/flame_game/flame_game_test.dart

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -26,43 +26,36 @@ void main() {
2626
);
2727
expect(result, equals(ExitCode.success.code));
2828

29-
final formatResult = await Process.run(
29+
final workingDirectory = path.join(
30+
directory.path,
31+
'very_good_flame_game',
32+
);
33+
34+
await expectSuccessfulProcessResult(
3035
'dart',
3136
['format', '--set-exit-if-changed', '.'],
32-
workingDirectory: path.join(directory.path, 'very_good_flame_game'),
33-
runInShell: true,
37+
workingDirectory: workingDirectory,
3438
);
35-
expect(formatResult.exitCode, equals(ExitCode.success.code));
36-
expect(formatResult.stderr, isEmpty);
3739

38-
final analyzeResult = await Process.run(
40+
final analyzeResult = await expectSuccessfulProcessResult(
3941
'flutter',
4042
['analyze', '.'],
41-
workingDirectory: path.join(directory.path, 'very_good_flame_game'),
42-
runInShell: true,
43+
workingDirectory: workingDirectory,
4344
);
44-
expect(analyzeResult.exitCode, equals(ExitCode.success.code));
45-
expect(analyzeResult.stderr, isEmpty);
4645
expect(analyzeResult.stdout, contains('No issues found!'));
4746

48-
final testResult = await Process.run(
47+
final testResult = await expectSuccessfulProcessResult(
4948
'flutter',
5049
['test', '--no-pub', '--coverage', '--reporter', 'compact'],
51-
workingDirectory: path.join(directory.path, 'very_good_flame_game'),
52-
runInShell: true,
50+
workingDirectory: workingDirectory,
5351
);
54-
expect(testResult.exitCode, equals(ExitCode.success.code));
55-
expect(testResult.stderr, isEmpty);
5652
expect(testResult.stdout, contains('All tests passed!'));
5753

58-
final testCoverageResult = await Process.run(
54+
final testCoverageResult = await expectSuccessfulProcessResult(
5955
'genhtml',
6056
['coverage/lcov.info', '-o', 'coverage'],
61-
workingDirectory: path.join(directory.path, 'very_good_flame_game'),
62-
runInShell: true,
57+
workingDirectory: workingDirectory,
6358
);
64-
expect(testCoverageResult.exitCode, equals(ExitCode.success.code));
65-
expect(testCoverageResult.stderr, isEmpty);
6659
expect(testCoverageResult.stdout, contains('lines......: 97.8%'));
6760
}),
6861
);

test/src/commands/create/e2e/flutter_app/core_test.dart

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -19,43 +19,33 @@ void main() {
1919
);
2020
expect(result, equals(ExitCode.success.code));
2121

22-
final formatResult = await Process.run(
22+
final workingDirectory = path.join(directory.path, 'very_good_core');
23+
24+
await expectSuccessfulProcessResult(
2325
'dart',
2426
['format', '--set-exit-if-changed', '.'],
25-
workingDirectory: path.join(directory.path, 'very_good_core'),
26-
runInShell: true,
27+
workingDirectory: workingDirectory,
2728
);
28-
expect(formatResult.exitCode, equals(ExitCode.success.code));
29-
expect(formatResult.stderr, isEmpty);
3029

31-
final analyzeResult = await Process.run(
30+
final analyzeResult = await expectSuccessfulProcessResult(
3231
'flutter',
3332
['analyze', '.'],
34-
workingDirectory: path.join(directory.path, 'very_good_core'),
35-
runInShell: true,
33+
workingDirectory: workingDirectory,
3634
);
37-
expect(analyzeResult.exitCode, equals(ExitCode.success.code));
38-
expect(analyzeResult.stderr, isEmpty);
3935
expect(analyzeResult.stdout, contains('No issues found!'));
4036

41-
final testResult = await Process.run(
37+
final testResult = await expectSuccessfulProcessResult(
4238
'flutter',
4339
['test', '--no-pub', '--coverage', '--reporter', 'compact'],
44-
workingDirectory: path.join(directory.path, 'very_good_core'),
45-
runInShell: true,
40+
workingDirectory: workingDirectory,
4641
);
47-
expect(testResult.exitCode, equals(ExitCode.success.code));
48-
expect(testResult.stderr, isEmpty);
4942
expect(testResult.stdout, contains('All tests passed!'));
5043

51-
final testCoverageResult = await Process.run(
44+
final testCoverageResult = await expectSuccessfulProcessResult(
5245
'genhtml',
5346
['coverage/lcov.info', '-o', 'coverage'],
54-
workingDirectory: path.join(directory.path, 'very_good_core'),
55-
runInShell: true,
47+
workingDirectory: workingDirectory,
5648
);
57-
expect(testCoverageResult.exitCode, equals(ExitCode.success.code));
58-
expect(testCoverageResult.stderr, isEmpty);
5949
expect(testCoverageResult.stdout, contains('lines......: 100.0%'));
6050
}),
6151
timeout: const Timeout(Duration(minutes: 2)),

0 commit comments

Comments
 (0)