2
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2026-03-04 01:15:08 +08:00
discourse/config/official_plugins.json
Sérgio Saquetim 726fc21187
DEV: Enforce deprecation-free tests for preinstalled plugins/themes (#36445)
This PR implements stricter deprecation handling that enforces
deprecation-free tests for core and preinstalled plugins, while allowing
custom (non-preinstalled) plugins and themes to have deprecations
without causing test failures.

### Key Changes

#### CI Workflow Improvements
- Split plugin system tests into separate CI targets: `core-plugins`,
`official-plugins`, and `chat`
- Enhance `bin/turbo_rspec` to accept comma-separated exclude patterns
via `--exclude-pattern`
- Simplify workflow configuration with default `shell: bash` and
consolidated environment variables

#### Plugin Classification & Detection
- Centralize official plugins list in `config/official_plugins.json` for
unified backend and frontend access
- Detect preinstalled plugins by checking for absence of `.git`
directory
- Add `isOfficial` and `isPreinstalled` metadata flags to plugin info
- Add `data-preinstalled` and `data-official` attributes to all plugin
and theme script tags for runtime identification

#### Deprecation Source Tracking
- Track deprecation sources (core, plugin, or theme) through template
map and resolver to attribute deprecations correctly
- Improve `source-identifier.js` to detect admin UI plugin files in both
development and production environments
- Add source information to deprecation messages for better debugging

#### Test Infrastructure
- Modify `raise-on-deprecation` test helper to skip errors for custom
(non-preinstalled) plugins and themes
- Add `EMBER_RAISE_ON_DEPRECATION` environment variable to control
deprecation throwing behavior in Rails tests
- Automatically set `EMBER_RAISE_ON_DEPRECATION` for core and
preinstalled plugin/theme specs in `rails_helper.rb`
- Improve deprecation summary output for system specs with test/spec
origin tracking

#### Deprecation Workflow Enhancements
- Add `dont-throw` handler for selective deprecation bypassing in test
fixtures without raising errors
- Add `dont-count` handler for preventing deprecation counting in
specific scenarios (e.g., test fixtures)

#### Deprecation Fixes
- Fix pending deprecations across core plugins (chat, data-explorer,
discourse-subscriptions, gamification, house-ads, reactions,
rss-polling, styleguide)
- Update import paths and remove deprecated patterns
- Migrate deprecated Handlebars templates to JavaScript API

### Testing Strategy

With these changes:
- **Core and preinstalled plugins** must pass all tests without any
deprecations
- **Custom plugins and themes** can have deprecations without failing
tests
- Test fixtures can use `dont-throw` and `dont-count` handlers when
testing deprecation behavior itself
- System specs automatically configure deprecation enforcement based on
test file location

---------

Co-authored-by: David Taylor <david@taylorhq.com>
Co-authored-by: Jarek Radosz <jradosz@gmail.com>
2025-12-16 17:48:29 -03:00

87 lines
2.1 KiB
JSON

[
"discourse-adplugin",
"discourse-affiliate",
"discourse-ai",
"discourse-akismet",
"discourse-algolia",
"discourse-apple-auth",
"discourse-assign",
"discourse-auto-deactivate",
"discourse-bbcode",
"discourse-bbcode-color",
"discourse-cakeday",
"discourse-calendar",
"discourse-categories-suppressed",
"discourse-category-experts",
"discourse-characters-required",
"discourse-chat-integration",
"discourse-code-review",
"discourse-data-explorer",
"discourse-details",
"discourse-doc-categories",
"discourse-docs",
"discourse-follow",
"discourse-fontawesome-pro",
"discourse-gamification",
"discourse-geoblocking",
"discourse-github",
"discourse-gradle-issue",
"discourse-graphviz",
"discourse-group-tracker",
"discourse-hcaptcha",
"discourse-invite-tokens",
"discourse-jira",
"discourse-lazy-videos",
"discourse-local-dates",
"discourse-login-with-amazon",
"discourse-logster-transporter",
"discourse-lti",
"discourse-math",
"discourse-microsoft-auth",
"discourse-narrative-bot",
"discourse-newsletter-integration",
"discourse-no-bump",
"discourse-oauth2-basic",
"discourse-openid-connect",
"discourse-patreon",
"discourse-perspective-api",
"discourse-policy",
"discourse-post-voting",
"discourse-presence",
"discourse-prometheus",
"discourse-prometheus-alert-receiver",
"discourse-push-notifications",
"discourse-reactions",
"discourse-restricted-replies",
"discourse-rss-polling",
"discourse-salesforce",
"discourse-saml",
"discourse-saved-searches",
"discourse-signatures",
"discourse-solved",
"discourse-staff-alias",
"discourse-steam-login",
"discourse-subscriptions",
"discourse-tag-by-group",
"discourse-teambuild",
"discourse-templates",
"discourse-tooltips",
"discourse-topic-voting",
"discourse-translator",
"discourse-user-card-badges",
"discourse-user-notes",
"discourse-vk-auth",
"discourse-whos-online",
"discourse-yearly-review",
"discourse-zendesk-plugin",
"discourse-zoom",
"discourse-rewind",
"automation",
"chat",
"checklist",
"docker_manager",
"footnote",
"poll",
"spoiler-alert",
"styleguide"
]