mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-28 07:32:14 +02:00
v1.89.1.0 fix: remove continuous checkpoint commits (#2970)
* v1.89.1.0 fix: remove continuous checkpoint commits and repair validation blockers * fix: clarify shipping and engineering review recovery * fix: interpret native no-change review descriptions * test: separate descendant readiness from timeout delivery
This commit is contained in:
@@ -1,10 +1,17 @@
|
||||
import {expect,test} from 'bun:test';
|
||||
import {planFloorDXPane,planFloorDXReplyInput,matchesNativePlanQuestion,type PlanFloorDXReply} from './helpers/claude-pty-runner';
|
||||
import captured from './fixtures/plan-floor-dx-custom-491.json';
|
||||
import editorHints from './fixtures/plan-floor-dx-editor-hint.json';
|
||||
import {E2E_TOUCHFILES,selectTests} from './helpers/touchfiles';
|
||||
const call=captured.call;
|
||||
const state=(stage:PlanFloorDXReply['stage']='focus'):PlanFloorDXReply=>({call:structuredClone(call),
|
||||
pane:planFloorDXPane(captured.questionViewport,call)!,reply:captured.reply,stage});
|
||||
|
||||
test('editor-hint capture changes select the live DX finding-floor probe',()=>{
|
||||
expect(selectTests(['test/fixtures/plan-floor-dx-editor-hint.json'],E2E_TOUCHFILES,[]).selected)
|
||||
.toContain('plan-devex-finding-floor');
|
||||
});
|
||||
|
||||
test('generic matcher authenticates the crop while DX custom replies still require the complete pane',()=>{
|
||||
expect(matchesNativePlanQuestion(captured.originalViewport,call)).toBe(true);
|
||||
expect(planFloorDXPane(captured.originalViewport,call)).toBeNull();
|
||||
@@ -72,3 +79,27 @@ test('a short complete native setup still binds while an arbitrary shorter prefi
|
||||
expect(planFloorDXPane('☐ Empathy\n'+short.questions[0]!.question+'\n'+menu,short)).not.toBeNull();
|
||||
expect(planFloorDXPane('☐ Empathy\n'+call.questions[0]!.question.slice(0,300)+'…\n'+menu,call)).toBeNull();
|
||||
});
|
||||
|
||||
test.each(editorHints.cases)('captured attempt $attempt accepts the native editor hint only after custom-field focus',capture=>{
|
||||
const reply:PlanFloorDXReply={call:capture.call,pane:capture.questionViewport,reply:capture.reply,stage:'focus'};
|
||||
expect(planFloorDXReplyInput(capture.questionViewport,capture.call,reply)).toEqual({input:'4',stage:'paste'});
|
||||
expect(planFloorDXReplyInput(capture.focusedViewport,capture.call,{...reply,stage:'paste'}))
|
||||
.toEqual({input:'\x1b[200~'+capture.reply+'\x1b[201~',stage:'submit'});
|
||||
expect(planFloorDXReplyInput(capture.focusedViewport,capture.call,reply)).toBeNull();
|
||||
for(const changed of [
|
||||
capture.focusedViewport.replace('ctrl+g to edit in Vim','ctrl+g to approve'),
|
||||
capture.focusedViewport.replace('ctrl+g to edit in Vim','ctrl+g to edit in Vim · ctrl+g to edit in Vim'),
|
||||
capture.focusedViewport.replace('Type something.','Approve everything'),
|
||||
capture.focusedViewport+'\nForeign question is now active.',
|
||||
]) expect(planFloorDXReplyInput(changed,capture.call,{...reply,stage:'paste'})).toBeNull();
|
||||
});
|
||||
|
||||
test.each(['Vim','Nano','Visual Studio Code'])('custom input with %s hint still verifies the exact reply before submission',editor=>{
|
||||
const hint=(text:string)=>text.replace(' · Esc to cancel',` · ctrl+g to edit in ${editor} · Esc to cancel`);
|
||||
expect(planFloorDXReplyInput(hint(captured.focusedViewport),call,state('paste')))
|
||||
.toEqual({input:'\x1b[200~'+captured.reply+'\x1b[201~',stage:'submit'});
|
||||
expect(planFloorDXReplyInput(hint(captured.filledViewport),call,state('submit'))).toEqual({input:'\r',stage:'done'});
|
||||
expect(planFloorDXReplyInput(hint(captured.focusedViewport),call,state('submit'))).toBeNull();
|
||||
expect(planFloorDXReplyInput(hint(captured.filledViewport).replace('Confirmed review context:','Unapproved context:'),call,state('submit'))).toBeNull();
|
||||
expect(planFloorDXReplyInput(hint(captured.filledViewport),{...call,answered:true},state('submit'))).toBeNull();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user