mirror of https://github.com/icsharpcode/ILSpy.git
Tree:
bca2098448
christophwille/closedhierarchies
christophwille/contributing
christophwille/decompilerdocs
christophwille/membench
claude/ilspy-pr-3839-review-uo8q7r
collection-expression-tests
copilot/add-field-keyword-auto-properties
deconstruction-fixes
fix-3475-anonymous-type-null
fix-3860-outvar-explicit-type
fix/3465
fix/3518
gh-pages
issue1638
master
natural-type-lambdas-methods
null-coalescing-assignment
release/10.1
release/6.2
release/7.1
release/7.2
release/8.1
stash/beautify-enum-member-declarations
stash/dynamic-await
1.0-Beta
1.0-M1
1.0-M2
1.0-M3
1.0.0
2.0.0
2.1
2.2
2.3
2.3.1
3.0-Preview1
3.0-Preview2
3.0.2
v10.0
v10.0-preview1
v10.0-preview2
v10.0-preview3
v10.0.1
v10.1
v2.3.2
v2.4
v3.0
v3.0-beta1
v3.0-beta2
v3.0-beta2a
v3.0-beta3
v3.0-beta4
v3.0.1
v3.1-beta1
v3.1-final
v3.1-rc
v3.2-beta
v3.2-rc
v3.2.0
v4.0
v4.0-alpha1
v4.0-beta1
v4.0-beta2
v4.0-beta3
v4.0-rc1
v4.0-rc2
v4.0.1
v5.0
v5.0-preview1
v5.0-preview2
v5.0-preview3
v5.0-preview4
v5.0-rc1
v5.0.1
v5.0.2
v6.0
v6.0-preview1
v6.0-preview2
v6.0-preview3
v6.0-preview4
v6.0-rc1
v6.1
v6.2
v6.2-preview1
v6.2-preview2
v6.2.1
v7.0
v7.0-preview1
v7.0-preview2
v7.0-preview3
v7.0-rc1
v7.0-rc2
v7.1
v7.2
v7.2-preview1
v7.2-preview2
v7.2-preview3
v7.2-preview4
v7.2-rc
v7.2.1
v8.0
v8.0-preview1
v8.0-preview2
v8.0-preview3
v8.0-preview4
v8.0-rc1
v8.1
v8.1.1
v8.2
v9.0
v9.0-preview1
v9.0-preview2
v9.0-preview3
v9.0-rc
v9.1
${ noResults }
3 Commits (bca209844827c5f6edfbb5fe94de758fe6aa2b5c)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
91133c1272 |
Keep the tree selection put when right-clicking a node
Right-clicking a tree row to reach its context menu used to move the real selection there first, because ProDataGrid selects the row on press. With the preview document bound to the selection, that meant 'Decompile to new tab' on node B (while viewing A) jumped the preview to B before the command ran, so you ended up with B twice instead of the intended A + B. Middle-click avoided it, but not every mouse has a usable one. Capture the right-clicked row in ContextRequested (which fires even when a previous menu's light-dismiss popup swallows the press) and swallow the right-press so the grid never reselects: the menu now acts on the clicked row as a Thunderbird-style context target while the selection -- and the document -- stay put. The targeted row gets a faint focus-box highlight, cleared when the menu closes (guarded so a stale menu's close can't wipe a newer target). Also adds TestHarness.ClickItem to collapse the repeated Items.OfType<MenuItem>().Single(...).RaiseEvent(...) menu-click dance. Assisted-by: Claude:claude-opus-4-8:Claude Code |
4 weeks ago |
|
|
f466b2399b |
Add per-step visual breakpoints to the headless UI tests
To audit what each UI test actually exercises, every step now snapshots the live window to <TestFixtureName>/<TestName>_<NN>_<ShortDescription>.png: a booted frame (emitted automatically by TestHarness.BootAsync), one after each state-changing action, and one before each assertion. Flip ILSPY_TESTS_VISIBLE=1 to render the filmstrip; it lands under %TEMP%/ilspy-test-captures (overridable via ILSPY_TEST_CAPTURES). The step number and fixture/test name are derived automatically so inserting a breakpoint never renumbers the rest. The identity is recorded up front from the real ITest in an ITestAction hook rather than read live: NUnit's TestContext.CurrentContext does not flow onto async continuations, so a capture after an await would otherwise collide under the ad-hoc context. And when rendering is off the whole call is a true no-op -- not even a dispatcher pump -- so instrumenting a test can never perturb the navigation/tab timing it asserts on. Full headless suite stays green. |
4 weeks ago |
|
|
56afcf8abd |
Factor repeated headless-test setup into shared helpers
Nearly every headless UI test opened with the same four-line prologue (resolve the shared MainWindow, show it, cast its DataContext, wait for the assembly list), then repeated the corelib lookup, the EnsureLazyChildren + Children.OfType<T>().Single() drill, the registry single-by-header lookups, and the open-an-assembly-and-wait dance. The duplication made the intent of each test hard to see and every signature tweak a suite-wide edit. Collapse those into TestHarness (BootAsync, OpenAssemblyAsync, GetCommand, GetEntry) and TreeNavigation extensions (FindCoreLib, GetChild<T>, Expand<T>), then apply them across the suite. Net ~865 lines of boilerplate removed with no change in behaviour; the full headless suite stays green. |
4 weeks ago |