Koha-clms/t/db_dependent
Martin Renvoize e091b0d4bc
Bug 38384: Refactor plugin loading to use lightweight Koha::Plugins::Loader
This patch addresses the circular dependency issues and code quality
concerns identified in QA by introducing a clean architectural solution.

Changes:

1. Created Koha::Plugins::Loader - A lightweight plugin loader with
   minimal dependencies that can be safely called during early
   initialization. Uses DBIx::Class when available for proper
   transaction support, falls back to raw DBI for early init.

2. Added Koha::Database::table_exists() - Consolidated table checking
   logic into a reusable method that can be called as both class and
   instance method.

3. Simplified C4::Context BEGIN block - Reduced from ~120 lines to
   ~13 lines (91% reduction). Removed XML::Simple dependency and
   manual database connection code.

4. Updated Koha::Plugins::get_enabled_plugins() - Now delegates to
   the Loader module for consistency.

5. Updated C4::Installer::TableExists - Delegates to the new
   Koha::Database::table_exists method.

This addresses all QA concerns:
- Eliminates XML::Simple usage (David Cook)
- Uses Koha::Database instead of manual DBI (David Cook)
- Reuses table checking logic (Nick Clemens)
- Eliminates circular dependencies (Paul Derscheid)
- Much cleaner and maintainable code

Test plan:
1. Run tests:
   prove t/db_dependent/Koha/Database.t
   prove t/db_dependent/Koha/Plugins/Loader.t
   prove t/db_dependent/Koha/Plugins/Plugins.t
2. All tests should pass
3. Install and enable a plugin via the UI
4. Verify plugin hooks are called correctly
5. Verify no regressions in plugin functionality

Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomás Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Andrew Fuerste Henry <andrew@bywatersolutions.com>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
2026-02-25 07:36:59 -07:00
..
Acquisition Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Auth Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
AuthoritiesMarc Bug 38944: Add Test::NoWarnings to tests no producing warnings 2025-03-13 17:25:03 +01:00
Authority Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Biblio Bug 40680: Fix t tests 2025-12-01 08:34:01 -07:00
Budgets Bug 38944: Manual changes 2025-03-13 17:25:04 +01:00
Circulation Bug 28530: Fix tests 2026-02-10 10:51:38 -07:00
CourseReserves Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Creators Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Exporter Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Holds Bug 40058: Adjust existing tests 2025-08-14 16:06:00 -06:00
HoldsQueue Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
Items Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Koha Bug 38384: Refactor plugin loading to use lightweight Koha::Plugins::Loader 2026-02-25 07:36:59 -07:00
LDAP Bug 39325: Manual fixes 2025-04-28 18:51:23 +02:00
Labels Bug 40680: Fix t tests 2025-12-01 08:34:01 -07:00
Letters Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Members Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
OAI Bug 40265: (try to) prevent OAI/Server.t to fail on slow server 2025-09-26 10:36:54 -06:00
Patron Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Record Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Reports Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Reserves Bug 3492: Modernize hold fee system and migrate to circulation rules 2026-02-09 12:57:56 -07:00
SIP Bug 41369: SIP payments have no branchcode 2025-12-17 13:24:30 -07:00
Search Bug 40680: Fix t tests 2025-12-01 08:34:01 -07:00
Serials Bug 37796: (QA follow-up) nextpublisheddate in t/db../GetNextSeq.t 2025-12-17 13:24:24 -07:00
Template/Plugin Bug 37711: (follow-up) Fix AuthClient plugin database upgrade handling 2025-11-05 07:12:33 -07:00
Utils Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
api/v1 Bug 40154: prevent deletion of items with holds 2026-02-10 10:52:04 -07:00
cronjobs Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
data Bug 39345: (QA follow-up): Add exception handling for unsupported counter release 2025-09-05 15:10:31 -06:00
misc/translator Bug 40444: Add a test to ensure all Perl test files use Test::NoWarnings 2025-07-28 16:26:36 -06:00
mojo Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
selenium Bug 39745: Replace more occurrences in selenium tests 2026-02-09 12:57:59 -07:00
www Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
00-strict.t Bug 38944: Manual changes 2025-03-13 17:25:04 +01:00
Accounts.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Acquisition.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Amazon.t Bug 38944: Add Test::NoWarnings to tests no producing warnings 2025-03-13 17:25:03 +01:00
ArticleRequests.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
AudioAlerts.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Auth.t Bug 39745: Fix wrong system preference 'language' in test suite (mock_preference) 2026-01-26 14:36:44 -07:00
AuthUtils.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Auth_with_cas.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Auth_with_ldap.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Auth_with_shibboleth.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
AuthorisedValues.t Bug 40444: Add a test to ensure all Perl test files use Test::NoWarnings 2025-07-28 16:26:36 -06:00
AuthoritiesMarc.t Bug 38944: Add Test::NoWarnings to tests no producing warnings 2025-03-13 17:25:03 +01:00
AuthoritiesMarc_GetTagsLabels.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Barcodes.t Bug 40680: Fix t tests 2025-12-01 08:34:01 -07:00
Barcodes_ValueBuilder.t Bug 40680: Fix t tests 2025-12-01 08:34:01 -07:00
Biblio.t Bug 40680: Fix t tests 2025-12-01 08:34:01 -07:00
Biblio_holdsqueue.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Breeding.t Bug 40680: Fix t tests 2025-12-01 08:34:01 -07:00
Breeding_Auth.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Budgets.t Bug 40371: Remove warnings from Budgets.t output 2025-07-23 16:36:30 -06:00
Cache.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Calendar.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Charset.t Bug 38944: Add Test::NoWarnings to tests no producing warnings 2025-03-13 17:25:03 +01:00
Circulation.t Bug 7376: (QA follow-up) Trivial typo fixes 2026-02-06 15:17:24 -07:00
ClassSources.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Clubs.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Context.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Contract.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
CourseReserves.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
DecreaseLoanHighHolds.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Filter_MARC_ViewPolicy.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
Fines.t Bug 38944: Add Test::NoWarnings to tests no producing warnings 2025-03-13 17:25:03 +01:00
FrameworkPlugin.t Bug 39325: Automatic fix 2025-04-28 18:51:22 +02:00
Heading.t Bug 40680: Fix t tests 2025-12-01 08:34:01 -07:00
Heading_MARC21.t Bug 40680: Fix t tests 2025-12-01 08:34:01 -07:00
Hold.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
Holds.t Bug 40680: Fix t tests 2025-12-01 08:34:01 -07:00
HoldsQueue.t Bug 40680: Fix C4::Calendar imports 2025-12-01 08:34:00 -07:00
Holidays.t Bug 40680: Fix t tests 2025-12-01 08:34:01 -07:00
ILSDI_Services.t Bug 40680: Fix t tests 2025-12-01 08:34:01 -07:00
ImportBatch.t Bug 39325: Automatic fix 2025-04-28 18:51:22 +02:00
ImportExportFramework.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Installer.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Items.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Koha.t Bug 40277: Add a test 2025-07-07 10:20:27 -06:00
Koha_Database.t Bug 38944: Add Test::NoWarnings to tests no producing warnings 2025-03-13 17:25:03 +01:00
Koha_Elasticsearch.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Koha_ExternalContent_OverDrive.t Bug 38944: Manual changes 2025-03-13 17:25:04 +01:00
Koha_MetadataRecord_Authority.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Koha_Misc_Files.t Bug 38944: Add Test::NoWarnings to tests no producing warnings 2025-03-13 17:25:03 +01:00
Languages.t Bug 39325: Manual fixes 2025-04-28 18:51:23 +02:00
Letters.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
LibraryGroups.t Bug 38944: Add Test::NoWarnings to tests no producing warnings 2025-03-13 17:25:03 +01:00
Linker_Default.t Bug 40680: Fix t tests 2025-12-01 08:34:01 -07:00
Linker_FirstMatch.t Bug 40680: Fix t tests 2025-12-01 08:34:01 -07:00
Log.t Bug 40680: Fix t tests 2025-12-01 08:34:01 -07:00
MarcModificationTemplates.t Bug 32950: Remove unecessary DELETE 2025-10-06 09:15:25 -06:00
Matcher.t Bug 40680: Fix t tests 2025-12-01 08:34:01 -07:00
Members.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Message.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
MungeMarcPrice.t Bug 38944: Manual changes 2025-03-13 17:25:04 +01:00
Output.t Bug 38936: Use https in license 2025-10-01 08:32:49 -06:00
Overdues.t Bug 40409: Remove warnings from t/db_dependent/Overdues.t 2025-07-18 11:10:00 -06:00
Passwordrecovery.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
PatronLists.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Patroncards.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Patrons.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
Prices.t Bug 39325: Automatic fix 2025-04-28 18:51:22 +02:00
Realtime_holdsqueue.t Bug 40680: Fix t tests 2025-12-01 08:34:01 -07:00
Record.t Bug 38944: Add Test::NoWarnings to tests no producing warnings 2025-03-13 17:25:03 +01:00
RecordProcessor_EmbedSeeFromHeadings.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Reports.t Bug 39325: Automatic fix 2025-04-28 18:51:22 +02:00
Reserves.t Bug 3492: Modernize hold fee system and migrate to circulation rules 2026-02-09 12:57:56 -07:00
RotatingCollections.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Search.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Search_FacetSorting.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Serials.t Bug 37796: Pass correct publication date when generating the next serial form the serial collection page 2025-12-17 13:24:17 -07:00
Serials_2.t Bug 38944: Add Test::NoWarnings to tests no producing warnings 2025-03-13 17:25:03 +01:00
Service.t Bug 38944: Add Test::NoWarnings to tests no producing warnings 2025-03-13 17:25:03 +01:00
ShelfBrowser.t Bug 38944: Add Test::NoWarnings to tests no producing warnings 2025-03-13 17:25:03 +01:00
Sitemapper.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
SocialData.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
StockRotationItems.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
StockRotationRotas.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
StockRotationStages.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
SuggestionEngine_ExplodedTerms.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Suggestions.t Bug 39722: Remove GetSuggestionFromBiblionumber from C4/Suggestions.pm 2026-02-06 15:17:09 -07:00
TablesSettings.t Bug 41042: default_save_state is enabled by default 2025-10-23 11:33:32 -06:00
Tags.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
Templates.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
TestBuilder.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
Upload.t Bug 38944: Add Test::NoWarnings to tests no producing warnings 2025-03-13 17:25:03 +01:00
UsageStats.t Bug 40680: Fix t tests 2025-12-01 08:34:01 -07:00
Virtualshelves.t Bug 18148: Add unit tests 2025-11-05 07:12:35 -07:00
XISBN.t Bug 38664: Tidy the whole codebase 2025-02-11 14:58:24 +01:00
XSLT.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
check_kohastructure.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
check_sysprefs.t Bug 41682: (RM follow-up) Fix spelling mistake 2026-01-28 07:32:02 -07:00
db_structure.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
rollingloans.t Bug 40680: Fix t tests 2025-12-01 08:34:01 -07:00
sysprefs.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
yaml.t Bug 38944: Manual changes 2025-03-13 17:25:04 +01:00
zebra_config.pl Bug 38664: Tidy the whole codebase 2025-02-11 14:58:24 +01:00