Browse Source

feat(ci): Validate code generation

Signed-off-by: jld3103 <jld3103yt@gmail.com>
pull/1048/head
jld3103 1 year ago
parent
commit
3b18a1f35d
No known key found for this signature in database
GPG Key ID: 9062417B9E8EB7B3
  1. 87
      .github/workflows/generate.yaml
  2. 8
      packages/dynamite/dynamite_end_to_end_test/generate.sh
  3. 1
      packages/dynamite/dynamite_end_to_end_test/pubspec.yaml
  4. 13
      packages/dynamite/dynamite_end_to_end_test/test/ensure_validity_test.dart
  5. 4
      tool/generate-dynamite-e2e-test.sh

87
.github/workflows/generate.yaml

@ -0,0 +1,87 @@
name: Generate
on:
push:
branches:
- main
pull_request:
concurrency:
group: generate-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
changes:
name: Check changes
runs-on: ubuntu-22.04
outputs:
src: ${{ steps.changes.outputs.src}}
steps:
- uses: dorny/paths-filter@v2
id: changes
continue-on-error: true
with:
filters: |
src:
- external/**
- tool/**
- packages/dynamite/**
- packages/nextcloud/**
dart:
name: Dart
runs-on: ubuntu-22.04
needs: changes
if: needs.changes.outputs.src != 'false'
steps:
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
with:
fetch-depth: 0
- name: Install dart
uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # v1
- name: Setup
run: ./tool/setup.sh
- name: Generate dynamite end to end test
run: |
./tool/generate-dynamite-e2e-test.sh
if [ -n "$(git status --porcelain)" ]; then
git --no-pager diff
exit 1
fi
- name: Generate nextcloud
run: |
./tool/generate-nextcloud.sh
if [ -n "$(git status --porcelain)" ]; then
git --no-pager diff
exit 1
fi
openapi:
name: OpenAPI
runs-on: ubuntu-22.04
needs: changes
if: needs.changes.outputs.src != 'false'
steps:
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
with:
fetch-depth: 0
- name: Submodules
run: git submodule update --init --depth 0
- name: Install php
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
tools: composer
- name: Generate specs
run: |
./tool/generate-specs.sh
if [ -n "$(git status --porcelain)" ]; then
git --no-pager diff
exit 1
fi

8
packages/dynamite/dynamite_end_to_end_test/generate.sh

@ -1,8 +0,0 @@
#!/bin/bash
set -euxo pipefail
(
fvm dart pub run build_runner build --delete-conflicting-outputs
fvm dart fix --apply lib/
melos run format
)

1
packages/dynamite/dynamite_end_to_end_test/pubspec.yaml

@ -18,7 +18,6 @@ dependencies:
dev_dependencies:
build_runner: ^2.4.6
build_verify: ^3.1.0
built_value_generator: ^8.6.3
dynamite:
git:

13
packages/dynamite/dynamite_end_to_end_test/test/ensure_validity_test.dart

@ -1,13 +0,0 @@
import 'package:build_verify/build_verify.dart';
import 'package:test/test.dart';
void main() {
test(
'ensure_build',
() async => expectBuildClean(
packageRelativeDirectory: 'packages/dynamite/dynamite_end_to_end_test',
customCommand: ['bash', 'generate.sh'],
),
timeout: const Timeout.factor(20),
);
}

4
tool/generate-dynamite-e2e-test.sh

@ -5,5 +5,7 @@ cd "$(dirname "$0")/.."
(
cd packages/dynamite/dynamite_end_to_end_test
rm -rf .dart_tool/build/generated/dynamite
bash generate.sh
fvm dart pub run build_runner build --delete-conflicting-outputs
fvm dart fix --apply lib/
melos run format
)

Loading…
Cancel
Save