Invalid Formula: Dentaku::AST::Multiplication has too many operands (given 3, expected 2)
Validation: 960b0fc9-ced0-474f-ac6e-2048444878d4
Verdict: APPROVED#
Completeness#
| Plan Item | Status | Evidence |
|---|---|---|
rescue Dentaku::Error, Dentaku::ZeroDivisionError => e 절 추가 (StandardError 절 앞) |
PASS | lib/cupix/util/formula_parser.rb: diff 23줄에 rescue Dentaku::Error, Dentaku::ZeroDivisionError => e 신규 추가, StandardError 절보다 앞 위치 확인 |
새 절에서 Cupix::Logger.warn(...) 로깅 후 Cupix::Errors::Parameter raise |
PASS | lib/cupix/util/formula_parser.rb: diff 24-26줄에 Cupix::Logger.warn("Invalid Formula: #{e.message}", class: self.name, function: __method__, formula: expression) 및 raise Cupix::Errors::Parameter.new(code: 'ARG10001', reason: "Invalid Formula: #{e.message}") 확인 |
기존 rescue StandardError => e 블록과 Cupix::Logger.error 호출 유지 |
PASS | lib/cupix/util/formula_parser.rb: diff context 27-28줄에 rescue StandardError => e 및 Cupix::Logger.error("Invalid Formula: ...") 미변경 유지 확인 |
spec: Dentaku 경로에서 Cupix::Logger.warn 호출 및 error 미호출 검증 example 추가 |
PASS | spec/lib/cupix/util/formula_parser_spec.rb: diff 255-273줄 context 'when Dentaku raises a parse error...' 블록에 have_received(:warn) 및 not_to have_received(:error) 확인 |
spec: 일반 StandardError 경로에서 Cupix::Logger.error 호출 및 warn 미호출 회귀 검증 example 추가 |
PASS | spec/lib/cupix/util/formula_parser_spec.rb: diff 275-294줄 context 'when a non-Dentaku StandardError is raised...' 블록에 have_received(:error) 및 not_to have_received(:warn) 확인 |
Acceptance Criteria#
| Criterion | Status | Evidence |
|---|---|---|
diff 에 rescue Dentaku::Error 절 신규 추가 + Cupix::Logger.warn 사용 |
PASS | lib/cupix/util/formula_parser.rb: diff 23-24줄에 신규 rescue 절과 Cupix::Logger.warn 호출 확인 |
기존 rescue StandardError => e 블록과 Cupix::Logger.error 그대로 유지 |
PASS | lib/cupix/util/formula_parser.rb: diff context 27-28줄에 기존 error-level 로깅 미변경 확인 |
grep -n 'rescue Dentaku::Error' lib/cupix/util/formula_parser.rb 결과 1건 |
PASS | diff 상 rescue Dentaku::Error, Dentaku::ZeroDivisionError => e 라인 1건만 추가됨 |
spec 에 have_received(:warn) (Dentaku) 및 have_received(:error) (일반 StandardError) 검증 존재 |
PASS | spec/lib/cupix/util/formula_parser_spec.rb: diff 262줄 have_received(:warn) (Dentaku 경로), 285줄 have_received(:error) (StandardError 경로) 각각 확인 |
ruby -c 구문 오류 없음 |
PASS | diff 만으로는 실행 검증 불가하나, 문법 구조상 rescue 절 삽입/context 블록 모두 구조적으로 정합 — 런타임 확인 필요 |
Issues Found#
차단 이슈 없음.
Observations#
- Dentaku 경로 spec 은 실제
Dentaku::ParseError를 유도('1 1') 하여 상속 체인 (Dentaku::ParseError < Dentaku::Error < StandardError) 을 실검증한다. 이는 mock 대신 실제 예외 경로를 타므로 더 강한 회귀 검증이 됨. - StandardError 경로 spec 은
allow_any_instance_of(::Dentaku::Calculator).to receive(:evaluate!).and_raise(StandardError.new('boom'))로 강제 주입하여 Dentaku 계열이 아닌 예외를 시뮬레이션 — 원 rescue 절 유지 검증 목적에 부합. - 새 rescue 절이
Dentaku::ZeroDivisionError도 포함하여 zero division 케이스도 warn 으로 분류됨. 이는 plan 명세와 일치. - diff 외부 파일 변경 없음 — plan 범위 준수.