• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

AAEmu / AAEmu / 22347723353
6%

Build:
DEFAULT BRANCH: develop
Ran 24 Feb 2026 10:55AM UTC
Jobs 1
Files 2250
Run time 4min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

24 Feb 2026 10:54AM UTC coverage: 6.056% (+1.1%) from 4.943%
22347723353

push

github

web-flow
feat: Migrate manager singletons to DI for testing and parallel loading (#1363)

* feat(game): Add DI bridge and extract interfaces for all managers

- Modify Singleton<T>.Instance to resolve from DI when SingletonContainer.ServiceProvider
  is set, falling back to reflection (zero-cost after first hit via _instance cache)
- Add SingletonContainer static class to AAEmu.Commons to hold IServiceProvider
- Wire IServiceProvider into GameService constructor to set SingletonContainer at startup
- Extract IXyzManager interfaces for all ~60 Singleton<T>-based managers and
  IXyzIdManager interfaces for all 25 IdManagers (plus shared IIdManager base)
- Register every manager in Program.cs ConfigureServices with both concrete type
  and interface forward (IdManagers use factory pattern via their static Instance)

Backwards-compatible: Singleton<T> reflection path is unchanged when ServiceProvider
is null (Login server and unit tests are unaffected). All 380 unit tests pass.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(game): Phase 2 — constructor DI for simple managers (1-3 deps)

Migrates 7 Game managers to primary-constructor dependency injection,
adds a Singleton guard, and ships 8 new unit test files.

Managers migrated:
- TaskManager       ← ITickManager
- FactionManager    ← ILocalizationManager
- ManaRegenManager  ← ITickManager
- SkillManager      ← IAnimationManager, IPlotManager
- QuestManager      ← ITaskManager, IZoneManager (partial class)
- EffectTaskManager ← ITaskManager (static AddDispelTask → instance)
- SusManager        ← IWorldManager

Interface changes:
- IEffectTaskManager: add AddDispelTask(Buff, double)
- IWorldManager: add GetCharacterByObjId(uint)

Singleton guard: OnInit() now throws InvalidOperationException with
a clear message when a type has no parameterless constructor (public
or non-public), replacing an opaque MissingMethodException.

Also fixes GameServiceTests broken by Phase 1 (needs IServiceProvider)... (continued)

675 of 1352 new or added lines in 148 files covered. (49.93%)

34 existing lines in 12 files now uncovered.

4154 of 68594 relevant lines covered (6.06%)

0.06 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
1
92.86
-7.14% AAEmu.Commons/Utils/Singleton.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/Id/AuctionIdManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/Id/CharacterIdManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/Id/ContainerIdManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/Id/DoodadIdManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/Id/ExpeditionIdManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/Id/FamilyIdManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/Id/FriendIdManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/Id/GimmickIdManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/Id/HousingIdManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/Id/HousingTldManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/Id/ItemIdManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/Id/MateIdManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/Id/MusicIdManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/Id/PrivateBookIdManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/Id/QuestIdManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/Id/ShipyardIdManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/Id/TaskIdManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/Id/TeamIdManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/Id/TlIdManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/Id/TradeIdManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/Id/UccIdManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/Id/VisitedSubZoneIdManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/Id/WorldIdManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/QuestManagerEvents.cs
1
6.67
6.67% AAEmu.Game/Core/Managers/SusManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/TaxationsManager.cs
1
21.05
21.05% AAEmu.Game/Core/Managers/TickManager.cs
1
1.39
1.39% AAEmu.Game/Core/Managers/World/FactionManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/World/SphereQuestManager.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/World/StreamManager.cs
1
0.0
0.0% AAEmu.Game/Core/Network/Connections/GameConnection.cs
1
0.0
0.0% AAEmu.Game/Core/Packets/C2G/CSCancelCharacterDeletePacket.cs
1
0.0
0.0% AAEmu.Game/Core/Packets/C2G/CSDeleteCharacterPacket.cs
1
0.0
0.0% AAEmu.Game/Core/Packets/C2G/CSDismissExpeditionPacket.cs
1
0.0
0.0% AAEmu.Game/Core/Packets/C2G/CSFamilyInviteMemberPacket.cs
1
0.0
0.0% AAEmu.Game/Core/Packets/C2G/CSInviteToExpeditionPacket.cs
1
0.0
0.0% AAEmu.Game/Core/Packets/C2G/CSKickFromExpeditionPacket.cs
1
0.0
0.0% AAEmu.Game/Core/Packets/C2G/CSLeaveWorldPacket.cs
1
0.0
0.0% AAEmu.Game/Core/Packets/C2G/CSRollDicePacket.cs
1
0.0
0.0% AAEmu.Game/GameData/TransferGameData.cs
1
1.93
0.0% AAEmu.Game/Models/Game/Char/Character.cs
1
0.0
0.0% AAEmu.Game/Models/Game/DoodadObj/Doodad.cs
1
0.0
0.0% AAEmu.Game/Models/Game/DoodadObj/Funcs/DoodadFuncClimateReact.cs
1
0.0
0.0% AAEmu.Game/Models/Game/DoodadObj/Funcs/DoodadFuncGrowth.cs
1
0.0
0.0% AAEmu.Game/Models/Game/Indun/Dungeon.cs
1
0.0
0.0% AAEmu.Game/Models/Game/Indun/Events/IndunEventNpcKilleds.cs
1
56.86
0.0% AAEmu.Game/Models/Game/Mails/BaseMail.cs
1
0.0
0.0% AAEmu.Game/Models/Game/Portal.cs
1
16.59
16.59% AAEmu.Game/Models/Game/Quests/Quest.cs
1
0.0
0.0% AAEmu.Game/Models/Game/Skills/Effects/CraftEffect.cs
1
0.0
0.0% AAEmu.Game/Models/Tasks/Characters/CharacterDeleteTask.cs
1
18.18
18.18% AAEmu.Game/Models/Tasks/Skills/DispelTask.cs
1
0.0
0.0% AAEmu.Game/Scripts/Commands/AddBadges.cs
1
0.0
0.0% AAEmu.Game/Scripts/Commands/AddGold.cs
1
0.0
0.0% AAEmu.Game/Scripts/Commands/AddLabor.cs
1
0.0
0.0% AAEmu.Game/Scripts/Commands/AddPortals.cs
1
0.0
0.0% AAEmu.Game/Scripts/Commands/AddXP.cs
1
0.0
0.0% AAEmu.Game/Scripts/Commands/ChangeLevel.cs
1
0.0
0.0% AAEmu.Game/Scripts/Commands/CofferActions.cs
1
0.0
0.0% AAEmu.Game/Scripts/Commands/Fly.cs
1
0.0
0.0% AAEmu.Game/Scripts/Commands/GetPosition.cs
1
0.0
0.0% AAEmu.Game/Scripts/Commands/Height.cs
1
0.0
0.0% AAEmu.Game/Scripts/Commands/Kill.cs
1
0.0
0.0% AAEmu.Game/Scripts/Commands/Kit.cs
1
0.0
0.0% AAEmu.Game/Scripts/Commands/Move.cs
1
0.0
0.0% AAEmu.Game/Scripts/Commands/Revive.cs
1
0.0
0.0% AAEmu.Game/Scripts/Commands/ShowInventory.cs
1
0.0
0.0% AAEmu.Game/Scripts/Commands/TestHeight.cs
1
83.33
AAEmu.UnitTests/Commons/Utils/SingletonTests.cs
1
94.12
AAEmu.UnitTests/Game/Core/Managers/MailManagerTests.cs
1
98.39
-1.61% AAEmu.UnitTests/Game/Core/Managers/MailTests.cs
1
92.31
AAEmu.UnitTests/Game/Core/Managers/UnitManagers/DoodadManagerTests.cs
2
2.25
2.25% AAEmu.Game/Core/Managers/AccountManager.cs
2
0.0
0.0% AAEmu.Game/Core/Managers/CommandManager.cs
2
1.23
1.23% AAEmu.Game/Core/Managers/MusicManager.cs
2
1.9
1.9% AAEmu.Game/Core/Managers/QuestManager.cs
2
0.08
0.08% AAEmu.Game/Core/Managers/SkillManager.cs
2
0.0
0.0% AAEmu.Game/Core/Packets/C2G/CSCofferInteractionPacket.cs
2
0.0
0.0% AAEmu.Game/Core/Packets/C2G/CSCreateDoodadPacket.cs
2
0.0
0.0% AAEmu.Game/Models/Game/DoodadObj/Funcs/DoodadFuncCoffer.cs
2
97.37
-2.63% AAEmu.UnitTests/Game/Core/Managers/Name/NameManagerTests.cs
3
4.26
4.26% AAEmu.Game/Core/Managers/CashShopManager.cs
3
93.33
AAEmu.Game/Core/Managers/ManagerOrchestrator.cs
3
29.51
29.51% AAEmu.Game/Core/Managers/PublicFarmManager.cs
3
0.0
0.0% AAEmu.Game/Models/Game/AI/v2/Behaviors/Common/RunCommandSetBehavior.cs
4
0.0
0.0% AAEmu.Game/Core/Managers/GameScheduleManager.cs
4
0.0
0.0% AAEmu.Game/Core/Managers/GimmickManager.cs
4
0.0
0.0% AAEmu.Game/Models/Game/Skills/Buff.cs
4
95.56
AAEmu.UnitTests/Game/Core/Managers/ManagerOrchestratorTests.cs
5
0.0
0.0% AAEmu.Game/Core/Managers/World/ZoneManager.cs
6
0.0
0.0% AAEmu.Game/Core/Managers/DuelManager.cs
6
1.95
1.95% AAEmu.Game/Core/Managers/SubZoneManager.cs
6
0.0
0.0% AAEmu.Game/Scripts/Commands/TestHouse.cs
7
0.29
0.29% AAEmu.Game/Core/Managers/ExpeditionManager.cs
7
8.65
8.65% AAEmu.Game/Core/Managers/SaveManager.cs
7
0.41
0.41% AAEmu.Game/Core/Managers/UnitManagers/NpcManager.cs
8
0.09
0.09% AAEmu.Game/Core/Managers/ItemManager.cs
8
0.43
0.43% AAEmu.Game/Core/Managers/PortalManager.cs
9
10.59
10.59% AAEmu.Game/Core/Managers/World/EnterWorldManager.cs
10
0.63
0.63% AAEmu.Game/Core/Managers/FamilyManager.cs
10
9.46
0.26% AAEmu.Game/Core/Managers/MailManager.cs
10
0.05
0.05% AAEmu.Game/Core/Managers/UnitManagers/DoodadManager.cs
10
10.75
6.37% AAEmu.Game/GameService.cs
11
0.86
0.86% AAEmu.Game/Core/Managers/AuctionManager.cs
13
0.0
0.0% AAEmu.Game/GameData/Framework/GameDataManager.cs
14
6.32
6.32% AAEmu.Game/Core/Managers/ShipyardManager.cs
14
0.97
0.97% AAEmu.Game/Core/Managers/TradeManager.cs
15
0.69
-3.06% AAEmu.Game/Core/Managers/World/WorldManager.cs
16
2.29
2.29% AAEmu.Game/Core/Managers/IndunManager.cs
21
3.75
2.21% AAEmu.Game/Core/Managers/UnitManagers/CharacterManager.cs
26
1.03
1.03% AAEmu.Game/Core/Managers/TeamManager.cs
40
2.54
2.54% AAEmu.Game/Core/Managers/HousingManager.cs
279
0.0
0.0% AAEmu.Game/Program.cs

Uncovered Existing Lines

Lines Coverage ∆ File
1
92.86
-7.14% AAEmu.Commons/Utils/Singleton.cs
1
0.0
0.0% AAEmu.Game/Core/Managers/DuelManager.cs
1
2.54
2.54% AAEmu.Game/Core/Managers/HousingManager.cs
1
2.29
2.29% AAEmu.Game/Core/Managers/IndunManager.cs
1
6.32
6.32% AAEmu.Game/Core/Managers/ShipyardManager.cs
1
1.03
1.03% AAEmu.Game/Core/Managers/TeamManager.cs
1
3.75
2.21% AAEmu.Game/Core/Managers/UnitManagers/CharacterManager.cs
1
0.0
0.0% AAEmu.Game/Program.cs
2
0.0
0.0% AAEmu.Game/Core/Managers/GimmickManager.cs
4
0.97
0.97% AAEmu.Game/Core/Managers/TradeManager.cs
7
10.75
6.37% AAEmu.Game/GameService.cs
13
0.69
-3.06% AAEmu.Game/Core/Managers/World/WorldManager.cs
Jobs
ID Job ID Ran Files Coverage
1 22347723353.1 24 Feb 2026 10:55AM UTC 2250
6.06
GitHub Action Run
Source Files on build 22347723353
  • Tree
  • List 2250
  • Changed 140
  • Source Changed 137
  • Coverage Changed 52
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #22347723353
  • 1b362af5 on github
  • Prev Build on develop (#22304273595)
  • Next Build on develop (#22520557455)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc