Skip to content

Adjust the branch in pubspec.yaml #213

Adjust the branch in pubspec.yaml

Adjust the branch in pubspec.yaml #213

Workflow file for this run

name: Lint Checks
# Always run the checks on a push and a PR.
#
# 20250914 gjw Run the tests as separate jobs so we see the individual
# results. We can instead run then as a single job with multiple
# steps, but then it stops on the first fail and so not as
# informative.
on:
push:
pull_request:
types: [opened, reopened, synchronize]
env:
FLUTTER_VERSION: '3.35.7'
jobs:
analyze:
runs-on: ubuntu-latest
if: github.event.repository.private == false
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
with:
channel: 'stable'
flutter-version: ${{env.FLUTTER_VERSION}}
- run: flutter pub get
- run: flutter analyze --fatal-infos
format:
runs-on: ubuntu-latest
if: github.event.repository.private == false
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
with:
channel: 'stable'
flutter-version: ${{env.FLUTTER_VERSION}}
- run: flutter pub get
- run: dart format --set-exit-if-changed .
unused_code:
runs-on: ubuntu-latest
if: github.event.repository.private == false
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
with:
channel: 'stable'
flutter-version: ${{env.FLUTTER_VERSION}}
- run: flutter pub get
- run: dart pub global activate dart_code_metrics
- run: metrics check-unused-code --disable-sunset-warning lib
unused_files:
runs-on: ubuntu-latest
if: github.event.repository.private == false
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
with:
channel: 'stable'
flutter-version: ${{env.FLUTTER_VERSION}}
- run: flutter pub get
- run: dart pub global activate dart_code_metrics
- run: metrics check-unused-files --disable-sunset-warning lib
import_order:
runs-on: ubuntu-latest
if: github.event.repository.private == false
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
with:
channel: 'stable'
flutter-version: ${{env.FLUTTER_VERSION}}
- run: flutter pub get
- run: dart pub global activate import_order_lint
- run: import_order --check
markdown:
runs-on: ubuntu-latest
if: github.event.repository.private == false
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 18
- run: npm install -g markdownlint-cli
- run: markdownlint *.md lib assets installers
link_checker:
runs-on: ubuntu-latest
if: github.event.repository.private == false
permissions:
issues: write # required for peter-evans/create-issue-from-file
steps:
- uses: actions/checkout@v4
- name: Link Checker
id: lychee
uses: lycheeverse/lychee-action@v2
with: # Don't fail for now but then create an issue - useful?
args:
--verbose
--no-progress
'assets/**/*.md'
'assets/**/*.html'
'lib/**/*.dart'
fail: false
# 20251030 gjw Remove the automatic creation of an issue for
# now. It is creating too many and I am simply closing them. The
# failure of the lint test itself should be enough.
# - name: Create Issue From File
# if: steps.lychee.outputs.exit_code != 0
# uses: peter-evans/create-issue-from-file@v5
# with:
# title: Link Checker Report
# content-filepath: ./lychee/out.md
# labels: report, automated issue
locmax:
runs-on: ubuntu-latest
if: github.event.repository.private == false
steps:
- uses: actions/checkout@v4
- run: make locmax-enforce
copyright:
runs-on: ubuntu-latest
if: github.event.repository.private == false
steps:
- uses: actions/checkout@v4
- name: Check copyright headers
run: |
# Find Dart files without proper copyright headers, excluding generated files
missing_copyright=$(find lib -type f -name '*.dart' \
! -name '*.g.dart' \
! -name '*.gr.dart' \
! -name '*.freezed.dart' \
! -name '*.chopper.dart' \
! -name '*.part.dart' \
! -name '*.config.dart' \
-exec grep -L "Copyright" {} \;)
if [ -n "$missing_copyright" ]; then
echo "❌ Files missing copyright headers:"
echo "$missing_copyright"
echo ""
echo "💡 Note: Generated files (*.g.dart, *.freezed.dart, etc.) are automatically excluded"
exit 1
else
echo "✅ All non-generated Dart files have copyright headers"
fi
# 20251017 gjw The usual command for running the integration tests
# is `flutter test interaction_test` and each `*_test.dart` is
# run. However for our testing of apps using solidui we need to
# authenticate through an external browser login. The usual `flutter
# test` will not properly authenticate. Instead, we should run `make
# qtest.all` to run the tests. This action
test_enforcement:
runs-on: ubuntu-latest
if: github.event.repository.private == false
steps:
- uses: actions/checkout@v4
- name: Check for batch test commands
run: |
# Check for disallowed "flutter test integration_test/" usage in scripts/workflows
# Exclude comments and this CI check itself
batch_test_found=$(grep -r "flutter test integration_test" \
.github/workflows/ \
support/ \
scripts/ \
Makefile 2>/dev/null | \
grep -v "# Check for disallowed" | \
grep -v "batch_test_found=" | \
grep -v "echo.*flutter test integration_test/" || true)
if [ -n "$batch_test_found" ]; then
echo "❌ Found disallowed batch test command 'flutter test integration_test/'"
echo ""
echo "Found in:"
echo "$batch_test_found"
echo ""
echo "⚠️ Batch testing fails on desktop due to Flutter framework limitations."
echo "✅ Use 'make qtest' instead - it runs tests individually."
echo ""
echo "See docs/TESTING_GUIDE.md for details."
exit 1
else
echo "✅ No batch test commands found - using recommended 'make qtest' approach"
fi