diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml new file mode 100644 index 00000000..8f32fe19 --- /dev/null +++ b/.github/workflows/coverage.yml @@ -0,0 +1,96 @@ +name: Combined Coverage Report + +on: + push: + branches: + - main + pull_request: + +jobs: + coverage: + name: Generate Combined Coverage + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - uses: subosito/flutter-action@v2 + with: + flutter-version: '3.x' + channel: 'stable' + + - name: Install dependencies + run: | + dart pub global activate melos + dart pub global activate coverage + dart pub global activate combine_coverage + melos bootstrap + + - name: Run tests with coverage for all packages + run: | + # Create directory for combined coverage + mkdir coverage + + # Run tests for each package and generate coverage + cd packages + for d in */ ; do + cd "$d" + if [ -f "pubspec.yaml" ]; then + echo "Running tests for $d" + if [[ "$d" == "supabase_flutter/"* ]]; then + flutter test --coverage --concurrency=1 + else + # Set up Docker containers based on package + if [[ "$d" == "postgrest/"* ]]; then + cd ../../infra/postgrest + docker compose down + docker compose up -d + cd ../../packages/postgrest + dart test --coverage=coverage --concurrency=1 + dart pub global run coverage:format_coverage --packages=.dart_tool/package_config.json --report-on=lib --lcov -o coverage/lcov.info -i coverage + cd ../../infra/postgrest + docker compose down + sleep 5s + cd ../../packages/postgrest + elif [[ "$d" == "gotrue/"* ]]; then + cd ../../infra/gotrue + docker compose down + docker compose up -d + cd ../../packages/gotrue + dart test --coverage=coverage --concurrency=1 + dart pub global run coverage:format_coverage --packages=.dart_tool/package_config.json --report-on=lib --lcov -o coverage/lcov.info -i coverage + cd ../../infra/gotrue + docker compose down + sleep 5s + cd ../../packages/gotrue + elif [[ "$d" == "storage_client/"* ]]; then + cd ../../infra/storage_client + docker compose down + docker compose up -d + cd ../../packages/storage_client + dart test --coverage=coverage --concurrency=1 + dart pub global run coverage:format_coverage --packages=.dart_tool/package_config.json --report-on=lib --lcov -o coverage/lcov.info -i coverage + cd ../../infra/storage_client + docker compose down + sleep 5s + cd ../../packages/storage_client + else + cd ../../packages/$d + dart test --coverage=coverage --concurrency=1 + dart pub global run coverage:format_coverage --packages=.dart_tool/package_config.json --report-on=lib --lcov -o coverage/lcov.info -i coverage + fi + fi + fi + cd .. + done + cd .. + + - name: Combine coverage reports + run: | + dart pub global run combine_coverage:combine_coverage --repo-path="./" --output-directory="coverage" + + - name: Upload combined coverage report + uses: coverallsapp/github-action@v2 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + path-to-lcov: ./coverage/lcov.info diff --git a/.github/workflows/functions_client.yml b/.github/workflows/functions_client.yml index 7db4a9f7..365f37fb 100644 --- a/.github/workflows/functions_client.yml +++ b/.github/workflows/functions_client.yml @@ -51,7 +51,12 @@ jobs: run: dart format lib test -l 80 --set-exit-if-changed - name: analyzer + if: ${{ matrix.sdk == 'stable'}} run: dart analyze --fatal-warnings --fatal-infos . + - name: analyzer + if: ${{ matrix.sdk == 'beta' || matrix.sdk == 'dev' }} + run: dart analyze + - name: Run tests run: dart test diff --git a/.github/workflows/gotrue.yml b/.github/workflows/gotrue.yml index d7df105f..c6e6e86e 100644 --- a/.github/workflows/gotrue.yml +++ b/.github/workflows/gotrue.yml @@ -48,8 +48,13 @@ jobs: run: dart format lib test -l 80 --set-exit-if-changed - name: analyzer + if: ${{ matrix.sdk == 'stable'}} run: dart analyze --fatal-warnings --fatal-infos . + - name: analyzer + if: ${{ matrix.sdk == 'beta' || matrix.sdk == 'dev' }} + run: dart analyze + - name: Build Docker image run: | cd ../../infra/gotrue diff --git a/.github/workflows/postgrest.yml b/.github/workflows/postgrest.yml index 49e6f637..57fad3ac 100644 --- a/.github/workflows/postgrest.yml +++ b/.github/workflows/postgrest.yml @@ -50,8 +50,13 @@ jobs: run: dart format lib test -l 80 --set-exit-if-changed - name: analyzer + if: ${{ matrix.sdk == 'stable'}} run: dart analyze --fatal-warnings --fatal-infos . + - name: analyzer + if: ${{ matrix.sdk == 'beta' || matrix.sdk == 'dev' }} + run: dart analyze + - name: Build Docker image run: | cd ../../infra/postgrest diff --git a/.github/workflows/realtime_client.yml b/.github/workflows/realtime_client.yml index 48216378..12b6ab8b 100644 --- a/.github/workflows/realtime_client.yml +++ b/.github/workflows/realtime_client.yml @@ -48,7 +48,12 @@ jobs: run: dart format lib test -l 80 --set-exit-if-changed - name: analyzer + if: ${{ matrix.sdk == 'stable'}} run: dart analyze --fatal-warnings --fatal-infos . + - name: analyzer + if: ${{ matrix.sdk == 'beta' || matrix.sdk == 'dev' }} + run: dart analyze + - name: Run tests - run: dart test + run: dart test --concurrency=1 diff --git a/.github/workflows/storage_client.yml b/.github/workflows/storage_client.yml index 33e0b989..2aec79e4 100644 --- a/.github/workflows/storage_client.yml +++ b/.github/workflows/storage_client.yml @@ -47,8 +47,13 @@ jobs: run: dart format lib test -l 80 --set-exit-if-changed - name: analyzer + if: ${{ matrix.sdk == 'stable'}} run: dart analyze --fatal-warnings --fatal-infos . + - name: analyzer + if: ${{ matrix.sdk == 'beta' || matrix.sdk == 'dev' }} + run: dart analyze + - name: Build Docker image run: | cd ../../infra/storage_client diff --git a/.github/workflows/supabase.yml b/.github/workflows/supabase.yml index 80b8b59d..c6b89046 100644 --- a/.github/workflows/supabase.yml +++ b/.github/workflows/supabase.yml @@ -58,7 +58,12 @@ jobs: run: dart format lib test -l 80 --set-exit-if-changed - name: analyzer + if: ${{ matrix.sdk == 'stable'}} run: dart analyze --fatal-warnings --fatal-infos . + - name: analyzer + if: ${{ matrix.sdk == 'beta' || matrix.sdk == 'dev' }} + run: dart analyze + - name: Run tests run: dart test --concurrency=1 diff --git a/.github/workflows/supabase_flutter.yml b/.github/workflows/supabase_flutter.yml index 1ce67e14..1bd63b1c 100644 --- a/.github/workflows/supabase_flutter.yml +++ b/.github/workflows/supabase_flutter.yml @@ -78,4 +78,4 @@ jobs: - name: Verify if Flutter web build is successful run: | cd example - flutter build web + flutter build web \ No newline at end of file diff --git a/.github/workflows/yet_another_json_isolate.yml b/.github/workflows/yet_another_json_isolate.yml index 83408586..f424ded0 100644 --- a/.github/workflows/yet_another_json_isolate.yml +++ b/.github/workflows/yet_another_json_isolate.yml @@ -48,7 +48,12 @@ jobs: run: dart format lib test -l 80 --set-exit-if-changed - name: analyzer + if: ${{ matrix.sdk == 'stable'}} run: dart analyze --fatal-warnings --fatal-infos . + - name: analyzer + if: ${{ matrix.sdk == 'beta' || matrix.sdk == 'dev' }} + run: dart analyze + - name: Run tests run: dart test diff --git a/melos.yaml b/melos.yaml index 798b8843..2feb7757 100644 --- a/melos.yaml +++ b/melos.yaml @@ -39,6 +39,7 @@ scripts: exec: dart pub outdated update-version: + description: Updates the version.dart file for each packages except yet_another_json_isolate run: | # Loop through the packages directory for d in packages/*/ ; do @@ -53,4 +54,4 @@ scripts: rm packages/yet_another_json_isolate/lib/src/version.dart # Stage the version.dart file change git add packages/*/lib/src/version.dart - description: Updates the version.dart file for each packages except yet_another_json_isolate + \ No newline at end of file diff --git a/packages/realtime_client/lib/src/realtime_client.dart b/packages/realtime_client/lib/src/realtime_client.dart index 3ecfb612..b565def9 100644 --- a/packages/realtime_client/lib/src/realtime_client.dart +++ b/packages/realtime_client/lib/src/realtime_client.dart @@ -91,7 +91,7 @@ class RealtimeClient { int longpollerTimeout = 20000; SocketStates? connState; // This is called `accessToken` in realtime-js - Future Function()? customAccessToken; + Future Function()? customAccessToken; /// Initializes the Socket /// diff --git a/packages/realtime_client/test/socket_test.dart b/packages/realtime_client/test/socket_test.dart index 55c50914..a71f4f33 100644 --- a/packages/realtime_client/test/socket_test.dart +++ b/packages/realtime_client/test/socket_test.dart @@ -393,6 +393,8 @@ void main() { mockedSink = MockWebSocketSink(); when(() => mockedSocketChannel.sink).thenReturn(mockedSink); + when(() => mockedSocketChannel.ready).thenAnswer((_) => Future.value()); + when(() => mockedSink.close()).thenAnswer((_) => Future.value()); }); test('sends data to connection when connected', () { @@ -407,7 +409,7 @@ void main() { .called(1); }); - test('buffers data when not connected', () { + test('buffers data when not connected', () async { mockedSocket.connect(); mockedSocket.connState = SocketStates.connecting; @@ -575,6 +577,8 @@ void main() { mockedSink = MockWebSocketSink(); when(() => mockedSocketChannel.sink).thenReturn(mockedSink); + when(() => mockedSink.close()).thenAnswer((_) => Future.value()); + when(() => mockedSocketChannel.ready).thenAnswer((_) => Future.value()); mockedSocket.connect(); });