mirror of
https://github.com/discourse/discourse.git
synced 2026-03-04 01:15:08 +08:00
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>
87 lines
2.1 KiB
JSON
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"
|
|
]
|