You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Improve test suite quality and coverage
Test Coverage Improvements:
- Add gtest_basic_types.cpp: Tests for toStr(), convertFromString(), splitString()
- Add gtest_if_then_else.cpp: Tests for IfThenElseNode control node
- Add gtest_while_do_else.cpp: Tests for WhileDoElseNode control node
- Add gtest_loggers.cpp: Tests for StdCoutLogger, FileLogger2, MinitraceLogger, SqliteLogger
- Add decorator tests: ForceFailure, ForceSuccess, Inverter, KeepRunningUntilFailure
Critical Fixes from Test Review:
- Remove debug std::cout statements from gtest_coroutines.cpp and script_parser_test.cpp
- Delete empty unused gtest_scripting.cpp (script_parser_test.cpp provides coverage)
- Fix timing fragility: Replace magic numbers with named constants
- Reduce test durations from 200-500ms to 10-50ms for faster CI execution
All 420 tests pass.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Add Phase 4 edge case tests for LoopNode and Reactive nodes
New tests:
- gtest_loop.cpp: 15 tests for LoopNode decorator
- Static queue parsing (int, double, string, bool)
- Empty queue handling (if_empty parameter)
- Dynamic queue from blackboard
- Vector input conversion (Issue #969)
- Child failure behavior
- Restart after completion
- convertFromString tests for SharedQueue types
- gtest_reactive.cpp: 7 additional tests
- ReactiveSequence first child fails
- ReactiveSequence halt on condition change
- ReactiveFallback first child succeeds
- ReactiveFallback all children fail
- ReactiveSequence all children succeed
- ReactiveSequence re-evaluates on every tick
Coverage improvements:
- loop_node.h: 65.9% -> 98.8% (+32.9%)
- reactive_fallback.cpp: 69.2% -> 74.4% (+5.2%)
- Overall: 76.6% -> 77.1%
- Tests: 420 -> 442 (+22)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(loggers): resolve TSAN race conditions in FileLogger2 and SqliteLogger
- Add deferred subscription pattern to StatusChangeLogger base class
- Use mutex+CV synchronization for writer thread readiness
- Add TSAN suppressions for known false positives:
- std::swap of std::deque under mutex (TSAN doesn't track ownership transfer)
- ZeroMQ third-party library races
- Mutex patterns in logger constructors and callbacks
- Fix Windows int64_t/uint64_t conversion warnings
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
0 commit comments