Skip to content

commit 746a07a

abduznik edited this page May 23, 2026 · 1 revision

fix: resolve emulator download audit failures and update library screen tests

Commit: 746a07aeb27510aa4b6af7205e310694a29a070a

Author: abduznik

Date: 2026-04-29

Why: Fixes a bug or regression in the existing codebase.

Files Changed

lib/core/emulator/emulator_registry_data.dart      | 13 +++++++++----
 test/unit/firmware_service_test.mocks.dart         |  8 ++++++++
 test/unit/paginated_games_provider_test.mocks.dart |  8 ++++++++
 test/unit/save_sync_service_test.mocks.dart        |  8 ++++++++
 test/widgets/library_screen_test.dart              |  2 ++
 test/widgets/library_screen_test.mocks.dart        |  8 ++++++++
 test/widgets/settings_screen_test.mocks.dart       |  8 ++++++++
 7 files changed, 51 insertions(+), 4 deletions(-)
  • lib/core/emulator/emulator_registry_data.dart
  • test/unit/firmware_service_test.mocks.dart
  • test/unit/paginated_games_provider_test.mocks.dart
  • test/unit/save_sync_service_test.mocks.dart
  • test/widgets/library_screen_test.dart
  • test/widgets/library_screen_test.mocks.dart
  • test/widgets/settings_screen_test.mocks.dart

Diff

diff --git a/lib/core/emulator/emulator_registry_data.dart b/lib/core/emulator/emulator_registry_data.dart
index ec5cc54..064306f 100644
--- a/lib/core/emulator/emulator_registry_data.dart
+++ b/lib/core/emulator/emulator_registry_data.dart
@@ -97,6 +97,10 @@ const List<Map<String, dynamic>> kEmulatorDefinitions = [
     'name': 'Azahar (Nintendo 3DS)',
     'type': 'github',
     'github_repo': 'azahar-emu/azahar',
+    'github_asset_required_windows': ['windows', 'msvc', '.zip'],
+    'github_asset_required_linux': ['azahar.AppImage'],
+    'github_asset_required_macos': ['macos', 'universal', '.zip'],
+    'github_asset_excluded': ['libretro', 'android', 'ios', 'tvos', 'source', 'room', 'wayland'],
     'windows_executable': 'azahar.exe',
     'linux_executable': 'azahar.AppImage',
     'macos_executable': 'Azahar.app/Contents/MacOS/Azahar',
@@ -203,7 +207,7 @@ const List<Map<String, dynamic>> kEmulatorDefinitions = [
     'type': 'github',
     'github_repo': 'hrydgard/ppsspp',
     'github_asset_required_windows': ['Windows', 'x64', '.zip'],
-    'github_asset_required_linux': ['Linux', 'x86_64', '.7z'],
+    'github_asset_required_linux': ['anylinux', 'x86_64', '.AppImage'],
     'github_asset_required_macos': ['macOS', '.zip'],
     'github_asset_excluded': ['debug', 'symbols', 'VR'],
     'windows_executable': 'PPSSPPWindows64.exe',
@@ -219,7 +223,7 @@ const List<Map<String, dynamic>> kEmulatorDefinitions = [
     'github_repo': 'mgba-emu/mgba',
     'github_asset_required': ['win64', '.7z'],
     'github_asset_required_macos': ['macos', '.dmg'],
-    'github_asset_required_linux': ['linux', 'x86_64', '.tar.xz'],
+    'github_asset_required_linux': ['appimage', 'x64', '.appimage'],
     'github_asset_excluded': ['debug', 'symbols', 'source'],
     'windows_executable': 'mGBA.exe',
     'linux_executable': 'mgba',
@@ -232,13 +236,14 @@ const List<Map<String, dynamic>> kEmulatorDefinitions = [
     'name': 'MAME',
     'type': 'github',
     'github_repo': 'mamedev/mame',
-    'github_asset_required': ['mame', '64bit', '.exe'],
+    'github_asset_required_windows': ['mame', 'x64', '.exe'],
+    'github_asset_required_linux': ['mame', 'lx', '.zip'],
     'github_asset_excluded': ['debug', 'symbols', 'sources', 'tools'],
     'extraction_type': 'self_extracting',
     'windows_executable': 'mame.exe',
     'linux_executable': 'mame',
     'macos_executable': 'mame',
-    'supported_platforms': ['windows', 'linux', 'macos'],
+    'supported_platforms': ['windows', 'linux'],
     'platform_slugs': ['arcade', 'mame'],
   },
   {
diff --git a/test/unit/firmware_service_test.mocks.dart b/test/unit/firmware_service_test.mocks.dart
index 7d1511b..22ecb61 100644
--- a/test/unit/firmware_service_test.mocks.dart
+++ b/test/unit/firmware_service_test.mocks.dart
@@ -168,6 +168,14 @@ class MockRommService extends _i1.Mock implements _i6.RommService {
           )
           as _i8.Future<List<_i3.Game>>);
 
+  @override
+  _i8.Future<List<_i3.Game>> getRecentlyAdded({int? limit = 15}) =>
+      (super.noSuchMethod(
+            Invocation.method(#getRecentlyAdded, [], {#limit: limit}),
+            returnValue: _i8.Future<List<_i3.Game>>.value(<_i3.Game>[]),
+          )
+          as _i8.Future<List<_i3.Game>>);
+
   @override
   _i8.Future<List<_i3.Game>> getRecentlyPlayed({int? limit = 15}) =>
       (super.noSuchMethod(
diff --git a/test/unit/paginated_games_provider_test.mocks.dart b/test/unit/paginated_games_provider_test.mocks.dart
index a2138c4..13fa08c 100644
--- a/test/unit/paginated_games_provider_test.mocks.dart
+++ b/test/unit/paginated_games_provider_test.mocks.dart
@@ -152,6 +152,14 @@ class MockRommService extends _i1.Mock implements _i4.RommService {
           )
           as _i6.Future<List<_i3.Game>>);
 
+  @override
+  _i6.Future<List<_i3.Game>> getRecentlyAdded({int? limit = 15}) =>
+      (super.noSuchMethod(
+            Invocation.method(#getRecentlyAdded, [], {#limit: limit}),
+            returnValue: _i6.Future<List<_i3.Game>>.value(<_i3.Game>[]),
+          )
+          as _i6.Future<List<_i3.Game>>);
+
   @override
   _i6.Future<List<_i3.Game>> getRecentlyPlayed({int? limit = 15}) =>
       (super.noSuchMethod(
diff --git a/test/unit/save_sync_service_test.mocks.dart b/test/unit/save_sync_service_test.mocks.dart
index 2abedcb..923c94c 100644
--- a/test/unit/save_sync_service_test.mocks.dart
+++ b/test/unit/save_sync_service_test.mocks.dart
@@ -168,6 +168,14 @@ class MockRommService extends _i1.Mock implements _i6.RommService {
           )
           as _i8.Future<List<_i3.Game>>);
 
+  @override
+  _i8.Future<List<_i3.Game>> getRecentlyAdded({int? limit = 15}) =>
+      (super.noSuchMethod(
+            Invocation.method(#getRecentlyAdded, [], {#limit: limit}),
+            returnValue: _i8.Future<List<_i3.Game>>.value(<_i3.Game>[]),
+          )
+          as _i8.Future<List<_i3.Game>>);
+
   @override
   _i8.Future<List<_i3.Game>> getRecentlyPlayed({int? limit = 15}) =>
       (super.noSuchMethod(
diff --git a/test/widgets/library_screen_test.dart b/test/widgets/library_screen_test.dart
index 30f7e01..938ebdb 100644
--- a/test/widgets/library_screen_test.dart
+++ b/test/widgets/library_screen_test.dart
@@ -32,6 +32,7 @@ void main() {
     when(mockRommService.config).thenReturn(RomMConfig(baseUrl: 'https://test.com', username: 'u', password: 'p'));
     when(mockRommService.resolveCoverUrl(any)).thenReturn(null);
     when(mockRommService.getRecentlyPlayed(limit: anyNamed('limit'))).thenAnswer((_) async => []);
+    when(mockRommService.getRecentlyAdded(limit: anyNamed('limit'))).thenAnswer((_) async => []);
     when(mockRommService.searchRoms(search: anyNamed('search'), platformId: anyNamed('platformId'))).thenAnswer((_) async => []);
     when(mockRommService.isOffline).thenReturn(ValueNotifier<bool>(false));
     when(mockDirectoryService.status).thenReturn(const StorageStatus());
@@ -74,6 +75,7 @@ void main() {
           romMappingServiceProvider.overrideWith((ref) => Future.value(mockRomMappingService)),
           romScannerServiceProvider.overrideWithValue(null),
           directoryServiceProvider.overrideWith((ref) => Future.value(mockDirectoryService)),
+          isHomeSelectedProvider.overrideWith((ref) => false),
           paginatedGamesProvider.overrideWith((ref) => PaginatedGamesNotifier(ref)..state = PaginatedGamesState(games: games, total: 2, hasMore: false)),
         ],
         child: const MaterialApp(home: LibraryScreen()),
diff --git a/test/widgets/library_screen_test.mocks.dart b/test/widgets/library_screen_test.mocks.dart
index 9494c14..97f44d9 100644
--- a/test/widgets/library_screen_test.mocks.dart
+++ b/test/widgets/library_screen_test.mocks.dart
@@ -167,6 +167,14 @@ class MockRommService extends _i1.Mock implements _i6.RommService {
           )
           as _i8.Future<List<_i3.Game>>);
 
+  @override
+  _i8.Future<List<_i3.Game>> getRecentlyAdded({int? limit = 15}) =>
+      (super.noSuchMethod(
+            Invocation.method(#getRecentlyAdded, [], {#limit: limit}),
+            returnValue: _i8.Future<List<_i3.Game>>.value(<_i3.Game>[]),
+          )
+          as _i8.Future<List<_i3.Game>>);
+
   @override
   _i8.Future<List<_i3.Game>> getRecentlyPlayed({int? limit = 15}) =>
       (super.noSuchMethod(
diff --git a/test/widgets/settings_screen_test.mocks.dart b/test/widgets/settings_screen_test.mocks.dart
index bf31bfa..85d5435 100644
--- a/test/widgets/settings_screen_test.mocks.dart
+++ b/test/widgets/settings_screen_test.mocks.dart
@@ -695,6 +695,14 @@ class MockRommService extends _i1.Mock implements _i9.RommService {
           )
           as _i7.Future<List<_i5.Game>>);
 
+  @override
+  _i7.Future<List<_i5.Game>> getRecentlyAdded({int? limit = 15}) =>
+      (super.noSuchMethod(
+            Invocation.method(#getRecentlyAdded, [], {#limit: limit}),
+            returnValue: _i7.Future<List<_i5.Game>>.value(<_i5.Game>[]),
+          )
+          as _i7.Future<List<_i5.Game>>);
+
   @override
   _i7.Future<List<_i5.Game>> getRecentlyPlayed({int? limit = 15}) =>
       (super.noSuchMethod(

Clone this wiki locally