From 2e731c2112ac9d7160aac63899b2b4b73a989855 Mon Sep 17 00:00:00 2001 From: Jake Macdonald Date: Mon, 16 Aug 2021 09:41:12 -0700 Subject: [PATCH 1/9] add test for file with spaces to frontend_server_client, run tests on CI on linux and windows --- .github/workflows/dart.yml | 215 ++++++++++++++---- frontend_server_client/mono_pkg.yaml | 10 +- .../test/frontend_sever_client_test.dart | 35 +++ tool/ci.sh | 2 +- 4 files changed, 210 insertions(+), 52 deletions(-) diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index 7046a4fbe..311f6931f 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -1,4 +1,4 @@ -# Created with package:mono_repo v5.0.0 +# Created with package:mono_repo v5.0.2 name: Dart CI on: push: @@ -28,48 +28,16 @@ jobs: restore-keys: | os:ubuntu-latest;pub-cache-hosted os:ubuntu-latest - - uses: dart-lang/setup-dart@v1.0 + - uses: dart-lang/setup-dart@v1.2 with: sdk: stable - id: checkout uses: actions/checkout@v2.3.4 - name: mono_repo self validate - run: dart pub global activate mono_repo 5.0.0 + run: dart pub global activate mono_repo 5.0.2 - name: mono_repo self validate run: dart pub global run mono_repo generate --validate job_002: - name: "analyzer_and_format; linux; Dart 2.12.0; PKG: frontend_server_client; `dart format --output=none --set-exit-if-changed .`, `dart analyze --fatal-infos .`" - runs-on: ubuntu-latest - steps: - - name: Cache Pub hosted dependencies - uses: actions/cache@v2.1.6 - with: - path: "~/.pub-cache/hosted" - key: "os:ubuntu-latest;pub-cache-hosted;dart:2.12.0;packages:frontend_server_client;commands:format-analyze" - restore-keys: | - os:ubuntu-latest;pub-cache-hosted;dart:2.12.0;packages:frontend_server_client - os:ubuntu-latest;pub-cache-hosted;dart:2.12.0 - os:ubuntu-latest;pub-cache-hosted - os:ubuntu-latest - - uses: dart-lang/setup-dart@v1.0 - with: - sdk: "2.12.0" - - id: checkout - uses: actions/checkout@v2.3.4 - - id: frontend_server_client_pub_upgrade - name: frontend_server_client; dart pub upgrade - if: "always() && steps.checkout.conclusion == 'success'" - working-directory: frontend_server_client - run: dart pub upgrade - - name: "frontend_server_client; dart format --output=none --set-exit-if-changed ." - if: "always() && steps.frontend_server_client_pub_upgrade.conclusion == 'success'" - working-directory: frontend_server_client - run: "dart format --output=none --set-exit-if-changed ." - - name: "frontend_server_client; dart analyze --fatal-infos ." - if: "always() && steps.frontend_server_client_pub_upgrade.conclusion == 'success'" - working-directory: frontend_server_client - run: dart analyze --fatal-infos . - job_003: name: "analyzer_and_format; linux; Dart dev; PKG: dwds; `dart format --output=none --set-exit-if-changed .`, `dart analyze --fatal-infos .`, `dart test test/build/ensure_version_test.dart`" runs-on: ubuntu-latest steps: @@ -83,7 +51,7 @@ jobs: os:ubuntu-latest;pub-cache-hosted;dart:dev os:ubuntu-latest;pub-cache-hosted os:ubuntu-latest - - uses: dart-lang/setup-dart@v1.0 + - uses: dart-lang/setup-dart@v1.2 with: sdk: dev - id: checkout @@ -105,21 +73,21 @@ jobs: if: "always() && steps.dwds_pub_upgrade.conclusion == 'success'" working-directory: dwds run: dart test test/build/ensure_version_test.dart - job_004: - name: "analyzer_and_format; linux; Dart dev; PKGS: example, fixtures/_webdevSmoke, frontend_server_common; `dart format --output=none --set-exit-if-changed .`, `dart analyze --fatal-infos .`" + job_003: + name: "analyzer_and_format; linux; Dart dev; PKGS: example, fixtures/_webdevSmoke, frontend_server_client, frontend_server_common; `dart format --output=none --set-exit-if-changed .`, `dart analyze --fatal-infos .`" runs-on: ubuntu-latest steps: - name: Cache Pub hosted dependencies uses: actions/cache@v2.1.6 with: path: "~/.pub-cache/hosted" - key: "os:ubuntu-latest;pub-cache-hosted;dart:dev;packages:example-fixtures/_webdevSmoke-frontend_server_common;commands:format-analyze" + key: "os:ubuntu-latest;pub-cache-hosted;dart:dev;packages:example-fixtures/_webdevSmoke-frontend_server_client-frontend_server_common;commands:format-analyze" restore-keys: | - os:ubuntu-latest;pub-cache-hosted;dart:dev;packages:example-fixtures/_webdevSmoke-frontend_server_common + os:ubuntu-latest;pub-cache-hosted;dart:dev;packages:example-fixtures/_webdevSmoke-frontend_server_client-frontend_server_common os:ubuntu-latest;pub-cache-hosted;dart:dev os:ubuntu-latest;pub-cache-hosted os:ubuntu-latest - - uses: dart-lang/setup-dart@v1.0 + - uses: dart-lang/setup-dart@v1.2 with: sdk: dev - id: checkout @@ -150,6 +118,19 @@ jobs: if: "always() && steps.fixtures__webdevSmoke_pub_upgrade.conclusion == 'success'" working-directory: fixtures/_webdevSmoke run: dart analyze --fatal-infos . + - id: frontend_server_client_pub_upgrade + name: frontend_server_client; dart pub upgrade + if: "always() && steps.checkout.conclusion == 'success'" + working-directory: frontend_server_client + run: dart pub upgrade + - name: "frontend_server_client; dart format --output=none --set-exit-if-changed ." + if: "always() && steps.frontend_server_client_pub_upgrade.conclusion == 'success'" + working-directory: frontend_server_client + run: "dart format --output=none --set-exit-if-changed ." + - name: "frontend_server_client; dart analyze --fatal-infos ." + if: "always() && steps.frontend_server_client_pub_upgrade.conclusion == 'success'" + working-directory: frontend_server_client + run: dart analyze --fatal-infos . - id: frontend_server_common_pub_upgrade name: frontend_server_common; dart pub upgrade if: "always() && steps.checkout.conclusion == 'success'" @@ -163,6 +144,34 @@ jobs: if: "always() && steps.frontend_server_common_pub_upgrade.conclusion == 'success'" working-directory: frontend_server_common run: dart analyze --fatal-infos . + job_004: + name: "analyzer_and_format; linux; Dart dev; PKG: frontend_server_client; `dart test`" + runs-on: ubuntu-latest + steps: + - name: Cache Pub hosted dependencies + uses: actions/cache@v2.1.6 + with: + path: "~/.pub-cache/hosted" + key: "os:ubuntu-latest;pub-cache-hosted;dart:dev;packages:frontend_server_client;commands:test_1" + restore-keys: | + os:ubuntu-latest;pub-cache-hosted;dart:dev;packages:frontend_server_client + os:ubuntu-latest;pub-cache-hosted;dart:dev + os:ubuntu-latest;pub-cache-hosted + os:ubuntu-latest + - uses: dart-lang/setup-dart@v1.2 + with: + sdk: dev + - id: checkout + uses: actions/checkout@v2.3.4 + - id: frontend_server_client_pub_upgrade + name: frontend_server_client; dart pub upgrade + if: "always() && steps.checkout.conclusion == 'success'" + working-directory: frontend_server_client + run: dart pub upgrade + - name: frontend_server_client; dart test + if: "always() && steps.frontend_server_client_pub_upgrade.conclusion == 'success'" + working-directory: frontend_server_client + run: dart test job_005: name: "analyzer_and_format; linux; Dart dev; PKG: webdev; `dart format --output=none --set-exit-if-changed .`, `dart analyze --fatal-infos .`, `dart test test/build/ensure_build_test.dart`" runs-on: ubuntu-latest @@ -177,7 +186,7 @@ jobs: os:ubuntu-latest;pub-cache-hosted;dart:dev os:ubuntu-latest;pub-cache-hosted os:ubuntu-latest - - uses: dart-lang/setup-dart@v1.0 + - uses: dart-lang/setup-dart@v1.2 with: sdk: dev - id: checkout @@ -200,6 +209,92 @@ jobs: working-directory: webdev run: dart test test/build/ensure_build_test.dart job_006: + name: "analyzer_and_format; linux; Dart stable; PKG: frontend_server_client; `dart test`" + runs-on: ubuntu-latest + steps: + - name: Cache Pub hosted dependencies + uses: actions/cache@v2.1.6 + with: + path: "~/.pub-cache/hosted" + key: "os:ubuntu-latest;pub-cache-hosted;dart:stable;packages:frontend_server_client;commands:test_1" + restore-keys: | + os:ubuntu-latest;pub-cache-hosted;dart:stable;packages:frontend_server_client + os:ubuntu-latest;pub-cache-hosted;dart:stable + os:ubuntu-latest;pub-cache-hosted + os:ubuntu-latest + - uses: dart-lang/setup-dart@v1.2 + with: + sdk: stable + - id: checkout + uses: actions/checkout@v2.3.4 + - id: frontend_server_client_pub_upgrade + name: frontend_server_client; dart pub upgrade + if: "always() && steps.checkout.conclusion == 'success'" + working-directory: frontend_server_client + run: dart pub upgrade + - name: frontend_server_client; dart test + if: "always() && steps.frontend_server_client_pub_upgrade.conclusion == 'success'" + working-directory: frontend_server_client + run: dart test + job_007: + name: "analyzer_and_format; windows; Dart dev; PKG: frontend_server_client; `dart format --output=none --set-exit-if-changed .`, `dart analyze --fatal-infos .`" + runs-on: windows-latest + steps: + - uses: dart-lang/setup-dart@v1.2 + with: + sdk: dev + - id: checkout + uses: actions/checkout@v2.3.4 + - id: frontend_server_client_pub_upgrade + name: frontend_server_client; dart pub upgrade + if: "always() && steps.checkout.conclusion == 'success'" + working-directory: frontend_server_client + run: dart pub upgrade + - name: "frontend_server_client; dart format --output=none --set-exit-if-changed ." + if: "always() && steps.frontend_server_client_pub_upgrade.conclusion == 'success'" + working-directory: frontend_server_client + run: "dart format --output=none --set-exit-if-changed ." + - name: "frontend_server_client; dart analyze --fatal-infos ." + if: "always() && steps.frontend_server_client_pub_upgrade.conclusion == 'success'" + working-directory: frontend_server_client + run: dart analyze --fatal-infos . + job_008: + name: "analyzer_and_format; windows; Dart dev; PKG: frontend_server_client; `dart test`" + runs-on: windows-latest + steps: + - uses: dart-lang/setup-dart@v1.2 + with: + sdk: dev + - id: checkout + uses: actions/checkout@v2.3.4 + - id: frontend_server_client_pub_upgrade + name: frontend_server_client; dart pub upgrade + if: "always() && steps.checkout.conclusion == 'success'" + working-directory: frontend_server_client + run: dart pub upgrade + - name: frontend_server_client; dart test + if: "always() && steps.frontend_server_client_pub_upgrade.conclusion == 'success'" + working-directory: frontend_server_client + run: dart test + job_009: + name: "analyzer_and_format; windows; Dart stable; PKG: frontend_server_client; `dart test`" + runs-on: windows-latest + steps: + - uses: dart-lang/setup-dart@v1.2 + with: + sdk: stable + - id: checkout + uses: actions/checkout@v2.3.4 + - id: frontend_server_client_pub_upgrade + name: frontend_server_client; dart pub upgrade + if: "always() && steps.checkout.conclusion == 'success'" + working-directory: frontend_server_client + run: dart pub upgrade + - name: frontend_server_client; dart test + if: "always() && steps.frontend_server_client_pub_upgrade.conclusion == 'success'" + working-directory: frontend_server_client + run: dart test + job_010: name: "unit_test; linux; Dart dev; PKG: dwds; `Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &`, `dart test`" runs-on: ubuntu-latest steps: @@ -213,7 +308,7 @@ jobs: os:ubuntu-latest;pub-cache-hosted;dart:dev os:ubuntu-latest;pub-cache-hosted os:ubuntu-latest - - uses: dart-lang/setup-dart@v1.0 + - uses: dart-lang/setup-dart@v1.2 with: sdk: dev - id: checkout @@ -237,7 +332,11 @@ jobs: - job_003 - job_004 - job_005 - job_007: + - job_006 + - job_007 + - job_008 + - job_009 + job_011: name: "unit_test; linux; Dart dev; PKG: webdev; `Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &`, `dart test -j 1`" runs-on: ubuntu-latest steps: @@ -251,7 +350,7 @@ jobs: os:ubuntu-latest;pub-cache-hosted;dart:dev os:ubuntu-latest;pub-cache-hosted os:ubuntu-latest - - uses: dart-lang/setup-dart@v1.0 + - uses: dart-lang/setup-dart@v1.2 with: sdk: dev - id: checkout @@ -275,11 +374,15 @@ jobs: - job_003 - job_004 - job_005 - job_008: + - job_006 + - job_007 + - job_008 + - job_009 + job_012: name: "unit_test; windows; Dart dev; PKG: dwds; `dart test`" runs-on: windows-latest steps: - - uses: dart-lang/setup-dart@v1.0 + - uses: dart-lang/setup-dart@v1.2 with: sdk: dev - id: checkout @@ -299,11 +402,15 @@ jobs: - job_003 - job_004 - job_005 - job_009: + - job_006 + - job_007 + - job_008 + - job_009 + job_013: name: "unit_test; windows; Dart dev; PKG: webdev; `dart test -j 1`" runs-on: windows-latest steps: - - uses: dart-lang/setup-dart@v1.0 + - uses: dart-lang/setup-dart@v1.2 with: sdk: dev - id: checkout @@ -323,7 +430,11 @@ jobs: - job_003 - job_004 - job_005 - job_010: + - job_006 + - job_007 + - job_008 + - job_009 + job_014: name: Notify failure runs-on: ubuntu-latest if: "(github.event_name == 'push' || github.event_name == 'schedule') && failure()" @@ -344,3 +455,7 @@ jobs: - job_007 - job_008 - job_009 + - job_010 + - job_011 + - job_012 + - job_013 diff --git a/frontend_server_client/mono_pkg.yaml b/frontend_server_client/mono_pkg.yaml index 40c94b332..30b8ef91c 100644 --- a/frontend_server_client/mono_pkg.yaml +++ b/frontend_server_client/mono_pkg.yaml @@ -1,7 +1,15 @@ # See https://pub.dev/packages/mono_repo for details +os: + - windows + - linux + stages: - analyzer_and_format: - group: - format - analyze: --fatal-infos . - dart: [2.12.0] + dart: dev + - test: + dart: + - stable + - dev \ No newline at end of file diff --git a/frontend_server_client/test/frontend_sever_client_test.dart b/frontend_server_client/test/frontend_sever_client_test.dart index 323122578..834bb5daf 100644 --- a/frontend_server_client/test/frontend_sever_client_test.dart +++ b/frontend_server_client/test/frontend_sever_client_test.dart @@ -264,6 +264,41 @@ void main() { expect(result.errorCount, 1); expect(result.compilerOutputLines, contains(contains('int x;'))); }); + + test('can compile filenames with spaces', () async { + await d.dir('a', [ + d.dir('bin', [ + d.file('main with spaces.dart', ''' +void main() { + print('hello world'); +} +''') + ]), + ]).create(); + + var entrypoint = p.join(packageRoot, 'bin', 'main with spaces.dart'); + client = await FrontendServerClient.start( + entrypoint, p.join(packageRoot, 'out.dill'), vmPlatformDill); + var result = await client.compile(); + if (result == null) { + fail('Expected compilation to be non-null'); + } + client.accept(); + expect(result.compilerOutputLines, isEmpty); + expect(result.errorCount, 0); + expect( + result.newSources, + containsAll([ + File(entrypoint).uri, + ])); + expect(result.removedSources, isEmpty); + expect(File(result.dillOutput).existsSync(), true); + var process = + await Process.run(Platform.resolvedExecutable, [result.dillOutput]); + + expect(process.stdout, 'hello world\n'); + expect(process.exitCode, 0); + }); } Future waitForIsolatesAndResume(VmService vmService) async { diff --git a/tool/ci.sh b/tool/ci.sh index e0a2dfa47..716288c72 100755 --- a/tool/ci.sh +++ b/tool/ci.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Created with package:mono_repo v5.0.0 +# Created with package:mono_repo v5.0.2 # Support built in commands on windows out of the box. # When it is a flutter repo (check the pubspec.yaml for "sdk: flutter") From 70694a220e45f459123440771691384afae9c154 Mon Sep 17 00:00:00 2001 From: Jake Macdonald Date: Mon, 16 Aug 2021 09:51:31 -0700 Subject: [PATCH 2/9] update DDC tests, mono_repo config --- .github/workflows/dart.yml | 249 ++++++++---------- frontend_server_client/mono_pkg.yaml | 10 +- .../test/frontend_sever_client_test.dart | 4 +- 3 files changed, 120 insertions(+), 143 deletions(-) diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index 311f6931f..926e02b4c 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -145,34 +145,6 @@ jobs: working-directory: frontend_server_common run: dart analyze --fatal-infos . job_004: - name: "analyzer_and_format; linux; Dart dev; PKG: frontend_server_client; `dart test`" - runs-on: ubuntu-latest - steps: - - name: Cache Pub hosted dependencies - uses: actions/cache@v2.1.6 - with: - path: "~/.pub-cache/hosted" - key: "os:ubuntu-latest;pub-cache-hosted;dart:dev;packages:frontend_server_client;commands:test_1" - restore-keys: | - os:ubuntu-latest;pub-cache-hosted;dart:dev;packages:frontend_server_client - os:ubuntu-latest;pub-cache-hosted;dart:dev - os:ubuntu-latest;pub-cache-hosted - os:ubuntu-latest - - uses: dart-lang/setup-dart@v1.2 - with: - sdk: dev - - id: checkout - uses: actions/checkout@v2.3.4 - - id: frontend_server_client_pub_upgrade - name: frontend_server_client; dart pub upgrade - if: "always() && steps.checkout.conclusion == 'success'" - working-directory: frontend_server_client - run: dart pub upgrade - - name: frontend_server_client; dart test - if: "always() && steps.frontend_server_client_pub_upgrade.conclusion == 'success'" - working-directory: frontend_server_client - run: dart test - job_005: name: "analyzer_and_format; linux; Dart dev; PKG: webdev; `dart format --output=none --set-exit-if-changed .`, `dart analyze --fatal-infos .`, `dart test test/build/ensure_build_test.dart`" runs-on: ubuntu-latest steps: @@ -208,103 +180,54 @@ jobs: if: "always() && steps.webdev_pub_upgrade.conclusion == 'success'" working-directory: webdev run: dart test test/build/ensure_build_test.dart - job_006: - name: "analyzer_and_format; linux; Dart stable; PKG: frontend_server_client; `dart test`" + job_005: + name: "unit_test; linux; Dart dev; PKG: dwds; `Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &`, `dart test`" runs-on: ubuntu-latest steps: - name: Cache Pub hosted dependencies uses: actions/cache@v2.1.6 with: path: "~/.pub-cache/hosted" - key: "os:ubuntu-latest;pub-cache-hosted;dart:stable;packages:frontend_server_client;commands:test_1" + key: "os:ubuntu-latest;pub-cache-hosted;dart:dev;packages:dwds;commands:command-test_1" restore-keys: | - os:ubuntu-latest;pub-cache-hosted;dart:stable;packages:frontend_server_client - os:ubuntu-latest;pub-cache-hosted;dart:stable + os:ubuntu-latest;pub-cache-hosted;dart:dev;packages:dwds + os:ubuntu-latest;pub-cache-hosted;dart:dev os:ubuntu-latest;pub-cache-hosted os:ubuntu-latest - - uses: dart-lang/setup-dart@v1.2 - with: - sdk: stable - - id: checkout - uses: actions/checkout@v2.3.4 - - id: frontend_server_client_pub_upgrade - name: frontend_server_client; dart pub upgrade - if: "always() && steps.checkout.conclusion == 'success'" - working-directory: frontend_server_client - run: dart pub upgrade - - name: frontend_server_client; dart test - if: "always() && steps.frontend_server_client_pub_upgrade.conclusion == 'success'" - working-directory: frontend_server_client - run: dart test - job_007: - name: "analyzer_and_format; windows; Dart dev; PKG: frontend_server_client; `dart format --output=none --set-exit-if-changed .`, `dart analyze --fatal-infos .`" - runs-on: windows-latest - steps: - uses: dart-lang/setup-dart@v1.2 with: sdk: dev - id: checkout uses: actions/checkout@v2.3.4 - - id: frontend_server_client_pub_upgrade - name: frontend_server_client; dart pub upgrade - if: "always() && steps.checkout.conclusion == 'success'" - working-directory: frontend_server_client - run: dart pub upgrade - - name: "frontend_server_client; dart format --output=none --set-exit-if-changed ." - if: "always() && steps.frontend_server_client_pub_upgrade.conclusion == 'success'" - working-directory: frontend_server_client - run: "dart format --output=none --set-exit-if-changed ." - - name: "frontend_server_client; dart analyze --fatal-infos ." - if: "always() && steps.frontend_server_client_pub_upgrade.conclusion == 'success'" - working-directory: frontend_server_client - run: dart analyze --fatal-infos . - job_008: - name: "analyzer_and_format; windows; Dart dev; PKG: frontend_server_client; `dart test`" - runs-on: windows-latest - steps: - - uses: dart-lang/setup-dart@v1.2 - with: - sdk: dev - - id: checkout - uses: actions/checkout@v2.3.4 - - id: frontend_server_client_pub_upgrade - name: frontend_server_client; dart pub upgrade - if: "always() && steps.checkout.conclusion == 'success'" - working-directory: frontend_server_client - run: dart pub upgrade - - name: frontend_server_client; dart test - if: "always() && steps.frontend_server_client_pub_upgrade.conclusion == 'success'" - working-directory: frontend_server_client - run: dart test - job_009: - name: "analyzer_and_format; windows; Dart stable; PKG: frontend_server_client; `dart test`" - runs-on: windows-latest - steps: - - uses: dart-lang/setup-dart@v1.2 - with: - sdk: stable - - id: checkout - uses: actions/checkout@v2.3.4 - - id: frontend_server_client_pub_upgrade - name: frontend_server_client; dart pub upgrade + - id: dwds_pub_upgrade + name: dwds; dart pub upgrade if: "always() && steps.checkout.conclusion == 'success'" - working-directory: frontend_server_client + working-directory: dwds run: dart pub upgrade - - name: frontend_server_client; dart test - if: "always() && steps.frontend_server_client_pub_upgrade.conclusion == 'success'" - working-directory: frontend_server_client + - name: "dwds; Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &" + if: "always() && steps.dwds_pub_upgrade.conclusion == 'success'" + working-directory: dwds + run: "Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &" + - name: dwds; dart test + if: "always() && steps.dwds_pub_upgrade.conclusion == 'success'" + working-directory: dwds run: dart test - job_010: - name: "unit_test; linux; Dart dev; PKG: dwds; `Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &`, `dart test`" + needs: + - job_001 + - job_002 + - job_003 + - job_004 + job_006: + name: "unit_test; linux; Dart dev; PKG: frontend_server_client; `dart test`" runs-on: ubuntu-latest steps: - name: Cache Pub hosted dependencies uses: actions/cache@v2.1.6 with: path: "~/.pub-cache/hosted" - key: "os:ubuntu-latest;pub-cache-hosted;dart:dev;packages:dwds;commands:command-test_1" + key: "os:ubuntu-latest;pub-cache-hosted;dart:dev;packages:frontend_server_client;commands:test_1" restore-keys: | - os:ubuntu-latest;pub-cache-hosted;dart:dev;packages:dwds + os:ubuntu-latest;pub-cache-hosted;dart:dev;packages:frontend_server_client os:ubuntu-latest;pub-cache-hosted;dart:dev os:ubuntu-latest;pub-cache-hosted os:ubuntu-latest @@ -313,30 +236,21 @@ jobs: sdk: dev - id: checkout uses: actions/checkout@v2.3.4 - - id: dwds_pub_upgrade - name: dwds; dart pub upgrade + - id: frontend_server_client_pub_upgrade + name: frontend_server_client; dart pub upgrade if: "always() && steps.checkout.conclusion == 'success'" - working-directory: dwds + working-directory: frontend_server_client run: dart pub upgrade - - name: "dwds; Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &" - if: "always() && steps.dwds_pub_upgrade.conclusion == 'success'" - working-directory: dwds - run: "Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &" - - name: dwds; dart test - if: "always() && steps.dwds_pub_upgrade.conclusion == 'success'" - working-directory: dwds + - name: frontend_server_client; dart test + if: "always() && steps.frontend_server_client_pub_upgrade.conclusion == 'success'" + working-directory: frontend_server_client run: dart test needs: - job_001 - job_002 - job_003 - job_004 - - job_005 - - job_006 - - job_007 - - job_008 - - job_009 - job_011: + job_007: name: "unit_test; linux; Dart dev; PKG: webdev; `Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &`, `dart test -j 1`" runs-on: ubuntu-latest steps: @@ -373,12 +287,40 @@ jobs: - job_002 - job_003 - job_004 - - job_005 - - job_006 - - job_007 - - job_008 - - job_009 - job_012: + job_008: + name: "unit_test; linux; Dart stable; PKG: frontend_server_client; `dart test`" + runs-on: ubuntu-latest + steps: + - name: Cache Pub hosted dependencies + uses: actions/cache@v2.1.6 + with: + path: "~/.pub-cache/hosted" + key: "os:ubuntu-latest;pub-cache-hosted;dart:stable;packages:frontend_server_client;commands:test_1" + restore-keys: | + os:ubuntu-latest;pub-cache-hosted;dart:stable;packages:frontend_server_client + os:ubuntu-latest;pub-cache-hosted;dart:stable + os:ubuntu-latest;pub-cache-hosted + os:ubuntu-latest + - uses: dart-lang/setup-dart@v1.2 + with: + sdk: stable + - id: checkout + uses: actions/checkout@v2.3.4 + - id: frontend_server_client_pub_upgrade + name: frontend_server_client; dart pub upgrade + if: "always() && steps.checkout.conclusion == 'success'" + working-directory: frontend_server_client + run: dart pub upgrade + - name: frontend_server_client; dart test + if: "always() && steps.frontend_server_client_pub_upgrade.conclusion == 'success'" + working-directory: frontend_server_client + run: dart test + needs: + - job_001 + - job_002 + - job_003 + - job_004 + job_009: name: "unit_test; windows; Dart dev; PKG: dwds; `dart test`" runs-on: windows-latest steps: @@ -401,12 +343,30 @@ jobs: - job_002 - job_003 - job_004 - - job_005 - - job_006 - - job_007 - - job_008 - - job_009 - job_013: + job_010: + name: "unit_test; windows; Dart dev; PKG: frontend_server_client; `dart test`" + runs-on: windows-latest + steps: + - uses: dart-lang/setup-dart@v1.2 + with: + sdk: dev + - id: checkout + uses: actions/checkout@v2.3.4 + - id: frontend_server_client_pub_upgrade + name: frontend_server_client; dart pub upgrade + if: "always() && steps.checkout.conclusion == 'success'" + working-directory: frontend_server_client + run: dart pub upgrade + - name: frontend_server_client; dart test + if: "always() && steps.frontend_server_client_pub_upgrade.conclusion == 'success'" + working-directory: frontend_server_client + run: dart test + needs: + - job_001 + - job_002 + - job_003 + - job_004 + job_011: name: "unit_test; windows; Dart dev; PKG: webdev; `dart test -j 1`" runs-on: windows-latest steps: @@ -429,12 +389,30 @@ jobs: - job_002 - job_003 - job_004 - - job_005 - - job_006 - - job_007 - - job_008 - - job_009 - job_014: + job_012: + name: "unit_test; windows; Dart stable; PKG: frontend_server_client; `dart test`" + runs-on: windows-latest + steps: + - uses: dart-lang/setup-dart@v1.2 + with: + sdk: stable + - id: checkout + uses: actions/checkout@v2.3.4 + - id: frontend_server_client_pub_upgrade + name: frontend_server_client; dart pub upgrade + if: "always() && steps.checkout.conclusion == 'success'" + working-directory: frontend_server_client + run: dart pub upgrade + - name: frontend_server_client; dart test + if: "always() && steps.frontend_server_client_pub_upgrade.conclusion == 'success'" + working-directory: frontend_server_client + run: dart test + needs: + - job_001 + - job_002 + - job_003 + - job_004 + job_013: name: Notify failure runs-on: ubuntu-latest if: "(github.event_name == 'push' || github.event_name == 'schedule') && failure()" @@ -458,4 +436,3 @@ jobs: - job_010 - job_011 - job_012 - - job_013 diff --git a/frontend_server_client/mono_pkg.yaml b/frontend_server_client/mono_pkg.yaml index 30b8ef91c..364b2b447 100644 --- a/frontend_server_client/mono_pkg.yaml +++ b/frontend_server_client/mono_pkg.yaml @@ -1,15 +1,15 @@ # See https://pub.dev/packages/mono_repo for details -os: - - windows - - linux - stages: - analyzer_and_format: - group: - format - analyze: --fatal-infos . dart: dev + - unit_test: - test: dart: - stable - - dev \ No newline at end of file + - dev + os: + - windows + - linux \ No newline at end of file diff --git a/frontend_server_client/test/frontend_sever_client_test.dart b/frontend_server_client/test/frontend_sever_client_test.dart index 834bb5daf..aa18ee6b1 100644 --- a/frontend_server_client/test/frontend_sever_client_test.dart +++ b/frontend_server_client/test/frontend_sever_client_test.dart @@ -94,7 +94,7 @@ String get message => p.join('hello', 'world'); var vmService = await vmServiceConnectUri(observatoryUri); var isolate = await waitForIsolatesAndResume(vmService); - expect(await stdoutLines.next, p.join('hello', 'world')); + await expectLater(stdoutLines, emitsThrough(p.join('hello', 'world'))); var appFile = File(entrypoint); var originalContent = await appFile.readAsString(); @@ -165,7 +165,7 @@ String get message => p.join('hello', 'world'); // The program actually runs regardless of the errors, as they don't affect // the runtime behavior. - expect(await stdoutLines.next, p.join('hello', 'world')); + await expectLater(stdoutLines, emitsThrough(p.join('hello', 'world'))); await entrypointFile .writeAsString(originalContent.replaceFirst('hello', 'goodbye')); From 584e6015171786904e0927bcbc03f5fde38857b7 Mon Sep 17 00:00:00 2001 From: Jake Macdonald Date: Mon, 16 Aug 2021 09:55:26 -0700 Subject: [PATCH 3/9] update test to not rely on line endings --- frontend_server_client/test/frontend_sever_client_test.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend_server_client/test/frontend_sever_client_test.dart b/frontend_server_client/test/frontend_sever_client_test.dart index aa18ee6b1..e7dde615e 100644 --- a/frontend_server_client/test/frontend_sever_client_test.dart +++ b/frontend_server_client/test/frontend_sever_client_test.dart @@ -296,7 +296,7 @@ void main() { var process = await Process.run(Platform.resolvedExecutable, [result.dillOutput]); - expect(process.stdout, 'hello world\n'); + expect(process.stdout, startsWith('hello world')); expect(process.exitCode, 0); }); } From 436abfe3191218096460b2fef74a2ab53ad97703 Mon Sep 17 00:00:00 2001 From: Jake Macdonald Date: Mon, 16 Aug 2021 10:06:06 -0700 Subject: [PATCH 4/9] put spaces in the output dill also --- .../test/frontend_sever_client_test.dart | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/frontend_server_client/test/frontend_sever_client_test.dart b/frontend_server_client/test/frontend_sever_client_test.dart index e7dde615e..97a66a4d0 100644 --- a/frontend_server_client/test/frontend_sever_client_test.dart +++ b/frontend_server_client/test/frontend_sever_client_test.dart @@ -265,7 +265,7 @@ void main() { expect(result.compilerOutputLines, contains(contains('int x;'))); }); - test('can compile filenames with spaces', () async { + test('can compile and recompile filenames with spaces', () async { await d.dir('a', [ d.dir('bin', [ d.file('main with spaces.dart', ''' @@ -277,8 +277,8 @@ void main() { ]).create(); var entrypoint = p.join(packageRoot, 'bin', 'main with spaces.dart'); - client = await FrontendServerClient.start( - entrypoint, p.join(packageRoot, 'out.dill'), vmPlatformDill); + client = await FrontendServerClient.start(entrypoint, + p.join(packageRoot, 'out with spaces.dill'), vmPlatformDill); var result = await client.compile(); if (result == null) { fail('Expected compilation to be non-null'); @@ -293,11 +293,29 @@ void main() { ])); expect(result.removedSources, isEmpty); expect(File(result.dillOutput).existsSync(), true); - var process = + var processResult = await Process.run(Platform.resolvedExecutable, [result.dillOutput]); - expect(process.stdout, startsWith('hello world')); - expect(process.exitCode, 0); + expect(processResult.stdout, startsWith('hello world')); + expect(processResult.exitCode, 0); + + var appFile = File(entrypoint); + var originalContent = await appFile.readAsString(); + var newContent = originalContent.replaceFirst('hello', 'goodbye'); + await appFile.writeAsString(newContent); + result = await client.compile([appFile.uri]); + if (result == null) { + fail('Expected compilation to be non-null'); + } + expect(result.compilerOutputLines, isEmpty); + expect(result.errorCount, 0); + expect(result.newSources, isEmpty); + expect(result.removedSources, isEmpty); + + processResult = + await Process.run(Platform.resolvedExecutable, [result.dillOutput]); + expect(processResult.stdout, startsWith('goodbye world')); + expect(processResult.exitCode, 0); }); } From aa6ec701d1fb31bda5290215cc6a3892ebfc4170 Mon Sep 17 00:00:00 2001 From: Jake Macdonald Date: Mon, 16 Aug 2021 10:10:49 -0700 Subject: [PATCH 5/9] support file names with spaces when parsing the error count line --- frontend_server_client/lib/src/frontend_server_client.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend_server_client/lib/src/frontend_server_client.dart b/frontend_server_client/lib/src/frontend_server_client.dart index 0f3a28549..b0a83c7dd 100644 --- a/frontend_server_client/lib/src/frontend_server_client.dart +++ b/frontend_server_client/lib/src/frontend_server_client.dart @@ -171,8 +171,8 @@ class FrontendServerClient { if (line.startsWith(feBoundaryKey)) { state = _CompileState.done; var parts = line.split(' '); - outputDillPath = parts[1]; - errorCount = int.parse(parts[2]); + outputDillPath = parts.getRange(1, parts.length - 1).join(' '); + errorCount = int.parse(parts.last); continue; } var diffUri = Uri.parse(line.substring(1)); From 22d977bff5f4e1b1a94b3cf40627d0a2ca0e87a3 Mon Sep 17 00:00:00 2001 From: Jake Macdonald Date: Mon, 16 Aug 2021 10:12:03 -0700 Subject: [PATCH 6/9] udpate changelog/pubspec --- frontend_server_client/CHANGELOG.md | 5 +++++ frontend_server_client/pubspec.yaml | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/frontend_server_client/CHANGELOG.md b/frontend_server_client/CHANGELOG.md index f8659ac2e..c77b2904d 100644 --- a/frontend_server_client/CHANGELOG.md +++ b/frontend_server_client/CHANGELOG.md @@ -1,3 +1,8 @@ +## 2.1.1 + +- Fix a bug where spaces in the output dill path would cause a parse error when + reading the error count output. + ## 2.1.0 - Support enabling experiments when starting the compiler. diff --git a/frontend_server_client/pubspec.yaml b/frontend_server_client/pubspec.yaml index 00c083040..63898c9b2 100644 --- a/frontend_server_client/pubspec.yaml +++ b/frontend_server_client/pubspec.yaml @@ -1,5 +1,5 @@ name: frontend_server_client -version: 2.1.0 +version: 2.1.1 description: >- Client code to start and interact with the frontend_server compiler from the Dart SDK. From 4aba94572bf999e3bf14880ac587e1b595b6d327 Mon Sep 17 00:00:00 2001 From: Jake Macdonald Date: Mon, 16 Aug 2021 10:25:08 -0700 Subject: [PATCH 7/9] skip failing unrelated test on windows --- frontend_server_client/test/frontend_sever_client_test.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/frontend_server_client/test/frontend_sever_client_test.dart b/frontend_server_client/test/frontend_sever_client_test.dart index 97a66a4d0..b2ea139df 100644 --- a/frontend_server_client/test/frontend_sever_client_test.dart +++ b/frontend_server_client/test/frontend_sever_client_test.dart @@ -117,7 +117,10 @@ String get message => p.join('hello', 'world'); expect(await stdoutLines.next, p.join('goodbye', 'world')); expect(await process.exitCode, 0); - }); + }, + skip: Platform.isWindows + ? 'https://github.com/dart-lang/webdev/issues/1383' + : false); test('can handle compile errors and reload fixes', () async { var entrypoint = p.join(packageRoot, 'bin', 'main.dart'); From 5e148801d8b5b12f594511d5d8963a33322d4b24 Mon Sep 17 00:00:00 2001 From: Jake Macdonald Date: Mon, 16 Aug 2021 11:05:28 -0700 Subject: [PATCH 8/9] add newline --- frontend_server_client/mono_pkg.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend_server_client/mono_pkg.yaml b/frontend_server_client/mono_pkg.yaml index 364b2b447..a8d55603b 100644 --- a/frontend_server_client/mono_pkg.yaml +++ b/frontend_server_client/mono_pkg.yaml @@ -12,4 +12,4 @@ stages: - dev os: - windows - - linux \ No newline at end of file + - linux From b8081854f45d871768a04f98b7ea7f05b178f1ae Mon Sep 17 00:00:00 2001 From: Jake Macdonald Date: Mon, 16 Aug 2021 11:10:58 -0700 Subject: [PATCH 9/9] skip additional reload test --- frontend_server_client/test/frontend_sever_client_test.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/frontend_server_client/test/frontend_sever_client_test.dart b/frontend_server_client/test/frontend_sever_client_test.dart index b2ea139df..d0b00a861 100644 --- a/frontend_server_client/test/frontend_sever_client_test.dart +++ b/frontend_server_client/test/frontend_sever_client_test.dart @@ -187,7 +187,10 @@ String get message => p.join('hello', 'world'); expect(await stdoutLines.next, p.join('goodbye', 'world')); expect(await process.exitCode, 0); - }); + }, + skip: Platform.isWindows + ? 'https://github.com/dart-lang/webdev/issues/1383' + : false); test('can compile and recompile a dartdevc app', () async { var entrypoint =