mirror of
https://github.com/kuhyx/screen-locker.git
synced 2026-11-10 20:27:13 +01:00
Fix workout_app service tests on non-Android hosts
Pre-existing failures unrelated to the manual-workout feature, exposed once the
pre-push flutter gate started running the Dart suite:
- http_server_service / sync_service: getExternalStorageDirectory() throws
UnsupportedError (an Error, not an Exception) on non-Android platforms, so the
`on Exception` fallbacks didn't catch it and it escaped, failing start() and
writeWorkoutResult(). External storage is Android-only, so guard the call with
Platform.isAndroid instead of trying to catch a platform Error.
- sync_service_test: the "updates HttpServerService" assertion expected compact
JSON ("workout_type":"A") but the payload is pretty-printed
("workout_type": "A"); fixed the expectation to match.
Full workout_app suite (191 tests) now passes on this host.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PM3auNTifaVgcXWDizZrjH
This commit is contained in:
parent
3de2928967
commit
7722260eeb
@ -67,11 +67,16 @@ class HttpServerService {
|
||||
/// HTTP endpoint is populated even before the next workout is completed.
|
||||
Future<void> _loadFromDisk() async {
|
||||
final candidates = <String>[kSyncFilePath];
|
||||
try {
|
||||
final dir = await getExternalStorageDirectory();
|
||||
if (dir != null) candidates.add('${dir.path}/workout_result.json');
|
||||
} on Exception {
|
||||
// Ignore; the /sdcard path is tried first.
|
||||
// External storage is Android-only; getExternalStorageDirectory() throws an
|
||||
// UnsupportedError (not an Exception) on other platforms (desktop / test
|
||||
// host), so guard the call rather than trying to catch it.
|
||||
if (Platform.isAndroid) {
|
||||
try {
|
||||
final dir = await getExternalStorageDirectory();
|
||||
if (dir != null) candidates.add('${dir.path}/workout_result.json');
|
||||
} on Exception {
|
||||
// Ignore; the /sdcard path is tried first.
|
||||
}
|
||||
}
|
||||
for (final path in candidates) {
|
||||
final file = File(path);
|
||||
|
||||
@ -29,15 +29,19 @@ class SyncService {
|
||||
// Fallback: app-specific external directory (still ADB accessible).
|
||||
}
|
||||
|
||||
try {
|
||||
final dir = await getExternalStorageDirectory();
|
||||
if (dir != null) {
|
||||
final file = File('${dir.path}/workout_result.json');
|
||||
await file.writeAsString(json);
|
||||
return SyncResult(success: true, path: file.path);
|
||||
// External storage is Android-only; getExternalStorageDirectory() throws an
|
||||
// UnsupportedError (not an Exception) on other platforms, so guard the call.
|
||||
if (Platform.isAndroid) {
|
||||
try {
|
||||
final dir = await getExternalStorageDirectory();
|
||||
if (dir != null) {
|
||||
final file = File('${dir.path}/workout_result.json');
|
||||
await file.writeAsString(json);
|
||||
return SyncResult(success: true, path: file.path);
|
||||
}
|
||||
} on Exception {
|
||||
// Fallback failed.
|
||||
}
|
||||
} on Exception {
|
||||
// Fallback failed.
|
||||
}
|
||||
|
||||
return const SyncResult(
|
||||
|
||||
@ -63,7 +63,7 @@ void main() {
|
||||
// The HTTP server must be updated regardless of file write success.
|
||||
expect(
|
||||
HttpServerService.instance.latestWorkout,
|
||||
contains('"workout_type":"A"'),
|
||||
contains('"workout_type": "A"'),
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user