-
Notifications
You must be signed in to change notification settings - Fork 679
chore(test): automatically run extra test with preserve_entry_signatures: 'allow-extension'
#6727
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
How to use the Graphite Merge QueueAdd the label graphite: merge to this PR to add it to the merge queue. You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has enabled the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. |
✅ Deploy Preview for rolldown-rs canceled.
|
Benchmarks Rust |
|
@copilot Run |
Completed in commit c08af3e. Ran Tests with
All 602 tests now pass. 597 tests run with the extended |
ExtendedTests#preserve_entry_signatures_allow_extension
ExtendedTests#preserve_entry_signatures_allow_extensionpreserve_entry_signatures: 'allow-extension'
Merge activity
|
…ures: 'allow-extension'` (#6727) Adds test coverage for `preserveEntrySignatures: 'allow-extension'` via the extended tests framework, complementing the existing `preserve_entry_signatures_strict` option. ## Changes - **`crates/rolldown_testing_config/src/extended_tests.rs`**: Add `preserve_entry_signatures_allow_extension` field (defaults to `true`) - **`crates/rolldown_testing/src/fixture.rs`**: Apply `allow-extension` variant when `preserveEntrySignatures` is not explicitly configured - **`crates/rolldown/tests/rolldown/code_splitting/import_export_unicode/_config.json`**: Disable `allow-extension` extended test for this test case due to Unicode handling issues ## Behavior When enabled and `preserveEntrySignatures` is unset in test config: - Runs additional test variant with `preserveEntrySignatures: 'allow-extension'` - Disables snapshots for the variant (consistent with other extended tests) - Config name: `extended-preserve-entry-signatures-allow-extension` Works in parallel with `preserve_entry_signatures_strict` to provide comprehensive test coverage across both modes. ## Test Exclusions One test has been explicitly configured to skip the `allow-extension` extended test: - **`code_splitting/import_export_unicode`** - Unicode emoji symbols in exports cause syntax errors with `allow-extension` mode ## Test Results - ✅ All 602 tests pass - ✅ 597 tests run with both default and `allow-extension` configurations - ✅ 1 test explicitly opts out of `allow-extension` extended testing Fixes #6726 <!-- START COPILOT CODING AGENT SUFFIX --> <details> <summary>Original prompt</summary> > > ---- > > *This section details on the original issue you should resolve* > > <issue_title>Infra: support `ExtendedTests#preserve_entry_signatures_allow_extension`</issue_title> > <issue_description>> "exports-only" behaves like "strict" if the entry module has exports, otherwise it behaves like "allow-extension". > > > > @sapphi-red I feel like it's strict in the most of time. I guess we should always test `allow-extension`? > > > > --- > > > > I feel like we should test both `strict` and `allow-extension`. But that would run full tests * 2. @IWANABETHATGUY What's your take? > > _Originally posted by @hyf0 in [#6722](https://github.com/rolldown/rolldown/issues/6722#issuecomment-3451890762)_</issue_description> > > <agent_instructions>We already have `ExtendedTests#preserve_entry_signatures_strict` for testing `strict` value. We're gonna introduce `ExtendedTests#preserve_entry_signatures_allow_extension` to test `allow-extension`. > > If `preserveEntrySignatures` is explicitly set in the config, we don't run extra `allow-extension` test</agent_instructions> > > ## Comments on the Issue (you are @copilot in this section) > > <comments> > </comments> > </details> - Fixes #6726 <!-- START COPILOT CODING AGENT TIPS --> --- 💬 We'd love your input! Share your thoughts on Copilot coding agent in our [2 minute survey](https://gh.io/copilot-coding-agent-survey).
c08af3e to
c372848
Compare
…ures: 'allow-extension'` (#6727) Adds test coverage for `preserveEntrySignatures: 'allow-extension'` via the extended tests framework, complementing the existing `preserve_entry_signatures_strict` option. ## Changes - **`crates/rolldown_testing_config/src/extended_tests.rs`**: Add `preserve_entry_signatures_allow_extension` field (defaults to `true`) - **`crates/rolldown_testing/src/fixture.rs`**: Apply `allow-extension` variant when `preserveEntrySignatures` is not explicitly configured - **`crates/rolldown/tests/rolldown/code_splitting/import_export_unicode/_config.json`**: Disable `allow-extension` extended test for this test case due to Unicode handling issues ## Behavior When enabled and `preserveEntrySignatures` is unset in test config: - Runs additional test variant with `preserveEntrySignatures: 'allow-extension'` - Disables snapshots for the variant (consistent with other extended tests) - Config name: `extended-preserve-entry-signatures-allow-extension` Works in parallel with `preserve_entry_signatures_strict` to provide comprehensive test coverage across both modes. ## Test Exclusions One test has been explicitly configured to skip the `allow-extension` extended test: - **`code_splitting/import_export_unicode`** - Unicode emoji symbols in exports cause syntax errors with `allow-extension` mode ## Test Results - ✅ All 602 tests pass - ✅ 597 tests run with both default and `allow-extension` configurations - ✅ 1 test explicitly opts out of `allow-extension` extended testing Fixes #6726 <!-- START COPILOT CODING AGENT SUFFIX --> <details> <summary>Original prompt</summary> > > ---- > > *This section details on the original issue you should resolve* > > <issue_title>Infra: support `ExtendedTests#preserve_entry_signatures_allow_extension`</issue_title> > <issue_description>> "exports-only" behaves like "strict" if the entry module has exports, otherwise it behaves like "allow-extension". > > > > @sapphi-red I feel like it's strict in the most of time. I guess we should always test `allow-extension`? > > > > --- > > > > I feel like we should test both `strict` and `allow-extension`. But that would run full tests * 2. @IWANABETHATGUY What's your take? > > _Originally posted by @hyf0 in [#6722](https://github.com/rolldown/rolldown/issues/6722#issuecomment-3451890762)_</issue_description> > > <agent_instructions>We already have `ExtendedTests#preserve_entry_signatures_strict` for testing `strict` value. We're gonna introduce `ExtendedTests#preserve_entry_signatures_allow_extension` to test `allow-extension`. > > If `preserveEntrySignatures` is explicitly set in the config, we don't run extra `allow-extension` test</agent_instructions> > > ## Comments on the Issue (you are @copilot in this section) > > <comments> > </comments> > </details> - Fixes #6726 <!-- START COPILOT CODING AGENT TIPS --> --- 💬 We'd love your input! Share your thoughts on Copilot coding agent in our [2 minute survey](https://gh.io/copilot-coding-agent-survey).
c372848 to
96cf848
Compare
…ignatures: 'allow-extension'` (#6753) - [x] Verify the issue and understand the problem - [x] Create empty config file to enable the test - [x] Identify the root cause of the syntax error - [x] Fix the import generation to properly quote non-identifier names - [x] Verify all tests pass **Summary:** Fixed the `code_splitting/import_export_unicode` test to work correctly with the `allow-extension` variant. The test was failing because imports with Unicode emoji symbols were not being properly quoted in the generated code. **Root Cause:** When generating import statements with `preserveEntrySignatures: 'allow-extension'`, the code was producing invalid JavaScript syntax: ```javascript // BEFORE (invalid): import { 😈 as devil } from "./main.js"; // AFTER (valid): import { "😈" as devil } from "./main.js"; ``` **Changes Made:** - **Created**: `crates/rolldown/tests/rolldown/code_splitting/import_export_unicode/_config.json` with `{}` to enable the test with all extended variants - **Fixed**: `crates/rolldown/src/ecmascript/format/esm.rs` - Updated import specifier generation to use `to_module_import_export_name()` which properly quotes names that aren't valid JavaScript identifiers **Technical Details:** The fix uses the existing `to_module_import_export_name()` utility function which: - Checks if a name is a valid JavaScript identifier using `is_validate_identifier_name()` - If valid, returns the name as-is - If invalid (like emoji), returns the JSON-quoted version **Test Results:** - All 602 Rust tests pass ✅ - The `code_splitting/import_export_unicode` test now runs successfully with BOTH the default configuration AND the `allow-extension` variant - The generated code is syntactically correct and executes properly - Fixes #6729 <!-- START COPILOT CODING AGENT SUFFIX --> <details> <summary>Original prompt</summary> > > ---- > > *This section details on the original issue you should resolve* > > <issue_title>Test case `code_splitting/import_export_unicode` failed with `preserve_entry_signatures: 'allow-extension'`</issue_title> > <issue_description>> @copilot Run `just test-rust`, for failed tests, explicitly mark them don't run extra `allow-extension` tests. And recrod the list and put them into summary. > > Completed in commit c08af3e. > > Ran `just test-rust` and found 1 test that failed with the `allow-extension` extended test: > > **Tests with `allow-extension` disabled:** > 1. `code_splitting/import_export_unicode` - Unicode emoji symbols in exports cause syntax errors with `allow-extension` mode > > All 602 tests now pass. 597 tests run with the extended `allow-extension` variant, 1 test has it explicitly disabled. > > _Originally posted by @Copilot in #6727 (comment) > > --- > > CI error: https://github.com/rolldown/rolldown/actions/runs/18863988746/job/53828146055 > </issue_description> > > ## Comments on the Issue (you are @copilot in this section) > > <comments> > </comments> > </details> - Fixes #6729 <!-- START COPILOT CODING AGENT TIPS --> --- ✨ Let Copilot coding agent [set things up for you](https://github.com/rolldown/rolldown/issues/new?title=✨+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot) — coding agent works faster and does higher quality work when set up for your repo. --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: sapphi-red <[email protected]>
…ignatures: 'allow-extension'` (#6753) - [x] Verify the issue and understand the problem - [x] Create empty config file to enable the test - [x] Identify the root cause of the syntax error - [x] Fix the import generation to properly quote non-identifier names - [x] Verify all tests pass **Summary:** Fixed the `code_splitting/import_export_unicode` test to work correctly with the `allow-extension` variant. The test was failing because imports with Unicode emoji symbols were not being properly quoted in the generated code. **Root Cause:** When generating import statements with `preserveEntrySignatures: 'allow-extension'`, the code was producing invalid JavaScript syntax: ```javascript // BEFORE (invalid): import { 😈 as devil } from "./main.js"; // AFTER (valid): import { "😈" as devil } from "./main.js"; ``` **Changes Made:** - **Created**: `crates/rolldown/tests/rolldown/code_splitting/import_export_unicode/_config.json` with `{}` to enable the test with all extended variants - **Fixed**: `crates/rolldown/src/ecmascript/format/esm.rs` - Updated import specifier generation to use `to_module_import_export_name()` which properly quotes names that aren't valid JavaScript identifiers **Technical Details:** The fix uses the existing `to_module_import_export_name()` utility function which: - Checks if a name is a valid JavaScript identifier using `is_validate_identifier_name()` - If valid, returns the name as-is - If invalid (like emoji), returns the JSON-quoted version **Test Results:** - All 602 Rust tests pass ✅ - The `code_splitting/import_export_unicode` test now runs successfully with BOTH the default configuration AND the `allow-extension` variant - The generated code is syntactically correct and executes properly - Fixes #6729 <!-- START COPILOT CODING AGENT SUFFIX --> <details> <summary>Original prompt</summary> > > ---- > > *This section details on the original issue you should resolve* > > <issue_title>Test case `code_splitting/import_export_unicode` failed with `preserve_entry_signatures: 'allow-extension'`</issue_title> > <issue_description>> @copilot Run `just test-rust`, for failed tests, explicitly mark them don't run extra `allow-extension` tests. And recrod the list and put them into summary. > > Completed in commit c08af3e. > > Ran `just test-rust` and found 1 test that failed with the `allow-extension` extended test: > > **Tests with `allow-extension` disabled:** > 1. `code_splitting/import_export_unicode` - Unicode emoji symbols in exports cause syntax errors with `allow-extension` mode > > All 602 tests now pass. 597 tests run with the extended `allow-extension` variant, 1 test has it explicitly disabled. > > _Originally posted by @Copilot in #6727 (comment) > > --- > > CI error: https://github.com/rolldown/rolldown/actions/runs/18863988746/job/53828146055 > </issue_description> > > ## Comments on the Issue (you are @copilot in this section) > > <comments> > </comments> > </details> - Fixes #6729 <!-- START COPILOT CODING AGENT TIPS --> --- ✨ Let Copilot coding agent [set things up for you](https://github.com/rolldown/rolldown/issues/new?title=✨+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot) — coding agent works faster and does higher quality work when set up for your repo. --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: sapphi-red <[email protected]>
## [1.0.0-beta.46] - 2025-11-03 ### 💥 BREAKING CHANGES - default `preserveEntrySignatures` to `'exports-only'` to align with Rollup (#6723) by @Copilot ### 🚀 Features - link to docs for commonjs prefer_builtin_feature diagnostic (#6793) by @sapphi-red - rolldown_plugin_build_import_analysis: align partial logic (#6789) by @shulaoda - improve `EVAL` warning message (#6776) by @sapphi-red - rolldown: oxc v0.96.0 (#6774) by @Boshen - rolldown_plugin_build_import_analysis: align partial logic (#6773) by @shulaoda - skip `__toESM` when not needed to reduce output size (#6751) by @Copilot - improve `EMPTY_IMPORT_META` warning message (#6761) by @sapphi-red - rolldown_plugin_build_import_analysis: align no preload logic (#6762) by @shulaoda - rolldown_plugin_vite_css_post: align `RemovedPureCSSFilesCache` logic (#6745) by @shulaoda - rolldown_plugin_build_import_analysis: initialize `generateBundle` logic (#6744) by @shulaoda - experimental: introduce `freeExternalMemory` to free external memory immediately (#6721) by @hyf0 ### 🐛 Bug Fixes - plugins: wrap replacePlugin with makeBuiltinPluginCallable (#6782) by @huang-julien - debug: make sure `this.resolve` is also tracked under corresponding session (#6798) by @hyf0 - legal comments above directives are not preserved (#6787) by @shulaoda - panic when rendering exports to other chunks (#6765) by @Copilot - transform/inject: escape special characters in import source (#6778) by @Copilot - handle default exports from CJS modules correctly (#6767) by @IWANABETHATGUY - rolldown_plugin_build_import_analysis: correct aligned logic (#6768) by @shulaoda - duplicate default export when using both import and require (#6764) by @Copilot - handle arbitrary module namespace identifiers in `preserveEntrySignatures: 'allow-extension'` (#6753) by @Copilot - TypeError when loading CJS files after bundling mixed CJS+TS project (#6743) by @IWANABETHATGUY - add warnings for import.meta.dirname/filename/url in UMD and IIFE formats (#6747) by @Copilot - rolldown_plugin_manifest: should keep `names` field (#6742) by @shulaoda - legal comments above import statements are not preserved (#6717) by @shulaoda - remove redundant node check in dynamic entry graph construction (#6730) by @IWANABETHATGUY ### 🚜 Refactor - remove unnecessary `#[napi(gettter)]`, use function call directly (#6694) by @hyf0 - explain the reason if memory doesn't get dropped by `freeExternalMemory` (#6781) by @hyf0 - pre compute exports (#6755) by @IWANABETHATGUY - dev: receive an interface for DevRuntime rather than WebSocket directly (#6734) by @sapphi-red - dev: fix types for the runtime file and expose it properly (#6731) by @sapphi-red ### 📚 Documentation - fix magicstring credit (#6812) by @TheAlexLichter - in-depth/bundling-cjs: wrap some sections with caveats section (#6796) by @sapphi-red - in-depth/bundling-cjs: add "Ambiguous `default` import from CJS modules" section (#6795) by @sapphi-red - in-depth/bundling-cjs: make `esmExternalRequirePlugin` link more prominent (#6792) by @sapphi-red - add explanation about direct eval (#6775) by @sapphi-red - add "Non-ESM Output Formats" page (#6760) by @sapphi-red - use oxc for benchmark comparison in native magic string doc (#6740) by @sapphi-red - polish `cleanDir` option (#6741) by @hyf0 - fix image in native magic string doc (#6739) by @sapphi-red - update description about `attachDebugInfo: 'none'` (#6738) by @IWANABETHATGUY - add warning about cleanDir behavior with multiple configs (#6735) by @Copilot ### 🧪 Testing - skip paths function test (#6771) by @IWANABETHATGUY - rust/dev: add test about recover from initial build error (#6567) by @hyf0 ### ⚙️ Miscellaneous Tasks - correct prepare release binding file (#6817) by @shulaoda - deps: update github-actions (#6806) by @renovate[bot] - deps: lock file maintenance npm packages (#6814) by @renovate[bot] - use correct node version (#6809) by @shulaoda - deps: lock file maintenance rust crates (#6815) by @renovate[bot] - deps: update npm packages (major) (#6813) by @renovate[bot] - deps: update dependency dprint-typescript to v0.95.12 (#6805) by @renovate[bot] - fix typo (#6801) by @iiio2 - fix typo in is_import_expr_ignored_by_comment method name (#6797) by @sapphi-red - deps: update crate-ci/typos action to v1.39.0 (#6794) by @renovate[bot] - deps: upgrade Rust to v1.91.0 and fix new clippy lints (#6785) by @Copilot - allow dprint to format `packages/rolldown/tests` except diagnostics directory (#6772) by @Copilot - deps: update dependency tsdown to v0.15.12 (#6759) by @renovate[bot] - deps: update dependency rolldown-plugin-dts to v0.17.3 (#6758) by @renovate[bot] - test/dev: collect multiple build outputs for each step (#6736) by @hyf0 - rolldown: change the NAPI-RS binding file to the cjs (#6688) by @Brooooooklyn - test: automatically run extra test with `preserve_entry_signatures: 'allow-extension'` (#6727) by @Copilot - deps: update dependency rolldown-plugin-dts to v0.17.2 (#6732) by @renovate[bot] - fix node validation (#6728) by @shulaoda - deps: lock file maintenance rust crates (#6636) by @renovate[bot] - deps: update dependency tsdown to v0.15.11 (#6725) by @renovate[bot] ### ❤️ New Contributors * @huang-julien made their first contribution in [#6782](#6782) Co-authored-by: shulaoda <[email protected]>
Adds test coverage for
preserveEntrySignatures: 'allow-extension'via the extended tests framework, complementing the existingpreserve_entry_signatures_strictoption.Changes
crates/rolldown_testing_config/src/extended_tests.rs: Addpreserve_entry_signatures_allow_extensionfield (defaults totrue)crates/rolldown_testing/src/fixture.rs: Applyallow-extensionvariant whenpreserveEntrySignaturesis not explicitly configuredcrates/rolldown/tests/rolldown/code_splitting/import_export_unicode/_config.json: Disableallow-extensionextended test for this test case due to Unicode handling issuesBehavior
When enabled and
preserveEntrySignaturesis unset in test config:preserveEntrySignatures: 'allow-extension'extended-preserve-entry-signatures-allow-extensionWorks in parallel with
preserve_entry_signatures_strictto provide comprehensive test coverage across both modes.Test Exclusions
One test has been explicitly configured to skip the
allow-extensionextended test:code_splitting/import_export_unicode- Unicode emoji symbols in exports cause syntax errors withallow-extensionmodeTest Results
allow-extensionconfigurationsallow-extensionextended testingFixes #6726
Original prompt
ExtendedTests#preserve_entry_signatures_allow_extension#6726💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.