The GitHub Actions job "Required Checks" on 
texera.git/gh-readonly-queue/main/pr-7425-f9deb66dcccfb3b5994be659350021c2e0aa8e06
 has succeeded.
Run started by GitHub user aglinxinyuan (triggered by aglinxinyuan).

Head commit for run:
fb1a5c4255f03e195e4ff36821d29acb71348071 / Xinyuan Lin <[email protected]>
test(frontend): cover the debugger's breakpoint gutter (#7425)

### What changes were proposed in this PR?

`setupMonacoBreakpointMethods` was the component's one uncovered block.
The existing suite stubs it out — with a comment saying so — because the
minimal editor mock cannot back a real `MonacoBreakpoint`, so neither of
the two overrides it installs was exercised.

Adds 13 tests over both.

**The glyph override** decides what the gutter shows:

```
exists && condition present   ->  monaco-conditional-breakpoint
exists && no condition        ->  monaco-breakpoint
hovering only                 ->  monaco-hover-breakpoint
```

Covered including the `Boolean(condition?.trim())` guard — a condition
left as whitespace must render as an ordinary breakpoint rather than
claiming a condition the debugger will not apply — and the lookup
happening at `range.startLineNumber`, since reading `endLineNumber`
would attribute another line's condition to this glyph.

**The mouse-down override** replaces the library's own handler. The
`dispose()` before re-registering is load-bearing: two live handlers
would add and immediately remove a breakpoint on a single click. A left
click toggles; a right click opens the condition input instead of
toggling, and only for a line that already has a breakpoint; clicks
below the last line and outside the gutter do nothing.

**Verified by mutation**, all reverted (production diff empty):

| Mutation | Result |
|---|---|
| treat a blank condition as a condition | red |
| read the condition from the range's end line | red |
| key the condition lookup to a fixed operator | red |
| swap the conditional and plain glyphs | red |
| swap the exists and hover arms | red |
| skip disposing the previous mouse-down handler | red |
| drop the gutter target-type check | red |
| drop the after-lines guard | red |
| invert the left/right button branch | red |

The stand-in editor is a `Proxy` that answers any unstubbed `on*`
listener with an inert disposable, so the spec does not have to track
which events `monaco-breakpoints` subscribes to — the first attempt
failed on `onDidChangeCursorPosition`, and guessing at the rest would
have been fragile.

No production file is touched.

### Any related issues, documentation, discussions?

Closes #7422

### How was this PR tested?

```
npx ng test --watch=false --include="**/code-debugger.component.spec.ts"
```

```
 Test Files  1 passed (1)
      Tests  29 passed (29)
```

13 new on top of the existing 16. `yarn format:ci` passes.

### Was this PR authored or co-authored using generative AI tooling?

Generated-by: Claude Code (Opus 5)

Report URL: https://github.com/apache/texera/actions/runs/31306018838

With regards,
GitHub Actions via GitBox

Reply via email to