From 053e3a77904a9d8f339e52ab610e067cef745795 Mon Sep 17 00:00:00 2001 From: Sebastian Malysa Date: Wed, 15 Aug 2018 14:03:42 -0400 Subject: [PATCH 01/10] AF-1915: add test cases for new Factory boiler plate codemod changes --- Dockerfile | 28 +++++++++ pubspec.yaml | 16 +++++ test/migrater_test.dart | 62 +++++++++++++++++++ .../component_in_library.dart | 22 +++++++ .../test_component_library_after.dart | 5 ++ .../component_in_part.dart | 24 +++++++ .../component_in_library.dart | 21 +++++++ .../test_component_library_before.dart | 5 ++ .../component_in_part.dart | 21 +++++++ 9 files changed, 204 insertions(+) create mode 100644 Dockerfile create mode 100644 pubspec.yaml create mode 100644 test/migrater_test.dart create mode 100644 test/test_fixtures/after_codemod/components_in_library/component_in_library.dart create mode 100644 test/test_fixtures/after_codemod/components_in_library/test_component_library_after.dart create mode 100644 test/test_fixtures/after_codemod/components_in_parts/component_in_part.dart create mode 100644 test/test_fixtures/before_codemod/components_in_library/component_in_library.dart create mode 100644 test/test_fixtures/before_codemod/components_in_library/test_component_library_before.dart create mode 100644 test/test_fixtures/before_codemod/components_in_parts/component_in_part.dart diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..d333dbdf --- /dev/null +++ b/Dockerfile @@ -0,0 +1,28 @@ +FROM drydock-prod.workiva.net/workiva/smithy-runner-generator:355624 as build + +# Build Environment Vars +ARG BUILD_ID +ARG BUILD_NUMBER +ARG BUILD_URL +ARG GIT_COMMIT +ARG GIT_BRANCH +ARG GIT_TAG +ARG GIT_COMMIT_RANGE +ARG GIT_HEAD_URL +ARG GIT_MERGE_HEAD +ARG GIT_MERGE_BRANCH +WORKDIR /build/ +ADD . /build/ +ENV TERM=linux +ENV TERMINFO=/etc/terminfo +RUN echo "Install codemod" && \ + pip install git+https://github.com/georgelesica-wf/codemod@dart-convert && \ + echo "done" +RUN echo "Starting the script sections" && \ + dart --version && \ + pub get && \ + pub run dart_dev test && \ + echo "Script sections completed" +ARG BUILD_ARTIFACTS_DART-DEPENDENCIES=/build/pubspec.lock +ARG BUILD_ARTIFACTS_BUILD=/build/pubspec.lock +FROM scratch \ No newline at end of file diff --git a/pubspec.yaml b/pubspec.yaml new file mode 100644 index 00000000..6740198a --- /dev/null +++ b/pubspec.yaml @@ -0,0 +1,16 @@ +name: over_react_codemode +description: A tool to convert Over React components from Dart 1 to Dart 2 using Codemod. +version: 0.0.1 + +environment: + sdk: '>=1.22.1 <3.0.0' + +dependencies: + over_react: ^1.25.0 + +dev_dependencies: + dart_dev: ^1.7.7 + dart_style: ^1.0.6 + meta: ^1.0.0 + mockito: ^2.0.0 + test: ^0.12.32+1 diff --git a/test/migrater_test.dart b/test/migrater_test.dart new file mode 100644 index 00000000..1d1a8f1f --- /dev/null +++ b/test/migrater_test.dart @@ -0,0 +1,62 @@ +import 'dart:async'; +import 'dart:io'; + +import 'package:path/path.dart' as p; +import 'package:test/test.dart'; + +void main() { + group('Migrater', () { + test('correctly converts components with part directive', () async { + final testFixtureDirectory = p.absolute('test/test_fixtures/before_codemod/components_in_parts'); + final expectedResultsPath = p.absolute('test/test_fixtures/after_codemod/components_in_parts/component_in_part.dart'); + final testFilePath = p.absolute('test/test_fixtures/before_codemod/components_in_parts/temp/component_in_part.dart'); + + await setupAndCodemod(testFixtureDirectory); + + /// Compare expected results against codemod file in temp directory + String expectedResults = new File(expectedResultsPath).readAsStringSync(); + String testFile = new File(testFilePath).readAsStringSync(); + + expect(testFile, equals(expectedResults)); + + await removeTempDir(testFixtureDirectory); + }); + + test('correctly converts components in a library', () async { + final testFixtureDirectory = p.absolute('test/test_fixtures/before_codemod/components_in_library'); + final expectedResultsPath = p.absolute('test/test_fixtures/after_codemod/components_in_library/component_in_library.dart'); + final testFilePath = p.absolute('test/test_fixtures/before_codemod/components_in_library/temp/component_in_library.dart'); + + await setupAndCodemod(testFixtureDirectory); + + /// Compare expected results against codemod file in temp directory + String expectedResults = new File(expectedResultsPath).readAsStringSync(); + String testFile = new File(testFilePath).readAsStringSync(); + + expect(testFile, equals(expectedResults)); + + await removeTempDir(testFixtureDirectory); + }); + }); +} + +/// Creates a temp directory and copies the un-modified test fixtures to it. Then +/// migrater.py is run on these test fixtures to make the codemod changes. +Future setupAndCodemod(String pathToTestFixtureDirectory) async { + final pathToMigrater = p.absolute('migrater.py'); + final pathToTempDirectory = p.absolute('${pathToTestFixtureDirectory}/temp'); + + await Process.run('/bin/bash', + ['-c', 'mkdir -p temp && cp -r *.dart /$pathToTempDirectory'], workingDirectory: pathToTestFixtureDirectory); + + await Process.start('/bin/bash', ['-c', 'python $pathToMigrater'], workingDirectory: pathToTempDirectory).then((Process process) async { + await process.stdin.write('A\nA\n'); + await process.stdin.close(); + await process.exitCode; + }); +} + +/// Deletes the temp directory. +Future removeTempDir(String pathToTestFixtureDirectory) async { + await Process.run('/bin/bash', ['-c', 'rm -R temp'], workingDirectory: pathToTestFixtureDirectory); +} diff --git a/test/test_fixtures/after_codemod/components_in_library/component_in_library.dart b/test/test_fixtures/after_codemod/components_in_library/component_in_library.dart new file mode 100644 index 00000000..2ce44e85 --- /dev/null +++ b/test/test_fixtures/after_codemod/components_in_library/component_in_library.dart @@ -0,0 +1,22 @@ +part of test_component_library_before; + +@Factory() +// ignore: undefined_identifier +UiFactory ComponentInLibrary = $ComponentInLibrary; + +@Props() +class ComponentInLibraryProps extends UiProps { + // ignore: deprecated_member_use + @Required(message: 'This Prop is Required for testing purposes.') + var required; + + // ignore: deprecated_member_use + @Required(isNullable: true, message: 'This prop can be set to null!') + var nullable; +} + +@Component() +class ComponentInLibraryComponent extends UiComponent { + @override + render() => Dom.div()(); +} \ No newline at end of file diff --git a/test/test_fixtures/after_codemod/components_in_library/test_component_library_after.dart b/test/test_fixtures/after_codemod/components_in_library/test_component_library_after.dart new file mode 100644 index 00000000..7de13a26 --- /dev/null +++ b/test/test_fixtures/after_codemod/components_in_library/test_component_library_after.dart @@ -0,0 +1,5 @@ +library test_component_library_before; + +import 'package:over_react/over_react.dart'; + +part 'component_in_library.dart'; \ No newline at end of file diff --git a/test/test_fixtures/after_codemod/components_in_parts/component_in_part.dart b/test/test_fixtures/after_codemod/components_in_parts/component_in_part.dart new file mode 100644 index 00000000..596782e1 --- /dev/null +++ b/test/test_fixtures/after_codemod/components_in_parts/component_in_part.dart @@ -0,0 +1,24 @@ +import 'package:over_react/over_react.dart'; +// ignore: uri_does_not_exist +part 'component_in_part.generated.dart'; + +@Factory() +// ignore: undefined_identifier +UiFactory ComponentInPart = $ComponentInPart; + +@Props() +class ComponentInPartProps extends UiProps { + // ignore: deprecated_member_use + @Required(message: 'This Prop is Required for testing purposes.') + var required; + + // ignore: deprecated_member_use + @Required(isNullable: true, message: 'This prop can be set to null!') + var nullable; +} + +@Component() +class ComponentInPartComponent extends UiComponent { + @override + render() => Dom.div()(); +} \ No newline at end of file diff --git a/test/test_fixtures/before_codemod/components_in_library/component_in_library.dart b/test/test_fixtures/before_codemod/components_in_library/component_in_library.dart new file mode 100644 index 00000000..69e4fcea --- /dev/null +++ b/test/test_fixtures/before_codemod/components_in_library/component_in_library.dart @@ -0,0 +1,21 @@ +part of test_component_library_before; + +@Factory() +UiFactory ComponentInLibrary; + +@Props() +class ComponentInLibraryProps extends UiProps { + // ignore: deprecated_member_use + @Required(message: 'This Prop is Required for testing purposes.') + var required; + + // ignore: deprecated_member_use + @Required(isNullable: true, message: 'This prop can be set to null!') + var nullable; +} + +@Component() +class ComponentInLibraryComponent extends UiComponent { + @override + render() => Dom.div()(); +} \ No newline at end of file diff --git a/test/test_fixtures/before_codemod/components_in_library/test_component_library_before.dart b/test/test_fixtures/before_codemod/components_in_library/test_component_library_before.dart new file mode 100644 index 00000000..7de13a26 --- /dev/null +++ b/test/test_fixtures/before_codemod/components_in_library/test_component_library_before.dart @@ -0,0 +1,5 @@ +library test_component_library_before; + +import 'package:over_react/over_react.dart'; + +part 'component_in_library.dart'; \ No newline at end of file diff --git a/test/test_fixtures/before_codemod/components_in_parts/component_in_part.dart b/test/test_fixtures/before_codemod/components_in_parts/component_in_part.dart new file mode 100644 index 00000000..368940bd --- /dev/null +++ b/test/test_fixtures/before_codemod/components_in_parts/component_in_part.dart @@ -0,0 +1,21 @@ +import 'package:over_react/over_react.dart'; + +@Factory() +UiFactory ComponentInPart; + +@Props() +class ComponentInPartProps extends UiProps { + // ignore: deprecated_member_use + @Required(message: 'This Prop is Required for testing purposes.') + var required; + + // ignore: deprecated_member_use + @Required(isNullable: true, message: 'This prop can be set to null!') + var nullable; +} + +@Component() +class ComponentInPartComponent extends UiComponent { + @override + render() => Dom.div()(); +} \ No newline at end of file From 35cd60aad43e3615f095528a755e96202bfbf399 Mon Sep 17 00:00:00 2001 From: Sebastian Malysa Date: Thu, 20 Sep 2018 08:55:05 -0400 Subject: [PATCH 02/10] AF-2152: clean up tests and address review comments --- Dockerfile | 2 +- pubspec.yaml | 2 +- test/migrater_test.dart | 90 ++++++------------- .../component_in_library.dart | 13 +-- .../test_component_library_after.dart | 5 -- ...hout_props.dart => component_in_part.dart} | 5 +- .../component_in_parts/component_in_part.dart | 28 ------ ...omponent_with_multiple_consumed_props.dart | 18 ++-- .../component_with_single_consumed_prop.dart | 37 -------- ...prop.dart => dollar_prop_keys_usages.dart} | 4 +- .../mock_test_multiple_props.dart | 39 -------- .../after_codemod/test_component_library.dart | 6 ++ .../before_codemod/component_in_library.dart | 13 +++ .../component_in_library.dart | 21 ----- .../test_component_library_before.dart | 5 -- ...hout_props.dart => component_in_part.dart} | 2 +- .../component_in_parts/component_in_part.dart | 21 ----- ...mponent_with_multiple_consumed_props.dart} | 14 +-- ...omponent_with_multiple_consumed_props.dart | 36 -------- ...prop.dart => dollar_prop_keys_usages.dart} | 4 +- .../mock_test_multiple_props.dart | 39 -------- .../test_component_library.dart | 6 ++ 22 files changed, 76 insertions(+), 334 deletions(-) rename test/test_fixtures/after_codemod/{component_in_library => }/component_in_library.dart (62%) delete mode 100644 test/test_fixtures/after_codemod/component_in_library/test_component_library_after.dart rename test/test_fixtures/after_codemod/{component_without_props/component_without_props.dart => component_in_part.dart} (78%) delete mode 100644 test/test_fixtures/after_codemod/component_in_parts/component_in_part.dart rename test/test_fixtures/after_codemod/{component_with_multiple_consumed_props => }/component_with_multiple_consumed_props.dart (52%) delete mode 100644 test/test_fixtures/after_codemod/component_with_single_consumed_prop/component_with_single_consumed_prop.dart rename test/test_fixtures/after_codemod/{mock_test_single_prop/mock_test_single_prop.dart => dollar_prop_keys_usages.dart} (88%) delete mode 100644 test/test_fixtures/after_codemod/mock_test_multiple_props/mock_test_multiple_props.dart create mode 100644 test/test_fixtures/after_codemod/test_component_library.dart create mode 100644 test/test_fixtures/before_codemod/component_in_library.dart delete mode 100644 test/test_fixtures/before_codemod/component_in_library/component_in_library.dart delete mode 100644 test/test_fixtures/before_codemod/component_in_library/test_component_library_before.dart rename test/test_fixtures/before_codemod/{component_without_props/component_without_props.dart => component_in_part.dart} (84%) delete mode 100644 test/test_fixtures/before_codemod/component_in_parts/component_in_part.dart rename test/test_fixtures/before_codemod/{component_with_single_consumed_prop/component_with_single_consumed_prop.dart => component_with_multiple_consumed_props.dart} (52%) delete mode 100644 test/test_fixtures/before_codemod/component_with_multiple_consumed_props/component_with_multiple_consumed_props.dart rename test/test_fixtures/before_codemod/{mock_test_single_prop/mock_test_single_prop.dart => dollar_prop_keys_usages.dart} (88%) delete mode 100644 test/test_fixtures/before_codemod/mock_test_multiple_props/mock_test_multiple_props.dart create mode 100644 test/test_fixtures/before_codemod/test_component_library.dart diff --git a/Dockerfile b/Dockerfile index d333dbdf..e8c57bd2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,7 +16,7 @@ ADD . /build/ ENV TERM=linux ENV TERMINFO=/etc/terminfo RUN echo "Install codemod" && \ - pip install git+https://github.com/georgelesica-wf/codemod@dart-convert && \ + pip install codemod && \ echo "done" RUN echo "Starting the script sections" && \ dart --version && \ diff --git a/pubspec.yaml b/pubspec.yaml index 6740198a..fe893f31 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,4 +1,4 @@ -name: over_react_codemode +name: over_react_codemod description: A tool to convert Over React components from Dart 1 to Dart 2 using Codemod. version: 0.0.1 diff --git a/test/migrater_test.dart b/test/migrater_test.dart index 491278c2..b498ddda 100644 --- a/test/migrater_test.dart +++ b/test/migrater_test.dart @@ -4,97 +4,59 @@ import 'dart:io'; import 'package:path/path.dart' as p; import 'package:test/test.dart'; +final pathToMigrater = p.absolute('migrater.py'); +final pathToBeforeCodeModTestFixtures = p.absolute('test/test_fixtures/before_codemod/'); +final pathToAfterCodeModTestFixtures = p.absolute('test/test_fixtures/after_codemod/'); + void main() { group('Migrater', () { - test('correctly converts components with part directive', () async { - final pathToTestFixtureDirectory = p.absolute('test/test_fixtures/before_codemod/component_in_parts'); - final pathToExpectedResults = p.absolute('test/test_fixtures/after_codemod/component_in_parts/component_in_part.dart'); - final pathToTestFile = p.absolute('test/test_fixtures/before_codemod/component_in_parts/temp/component_in_part.dart'); + Directory tempDir; - makeComparison(pathToTestFixtureDirectory, pathToExpectedResults, pathToTestFile); + setUp(() { + tempDir = Directory.systemTemp.createTempSync('over_react_codemod_test_'); }); - test('correctly converts components in a library', () async { - final pathToTestFixtureDirectory = p.absolute('test/test_fixtures/before_codemod/component_in_library'); - final pathToExpectedResults = p.absolute('test/test_fixtures/after_codemod/component_in_library/component_in_library.dart'); - final pathToTestFile = p.absolute('test/test_fixtures/before_codemod/component_in_library/temp/component_in_library.dart'); - - makeComparison(pathToTestFixtureDirectory, pathToExpectedResults, pathToTestFile); + tearDown(() { + tempDir.deleteSync(recursive: true); }); - test('correctly converts components without props', () async { - final pathToTestFixtureDirectory = p.absolute('test/test_fixtures/before_codemod/component_without_props'); - final pathToExpectedResults = p.absolute('test/test_fixtures/after_codemod/component_without_props/component_without_props.dart'); - final pathToTestFile = p.absolute('test/test_fixtures/before_codemod/component_without_props/temp/component_without_props.dart'); - - makeComparison(pathToTestFixtureDirectory, pathToExpectedResults, pathToTestFile); + test('correctly converts components in parts', () async { + await codeModAndCompare(tempDir, 'component_in_part.dart'); }); - test('correctly converts single \$PropKeys reference', () async { - final pathToTestFixtureDirectory = p.absolute('test/test_fixtures/before_codemod/mock_test_single_prop'); - final pathToExpectedResults = p.absolute('test/test_fixtures/after_codemod/mock_test_single_prop/mock_test_single_prop.dart'); - final pathToTestFile = p.absolute('test/test_fixtures/before_codemod/mock_test_single_prop/temp/mock_test_single_prop.dart'); - - await makeComparison(pathToTestFixtureDirectory, pathToExpectedResults, pathToTestFile); + test('correctly converts components in a library', () async { + await codeModAndCompare(tempDir, 'component_in_library.dart'); }); - test('correctly coverts multiple \$PropKeys references', () async { - final pathToTestFixtureDirectory = p.absolute('test/test_fixtures/before_codemod/mock_test_multiple_props'); - final pathToExpectedResults = p.absolute('test/test_fixtures/after_codemod/mock_test_multiple_props/mock_test_multiple_props.dart'); - final pathToTestFile = p.absolute('test/test_fixtures/before_codemod/mock_test_multiple_props/temp/mock_test_multiple_props.dart'); - - await makeComparison(pathToTestFixtureDirectory, pathToExpectedResults, pathToTestFile); + test('correctly adds part directive to the generated file in the library file', () async { + await codeModAndCompare(tempDir, 'test_component_library.dart'); }); - test('correctly coverts single \$Prop reference', () async { - final pathToTestFixtureDirectory = p.absolute('test/test_fixtures/before_codemod/component_with_single_consumed_prop'); - final pathToExpectedResults = p.absolute('test/test_fixtures/after_codemod/component_with_single_consumed_prop/component_with_single_consumed_prop.dart'); - final pathToTestFile = p.absolute('test/test_fixtures/before_codemod/component_with_single_consumed_prop/temp/component_with_single_consumed_prop.dart'); - - await makeComparison(pathToTestFixtureDirectory, pathToExpectedResults, pathToTestFile); + test('correctly coverts \$PropKeys references', () async { + await codeModAndCompare(tempDir, 'dollar_prop_keys_usages.dart'); }); - test('correctly coverts multiple \$Prop references', () async { - final pathToTestFixtureDirectory = p.absolute('test/test_fixtures/before_codemod/component_with_multiple_consumed_props'); - final pathToExpectedResults = p.absolute('test/test_fixtures/after_codemod/component_with_multiple_consumed_props/component_with_multiple_consumed_props.dart'); - final pathToTestFile = p.absolute('test/test_fixtures/before_codemod/component_with_multiple_consumed_props/temp/component_with_multiple_consumed_props.dart'); - - await makeComparison(pathToTestFixtureDirectory, pathToExpectedResults, pathToTestFile); + test('correctly coverts \$Prop references', () async { + await codeModAndCompare(tempDir, 'component_with_multiple_consumed_props.dart'); }); }); } -/// Creates a temp directory and copies the un-modified test fixtures to it. Then -/// migrater.py is run on these test fixtures to make the codemod changes. -Future setupAndCodemod(String pathToTestFixtureDirectory) async { - final pathToMigrater = p.absolute('migrater.py'); - final pathToTempDirectory = p.absolute('${pathToTestFixtureDirectory}/temp'); - +Future codeModAndCompare(Directory tempDir, String fileToCodemod) async { + /// Copy the file to codemod to the temporary directory. await Process.run('/bin/bash', - ['-c', 'mkdir -p temp && cp -r *.dart /$pathToTempDirectory'], workingDirectory: pathToTestFixtureDirectory); + ['-c', 'cp -r $fileToCodemod /${tempDir.absolute.path}'], workingDirectory: pathToBeforeCodeModTestFixtures); - await Process.start('/bin/bash', ['-c', 'python $pathToMigrater'], workingDirectory: pathToTempDirectory).then((Process process) async { + /// Codemod the file within the temporary directory + await Process.start('/bin/bash', ['-c', 'python $pathToMigrater'], workingDirectory: tempDir.absolute.path).then((Process process) async { await process.stdin.write('A\nA\n'); await process.stdin.close(); await process.exitCode; }); -} - -/// Deletes the temp directory. -Future removeTempDir(String pathToTestFixtureDirectory) async { - await Process.run('/bin/bash', ['-c', 'rm -R temp'], workingDirectory: pathToTestFixtureDirectory); -} - -/// Makes the comparison between the expected result (migrated file) and the test file -/// (the file that is migrated during the test run in a temp directory). -Future makeComparison(String pathToTestFixtureDirectory, String pathToExpectedResults, String pathToTestFile) async { - await setupAndCodemod(pathToTestFixtureDirectory); /// Compare expected results against codemod file in temp directory. - String expectedResults = new File(pathToExpectedResults).readAsStringSync(); - String testFile = new File(pathToTestFile).readAsStringSync(); + String expectedResults = new File(pathToAfterCodeModTestFixtures + fileToCodemod).readAsStringSync(); + String testFile = new File('${tempDir.absolute.path}/$fileToCodemod').readAsStringSync(); expect(testFile, equals(expectedResults)); - - await removeTempDir(pathToTestFixtureDirectory); } diff --git a/test/test_fixtures/after_codemod/component_in_library/component_in_library.dart b/test/test_fixtures/after_codemod/component_in_library.dart similarity index 62% rename from test/test_fixtures/after_codemod/component_in_library/component_in_library.dart rename to test/test_fixtures/after_codemod/component_in_library.dart index 0a4ec80d..9441a7e8 100644 --- a/test/test_fixtures/after_codemod/component_in_library/component_in_library.dart +++ b/test/test_fixtures/after_codemod/component_in_library.dart @@ -1,4 +1,7 @@ -part of test_component_library_before; +import 'package:over_react/over_react.dart'; + +// ignore: uri_does_not_exist +part 'component_in_library.generated.dart'; @Factory() // ignore: undefined_identifier @@ -8,14 +11,6 @@ UiFactory ComponentInLibrary = $ComponentInLibrary; class ComponentInLibraryProps extends UiProps { // ignore: undefined_identifier, undefined_class, const_initialized_with_non_constant_value static const PropsMeta meta = $metaForComponentInLibraryProps; - - // ignore: deprecated_member_use - @Required(message: 'This Prop is Required for testing purposes.') - var required; - - // ignore: deprecated_member_use - @Required(isNullable: true, message: 'This prop can be set to null!') - var nullable; } @Component() diff --git a/test/test_fixtures/after_codemod/component_in_library/test_component_library_after.dart b/test/test_fixtures/after_codemod/component_in_library/test_component_library_after.dart deleted file mode 100644 index 7de13a26..00000000 --- a/test/test_fixtures/after_codemod/component_in_library/test_component_library_after.dart +++ /dev/null @@ -1,5 +0,0 @@ -library test_component_library_before; - -import 'package:over_react/over_react.dart'; - -part 'component_in_library.dart'; \ No newline at end of file diff --git a/test/test_fixtures/after_codemod/component_without_props/component_without_props.dart b/test/test_fixtures/after_codemod/component_in_part.dart similarity index 78% rename from test/test_fixtures/after_codemod/component_without_props/component_without_props.dart rename to test/test_fixtures/after_codemod/component_in_part.dart index 8a818160..29df1466 100644 --- a/test/test_fixtures/after_codemod/component_without_props/component_without_props.dart +++ b/test/test_fixtures/after_codemod/component_in_part.dart @@ -1,7 +1,4 @@ -import 'package:over_react/over_react.dart'; - -// ignore: uri_does_not_exist -part 'component_without_props.generated.dart'; +part of test_component_library; @Factory() // ignore: undefined_identifier diff --git a/test/test_fixtures/after_codemod/component_in_parts/component_in_part.dart b/test/test_fixtures/after_codemod/component_in_parts/component_in_part.dart deleted file mode 100644 index 2addeec6..00000000 --- a/test/test_fixtures/after_codemod/component_in_parts/component_in_part.dart +++ /dev/null @@ -1,28 +0,0 @@ -import 'package:over_react/over_react.dart'; - -// ignore: uri_does_not_exist -part 'component_in_part.generated.dart'; - -@Factory() -// ignore: undefined_identifier -UiFactory ComponentInPart = $ComponentInPart; - -@Props() -class ComponentInPartProps extends UiProps { - // ignore: undefined_identifier, undefined_class, const_initialized_with_non_constant_value - static const PropsMeta meta = $metaForComponentInPartProps; - - // ignore: deprecated_member_use - @Required(message: 'This Prop is Required for testing purposes.') - var required; - - // ignore: deprecated_member_use - @Required(isNullable: true, message: 'This prop can be set to null!') - var nullable; -} - -@Component() -class ComponentInPartComponent extends UiComponent { - @override - render() => Dom.div()(); -} \ No newline at end of file diff --git a/test/test_fixtures/after_codemod/component_with_multiple_consumed_props/component_with_multiple_consumed_props.dart b/test/test_fixtures/after_codemod/component_with_multiple_consumed_props.dart similarity index 52% rename from test/test_fixtures/after_codemod/component_with_multiple_consumed_props/component_with_multiple_consumed_props.dart rename to test/test_fixtures/after_codemod/component_with_multiple_consumed_props.dart index ffdc9efe..418c64bd 100644 --- a/test/test_fixtures/after_codemod/component_with_multiple_consumed_props/component_with_multiple_consumed_props.dart +++ b/test/test_fixtures/after_codemod/component_with_multiple_consumed_props.dart @@ -5,30 +5,26 @@ part 'component_with_multiple_consumed_props.generated.dart'; @Factory() // ignore: undefined_identifier -UiFactory ComponentInPart = $ComponentInPart; +UiFactory ComponentWithMultipleConsumedProps = $ComponentWithMultipleConsumedProps; @Props() -class ComponentInPartProps extends UiProps { +class ComponentWithMultipleConsumedPropsProps extends UiProps { // ignore: undefined_identifier, undefined_class, const_initialized_with_non_constant_value - static const PropsMeta meta = $metaForComponentInPartProps; + static const PropsMeta meta = $metaForComponentWithMultipleConsumedPropsProps; - // ignore: deprecated_member_use - @Required(message: 'This Prop is Required for testing purposes.') + @requiredProp var required; - // ignore: deprecated_member_use - @Required(isNullable: true, message: 'This prop can be set to null!') + @nullableRequiredProp var nullable; } @Component() -class ComponentInPartComponent extends UiComponent { +class ComponentWithMultipleConsumedPropsComponent extends UiComponent { @override get consumedProps => const [ AbstractToggleInputGroupProps.meta, ToggleButtonGroupProps.meta, - ButtonGroupPropsMixin.meta, - FormGroupLabelControlsPairPropsMixin.meta, ]; @override @@ -38,6 +34,4 @@ class ComponentInPartComponent extends UiComponent { /// Add these class as a placeholder to eliminate analyzer errors. /// This will not affect how migrater.py performs. class AbstractToggleInputGroupProps {} -class ButtonGroupPropsMixin {} -class FormGroupLabelControlsPairPropsMixin {} class ToggleButtonGroupProps {} \ No newline at end of file diff --git a/test/test_fixtures/after_codemod/component_with_single_consumed_prop/component_with_single_consumed_prop.dart b/test/test_fixtures/after_codemod/component_with_single_consumed_prop/component_with_single_consumed_prop.dart deleted file mode 100644 index 422dfd10..00000000 --- a/test/test_fixtures/after_codemod/component_with_single_consumed_prop/component_with_single_consumed_prop.dart +++ /dev/null @@ -1,37 +0,0 @@ -import 'package:over_react/over_react.dart'; - -// ignore: uri_does_not_exist -part 'component_with_single_consumed_prop.generated.dart'; - -@Factory() -// ignore: undefined_identifier -UiFactory ComponentInPart = $ComponentInPart; - -@Props() -class ComponentInPartProps extends UiProps { - // ignore: undefined_identifier, undefined_class, const_initialized_with_non_constant_value - static const PropsMeta meta = $metaForComponentInPartProps; - - // ignore: deprecated_member_use - @Required(message: 'This Prop is Required for testing purposes.') - var required; - - // ignore: deprecated_member_use - @Required(isNullable: true, message: 'This prop can be set to null!') - var nullable; -} - -@Component() -class ComponentInPartComponent extends UiComponent { - @override - get consumedProps => const [ - AbstractToggleInputGroupProps.meta, - ]; - - @override - render() => Dom.div()(); -} - -/// Add these class as a placeholder to eliminate analyzer errors. -/// This will not affect how migrater.py performs. -class AbstractToggleInputGroupProps {} diff --git a/test/test_fixtures/after_codemod/mock_test_single_prop/mock_test_single_prop.dart b/test/test_fixtures/after_codemod/dollar_prop_keys_usages.dart similarity index 88% rename from test/test_fixtures/after_codemod/mock_test_single_prop/mock_test_single_prop.dart rename to test/test_fixtures/after_codemod/dollar_prop_keys_usages.dart index f9120728..0a55f550 100644 --- a/test/test_fixtures/after_codemod/mock_test_single_prop/mock_test_single_prop.dart +++ b/test/test_fixtures/after_codemod/dollar_prop_keys_usages.dart @@ -20,6 +20,6 @@ main() { }); } -/// Add these class as a placeholder to eliminate analyzer errors. +/// Add this class as a placeholder to eliminate analyzer errors. /// This will not affect how migrater.py performs. -class ButtonPropsMixin {} +class ButtonPropsMixin {} \ No newline at end of file diff --git a/test/test_fixtures/after_codemod/mock_test_multiple_props/mock_test_multiple_props.dart b/test/test_fixtures/after_codemod/mock_test_multiple_props/mock_test_multiple_props.dart deleted file mode 100644 index a3e2d3ab..00000000 --- a/test/test_fixtures/after_codemod/mock_test_multiple_props/mock_test_multiple_props.dart +++ /dev/null @@ -1,39 +0,0 @@ -import 'package:over_react/over_react.dart'; -import 'package:test/test.dart'; - -main() { - group('MockTestCaseComponent', () { - // ignore: undefined_identifier, undefined_function - abstractColorPickerTriggerTests(ColorPickerButton, - primitiveComponentTestId: 'wsd.MockTestCaseComponent.MockTestCaseComponentPrimitve' - ); - - group('common component functionality:', () { - // ignore: undefined_function - commonComponentTests( - // ignore: undefined_identifier - MockTestCaseComponent, - unconsumedPropKeys: [] - ..addAll(ButtonPropsMixin.meta.keys) - ..addAll(ButtonDisplayPropsMixin.meta.keys) - ..addAll(OverlayTriggerPropsMixin.meta.keys) - ..addAll(OverlayTransitionPropsMixin.meta.keys) - ..addAll(SharedColorPickerProps.meta.keys) - ..addAll(SharedColorPickerTriggerProps.meta.keys) - ..addAll(AbstractColorPickerTriggerProps.meta.keys) - ..addAll(ColorPickerButtonProps.meta.keys) - ); - }); - }); -} - -/// Add these class as a placeholder to eliminate analyzer errors. -/// This will not affect how migrater.py performs. -class ButtonPropsMixin {} -class ButtonDisplayPropsMixin {} -class OverlayTriggerPropsMixin {} -class OverlayTransitionPropsMixin {} -class SharedColorPickerProps {} -class SharedColorPickerTriggerProps {} -class AbstractColorPickerTriggerProps {} -class ColorPickerButtonProps {} \ No newline at end of file diff --git a/test/test_fixtures/after_codemod/test_component_library.dart b/test/test_fixtures/after_codemod/test_component_library.dart new file mode 100644 index 00000000..71482232 --- /dev/null +++ b/test/test_fixtures/after_codemod/test_component_library.dart @@ -0,0 +1,6 @@ +library test_component_library; + +import 'package:over_react/over_react.dart'; + +part 'component_in_part.dart'; +part 'component_in_part.generated.dart'; // ignore: uri_does_not_exist diff --git a/test/test_fixtures/before_codemod/component_in_library.dart b/test/test_fixtures/before_codemod/component_in_library.dart new file mode 100644 index 00000000..fe66f166 --- /dev/null +++ b/test/test_fixtures/before_codemod/component_in_library.dart @@ -0,0 +1,13 @@ +import 'package:over_react/over_react.dart'; + +@Factory() +UiFactory ComponentInLibrary; + +@Props() +class ComponentInLibraryProps extends UiProps {} + +@Component() +class ComponentInLibraryComponent extends UiComponent { + @override + render() => Dom.div()(); +} \ No newline at end of file diff --git a/test/test_fixtures/before_codemod/component_in_library/component_in_library.dart b/test/test_fixtures/before_codemod/component_in_library/component_in_library.dart deleted file mode 100644 index 69e4fcea..00000000 --- a/test/test_fixtures/before_codemod/component_in_library/component_in_library.dart +++ /dev/null @@ -1,21 +0,0 @@ -part of test_component_library_before; - -@Factory() -UiFactory ComponentInLibrary; - -@Props() -class ComponentInLibraryProps extends UiProps { - // ignore: deprecated_member_use - @Required(message: 'This Prop is Required for testing purposes.') - var required; - - // ignore: deprecated_member_use - @Required(isNullable: true, message: 'This prop can be set to null!') - var nullable; -} - -@Component() -class ComponentInLibraryComponent extends UiComponent { - @override - render() => Dom.div()(); -} \ No newline at end of file diff --git a/test/test_fixtures/before_codemod/component_in_library/test_component_library_before.dart b/test/test_fixtures/before_codemod/component_in_library/test_component_library_before.dart deleted file mode 100644 index 7de13a26..00000000 --- a/test/test_fixtures/before_codemod/component_in_library/test_component_library_before.dart +++ /dev/null @@ -1,5 +0,0 @@ -library test_component_library_before; - -import 'package:over_react/over_react.dart'; - -part 'component_in_library.dart'; \ No newline at end of file diff --git a/test/test_fixtures/before_codemod/component_without_props/component_without_props.dart b/test/test_fixtures/before_codemod/component_in_part.dart similarity index 84% rename from test/test_fixtures/before_codemod/component_without_props/component_without_props.dart rename to test/test_fixtures/before_codemod/component_in_part.dart index ce7712a5..34fa1e0b 100644 --- a/test/test_fixtures/before_codemod/component_without_props/component_without_props.dart +++ b/test/test_fixtures/before_codemod/component_in_part.dart @@ -1,4 +1,4 @@ -import 'package:over_react/over_react.dart'; +part of test_component_library; @Factory() UiFactory ComponentInPart; diff --git a/test/test_fixtures/before_codemod/component_in_parts/component_in_part.dart b/test/test_fixtures/before_codemod/component_in_parts/component_in_part.dart deleted file mode 100644 index 368940bd..00000000 --- a/test/test_fixtures/before_codemod/component_in_parts/component_in_part.dart +++ /dev/null @@ -1,21 +0,0 @@ -import 'package:over_react/over_react.dart'; - -@Factory() -UiFactory ComponentInPart; - -@Props() -class ComponentInPartProps extends UiProps { - // ignore: deprecated_member_use - @Required(message: 'This Prop is Required for testing purposes.') - var required; - - // ignore: deprecated_member_use - @Required(isNullable: true, message: 'This prop can be set to null!') - var nullable; -} - -@Component() -class ComponentInPartComponent extends UiComponent { - @override - render() => Dom.div()(); -} \ No newline at end of file diff --git a/test/test_fixtures/before_codemod/component_with_single_consumed_prop/component_with_single_consumed_prop.dart b/test/test_fixtures/before_codemod/component_with_multiple_consumed_props.dart similarity index 52% rename from test/test_fixtures/before_codemod/component_with_single_consumed_prop/component_with_single_consumed_prop.dart rename to test/test_fixtures/before_codemod/component_with_multiple_consumed_props.dart index 9616917e..a529b49b 100644 --- a/test/test_fixtures/before_codemod/component_with_single_consumed_prop/component_with_single_consumed_prop.dart +++ b/test/test_fixtures/before_codemod/component_with_multiple_consumed_props.dart @@ -1,24 +1,23 @@ import 'package:over_react/over_react.dart'; @Factory() -UiFactory ComponentInPart; +UiFactory ComponentWithMultipleConsumedProps; @Props() -class ComponentInPartProps extends UiProps { - // ignore: deprecated_member_use - @Required(message: 'This Prop is Required for testing purposes.') +class ComponentWithMultipleConsumedPropsProps extends UiProps { + @requiredProp var required; - // ignore: deprecated_member_use - @Required(isNullable: true, message: 'This prop can be set to null!') + @nullableRequiredProp var nullable; } @Component() -class ComponentInPartComponent extends UiComponent { +class ComponentWithMultipleConsumedPropsComponent extends UiComponent { @override get consumedProps => const [ const $Props(AbstractToggleInputGroupProps), + const $Props(ToggleButtonGroupProps), ]; @override @@ -28,3 +27,4 @@ class ComponentInPartComponent extends UiComponent { /// Add these class as a placeholder to eliminate analyzer errors. /// This will not affect how migrater.py performs. class AbstractToggleInputGroupProps {} +class ToggleButtonGroupProps {} \ No newline at end of file diff --git a/test/test_fixtures/before_codemod/component_with_multiple_consumed_props/component_with_multiple_consumed_props.dart b/test/test_fixtures/before_codemod/component_with_multiple_consumed_props/component_with_multiple_consumed_props.dart deleted file mode 100644 index a951d669..00000000 --- a/test/test_fixtures/before_codemod/component_with_multiple_consumed_props/component_with_multiple_consumed_props.dart +++ /dev/null @@ -1,36 +0,0 @@ -import 'package:over_react/over_react.dart'; - -@Factory() -UiFactory ComponentInPart; - -@Props() -class ComponentInPartProps extends UiProps { - // ignore: deprecated_member_use - @Required(message: 'This Prop is Required for testing purposes.') - var required; - - // ignore: deprecated_member_use - @Required(isNullable: true, message: 'This prop can be set to null!') - var nullable; -} - -@Component() -class ComponentInPartComponent extends UiComponent { - @override - get consumedProps => const [ - const $Props(AbstractToggleInputGroupProps), - const $Props(ToggleButtonGroupProps), - const $Props(ButtonGroupPropsMixin), - const $Props(FormGroupLabelControlsPairPropsMixin), - ]; - - @override - render() => Dom.div()(); -} - -/// Add these class as a placeholder to eliminate analyzer errors. -/// This will not affect how migrater.py performs. -class AbstractToggleInputGroupProps {} -class ButtonGroupPropsMixin {} -class FormGroupLabelControlsPairPropsMixin {} -class ToggleButtonGroupProps {} \ No newline at end of file diff --git a/test/test_fixtures/before_codemod/mock_test_single_prop/mock_test_single_prop.dart b/test/test_fixtures/before_codemod/dollar_prop_keys_usages.dart similarity index 88% rename from test/test_fixtures/before_codemod/mock_test_single_prop/mock_test_single_prop.dart rename to test/test_fixtures/before_codemod/dollar_prop_keys_usages.dart index 8f74ca73..08d3cb76 100644 --- a/test/test_fixtures/before_codemod/mock_test_single_prop/mock_test_single_prop.dart +++ b/test/test_fixtures/before_codemod/dollar_prop_keys_usages.dart @@ -20,6 +20,6 @@ main() { }); } -/// Add these class as a placeholder to eliminate analyzer errors. +/// Add this class as a placeholder to eliminate analyzer errors. /// This will not affect how migrater.py performs. -class ButtonPropsMixin {} +class ButtonPropsMixin {} \ No newline at end of file diff --git a/test/test_fixtures/before_codemod/mock_test_multiple_props/mock_test_multiple_props.dart b/test/test_fixtures/before_codemod/mock_test_multiple_props/mock_test_multiple_props.dart deleted file mode 100644 index 81d952a4..00000000 --- a/test/test_fixtures/before_codemod/mock_test_multiple_props/mock_test_multiple_props.dart +++ /dev/null @@ -1,39 +0,0 @@ -import 'package:over_react/over_react.dart'; -import 'package:test/test.dart'; - -main() { - group('MockTestCaseComponent', () { - // ignore: undefined_identifier, undefined_function - abstractColorPickerTriggerTests(ColorPickerButton, - primitiveComponentTestId: 'wsd.MockTestCaseComponent.MockTestCaseComponentPrimitve' - ); - - group('common component functionality:', () { - // ignore: undefined_function - commonComponentTests( - // ignore: undefined_identifier - MockTestCaseComponent, - unconsumedPropKeys: [] - ..addAll(const $PropKeys(ButtonPropsMixin)) - ..addAll(const $PropKeys(ButtonDisplayPropsMixin)) - ..addAll(const $PropKeys(OverlayTriggerPropsMixin)) - ..addAll(const $PropKeys(OverlayTransitionPropsMixin)) - ..addAll(const $PropKeys(SharedColorPickerProps)) - ..addAll(const $PropKeys(SharedColorPickerTriggerProps)) - ..addAll(const $PropKeys(AbstractColorPickerTriggerProps)) - ..addAll(const $PropKeys(ColorPickerButtonProps)) - ); - }); - }); -} - -/// Add these class as a placeholder to eliminate analyzer errors. -/// This will not affect how migrater.py performs. -class ButtonPropsMixin {} -class ButtonDisplayPropsMixin {} -class OverlayTriggerPropsMixin {} -class OverlayTransitionPropsMixin {} -class SharedColorPickerProps {} -class SharedColorPickerTriggerProps {} -class AbstractColorPickerTriggerProps {} -class ColorPickerButtonProps {} \ No newline at end of file diff --git a/test/test_fixtures/before_codemod/test_component_library.dart b/test/test_fixtures/before_codemod/test_component_library.dart new file mode 100644 index 00000000..71482232 --- /dev/null +++ b/test/test_fixtures/before_codemod/test_component_library.dart @@ -0,0 +1,6 @@ +library test_component_library; + +import 'package:over_react/over_react.dart'; + +part 'component_in_part.dart'; +part 'component_in_part.generated.dart'; // ignore: uri_does_not_exist From b7002672ae3cf81a9ec3a24d13d51f2097dc1e79 Mon Sep 17 00:00:00 2001 From: Sebastian Malysa Date: Thu, 20 Sep 2018 08:58:25 -0400 Subject: [PATCH 03/10] AF-2152: address more comments --- Dockerfile | 2 -- test/migrater_test.dart | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index e8c57bd2..8eca6d81 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,8 +13,6 @@ ARG GIT_MERGE_HEAD ARG GIT_MERGE_BRANCH WORKDIR /build/ ADD . /build/ -ENV TERM=linux -ENV TERMINFO=/etc/terminfo RUN echo "Install codemod" && \ pip install codemod && \ echo "done" diff --git a/test/migrater_test.dart b/test/migrater_test.dart index b498ddda..8ea88a46 100644 --- a/test/migrater_test.dart +++ b/test/migrater_test.dart @@ -48,7 +48,7 @@ Future codeModAndCompare(Directory tempDir, String fileToCodemod) async { ['-c', 'cp -r $fileToCodemod /${tempDir.absolute.path}'], workingDirectory: pathToBeforeCodeModTestFixtures); /// Codemod the file within the temporary directory - await Process.start('/bin/bash', ['-c', 'python $pathToMigrater'], workingDirectory: tempDir.absolute.path).then((Process process) async { + await Process.start('python', [pathToMigrater], workingDirectory: tempDir.absolute.path).then((Process process) async { await process.stdin.write('A\nA\n'); await process.stdin.close(); await process.exitCode; From c266120ffa8edd18ac2880f3edaacf1018c00fd5 Mon Sep 17 00:00:00 2001 From: Sebastian Malysa Date: Thu, 20 Sep 2018 09:01:29 -0400 Subject: [PATCH 04/10] AF-2152: add ENV TERM=linux and ENV TERMINFO=/etc/terminfo back to Dockerfile --- Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index 8eca6d81..e8c57bd2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,6 +13,8 @@ ARG GIT_MERGE_HEAD ARG GIT_MERGE_BRANCH WORKDIR /build/ ADD . /build/ +ENV TERM=linux +ENV TERMINFO=/etc/terminfo RUN echo "Install codemod" && \ pip install codemod && \ echo "done" From ae03264ab1025133ab8bc21f2b1afe8c35424b2c Mon Sep 17 00:00:00 2001 From: Sebastian Malysa Date: Thu, 20 Sep 2018 09:08:06 -0400 Subject: [PATCH 05/10] AF-2152: use George's branch --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index e8c57bd2..d333dbdf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,7 +16,7 @@ ADD . /build/ ENV TERM=linux ENV TERMINFO=/etc/terminfo RUN echo "Install codemod" && \ - pip install codemod && \ + pip install git+https://github.com/georgelesica-wf/codemod@dart-convert && \ echo "done" RUN echo "Starting the script sections" && \ dart --version && \ From d305667aeec9960ea0f486ed9bb2bf86d4f6b3be Mon Sep 17 00:00:00 2001 From: Sebastian Malysa Date: Thu, 20 Sep 2018 09:36:13 -0400 Subject: [PATCH 06/10] AF-2152: trying removing ENV TERM=linux and ENV TERMINFO=/etc/terminfo one more time --- Dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index d333dbdf..aed12d69 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,8 +13,6 @@ ARG GIT_MERGE_HEAD ARG GIT_MERGE_BRANCH WORKDIR /build/ ADD . /build/ -ENV TERM=linux -ENV TERMINFO=/etc/terminfo RUN echo "Install codemod" && \ pip install git+https://github.com/georgelesica-wf/codemod@dart-convert && \ echo "done" From 4b7e8b4f1a9b30e757d49d0700305fae88e568d1 Mon Sep 17 00:00:00 2001 From: Sebastian Malysa Date: Thu, 20 Sep 2018 09:37:20 -0400 Subject: [PATCH 07/10] AF-2152: nope ENV TERM=linux and ENV TERMINFO=/etc/terminfo are needed still --- Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index aed12d69..d333dbdf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,6 +13,8 @@ ARG GIT_MERGE_HEAD ARG GIT_MERGE_BRANCH WORKDIR /build/ ADD . /build/ +ENV TERM=linux +ENV TERMINFO=/etc/terminfo RUN echo "Install codemod" && \ pip install git+https://github.com/georgelesica-wf/codemod@dart-convert && \ echo "done" From db2480cc22c40ad9e2ae46cbf46cdaa6d00ba459 Mon Sep 17 00:00:00 2001 From: Sebastian Malysa Date: Thu, 20 Sep 2018 09:44:03 -0400 Subject: [PATCH 08/10] AF-2152: set the temp directory path to a variable --- test/migrater_test.dart | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/test/migrater_test.dart b/test/migrater_test.dart index 8ea88a46..bdc4f582 100644 --- a/test/migrater_test.dart +++ b/test/migrater_test.dart @@ -43,12 +43,14 @@ void main() { } Future codeModAndCompare(Directory tempDir, String fileToCodemod) async { + final tempDirPath = tempDir.absolute.path; + /// Copy the file to codemod to the temporary directory. await Process.run('/bin/bash', - ['-c', 'cp -r $fileToCodemod /${tempDir.absolute.path}'], workingDirectory: pathToBeforeCodeModTestFixtures); + ['-c', 'cp -r $fileToCodemod /$tempDirPath'], workingDirectory: pathToBeforeCodeModTestFixtures); /// Codemod the file within the temporary directory - await Process.start('python', [pathToMigrater], workingDirectory: tempDir.absolute.path).then((Process process) async { + await Process.start('python', [pathToMigrater], workingDirectory: tempDirPath).then((Process process) async { await process.stdin.write('A\nA\n'); await process.stdin.close(); await process.exitCode; @@ -56,7 +58,7 @@ Future codeModAndCompare(Directory tempDir, String fileToCodemod) async { /// Compare expected results against codemod file in temp directory. String expectedResults = new File(pathToAfterCodeModTestFixtures + fileToCodemod).readAsStringSync(); - String testFile = new File('${tempDir.absolute.path}/$fileToCodemod').readAsStringSync(); + String testFile = new File('$tempDirPath/$fileToCodemod').readAsStringSync(); expect(testFile, equals(expectedResults)); } From 7d81ebb88aef87bdae9c15decb15900128872430 Mon Sep 17 00:00:00 2001 From: Sebastian Malysa Date: Thu, 20 Sep 2018 13:27:15 -0400 Subject: [PATCH 09/10] AF-2152: add one more item to the dollar prop key usage before/after file --- test/test_fixtures/after_codemod/dollar_prop_keys_usages.dart | 1 + .../test_fixtures/before_codemod/dollar_prop_keys_usages.dart | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/test/test_fixtures/after_codemod/dollar_prop_keys_usages.dart b/test/test_fixtures/after_codemod/dollar_prop_keys_usages.dart index 0a55f550..8ae88c77 100644 --- a/test/test_fixtures/after_codemod/dollar_prop_keys_usages.dart +++ b/test/test_fixtures/after_codemod/dollar_prop_keys_usages.dart @@ -15,6 +15,7 @@ main() { MockTestCaseComponent, unconsumedPropKeys: [] ..addAll(ButtonPropsMixin.meta.keys) + ..addAll(ButtonDisplayPropsMixin.meta.keys) ); }); }); diff --git a/test/test_fixtures/before_codemod/dollar_prop_keys_usages.dart b/test/test_fixtures/before_codemod/dollar_prop_keys_usages.dart index 08d3cb76..861bbb4d 100644 --- a/test/test_fixtures/before_codemod/dollar_prop_keys_usages.dart +++ b/test/test_fixtures/before_codemod/dollar_prop_keys_usages.dart @@ -15,6 +15,7 @@ main() { MockTestCaseComponent, unconsumedPropKeys: [] ..addAll(const $PropKeys(ButtonPropsMixin)) + ..addAll(const $PropKeys(ButtonDisplayPropsMixin)) ); }); }); @@ -22,4 +23,5 @@ main() { /// Add this class as a placeholder to eliminate analyzer errors. /// This will not affect how migrater.py performs. -class ButtonPropsMixin {} \ No newline at end of file +class ButtonPropsMixin {} +class ButtonDisplayPropsMixin {} \ No newline at end of file From 639dcd31e3dccbd6bf535998e73ac2a48074ac44 Mon Sep 17 00:00:00 2001 From: Sebastian Malysa Date: Thu, 20 Sep 2018 13:33:53 -0400 Subject: [PATCH 10/10] AF-2152: add missing line --- test/test_fixtures/after_codemod/dollar_prop_keys_usages.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/test_fixtures/after_codemod/dollar_prop_keys_usages.dart b/test/test_fixtures/after_codemod/dollar_prop_keys_usages.dart index 8ae88c77..7427e9f4 100644 --- a/test/test_fixtures/after_codemod/dollar_prop_keys_usages.dart +++ b/test/test_fixtures/after_codemod/dollar_prop_keys_usages.dart @@ -23,4 +23,5 @@ main() { /// Add this class as a placeholder to eliminate analyzer errors. /// This will not affect how migrater.py performs. -class ButtonPropsMixin {} \ No newline at end of file +class ButtonPropsMixin {} +class ButtonDisplayPropsMixin {} \ No newline at end of file