Skip to content

Commit ac05a04

Browse files
committed
Add GitHub Actions workflow for quality checks and update CHANGELOG for version 0.6.0
1 parent 8de1fdd commit ac05a04

3 files changed

Lines changed: 46 additions & 6 deletions

File tree

.github/workflows/quality.yml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: Quality
2+
3+
on:
4+
pull_request:
5+
branches: ["develop"]
6+
7+
jobs:
8+
quality:
9+
runs-on: ubuntu-latest
10+
11+
steps:
12+
- uses: actions/checkout@v4
13+
14+
- name: Setup Flutter
15+
uses: subosito/flutter-action@v2
16+
with:
17+
channel: stable
18+
cache: true
19+
20+
- name: Install dependencies
21+
run: flutter pub get
22+
23+
- name: Check formatting
24+
run: dart format --set-exit-if-changed .
25+
26+
- name: Static analysis
27+
run: flutter analyze
28+
29+
- name: pub.dev dry-run
30+
run: flutter pub publish --dry-run

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
## 0.6.0
2+
- **BREAKING**: Updated to match platform interface 0.6.0 - `requestedPermissions` removed from `AppInfo`
3+
- Added `getRequestedPermissions(String packageName)` method implementation for on-demand permission retrieval
4+
- Added GitHub Actions workflows for Android unit tests, quality checks, and PR enforcement
5+
- Added comprehensive Dart unit tests (27 tests) for method channel mocking
6+
- Added Kotlin unit tests (11 tests) with Robolectric for Android plugin
7+
- Made `FlutterDeviceAppsAndroidPlugin` class `open` with `protected` fields for testability
8+
19
## 0.5.1
210
- Added support for additional `AppInfo` fields from the Android package manager: `category`, `targetSdkVersion`, `minSdkVersion`, `enabled`, `processName`, `installLocation`, `requestedPermissions`.
311
- Populates `requestedPermissions` via `PackageManager.GET_PERMISSIONS`.

test/flutter_device_apps_android_test.dart

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,9 @@ void main() {
257257
}
258258

259259
/// Mock handler for method calls
260-
dynamic _handleMethodCall(MethodCall call) {
260+
Object? _handleMethodCall(MethodCall call) {
261+
final args = call.arguments as Map<Object?, Object?>?;
262+
261263
switch (call.method) {
262264
case 'listApps':
263265
return [
@@ -266,26 +268,26 @@ dynamic _handleMethodCall(MethodCall call) {
266268
];
267269

268270
case 'getApp':
269-
final packageName = call.arguments['packageName'] as String;
271+
final packageName = args!['packageName']! as String;
270272
if (packageName == 'com.nonexistent.app') return null;
271273
return _createAppMap(packageName, 'App 1');
272274

273275
case 'getRequestedPermissions':
274-
final packageName = call.arguments['packageName'] as String;
276+
final packageName = args!['packageName']! as String;
275277
if (packageName == 'com.nonexistent.app') return null;
276278
return ['android.permission.INTERNET', 'android.permission.CAMERA'];
277279

278280
case 'openApp':
279281
case 'openAppSettings':
280-
final packageName = call.arguments['packageName'] as String;
282+
final packageName = args!['packageName']! as String;
281283
return packageName != 'com.nonexistent.app';
282284

283285
case 'uninstallApp':
284-
final packageName = call.arguments['packageName'] as String;
286+
final packageName = args!['packageName']! as String;
285287
return packageName != 'com.nonexistent.app';
286288

287289
case 'getInstallerStore':
288-
final packageName = call.arguments['packageName'] as String;
290+
final packageName = args!['packageName']! as String;
289291
if (packageName == 'com.sideloaded.app') return null;
290292
return 'com.android.vending';
291293

0 commit comments

Comments
 (0)