-
Notifications
You must be signed in to change notification settings - Fork 4.1k
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
Discussion: IDE Test Plan for New Language Features #8389
Comments
/cc: @balajikris @jasonmalinowski @Pilchie @DustinCampbell Are we headed in the right direction for a generalized IDE Test Plan for new language features here? I'll continue filling in feature descriptions as I move through them, and I hope that as we test a few different features, we'll come up with good guidance for testing specific features. |
Sorry for not commenting sooner. Yes, this is definitely the right direction. When we showed it to the DevLT meeting yesterday there was audible drooling. 👍 |
I suggest adding "WinForms" to the list of "Project System & External Integration" |
"Inline Temporary Variable" is missing from refactorings |
"Convert 'Get_' Methods to Properties" and "Encapsulate Field" are listed under Fixes but I _think* they're technically refactorings. |
Implement |
@alrz -- this isn't about feature requests. This is about creating a template for testing existing IDE features against new language features to ensure everything works properly. If you have a feature request, please feel free to file an issue. |
@DustinCampbell Oh right, thanks. |
@DustinCampbell Thanks! Added Inline Temp, moved Methods->Properties & Encapsulate Field. WinFroms added to the list as well, but we haven't expanded it into suggested test areas yet. |
This issue is now closed. The IDE test plan is now checked in. |
This issue is now closed. The IDE test plan is now checked in.
The purpose of this issue is to come to a consensus on what the general IDE Test Plan should be for testing new language features. This post is a work in progress - things may be added/removed/updated as we work through testing a few language features or as suggested changes are incorporated.
Test plan
Test Outputs
Testing tags
✅ = Tested & Approved (possibly with linked bugs)
❌ = Merge blocking
🚧 = Non-blocking bugs
🆗 = Issue has been fixed
🆓 = No expected impact
❓ = Open question
❔ = Answered question
1 Feature updated by compiler team, with appropriate unit tests.
2 Feature requires more complete testing by IDE team. (?)
Internal Dogfooding Requirements (Merge Signoff)
Critical IDE features in the areas of Typing, Navigating, and Viewing must function as expected. Any non-trivial issues in these areas blocking language feature merging.
All feature descriptions and testing suggestions are merely examples. Each language feature should be carefully considered independently against each IDE feature to find interesting intersections
Completely enables/disables the feature in the compiler & IDE
- Type and paste new constructs
- Nothing interferes with verbatim typing
- Typing new keyword/construct names
- Dotting off of new constructs
- Spacing in and around new constructs
- Spacing options
- Format Document command
- Auto-insert close brace
- Shift+Enter commit of pending brace completion
- Typing
Enter
in an unfinished statement indents the next line- F12 from callsites to definition
- Jump from virtual members to their implementations
- Jump from inheritable types to their implementations
- Lists references to a symbol in "Find Symbol Results" window
- Shows results in hierarchy grouped by definition
- Keywords, literals, and identifiers colored appropriately in code
- Squiggles appear as expected on reasonable spans
IDE Features (Feature Signoff)
For the remaining set of IDE features, only crashes and asserts are considered blocking. However, all issues discovered must be filed and linked here.
All feature descriptions and testing suggestions are merely examples. Each language feature should be carefully considered independently against each IDE feature to find interesting intersections
Code Transformations
- Dashboard shows correct information
- Highlighted spans are updated appropriately
- Rename operation updates the correct set of symbols
- Updates all direct & cascaded definitions/callsites
- Shows appropriate signature & parameter previews in UI
- Generated Interface has expected shape
- UI shows appropriate method previews
- Dialog gives all valid options
- Tracking span tracks & dismisses as expected
- Extracted method has the expected signature
- All arguments/return values handled correctly
- Extracted code block is reasonable
- Introduced variable has the expected signature and initializer expression
- "Introduce for All" correctly finds dupes
- Inlined values are appropriately expanded/reduced
- Honors "Place 'System' namespace first" option
Add Description
Add Description
- Triggers on appropriate constructs
Add Description
Add Description
- Generated method has the expected signature and accessibility
- Select fields/properties to generate a constructor accepting corresponding arguments
- Generated constructor has the expected signature and accessibility
- Only missing methods added
- All added methods have the expected signature and accessibility
Add Description
Add Description
Add Description
- Type "+=" after an event name and QuickInfo shows
- Invoking should pick good name & launch Inline Rename
Add Description
Add Description
IDE Features
- Overloads shown with appropriate, colorized signature
- Hover on identifiers
- On completion list items
Add Description
Add Description
Add Description
Add Description
Add Description
Add Description
Add Description
Add Description
Add Description
Add Description
Add Description
Add Description
Add Description
Add Description
Add Description
Add Description
Add Description
Add Description
Add Description
Project System & External Integration
(Any changes to the runtime will require much more testing in this category)
All feature descriptions and testing suggestions are merely examples. Each language feature should be carefully considered independently against each IDE feature to find interesting intersections
- Verify expression and block contexts
- Test on projection boundaries
- Emphasis on rename and formatting
- Verify expression and block contexts
- Test on projection boundaries
- Emphasis on rename and formatting
- Event generation from designer to code
- Designer consumption of new types of members
- Cross language features (GTD, FAR)
Add Description
Add Description
Add Description
Interaction with other new language features
Verify IDE handling of the new language feature in conjunction with other new/unreleased language features
New Feature Suggestions
What refactorings, fixes, code transformations, or other in-editor experiences would enhance this language feature?
The text was updated successfully, but these errors were encountered: