diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 030dcf219..f0758326f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -53,7 +53,6 @@ jobs: DART_VERSION="${{ steps.setup-dart.outputs.dart-version }}" if [[ "$DART_VERSION" =~ ^3 ]]; then ./tool/delete_dart_2_only_files.sh - ./tool/update_tests_for_dart_3.sh # Stage these changes so they don't show up in the generated file `git diff` check below git add . fi @@ -146,7 +145,6 @@ jobs: DART_VERSION="${{ steps.setup-dart.outputs.dart-version }}" if [[ "$DART_VERSION" =~ ^3 ]]; then ./tool/delete_dart_2_only_files.sh - ./tool/update_tests_for_dart_3.sh fi - name: Analyze package source @@ -196,7 +194,7 @@ jobs: run: | DART_VERSION="${{ steps.setup-dart.outputs.dart-version }}" if [[ "$DART_VERSION" =~ ^3 ]]; then - (cd ../.. && ./tool/delete_dart_2_only_files.sh && ./tool/update_tests_for_dart_3.sh) + (cd ../.. && ./tool/delete_dart_2_only_files.sh) fi - name: Validate dependencies diff --git a/test/vm_tests/builder/over_react_builder_test.dart b/test/vm_tests/builder/over_react_builder_test.dart index 48c96b624..bc195a6da 100644 --- a/test/vm_tests/builder/over_react_builder_test.dart +++ b/test/vm_tests/builder/over_react_builder_test.dart @@ -13,199 +13,199 @@ // limitations under the License. @TestOn('vm') -import 'dart:async'; import 'dart:io'; -import 'package:build/build.dart'; -import 'package:build_resolvers/build_resolvers.dart'; -import 'package:build_test/build_test.dart'; -import 'package:collection/collection.dart' show IterableExtension; -import 'package:logging/logging.dart'; -import 'package:over_react/src/builder/builder.dart'; import 'package:path/path.dart' as p; import 'package:test/test.dart'; main() { group('overReactBuilder', () { - final builder = overReactBuilder(null); - final logger = Logger('overReactBuilderTestLogger'); - - // [1] Note: for this test code to analyze/run in Dart 3 with build_test 3.x, - // it needs to be temporarily modified to use new APIs. - // - // We do this in CI, and it can also be done during local development; - // see tool/update_tests_for_dart_3.sh. - // - // This is a workaround to us not being able to be compatible with build - // test 2.x and 3.x at the same time, and Dart 2 not being compatible with - // build_test 3.x. - - late AssetReader reader; - late InMemoryAssetWriter writer; // [1] - late AssetWriterSpy writerSpy; - late List logs; - - setUp(() async { - // [1] - reader = await PackageAssetReader.currentIsolate( - rootPackage: 'over_react', - ); + const testPackagePath = 'test_fixtures/test_packages/builder'; + late String testPackageName; + + late String outputDirectory; - writer = InMemoryAssetWriter(); // [1] - writerSpy = AssetWriterSpy(writer); + setUpAll(() { + Process.runSync('dart', ['pub', 'get'], workingDirectory: testPackagePath); + testPackageName = + RegExp('name: (.+)').firstMatch(File(p.join(testPackagePath, 'pubspec.yaml')).readAsStringSync())!.group(1)!; + outputDirectory = Directory.systemTemp.createTempSync().path; - logs = []; - final logSub = logger.onRecord.listen(logs.add); - addTearDown(logSub.cancel); + // Clean previous build + Process.runSync('dart', ['run', 'build_runner', 'clean'], workingDirectory: testPackagePath); }); - void verifyNoErrorLogs() { - expect(logs.where((log) => log.level >= Level.WARNING), isEmpty, - reason: 'Expected no logs at WARNING or SEVERE level, but got:\n' - '\t${logs.join('\n\t')}'); + /// Runs build_runner for a specific file, cleaning first. + ProcessResult buildFile(String sourceFilePath) { + // Build with filter for the specific file + return Process.runSync( + 'dart', + [ + 'run', + 'build_runner', + 'build', + '--verbose', + '--build-filter=lib/${sourceFilePath.replaceAll('.dart', '*.g.dart')}', + '--output=$outputDirectory' + ], + workingDirectory: testPackagePath); } - Future checkBuildForFile(String assetPath, String expectedOutputAssetPath, - String pathToGoldFile) async { - final inputAsset = makeAssetId(assetPath); + String generatedOutputPath(String sourceFilePath) { + return p.join( + outputDirectory, + 'packages', + testPackageName, + sourceFilePath.replaceAll('.dart', '.over_react.g.dart'), + ); + } + + /// Runs build_runner for a specific file and verifies the generated output matches the gold file. + Future checkBuildForFile(String sourceFilePath, String pathToGoldFile) async { + final build = buildFile(sourceFilePath); + + expect(build.exitCode, 0, + reason: 'build should have succeeded.' + '\nstdout: ${build.stdout}' + '\nstderr: ${build.stderr}'); + + // Read generated file + final expectedGeneratedFile = File(generatedOutputPath(sourceFilePath)); + expect(expectedGeneratedFile.existsSync(), isTrue, + reason: + 'File should have been generated: ${expectedGeneratedFile.path}.\n\nBuild output:\n${build.stdout}\n${build.stderr}'); + + // Compare with gold file final expectedContent = File(pathToGoldFile).readAsStringSync(); + final actualContent = expectedGeneratedFile.readAsStringSync(); + + expect(actualContent, expectedContent, reason: 'Generated file should match gold file'); + } - final expected = { - expectedOutputAssetPath : expectedContent - }; + /// Runs build_runner for a specific file and verifies no output is generated. + Future checkNoOutputForFile(String sourceFilePath) async { + final build = buildFile(sourceFilePath); - await runBuilder(builder, [inputAsset], reader, writerSpy, AnalyzerResolvers(), logger: logger); - final actual = writerSpy.assetsWritten; + expect(build.exitCode, 0, + reason: 'build should have succeeded.' + '\nstdout: ${build.stdout}' + '\nstderr: ${build.stderr}'); - checkOutputs(expected, actual, writer); - verifyNoErrorLogs(); + // Verify no generated file exists + final expectedGeneratedFile = File(generatedOutputPath(sourceFilePath)); + expect(expectedGeneratedFile.existsSync(), isFalse, + reason: 'File should not have been generated: ${expectedGeneratedFile.path}'); } - test('does not produce a build output for a file with no over_react annotations', () async { - var basicAsset = makeAssetId('over_react|test_fixtures/source_files/no_annotations.dart'); - await runBuilder(builder, [basicAsset], reader, writerSpy, AnalyzerResolvers(), logger: logger); + /// Runs build_runner for a specific file and verifies a warning appears in the output. + Future checkWarningForFile(String sourceFilePath, String expectedWarning) async { + final build = buildFile(sourceFilePath); + + // Check for expected warning in output + expect('${build.stdout}${build.stderr}', contains(expectedWarning), + reason: 'Expected warning not found in build output'); + + expect(build.exitCode, 0, + reason: 'build should have succeeded.' + '\nstdout: ${build.stdout}' + '\nstderr: ${build.stderr}'); + } + + /// Runs build_runner for a specific file and verifies a severe error appears in the output. + Future checkSevereErrorForFile(String sourceFilePath, String expectedError) async { + final build = buildFile(sourceFilePath); - expect(writerSpy.assetsWritten, isEmpty); - verifyNoErrorLogs(); + // Check for expected error in output + expect('${build.stdout}${build.stderr}', contains(expectedError), + reason: 'Expected error not found in build output'); + + expect(build.exitCode, 1, + reason: 'build should have failed.' + '\nstdout: ${build.stdout}' + '\nstderr: ${build.stderr}'); + } + + test('does not produce a build output for a file with no over_react annotations', () async { + await checkNoOutputForFile('no_annotations.dart'); }); - test('warns if .over_react.g.dart part directive is present and no declarations are present, but no code is generated', () async { - var libraryAsset = makeAssetId('over_react|test_fixtures/source_files/has_part_directive_missing_gen/no_declarations.dart'); - await runBuilder(builder, [libraryAsset], reader, writerSpy, AnalyzerResolvers(), logger: logger); - final expectedWarning = logs.firstWhereOrNull((log) { - return log.level == Level.WARNING && log.message == 'An over_react part directive was found in test_fixtures/source_files/has_part_directive_missing_gen/no_declarations.dart, but no code was generated. The part directive may be unnecessary if the file does not contain any concrete components or abstract state/props classes.'; - }); - expect(expectedWarning, isNotNull, - reason: 'Expected a WARNING log for a part directive being present in a file with no generated output.'); + test( + 'warns if .over_react.g.dart part directive is present and no declarations are present, but no code is generated', + () async { + await checkWarningForFile('has_part_directive_missing_gen/no_declarations.dart', + 'An over_react part directive was found in lib/has_part_directive_missing_gen/no_declarations.dart, but no code was generated.'); }); - test('warns if .over_react.g.dart part directive is present and declarations are present, but no code is generated', () async { - var libraryAsset = makeAssetId('over_react|test_fixtures/source_files/has_part_directive_missing_gen/with_declarations.dart'); - await runBuilder(builder, [libraryAsset], reader, writerSpy, AnalyzerResolvers(), logger: logger); - final expectedWarning = logs.firstWhereOrNull((log) { - return log.level == Level.WARNING && log.message == 'An over_react part directive was found in test_fixtures/source_files/has_part_directive_missing_gen/with_declarations.dart, but no code was generated. The part directive may be unnecessary if the file does not contain any concrete components or abstract state/props classes.'; - }); - expect(expectedWarning, isNotNull, - reason: 'Expected a WARNING log for a part directive being present in a file with no generated output.'); + test('warns if .over_react.g.dart part directive is present and declarations are present, but no code is generated', + () async { + await checkWarningForFile('has_part_directive_missing_gen/with_declarations.dart', + 'An over_react part directive was found in lib/has_part_directive_missing_gen/with_declarations.dart, but no code was generated.'); }); group('for backwards compatible boilerplate:', () { test('builds from basic component file', () async { - await checkBuildForFile( - 'over_react|test_fixtures/source_files/backwards_compatible/basic.dart', - 'over_react|test_fixtures/source_files/backwards_compatible/basic.over_react.g.dart', + await checkBuildForFile('backwards_compatible/basic.dart', '${p.absolute(p.current)}/test_fixtures/gold_output_files/backwards_compatible/basic.over_react.g.dart.goldFile'); }); test('builds from basic multi-part library', () async { - await checkBuildForFile( - 'over_react|test_fixtures/source_files/backwards_compatible/basic_library.dart', - 'over_react|test_fixtures/source_files/backwards_compatible/basic_library.over_react.g.dart', + await checkBuildForFile('backwards_compatible/basic_library.dart', '${p.absolute(p.current)}/test_fixtures/gold_output_files/backwards_compatible/basic_library.over_react.g.dart.goldFile'); }); test('builds for props mixins', () async { - await checkBuildForFile( - 'over_react|test_fixtures/source_files/backwards_compatible/props_mixin.dart', - 'over_react|test_fixtures/source_files/backwards_compatible/props_mixin.over_react.g.dart', + await checkBuildForFile('backwards_compatible/props_mixin.dart', '${p.absolute(p.current)}/test_fixtures/gold_output_files/backwards_compatible/props_mixin.over_react.g.dart.goldFile'); }); test('builds for state mixins', () async { - await checkBuildForFile( - 'over_react|test_fixtures/source_files/backwards_compatible/state_mixin.dart', - 'over_react|test_fixtures/source_files/backwards_compatible/state_mixin.over_react.g.dart', + await checkBuildForFile('backwards_compatible/state_mixin.dart', '${p.absolute(p.current)}/test_fixtures/gold_output_files/backwards_compatible/state_mixin.over_react.g.dart.goldFile'); }); test('does not produce a build output for just a part file', () async { - var basicAsset = makeAssetId('over_react|test_fixtures/source_files/backwards_compatible/part_of_basic_library.dart'); - await runBuilder(builder, [basicAsset], reader, writerSpy, AnalyzerResolvers(), logger: logger); - - expect(writerSpy.assetsWritten, isEmpty); - verifyNoErrorLogs(); + await checkNoOutputForFile('backwards_compatible/part_of_basic_library.dart'); }); }); group('for Dart 2 only compatible boilerplate:', () { test('builds from basic component file', () async { - await checkBuildForFile( - 'over_react|test_fixtures/source_files/dart2_only/basic.dart', - 'over_react|test_fixtures/source_files/dart2_only/basic.over_react.g.dart', + await checkBuildForFile('dart2_only/basic.dart', '${p.absolute(p.current)}/test_fixtures/gold_output_files/dart2_only/basic.over_react.g.dart.goldFile'); }); test('builds from basic multi-part library', () async { - await checkBuildForFile( - 'over_react|test_fixtures/source_files/dart2_only/basic_library.dart', - 'over_react|test_fixtures/source_files/dart2_only/basic_library.over_react.g.dart', + await checkBuildForFile('dart2_only/basic_library.dart', '${p.absolute(p.current)}/test_fixtures/gold_output_files/dart2_only/basic_library.over_react.g.dart.goldFile'); }); test('builds for props mixins', () async { - await checkBuildForFile( - 'over_react|test_fixtures/source_files/dart2_only/props_mixin.dart', - 'over_react|test_fixtures/source_files/dart2_only/props_mixin.over_react.g.dart', + await checkBuildForFile('dart2_only/props_mixin.dart', '${p.absolute(p.current)}/test_fixtures/gold_output_files/dart2_only/props_mixin.over_react.g.dart.goldFile'); }); test('builds for state mixins', () async { - await checkBuildForFile( - 'over_react|test_fixtures/source_files/dart2_only/state_mixin.dart', - 'over_react|test_fixtures/source_files/dart2_only/state_mixin.over_react.g.dart', + await checkBuildForFile('dart2_only/state_mixin.dart', '${p.absolute(p.current)}/test_fixtures/gold_output_files/dart2_only/state_mixin.over_react.g.dart.goldFile'); }); test('does not produce a build output for just a part file', () async { - var basicAsset = makeAssetId('over_react|test_fixtures/source_files/dart2_only/part_of_basic_library.dart'); - await runBuilder(builder, [basicAsset], reader, writerSpy, AnalyzerResolvers(), logger: logger); - - expect(writerSpy.assetsWritten, isEmpty); - verifyNoErrorLogs(); + await checkNoOutputForFile('dart2_only/part_of_basic_library.dart'); }); test('fails if the .over_react.g.dart part directive is missing', () async { - var libraryAsset = makeAssetId('over_react|test_fixtures/source_files/dart2_only/missing_over_react_g_part/library.dart'); - await runBuilder(builder, [libraryAsset], reader, writerSpy, AnalyzerResolvers(), logger: logger); - final expectedLog = logs.firstWhereOrNull((log) { - return log.level == Level.SEVERE && log.message == 'Missing "part \'library.over_react.g.dart\';".'; - }); - expect(expectedLog, isNotNull, - reason: 'Expected a SEVERE log for the missing over_react part.'); + await checkSevereErrorForFile( + 'dart2_only/missing_over_react_g_part/library.dart', 'Missing "part \'library.over_react.g.dart\';".'); }); group('for Component2:', () { test('builds from basic component file', () async { - await checkBuildForFile( - 'over_react|test_fixtures/source_files/dart2_only/component2/basic.dart', - 'over_react|test_fixtures/source_files/dart2_only/component2/basic.over_react.g.dart', + await checkBuildForFile('dart2_only/component2/basic.dart', '${p.absolute(p.current)}/test_fixtures/gold_output_files/dart2_only/component2/basic.over_react.g.dart.goldFile'); }); test('builds from basic multi-part library', () async { - await checkBuildForFile( - 'over_react|test_fixtures/source_files/dart2_only/component2/basic_library.dart', - 'over_react|test_fixtures/source_files/dart2_only/component2/basic_library.over_react.g.dart', + await checkBuildForFile('dart2_only/component2/basic_library.dart', '${p.absolute(p.current)}/test_fixtures/gold_output_files/dart2_only/component2/basic_library.over_react.g.dart.goldFile'); }); }); @@ -213,63 +213,42 @@ main() { group('for mixin based boilerplate:', () { test('builds from basic component file', () async { - await checkBuildForFile( - 'over_react|test_fixtures/source_files/mixin_based/basic.dart', - 'over_react|test_fixtures/source_files/mixin_based/basic.over_react.g.dart', + await checkBuildForFile('mixin_based/basic.dart', '${p.absolute(p.current)}/test_fixtures/gold_output_files/mixin_based/basic.over_react.g.dart.goldFile'); }); test('builds from basic component file using Dart >=2.9.0 syntax', () async { - await checkBuildForFile( - 'over_react|test_fixtures/source_files/mixin_based/basic_two_nine.dart', - 'over_react|test_fixtures/source_files/mixin_based/basic_two_nine.over_react.g.dart', + await checkBuildForFile('mixin_based/basic_two_nine.dart', '${p.absolute(p.current)}/test_fixtures/gold_output_files/mixin_based/basic_two_nine.over_react.g.dart.goldFile'); }); test('builds from basic multi-part library', () async { - await checkBuildForFile( - 'over_react|test_fixtures/source_files/mixin_based/basic_library.dart', - 'over_react|test_fixtures/source_files/mixin_based/basic_library.over_react.g.dart', + await checkBuildForFile('mixin_based/basic_library.dart', '${p.absolute(p.current)}/test_fixtures/gold_output_files/mixin_based/basic_library.over_react.g.dart.goldFile'); }); test('builds when props mixins and classes have type parameters', () async { - await checkBuildForFile( - 'over_react|test_fixtures/source_files/mixin_based/type_parameters.dart', - 'over_react|test_fixtures/source_files/mixin_based/type_parameters.over_react.g.dart', + await checkBuildForFile('mixin_based/type_parameters.dart', '${p.absolute(p.current)}/test_fixtures/gold_output_files/mixin_based/type_parameters.over_react.g.dart.goldFile'); }); test('builds for props mixins', () async { - await checkBuildForFile( - 'over_react|test_fixtures/source_files/mixin_based/props_mixin.dart', - 'over_react|test_fixtures/source_files/mixin_based/props_mixin.over_react.g.dart', + await checkBuildForFile('mixin_based/props_mixin.dart', '${p.absolute(p.current)}/test_fixtures/gold_output_files/mixin_based/props_mixin.over_react.g.dart.goldFile'); }); test('builds for state mixins', () async { - await checkBuildForFile( - 'over_react|test_fixtures/source_files/mixin_based/state_mixin.dart', - 'over_react|test_fixtures/source_files/mixin_based/state_mixin.over_react.g.dart', + await checkBuildForFile('mixin_based/state_mixin.dart', '${p.absolute(p.current)}/test_fixtures/gold_output_files/mixin_based/state_mixin.over_react.g.dart.goldFile'); }); test('does not produce a build output for just a part file', () async { - var basicAsset = makeAssetId('over_react|test_fixtures/source_files/mixin_based/part_of_basic_library.dart'); - await runBuilder(builder, [basicAsset], reader, writerSpy, AnalyzerResolvers(), logger: logger); - - expect(writerSpy.assetsWritten, isEmpty); - verifyNoErrorLogs(); + await checkNoOutputForFile('mixin_based/part_of_basic_library.dart'); }); test('fails if the .over_react.g.dart part directive is missing', () async { - var libraryAsset = makeAssetId('over_react|test_fixtures/source_files/mixin_based/missing_over_react_g_part/library.dart'); - await runBuilder(builder, [libraryAsset], reader, writerSpy, AnalyzerResolvers(), logger: logger); - final expectedLog = logs.firstWhereOrNull((log) { - return log.level == Level.SEVERE && log.message == 'Missing "part \'library.over_react.g.dart\';".'; - }); - expect(expectedLog, isNotNull, - reason: 'Expected a SEVERE log for the missing over_react part.'); + await checkSevereErrorForFile( + 'mixin_based/missing_over_react_g_part/library.dart', 'Missing "part \'library.over_react.g.dart\';".'); }); }); }); diff --git a/test_fixtures/gold_output_files/README.md b/test_fixtures/gold_output_files/README.md index d44e8a763..51ce5a883 100644 --- a/test_fixtures/gold_output_files/README.md +++ b/test_fixtures/gold_output_files/README.md @@ -4,8 +4,3 @@ To re-generate the gold files in this directory using the over_react builder, ru ```sh dart tool/update_gold_output_files.dart ``` - -If that deletes other generated files throughout over_react (which usually only happens after it prompts you about conflicting outputs), you can restore them by running a build: -```sh -dart run build_runner build -``` diff --git a/test_fixtures/gold_output_files/backwards_compatible/basic.over_react.g.dart.goldFile b/test_fixtures/gold_output_files/backwards_compatible/basic.over_react.g.dart.goldFile index c9dad6aeb..55e7ae951 100644 --- a/test_fixtures/gold_output_files/backwards_compatible/basic.over_react.g.dart.goldFile +++ b/test_fixtures/gold_output_files/backwards_compatible/basic.over_react.g.dart.goldFile @@ -6,6 +6,8 @@ part of 'basic.dart'; // ************************************************************************** // OverReactBuilder (package:over_react/src/builder.dart) +// +// Using nullSafety: false. {languageVersion: 2.11, source: libraryVersionComment} // ************************************************************************** // React component factory implementation. diff --git a/test_fixtures/gold_output_files/backwards_compatible/basic_library.over_react.g.dart.goldFile b/test_fixtures/gold_output_files/backwards_compatible/basic_library.over_react.g.dart.goldFile index 0604d488c..a9e9ba62a 100644 --- a/test_fixtures/gold_output_files/backwards_compatible/basic_library.over_react.g.dart.goldFile +++ b/test_fixtures/gold_output_files/backwards_compatible/basic_library.over_react.g.dart.goldFile @@ -6,6 +6,8 @@ part of 'basic_library.dart'; // ************************************************************************** // OverReactBuilder (package:over_react/src/builder.dart) +// +// Using nullSafety: false. {languageVersion: 2.11, source: libraryVersionComment} // ************************************************************************** // React component factory implementation. diff --git a/test_fixtures/gold_output_files/backwards_compatible/props_mixin.over_react.g.dart.goldFile b/test_fixtures/gold_output_files/backwards_compatible/props_mixin.over_react.g.dart.goldFile index fb38d2d70..ebc38bc05 100644 --- a/test_fixtures/gold_output_files/backwards_compatible/props_mixin.over_react.g.dart.goldFile +++ b/test_fixtures/gold_output_files/backwards_compatible/props_mixin.over_react.g.dart.goldFile @@ -6,6 +6,8 @@ part of 'props_mixin.dart'; // ************************************************************************** // OverReactBuilder (package:over_react/src/builder.dart) +// +// Using nullSafety: false. {languageVersion: 2.11, source: libraryVersionComment} // ************************************************************************** mixin $ExamplePropsMixinClass implements ExamplePropsMixinClass { diff --git a/test_fixtures/gold_output_files/backwards_compatible/state_mixin.over_react.g.dart.goldFile b/test_fixtures/gold_output_files/backwards_compatible/state_mixin.over_react.g.dart.goldFile index 50441b831..694b687b8 100644 --- a/test_fixtures/gold_output_files/backwards_compatible/state_mixin.over_react.g.dart.goldFile +++ b/test_fixtures/gold_output_files/backwards_compatible/state_mixin.over_react.g.dart.goldFile @@ -6,6 +6,8 @@ part of 'state_mixin.dart'; // ************************************************************************** // OverReactBuilder (package:over_react/src/builder.dart) +// +// Using nullSafety: false. {languageVersion: 2.11, source: libraryVersionComment} // ************************************************************************** mixin $ExampleStateMixinClass implements ExampleStateMixinClass { diff --git a/test_fixtures/gold_output_files/dart2_only/basic.over_react.g.dart.goldFile b/test_fixtures/gold_output_files/dart2_only/basic.over_react.g.dart.goldFile index 23cc8811c..e0ffcf49d 100644 --- a/test_fixtures/gold_output_files/dart2_only/basic.over_react.g.dart.goldFile +++ b/test_fixtures/gold_output_files/dart2_only/basic.over_react.g.dart.goldFile @@ -6,6 +6,8 @@ part of 'basic.dart'; // ************************************************************************** // OverReactBuilder (package:over_react/src/builder.dart) +// +// Using nullSafety: false. {languageVersion: 2.11, source: libraryVersionComment} // ************************************************************************** // React component factory implementation. diff --git a/test_fixtures/gold_output_files/dart2_only/basic_library.over_react.g.dart.goldFile b/test_fixtures/gold_output_files/dart2_only/basic_library.over_react.g.dart.goldFile index 1241e104c..7091f3ed6 100644 --- a/test_fixtures/gold_output_files/dart2_only/basic_library.over_react.g.dart.goldFile +++ b/test_fixtures/gold_output_files/dart2_only/basic_library.over_react.g.dart.goldFile @@ -6,6 +6,8 @@ part of 'basic_library.dart'; // ************************************************************************** // OverReactBuilder (package:over_react/src/builder.dart) +// +// Using nullSafety: false. {languageVersion: 2.11, source: libraryVersionComment} // ************************************************************************** // React component factory implementation. diff --git a/test_fixtures/gold_output_files/dart2_only/component2/basic.over_react.g.dart.goldFile b/test_fixtures/gold_output_files/dart2_only/component2/basic.over_react.g.dart.goldFile index 33eacf32d..bc240ca45 100644 --- a/test_fixtures/gold_output_files/dart2_only/component2/basic.over_react.g.dart.goldFile +++ b/test_fixtures/gold_output_files/dart2_only/component2/basic.over_react.g.dart.goldFile @@ -6,6 +6,8 @@ part of 'basic.dart'; // ************************************************************************** // OverReactBuilder (package:over_react/src/builder.dart) +// +// Using nullSafety: false. {languageVersion: 2.11, source: libraryVersionComment} // ************************************************************************** // React component factory implementation. diff --git a/test_fixtures/gold_output_files/dart2_only/component2/basic_library.over_react.g.dart.goldFile b/test_fixtures/gold_output_files/dart2_only/component2/basic_library.over_react.g.dart.goldFile index 133328db7..9d85fb827 100644 --- a/test_fixtures/gold_output_files/dart2_only/component2/basic_library.over_react.g.dart.goldFile +++ b/test_fixtures/gold_output_files/dart2_only/component2/basic_library.over_react.g.dart.goldFile @@ -6,6 +6,8 @@ part of 'basic_library.dart'; // ************************************************************************** // OverReactBuilder (package:over_react/src/builder.dart) +// +// Using nullSafety: false. {languageVersion: 2.11, source: libraryVersionComment} // ************************************************************************** // React component factory implementation. diff --git a/test_fixtures/gold_output_files/dart2_only/missing_over_react_g_part/library.over_react.g.dart.goldFile b/test_fixtures/gold_output_files/dart2_only/missing_over_react_g_part/library.over_react.g.dart.goldFile index c5a5cfaab..80b499df2 100644 --- a/test_fixtures/gold_output_files/dart2_only/missing_over_react_g_part/library.over_react.g.dart.goldFile +++ b/test_fixtures/gold_output_files/dart2_only/missing_over_react_g_part/library.over_react.g.dart.goldFile @@ -6,6 +6,8 @@ part of 'library.dart'; // ************************************************************************** // OverReactBuilder (package:over_react/src/builder.dart) +// +// Using nullSafety: false. {languageVersion: 2.11, source: libraryVersionComment} // ************************************************************************** // React component factory implementation. diff --git a/test_fixtures/gold_output_files/dart2_only/props_mixin.over_react.g.dart.goldFile b/test_fixtures/gold_output_files/dart2_only/props_mixin.over_react.g.dart.goldFile index fcbc1480f..699e1b137 100644 --- a/test_fixtures/gold_output_files/dart2_only/props_mixin.over_react.g.dart.goldFile +++ b/test_fixtures/gold_output_files/dart2_only/props_mixin.over_react.g.dart.goldFile @@ -6,6 +6,8 @@ part of 'props_mixin.dart'; // ************************************************************************** // OverReactBuilder (package:over_react/src/builder.dart) +// +// Using nullSafety: false. {languageVersion: 2.11, source: libraryVersionComment} // ************************************************************************** @deprecated diff --git a/test_fixtures/gold_output_files/dart2_only/state_mixin.over_react.g.dart.goldFile b/test_fixtures/gold_output_files/dart2_only/state_mixin.over_react.g.dart.goldFile index 9b9ae55ba..654217512 100644 --- a/test_fixtures/gold_output_files/dart2_only/state_mixin.over_react.g.dart.goldFile +++ b/test_fixtures/gold_output_files/dart2_only/state_mixin.over_react.g.dart.goldFile @@ -6,6 +6,8 @@ part of 'state_mixin.dart'; // ************************************************************************** // OverReactBuilder (package:over_react/src/builder.dart) +// +// Using nullSafety: false. {languageVersion: 2.11, source: libraryVersionComment} // ************************************************************************** @deprecated diff --git a/test_fixtures/gold_output_files/mixin_based/basic.over_react.g.dart.goldFile b/test_fixtures/gold_output_files/mixin_based/basic.over_react.g.dart.goldFile index 60832ea4d..c3bb17214 100644 --- a/test_fixtures/gold_output_files/mixin_based/basic.over_react.g.dart.goldFile +++ b/test_fixtures/gold_output_files/mixin_based/basic.over_react.g.dart.goldFile @@ -6,6 +6,8 @@ part of 'basic.dart'; // ************************************************************************** // OverReactBuilder (package:over_react/src/builder.dart) +// +// Using nullSafety: false. {languageVersion: 2.11, source: libraryVersionComment} // ************************************************************************** // React component factory implementation. diff --git a/test_fixtures/gold_output_files/mixin_based/basic_library.over_react.g.dart.goldFile b/test_fixtures/gold_output_files/mixin_based/basic_library.over_react.g.dart.goldFile index ee8e5dbb1..0f2a0c1d5 100644 --- a/test_fixtures/gold_output_files/mixin_based/basic_library.over_react.g.dart.goldFile +++ b/test_fixtures/gold_output_files/mixin_based/basic_library.over_react.g.dart.goldFile @@ -6,6 +6,8 @@ part of 'basic_library.dart'; // ************************************************************************** // OverReactBuilder (package:over_react/src/builder.dart) +// +// Using nullSafety: false. {languageVersion: 2.11, source: libraryVersionComment} // ************************************************************************** // React component factory implementation. diff --git a/test_fixtures/gold_output_files/mixin_based/basic_two_nine.over_react.g.dart.goldFile b/test_fixtures/gold_output_files/mixin_based/basic_two_nine.over_react.g.dart.goldFile index 7d886e85d..e2544b8c6 100644 --- a/test_fixtures/gold_output_files/mixin_based/basic_two_nine.over_react.g.dart.goldFile +++ b/test_fixtures/gold_output_files/mixin_based/basic_two_nine.over_react.g.dart.goldFile @@ -6,6 +6,8 @@ part of 'basic_two_nine.dart'; // ************************************************************************** // OverReactBuilder (package:over_react/src/builder.dart) +// +// Using nullSafety: false. {languageVersion: 2.11, source: libraryVersionComment} // ************************************************************************** // React component factory implementation. diff --git a/test_fixtures/gold_output_files/mixin_based/missing_over_react_g_part/library.over_react.g.dart.goldFile b/test_fixtures/gold_output_files/mixin_based/missing_over_react_g_part/library.over_react.g.dart.goldFile index c5a17450f..427f3bb1d 100644 --- a/test_fixtures/gold_output_files/mixin_based/missing_over_react_g_part/library.over_react.g.dart.goldFile +++ b/test_fixtures/gold_output_files/mixin_based/missing_over_react_g_part/library.over_react.g.dart.goldFile @@ -6,6 +6,8 @@ part of 'library.dart'; // ************************************************************************** // OverReactBuilder (package:over_react/src/builder.dart) +// +// Using nullSafety: false. {languageVersion: 2.11, source: libraryVersionComment} // ************************************************************************** // React component factory implementation. diff --git a/test_fixtures/gold_output_files/mixin_based/props_mixin.over_react.g.dart.goldFile b/test_fixtures/gold_output_files/mixin_based/props_mixin.over_react.g.dart.goldFile index ebfd5ee4f..227063fcd 100644 --- a/test_fixtures/gold_output_files/mixin_based/props_mixin.over_react.g.dart.goldFile +++ b/test_fixtures/gold_output_files/mixin_based/props_mixin.over_react.g.dart.goldFile @@ -6,6 +6,8 @@ part of 'props_mixin.dart'; // ************************************************************************** // OverReactBuilder (package:over_react/src/builder.dart) +// +// Using nullSafety: false. {languageVersion: 2.11, source: libraryVersionComment} // ************************************************************************** @Deprecated('This API is for use only within generated code.' diff --git a/test_fixtures/gold_output_files/mixin_based/state_mixin.over_react.g.dart.goldFile b/test_fixtures/gold_output_files/mixin_based/state_mixin.over_react.g.dart.goldFile index 205f3a9b7..9adca711a 100644 --- a/test_fixtures/gold_output_files/mixin_based/state_mixin.over_react.g.dart.goldFile +++ b/test_fixtures/gold_output_files/mixin_based/state_mixin.over_react.g.dart.goldFile @@ -6,6 +6,8 @@ part of 'state_mixin.dart'; // ************************************************************************** // OverReactBuilder (package:over_react/src/builder.dart) +// +// Using nullSafety: false. {languageVersion: 2.11, source: libraryVersionComment} // ************************************************************************** @Deprecated('This API is for use only within generated code.' diff --git a/test_fixtures/gold_output_files/mixin_based/two_nine_with_multiple_factories.over_react.g.dart.goldfile b/test_fixtures/gold_output_files/mixin_based/two_nine_with_multiple_factories.over_react.g.dart.goldfile index 2a7de8bf5..7998b508f 100644 --- a/test_fixtures/gold_output_files/mixin_based/two_nine_with_multiple_factories.over_react.g.dart.goldfile +++ b/test_fixtures/gold_output_files/mixin_based/two_nine_with_multiple_factories.over_react.g.dart.goldfile @@ -6,6 +6,8 @@ part of 'two_nine_with_multiple_factories.dart'; // ************************************************************************** // OverReactBuilder (package:over_react/src/builder.dart) +// +// Using nullSafety: false. {languageVersion: 2.11, source: libraryVersionComment} // ************************************************************************** // React component factory implementation. diff --git a/test_fixtures/gold_output_files/mixin_based/type_parameters.over_react.g.dart.goldFile b/test_fixtures/gold_output_files/mixin_based/type_parameters.over_react.g.dart.goldFile index 54b22a581..07ffd9eba 100644 --- a/test_fixtures/gold_output_files/mixin_based/type_parameters.over_react.g.dart.goldFile +++ b/test_fixtures/gold_output_files/mixin_based/type_parameters.over_react.g.dart.goldFile @@ -6,6 +6,8 @@ part of 'type_parameters.dart'; // ************************************************************************** // OverReactBuilder (package:over_react/src/builder.dart) +// +// Using nullSafety: false. {languageVersion: 2.11, source: libraryVersionComment} // ************************************************************************** @Deprecated('This API is for use only within generated code.' diff --git a/test_fixtures/test_packages/builder/analysis_options.yaml b/test_fixtures/test_packages/builder/analysis_options.yaml new file mode 100644 index 000000000..e69de29bb diff --git a/test_fixtures/source_files/backwards_compatible/basic.dart b/test_fixtures/test_packages/builder/lib/backwards_compatible/basic.dart similarity index 100% rename from test_fixtures/source_files/backwards_compatible/basic.dart rename to test_fixtures/test_packages/builder/lib/backwards_compatible/basic.dart diff --git a/test_fixtures/source_files/backwards_compatible/basic_library.dart b/test_fixtures/test_packages/builder/lib/backwards_compatible/basic_library.dart similarity index 100% rename from test_fixtures/source_files/backwards_compatible/basic_library.dart rename to test_fixtures/test_packages/builder/lib/backwards_compatible/basic_library.dart diff --git a/test_fixtures/source_files/backwards_compatible/part_of_basic_library.dart b/test_fixtures/test_packages/builder/lib/backwards_compatible/part_of_basic_library.dart similarity index 100% rename from test_fixtures/source_files/backwards_compatible/part_of_basic_library.dart rename to test_fixtures/test_packages/builder/lib/backwards_compatible/part_of_basic_library.dart diff --git a/test_fixtures/source_files/backwards_compatible/part_of_basic_library_2.dart b/test_fixtures/test_packages/builder/lib/backwards_compatible/part_of_basic_library_2.dart similarity index 100% rename from test_fixtures/source_files/backwards_compatible/part_of_basic_library_2.dart rename to test_fixtures/test_packages/builder/lib/backwards_compatible/part_of_basic_library_2.dart diff --git a/test_fixtures/source_files/backwards_compatible/props_mixin.dart b/test_fixtures/test_packages/builder/lib/backwards_compatible/props_mixin.dart similarity index 100% rename from test_fixtures/source_files/backwards_compatible/props_mixin.dart rename to test_fixtures/test_packages/builder/lib/backwards_compatible/props_mixin.dart diff --git a/test_fixtures/source_files/backwards_compatible/state_mixin.dart b/test_fixtures/test_packages/builder/lib/backwards_compatible/state_mixin.dart similarity index 100% rename from test_fixtures/source_files/backwards_compatible/state_mixin.dart rename to test_fixtures/test_packages/builder/lib/backwards_compatible/state_mixin.dart diff --git a/test_fixtures/source_files/dart2_only/basic.dart b/test_fixtures/test_packages/builder/lib/dart2_only/basic.dart similarity index 100% rename from test_fixtures/source_files/dart2_only/basic.dart rename to test_fixtures/test_packages/builder/lib/dart2_only/basic.dart diff --git a/test_fixtures/source_files/dart2_only/basic_library.dart b/test_fixtures/test_packages/builder/lib/dart2_only/basic_library.dart similarity index 100% rename from test_fixtures/source_files/dart2_only/basic_library.dart rename to test_fixtures/test_packages/builder/lib/dart2_only/basic_library.dart diff --git a/test_fixtures/source_files/dart2_only/component2/basic.dart b/test_fixtures/test_packages/builder/lib/dart2_only/component2/basic.dart similarity index 100% rename from test_fixtures/source_files/dart2_only/component2/basic.dart rename to test_fixtures/test_packages/builder/lib/dart2_only/component2/basic.dart diff --git a/test_fixtures/source_files/dart2_only/component2/basic_library.dart b/test_fixtures/test_packages/builder/lib/dart2_only/component2/basic_library.dart similarity index 100% rename from test_fixtures/source_files/dart2_only/component2/basic_library.dart rename to test_fixtures/test_packages/builder/lib/dart2_only/component2/basic_library.dart diff --git a/test_fixtures/source_files/dart2_only/component2/part_of_basic_library.dart b/test_fixtures/test_packages/builder/lib/dart2_only/component2/part_of_basic_library.dart similarity index 100% rename from test_fixtures/source_files/dart2_only/component2/part_of_basic_library.dart rename to test_fixtures/test_packages/builder/lib/dart2_only/component2/part_of_basic_library.dart diff --git a/test_fixtures/source_files/dart2_only/component2/part_of_basic_library_2.dart b/test_fixtures/test_packages/builder/lib/dart2_only/component2/part_of_basic_library_2.dart similarity index 100% rename from test_fixtures/source_files/dart2_only/component2/part_of_basic_library_2.dart rename to test_fixtures/test_packages/builder/lib/dart2_only/component2/part_of_basic_library_2.dart diff --git a/test_fixtures/source_files/dart2_only/missing_over_react_g_part/library.dart b/test_fixtures/test_packages/builder/lib/dart2_only/missing_over_react_g_part/library.dart similarity index 100% rename from test_fixtures/source_files/dart2_only/missing_over_react_g_part/library.dart rename to test_fixtures/test_packages/builder/lib/dart2_only/missing_over_react_g_part/library.dart diff --git a/test_fixtures/source_files/dart2_only/missing_over_react_g_part/part.dart b/test_fixtures/test_packages/builder/lib/dart2_only/missing_over_react_g_part/part.dart similarity index 100% rename from test_fixtures/source_files/dart2_only/missing_over_react_g_part/part.dart rename to test_fixtures/test_packages/builder/lib/dart2_only/missing_over_react_g_part/part.dart diff --git a/test_fixtures/source_files/dart2_only/part_of_basic_library.dart b/test_fixtures/test_packages/builder/lib/dart2_only/part_of_basic_library.dart similarity index 100% rename from test_fixtures/source_files/dart2_only/part_of_basic_library.dart rename to test_fixtures/test_packages/builder/lib/dart2_only/part_of_basic_library.dart diff --git a/test_fixtures/source_files/dart2_only/part_of_basic_library.g.dart b/test_fixtures/test_packages/builder/lib/dart2_only/part_of_basic_library.g.dart similarity index 100% rename from test_fixtures/source_files/dart2_only/part_of_basic_library.g.dart rename to test_fixtures/test_packages/builder/lib/dart2_only/part_of_basic_library.g.dart diff --git a/test_fixtures/source_files/dart2_only/part_of_basic_library_2.dart b/test_fixtures/test_packages/builder/lib/dart2_only/part_of_basic_library_2.dart similarity index 100% rename from test_fixtures/source_files/dart2_only/part_of_basic_library_2.dart rename to test_fixtures/test_packages/builder/lib/dart2_only/part_of_basic_library_2.dart diff --git a/test_fixtures/source_files/dart2_only/props_mixin.dart b/test_fixtures/test_packages/builder/lib/dart2_only/props_mixin.dart similarity index 100% rename from test_fixtures/source_files/dart2_only/props_mixin.dart rename to test_fixtures/test_packages/builder/lib/dart2_only/props_mixin.dart diff --git a/test_fixtures/source_files/dart2_only/state_mixin.dart b/test_fixtures/test_packages/builder/lib/dart2_only/state_mixin.dart similarity index 100% rename from test_fixtures/source_files/dart2_only/state_mixin.dart rename to test_fixtures/test_packages/builder/lib/dart2_only/state_mixin.dart diff --git a/test_fixtures/source_files/has_part_directive_missing_gen/no_declarations.dart b/test_fixtures/test_packages/builder/lib/has_part_directive_missing_gen/no_declarations.dart similarity index 100% rename from test_fixtures/source_files/has_part_directive_missing_gen/no_declarations.dart rename to test_fixtures/test_packages/builder/lib/has_part_directive_missing_gen/no_declarations.dart diff --git a/test_fixtures/source_files/has_part_directive_missing_gen/with_declarations.dart b/test_fixtures/test_packages/builder/lib/has_part_directive_missing_gen/with_declarations.dart similarity index 100% rename from test_fixtures/source_files/has_part_directive_missing_gen/with_declarations.dart rename to test_fixtures/test_packages/builder/lib/has_part_directive_missing_gen/with_declarations.dart diff --git a/test_fixtures/source_files/mixin_based/basic.dart b/test_fixtures/test_packages/builder/lib/mixin_based/basic.dart similarity index 100% rename from test_fixtures/source_files/mixin_based/basic.dart rename to test_fixtures/test_packages/builder/lib/mixin_based/basic.dart diff --git a/test_fixtures/source_files/mixin_based/basic_library.dart b/test_fixtures/test_packages/builder/lib/mixin_based/basic_library.dart similarity index 100% rename from test_fixtures/source_files/mixin_based/basic_library.dart rename to test_fixtures/test_packages/builder/lib/mixin_based/basic_library.dart diff --git a/test_fixtures/source_files/mixin_based/basic_two_nine.dart b/test_fixtures/test_packages/builder/lib/mixin_based/basic_two_nine.dart similarity index 100% rename from test_fixtures/source_files/mixin_based/basic_two_nine.dart rename to test_fixtures/test_packages/builder/lib/mixin_based/basic_two_nine.dart diff --git a/test_fixtures/source_files/mixin_based/missing_over_react_g_part/library.dart b/test_fixtures/test_packages/builder/lib/mixin_based/missing_over_react_g_part/library.dart similarity index 100% rename from test_fixtures/source_files/mixin_based/missing_over_react_g_part/library.dart rename to test_fixtures/test_packages/builder/lib/mixin_based/missing_over_react_g_part/library.dart diff --git a/test_fixtures/source_files/mixin_based/missing_over_react_g_part/part.dart b/test_fixtures/test_packages/builder/lib/mixin_based/missing_over_react_g_part/part.dart similarity index 100% rename from test_fixtures/source_files/mixin_based/missing_over_react_g_part/part.dart rename to test_fixtures/test_packages/builder/lib/mixin_based/missing_over_react_g_part/part.dart diff --git a/test_fixtures/source_files/mixin_based/part_of_basic_library.dart b/test_fixtures/test_packages/builder/lib/mixin_based/part_of_basic_library.dart similarity index 100% rename from test_fixtures/source_files/mixin_based/part_of_basic_library.dart rename to test_fixtures/test_packages/builder/lib/mixin_based/part_of_basic_library.dart diff --git a/test_fixtures/source_files/mixin_based/part_of_basic_library_2.dart b/test_fixtures/test_packages/builder/lib/mixin_based/part_of_basic_library_2.dart similarity index 100% rename from test_fixtures/source_files/mixin_based/part_of_basic_library_2.dart rename to test_fixtures/test_packages/builder/lib/mixin_based/part_of_basic_library_2.dart diff --git a/test_fixtures/source_files/mixin_based/props_mixin.dart b/test_fixtures/test_packages/builder/lib/mixin_based/props_mixin.dart similarity index 100% rename from test_fixtures/source_files/mixin_based/props_mixin.dart rename to test_fixtures/test_packages/builder/lib/mixin_based/props_mixin.dart diff --git a/test_fixtures/source_files/mixin_based/state_mixin.dart b/test_fixtures/test_packages/builder/lib/mixin_based/state_mixin.dart similarity index 100% rename from test_fixtures/source_files/mixin_based/state_mixin.dart rename to test_fixtures/test_packages/builder/lib/mixin_based/state_mixin.dart diff --git a/test_fixtures/source_files/mixin_based/two_nine_with_multiple_factories.dart b/test_fixtures/test_packages/builder/lib/mixin_based/two_nine_with_multiple_factories.dart similarity index 100% rename from test_fixtures/source_files/mixin_based/two_nine_with_multiple_factories.dart rename to test_fixtures/test_packages/builder/lib/mixin_based/two_nine_with_multiple_factories.dart diff --git a/test_fixtures/source_files/mixin_based/type_parameters.dart b/test_fixtures/test_packages/builder/lib/mixin_based/type_parameters.dart similarity index 100% rename from test_fixtures/source_files/mixin_based/type_parameters.dart rename to test_fixtures/test_packages/builder/lib/mixin_based/type_parameters.dart diff --git a/test_fixtures/source_files/no_annotations.dart b/test_fixtures/test_packages/builder/lib/no_annotations.dart similarity index 100% rename from test_fixtures/source_files/no_annotations.dart rename to test_fixtures/test_packages/builder/lib/no_annotations.dart diff --git a/test_fixtures/test_packages/builder/pubspec.yaml b/test_fixtures/test_packages/builder/pubspec.yaml new file mode 100644 index 000000000..1e9867114 --- /dev/null +++ b/test_fixtures/test_packages/builder/pubspec.yaml @@ -0,0 +1,9 @@ +name: over_react__test__builder_tests +publish_to: none +environment: + sdk: ">=2.19.0 <4.0.0" +dependencies: + over_react: + path: ../../../ +dev_dependencies: + build_runner: any diff --git a/tool/update_gold_output_files.dart b/tool/update_gold_output_files.dart index 1e15b4d07..7386f278e 100644 --- a/tool/update_gold_output_files.dart +++ b/tool/update_gold_output_files.dart @@ -3,56 +3,43 @@ import 'dart:io'; import 'package:glob/glob.dart'; import 'package:glob/list_local_fs.dart'; import 'package:path/path.dart' as p; +import 'package:yaml/yaml.dart'; -final sourceFixturesDir = Directory('test_fixtures/source_files'); +final sourceFixtureDir = Directory('test_fixtures/test_packages/builder'); final goldsDir = Directory('test_fixtures/gold_output_files'); -/// A temporary directory used to generate new golds. -final tmpSourceDir = Directory('test/tmp_test_files'); - -/// Updates gold files in [goldsDir] by re-generating them from a copy of the files in [sourceFixturesDir]. +/// Updates gold files in [goldsDir] by re-generating them from a copy of the files in [sourceFixtureDir]. Future main() async { - print('Copying files from ${sourceFixturesDir.path} to temporary directory ${tmpSourceDir.path}'); - if (tmpSourceDir.existsSync()) tmpSourceDir.deleteSync(recursive: true); - tmpSourceDir.createSync(recursive: true); - for (final file in Glob(p.join(sourceFixturesDir.path, '**')).listSync().whereType()) { - final newPath = p.join(tmpSourceDir.path, p.relative(file.path, from: sourceFixturesDir.path)); - File(newPath).parent.createSync(recursive: true); - file.copySync(newPath); - } + final sourceFixturePubspec = + loadYaml(File(p.join(sourceFixtureDir.path, 'pubspec.yaml')).readAsStringSync()); + final sourceFixturePackageName = sourceFixturePubspec['name'] as String; - print('Building files in temporary directory ${tmpSourceDir.path}'); - final buildProcess = await Process.start( - 'dart', ['run', 'build_runner', 'build', '--build-filter=${p.join(tmpSourceDir.path, '**')}'], - mode: ProcessStartMode.inheritStdio); + print('Building files in test fixture ${goldsDir.path}'); + + print('Building files in ${sourceFixtureDir.path} to .dart_tool...'); + final buildProcess = await Process.start('dart', ['run', 'build_runner', 'build'], + workingDirectory: sourceFixtureDir.path, mode: ProcessStartMode.inheritStdio); // Wait for build to complete. final buildExitCode = await buildProcess.exitCode; if (buildExitCode != 0) { stderr.writeln( - '^ Build failures are expected for "missing_over_react_g_part" files, and can be ignored.'); + '\n^ Build failures are expected for "missing_over_react_g_part" files, and can be ignored.\n'); } print('Copying built files to golds directory ${goldsDir.path}'); - final generatedTmpFiles = - Glob(p.join(tmpSourceDir.path, '**.over_react.g.dart')).listSync().whereType().toList(); - if (generatedTmpFiles.isEmpty) { - throw Exception('No generated files were found in ${tmpSourceDir.path}.' - ' Ensure in build.yaml the over_react builder runs on directory with build_to:source'); + final outputPath = p.join( + sourceFixtureDir.path, '.dart_tool', 'build', 'generated', sourceFixturePackageName, 'lib'); + late final generatedTmpFiles = + Glob(p.join(outputPath, '**.over_react.g.dart')).listSync().whereType().toList(); + if (!Directory(outputPath).existsSync() || generatedTmpFiles.isEmpty) { + throw Exception( + 'No generated files were found in $outputPath; something is probably wrong with the paths in this script.'); } for (final file in generatedTmpFiles) { - final newPath = - p.join(goldsDir.path, p.relative(file.path, from: tmpSourceDir.path)) + '.goldFile'; + final newPath = p.join(goldsDir.path, p.relative(file.path, from: outputPath)) + '.goldFile'; File(newPath).parent.createSync(recursive: true); file.copySync(newPath); } - print('Cleaning up temporary directory ${tmpSourceDir.path}'); - tmpSourceDir.deleteSync(recursive: true); - print('Done!'); - - print('\nIf non-gold generated files throughout this package got deleted' - ' (which usually only happens after it prompts you about conflicting outputs),' - ' you can restore them by running a build:\n\n' - ' dart run build_runner build'); } diff --git a/tool/update_tests_for_dart_3.sh b/tool/update_tests_for_dart_3.sh deleted file mode 100755 index c1c8b06a3..000000000 --- a/tool/update_tests_for_dart_3.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env bash - -# -# This script makes updates to tests to make them compatible with Dart 3. -# This is a last-resort workaround for cases that can't analyze cleanly in both versions. -# - -set -e -set -x - -# Update over_react_builder_test.dart by applying a patch in build_test 3 (Dart 3 only); -# see comment in test file for more details on the changes. -build_test_version=$(yq '.packages.build_test.version' pubspec.lock) -if [[ "$build_test_version" == "3."* ]]; then - # This patch is derived from fixing tests in build_test 3 and getting the diff with: - # git diff test/vm_tests/builder/over_react_builder_test.dart > tool/update_tests_for_dart_3/build_test_3_updates.patch - git apply tool/update_tests_for_dart_3/build_test_3_updates.patch -fi diff --git a/tool/update_tests_for_dart_3/build_test_3_updates.patch b/tool/update_tests_for_dart_3/build_test_3_updates.patch deleted file mode 100644 index 616526fbc..000000000 --- a/tool/update_tests_for_dart_3/build_test_3_updates.patch +++ /dev/null @@ -1,45 +0,0 @@ -diff --git a/test/vm_tests/builder/over_react_builder_test.dart b/test/vm_tests/builder/over_react_builder_test.dart -index 48c96b62..b9b60b55 100644 ---- a/test/vm_tests/builder/over_react_builder_test.dart -+++ b/test/vm_tests/builder/over_react_builder_test.dart -@@ -20,6 +20,8 @@ import 'package:build/build.dart'; - import 'package:build_resolvers/build_resolvers.dart'; - import 'package:build_test/build_test.dart'; - import 'package:collection/collection.dart' show IterableExtension; -+import 'package:glob/glob.dart'; -+import 'package:glob/list_local_fs.dart'; - import 'package:logging/logging.dart'; - import 'package:over_react/src/builder/builder.dart'; - import 'package:path/path.dart' as p; -@@ -40,18 +42,27 @@ main() { - // test 2.x and 3.x at the same time, and Dart 2 not being compatible with - // build_test 3.x. - -- late AssetReader reader; -- late InMemoryAssetWriter writer; // [1] -+ late TestReaderWriter reader; -+ late TestReaderWriter writer; // [1] - late AssetWriterSpy writerSpy; - late List logs; - - setUp(() async { - // [1] -- reader = await PackageAssetReader.currentIsolate( -+ reader = TestReaderWriter( - rootPackage: 'over_react', - ); - -- writer = InMemoryAssetWriter(); // [1] -+ // Load test fixture assets from the filesystem into the test reader. -+ for (final file in Glob('test_fixtures/**').listSync().whereType()) { -+ // Write via `testing` so it's not tracked as a builder output. -+ reader.testing.writeBytes( -+ makeAssetId('over_react|${file.path}'), -+ file.readAsBytesSync(), -+ ); -+ } -+ -+ writer = TestReaderWriter(); // [1] - writerSpy = AssetWriterSpy(writer); - - logs = [];