Spaces:
Sleeping
Sleeping
Sync from enhance: d795216 feat: implement patch response parser for search and replace functionality
9bd4242 | import assert from 'node:assert/strict' | |
| import test from 'node:test' | |
| import { tryApplyKnownMypyFix } from './static-guard/manager' | |
| import type { StaticDiagnostic } from './static-guard/types' | |
| function createMypyDiagnostic(overrides: Partial<StaticDiagnostic> = {}): StaticDiagnostic { | |
| return { | |
| tool: 'mypy', | |
| line: 1, | |
| message: 'Name "Scene" is not defined', | |
| code: 'name-defined', | |
| ...overrides | |
| } | |
| } | |
| test('tryApplyKnownMypyFix prepends manim import for undefined Scene', () => { | |
| const code = 'class MainScene(Scene):\n pass' | |
| const fixed = tryApplyKnownMypyFix(code, createMypyDiagnostic()) | |
| assert.equal(fixed, 'from manim import *\nfrom manim import Scene\nclass MainScene(Scene):\n pass') | |
| }) | |
| test('tryApplyKnownMypyFix adds explicit Scene import when wildcard import already exists', () => { | |
| const code = 'from manim import *\n\nclass MainScene(Scene):\n pass' | |
| const fixed = tryApplyKnownMypyFix(code, createMypyDiagnostic()) | |
| assert.equal(fixed, 'from manim import *\nfrom manim import Scene\n\nclass MainScene(Scene):\n pass') | |
| }) | |
| test('tryApplyKnownMypyFix avoids duplicating explicit Scene import', () => { | |
| const code = 'from manim import *\nfrom manim import Scene\n\nclass MainScene(Scene):\n pass' | |
| const fixed = tryApplyKnownMypyFix(code, createMypyDiagnostic()) | |
| assert.equal(fixed, null) | |
| }) | |
| test('tryApplyKnownMypyFix replaces CYAN with TEAL for known color alias', () => { | |
| const code = 'from manim import *\naccent = CYAN\n' | |
| const fixed = tryApplyKnownMypyFix(code, createMypyDiagnostic({ | |
| message: 'Name "CYAN" is not defined', | |
| code: 'name-defined' | |
| })) | |
| assert.equal(fixed, 'from manim import *\naccent = TEAL\n') | |
| }) | |
| test('tryApplyKnownMypyFix keeps arg-type tuple fixes active for mypy diagnostics', () => { | |
| const code = 'axes = Axes(x_range=[0, 10, 1])' | |
| const fixed = tryApplyKnownMypyFix(code, createMypyDiagnostic({ | |
| message: 'Argument "x_range" to "Axes" has incompatible type "list[int]"; expected "tuple[float, float, float] | None"', | |
| code: 'arg-type' | |
| })) | |
| assert.equal(fixed, 'axes = Axes(x_range=(0, 10, 1))') | |
| }) | |