huanghuoguoguo
329d813577
Merge remote-tracking branch 'origin/fix/pipeline-querypool-return-query' into validation/test-build-with-fixes
2026-05-16 11:07:22 +08:00
huanghuoguoguo
9ce42ddcb6
Merge remote-tracking branch 'origin/fix/pipeline-longtext-empty-response' into validation/test-build-with-fixes
...
# Conflicts:
# tests/unit_tests/pipeline/test_longtext.py
2026-05-16 11:07:16 +08:00
huanghuoguoguo
608ac82762
Merge remote-tracking branch 'origin/fix/pipeline-aggregator-preserve-routed' into validation/test-build-with-fixes
...
# Conflicts:
# tests/unit_tests/pipeline/test_aggregator.py
2026-05-16 11:06:46 +08:00
huanghuoguoguo
f516fa3a4f
Merge remote-tracking branch 'origin/fix/api-apikey-prefix-validation' into validation/test-build-with-fixes
2026-05-16 11:05:46 +08:00
huanghuoguoguo
63a3f323e7
fix(pipeline): return query from QueryPool.add_query
2026-05-16 11:04:19 +08:00
huanghuoguoguo
4a60bdb6b6
fix(pipeline): handle empty longtext response chain
2026-05-16 11:04:04 +08:00
huanghuoguoguo
3ceb0c6829
fix(pipeline): preserve routed flag when aggregating
2026-05-16 11:03:24 +08:00
huanghuoguoguo
31f4bc1ad6
fix(api): validate api key prefix
2026-05-16 11:03:17 +08:00
huanghuoguoguo
d4602bca34
fix(validation): keep runner parse failures unknown
2026-05-16 10:59:24 +08:00
huanghuoguoguo
5c932c66e6
Merge remote-tracking branch 'origin/fix/api-bot-update-copy-input' into validation/test-build-with-fixes
2026-05-16 10:57:51 +08:00
huanghuoguoguo
6a9f7e2c16
Merge remote-tracking branch 'origin/fix/rag-runtime-safe-file-path' into validation/test-build-with-fixes
...
# Conflicts:
# tests/unit_tests/rag/test_runtime_service.py
2026-05-16 10:57:43 +08:00
huanghuoguoguo
16901bc574
Merge remote-tracking branch 'origin/fix/api-pipeline-update-copy-input' into validation/test-build-with-fixes
2026-05-16 10:56:59 +08:00
huanghuoguoguo
3a1ea8e945
Merge remote-tracking branch 'origin/fix/utils-runner-url-classification' into validation/test-build-with-fixes
...
# Conflicts:
# tests/unit_tests/utils/test_runner.py
2026-05-16 10:56:54 +08:00
huanghuoguoguo
cab5f99b97
Merge remote-tracking branch 'origin/fix/utils-pkgmgr-extra-params-none' into validation/test-build-with-fixes
...
# Conflicts:
# tests/unit_tests/utils/test_pkgmgr.py
2026-05-16 10:55:48 +08:00
huanghuoguoguo
560799cc33
Merge remote-tracking branch 'origin/fix/core-sigint-before-app' into validation/test-build-with-fixes
2026-05-16 10:55:07 +08:00
huanghuoguoguo
8275cfd140
fix(api): avoid mutating bot update payload
2026-05-16 10:54:04 +08:00
huanghuoguoguo
14330741cc
fix(rag): reject unsafe runtime file paths
2026-05-16 10:53:57 +08:00
huanghuoguoguo
7d0d37cac6
fix(api): avoid mutating pipeline update payload
2026-05-16 10:53:40 +08:00
huanghuoguoguo
d43cbf0243
fix(utils): classify runner URLs safely
2026-05-16 10:53:24 +08:00
huanghuoguoguo
74f8a500b2
fix pkgmgr install requirements default
2026-05-16 10:52:36 +08:00
huanghuoguoguo
937110e193
fix(core): handle sigint before app startup
2026-05-16 10:51:47 +08:00
huanghuoguoguo
ca74fc1ba4
test(provider): align empty token rotation expectation
2026-05-16 10:45:14 +08:00
huanghuoguoguo
29a0041887
Merge remote-tracking branch 'origin/fix/utils-qq-image-preserve-scheme' into validation/test-build-with-fixes
...
# Conflicts:
# tests/unit_tests/utils/test_image.py
2026-05-16 10:44:23 +08:00
huanghuoguoguo
2484ddc44d
Merge remote-tracking branch 'origin/fix/telemetry-send-tasks-instance' into validation/test-build-with-fixes
2026-05-16 10:43:35 +08:00
huanghuoguoguo
d89356af65
Merge remote-tracking branch 'origin/fix/utils-funcschema-missing-doc' into validation/test-build-with-fixes
...
# Conflicts:
# tests/unit_tests/utils/test_funcschema.py
2026-05-16 10:43:22 +08:00
huanghuoguoguo
5a90b0e06b
Merge remote-tracking branch 'origin/fix/plugin-parse-plugin-id-validation' into validation/test-build-with-fixes
2026-05-16 10:42:45 +08:00
huanghuoguoguo
c2af8ff9c0
Merge remote-tracking branch 'origin/fix/provider-token-empty-next' into validation/test-build-with-fixes
2026-05-16 10:42:45 +08:00
huanghuoguoguo
93589ee381
fix(utils): preserve QQ image URL scheme
2026-05-16 10:37:12 +08:00
huanghuoguoguo
87c5aed9e7
fix telemetry send task isolation
2026-05-16 10:37:04 +08:00
huanghuoguoguo
aa4d46fd87
fix(utils): handle missing funcschema parameter docs
2026-05-16 10:37:01 +08:00
huanghuoguoguo
aa4b5d6732
fix(plugin): validate plugin id format
2026-05-16 10:36:58 +08:00
huanghuoguoguo
748cc68667
fix(provider): ignore empty token rotation
2026-05-16 10:34:11 +08:00
huanghuoguoguo
bb55cd7ba9
test: tighten phase 1 coverage contracts
2026-05-16 10:30:17 +08:00
huanghuoguoguo
3ba727f0e4
test: add 105 new unit tests for untested core functionality
...
Add comprehensive tests for B-class issues (core functionality untested):
Pipeline:
- test_pool.py: QueryPool ID generation, caching, async context (12 tests)
- test_ratelimit.py: Fixed timing-sensitive test tolerance
- test_pipelinemgr.py: Use real Pydantic StageProcessResult instead of Mock
Utils:
- test_version.py: Version comparison functions (20 tests)
- test_logcache.py: Log page management and retrieval (18 tests)
- test_httpclient.py: HTTP session pool management (10 tests)
- test_proxy.py: Proxy configuration from env and config (10 tests)
- test_image.py: URL parsing and base64 extraction (12 tests)
- test_pkgmgr.py: Pip command generation (8 tests)
Discover:
- test_engine.py: I18nString, Metadata, Component manifest (15 tests)
Test count: 1193 → 1298 (+105 tests)
Note: Some B-class issues cannot be tested due to circular import bugs
filed as GitHub issues #2175 (pipeline) and #2176 (persistence).
2026-05-16 10:13:15 +08:00
huanghuoguoguo
3eaadea3e0
docs(test): update coverage stats and test structure
...
- Update coverage from 22% to 30%
- Add new test files to structure:
- provider: session_manager, tool_manager
- storage: s3storage
- plugin: handler_actions
- rag: file_storage
- vector: vdb_filter_conversion
- telemetry: rewritten tests
- Update module coverage percentages
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-16 10:13:15 +08:00
huanghuoguoguo
1a3c73bc05
test(quality): fix fake tests and add missing coverage
...
P0 fixes:
- telemetry: rewrite fake tests with real behavior verification (25 tests)
- config: delete copied-source tests, use proper imports (2 deleted)
- persistence: fix try-except pass to verify specific errors
P1 fixes:
- pipeline: add real FixedWindowAlgo tests instead of mocks (12 tests)
- provider: add SessionManager and ToolManager tests (25 tests)
- storage: add S3StorageProvider tests with moto mock (16 tests)
- plugin: add handler action tests for setting inheritance (15 tests)
- rag: add file storage and ZIP processing tests (21 tests)
- vector: add VDB filter conversion tests (30 tests)
P2 fixes:
- pipeline/msgtrun: strengthen assertions for exact message count
- api: add response structure validation in integration tests
New test files:
- provider/test_session_manager.py
- provider/test_tool_manager.py
- storage/test_s3storage.py
- plugin/test_handler_actions.py
- rag/test_file_storage.py
- vector/test_vdb_filter_conversion.py
Source code bugs documented:
- provider: TokenManager.next_token() ZeroDivisionError
- telemetry: send_tasks class variable shared state
- command: empty command IndexError, unused parameters
- utils: funcschema KeyError
- entity: vector.py independent declarative_base
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-16 10:13:15 +08:00
huanghuoguoguo
adb4b29c94
test(e2e): add minimal startup E2E tests
...
Add E2E tests for LangBot startup flow:
- tests/e2e/utils/config_factory.py: minimal config generation
- tests/e2e/utils/process_manager.py: LangBot subprocess management
- tests/e2e/conftest.py: E2E fixtures (session-scoped process)
- tests/e2e/test_startup.py: 12 tests for startup verification
Tests verify:
- boot.py + stages execution
- database initialization (SQLite)
- API availability
- migrations applied
Uses embedded databases (SQLite, Chroma) - no external dependencies.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-16 10:13:15 +08:00
huanghuoguoguo
af58c34c26
test(integration): add embed and monitoring endpoint tests
...
Add integration tests for embed widget and monitoring API endpoints:
- test_embed.py: 15 tests for widget.js, logo, turnstile, messages, reset, feedback
- test_monitoring.py: 15 tests for overview, messages, llm-calls, sessions, errors, export
Coverage improvements:
- embed.py: 17% → 56%
- monitoring.py: 17% → 93%
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-16 10:13:15 +08:00
huanghuoguoguo
12c9d02145
test(integration): add knowledge, bots, and model endpoints tests
...
- Add test_knowledge.py (10 tests) covering knowledge base management
- CRUD operations on /api/v1/knowledge/bases
- Files management endpoints
- Retrieve endpoint with validation
- Coverage: knowledge/base.py 26% → 91%
- Add test_bots.py (9 tests) covering bot management
- CRUD operations on /api/v1/platform/bots
- Logs endpoint
- Send message endpoint with validation
- Coverage: platform/bots.py 24% → 87%
- Extend test_providers.py (+4 tests) for embedding/rerank models
- Embedding models CRUD
- Rerank models CRUD
- Coverage: provider/models.py 29% → 60%
Total integration tests: 53 (smoke 12 + pipelines 10 + providers 14 + knowledge 10 + bots 9)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-16 10:13:15 +08:00
huanghuoguoguo
871c4525ca
test(integration): add API controller integration tests
...
- Add test_pipelines.py (10 tests) covering pipelines CRUD operations
- GET/POST/PUT/DELETE on /api/v1/pipelines
- Extensions endpoint
- Metadata endpoint
- Coverage: pipelines controller 27% → 80%
- Add test_providers.py (10 tests) covering provider/model management
- Provider CRUD with model counts
- LLM model CRUD
- Coverage: providers controller 23% → 81%, models 29% → 45%
Tests use Quart TestClient with mocked services for real HTTP behavior
without external dependencies.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-16 10:13:15 +08:00
huanghuoguoguo
3872e3e1ac
test(phase2): add unit tests for core, persistence, plugin, utils
...
- Add test_handler_helpers.py for plugin handler helpers (7 tests)
- Add test_mgr_methods.py for persistence manager (5 tests)
- Add test_app_config_validation.py for core app config (12 tests)
- Add test_knowledge_service.py for API knowledge service (22 tests)
- Add test_kbmgr.py for RAG knowledge base manager (39 tests)
- Add test_survey_manager.py for survey manager (22 tests)
- Add test_connector_methods.py for plugin connector (24 tests)
- Add test_funcschema.py for utils function schema (9 tests)
- Add test_platform.py for utils platform detection (7 tests)
- Add test_extract_deps.py for plugin deps extraction (7 tests)
- Add test_database_decorator.py for persistence decorator (7 tests)
- Add test_load_config.py for core config loading (19 tests)
- Add COVERAGE_EXCLUSIONS.md documenting external adapter exclusions
- Fix test_chat_session_limit.py path for portability
Coverage: core 28% → 30%, persistence 24% → 24.4%, plugin 27% → 28%
Total: 1082 tests passed, core module coverage 45.5%
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-16 10:13:15 +08:00
huanghuoguoguo
ea6ed9b7fd
test(phase1): add unit tests for telemetry, plugin, rag, persistence
...
Add initial unit tests for Phase 1 of test coverage improvement:
- telemetry: test initialization, payload sanitization, early returns (14.3% → 62.9%)
- plugin: test _parse_plugin_id static method
- rag: test _to_i18n_name static method
- persistence: test serialize_model with datetime handling
Overall core coverage: 41.9% → 42.2%
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-16 10:12:48 +08:00
huanghuoguoguo
70ec75f9a2
feat(test): Phase 1.5 coverage expansion - COV-001 to COV-013
...
Coverage baseline raised from 13.65% to 26% (+12.35%)
Gate raised from 12% to 18%
Tasks completed:
- COV-001: Command system unit tests (100% coverage)
- COV-002: API service unit tests batch 1 (user/apikey/model/provider)
- COV-003: Provider model manager unit tests
- COV-004: Pipeline remaining stage tests (aggregator/cntfilter/longtext/msgtrun)
- COV-005: Storage and utils coverage pass
- COV-006: Gate ratchet 12%→15%
- COV-007: Gate ratchet 15%→18%
- COV-008: API service batch 2 (bot/pipeline/webhook/space/maintenance/mcp)
- COV-009: Blocked - API controller circular import issue documented
- COV-010: Plugin runtime unit tests (+0.08%)
- COV-011: RAG and vector unit tests (+0.68%)
- COV-012: Core boot and migration unit tests
- COV-013: Provider requester logic unit tests (+0.62%)
Key additions:
- tests/utils/import_isolation.py: sys.modules isolation for circular imports
- Provider requester mock tests: proved HTTP-dependent code can be tested locally
- Vector filter utilities: 100% coverage on pure functions
- API services: fake persistence pattern for unit testing
Blocked issue COV-009 documented in langbot-test-plan/1.5/issues/
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-16 10:12:48 +08:00
huanghuoguoguo
9e1ff7f85c
feat(test): add PostgreSQL migration slow integration tests (G-003)
...
- Add tests/integration/persistence/test_migrations_postgres.py
- All tests marked with @pytest.mark.slow
- Tests skip when TEST_POSTGRES_URL is not set (no local PostgreSQL)
- Database isolation via clean_tables and clean_alembic_version fixtures
- Update CI workflow to use pytest instead of inline Python script
- Remove TODO(G-003) comment
- Update tests/README.md with PostgreSQL test documentation
Covered scenarios:
- Baseline stamp sets revision
- Upgrade from baseline to head
- Upgrade idempotent
- Get current on unstamped DB returns None
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-16 10:12:48 +08:00
huanghuoguoguo
91e99e2f46
feat(test): add developer quality gate consolidation (G-007)
...
- Add scripts/test-integration-fast.sh for fast integration tests
- Add scripts/test-coverage.sh with 12% baseline threshold
- Update Makefile with test-integration-fast, test-coverage, test-all-local
- Update CI workflow with integration and coverage jobs
- Add smoke marker to pytest.ini
- Update tests/README.md with quality gate layers documentation
- Add tests/integration/pipeline/ for pipeline stage-chain tests
Quality gate layers:
- Quick: ruff + unit + smoke (~2 min)
- Fast Integration: SQLite/API/Pipeline (~3 min)
- Coverage: 12% threshold gate (~8 min)
- Full Local: all three combined
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-16 10:12:48 +08:00
huanghuoguoguo
59871c3118
refactor(test): consolidate FakeApp and add sys.modules isolation utility
...
- Extract tests/utils/import_isolation.py with isolated_sys_modules context manager
- Extend tests/factories/app.py FakeApp with handler-specific attributes
- Refactor test_chat_handler.py to use centralized FakeApp and cached imports
- Refactor test_command_handler.py with mock_execute_factory fixture
- Refactor test_smoke.py to move import-time sys.modules manipulation into fixture
- Add SQLite migration integration tests (G-002)
- Add HTTP API smoke integration tests (G-005)
- Update CI workflow to call pytest for SQLite migrations (G-004)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-16 10:12:48 +08:00
huanghuoguoguo
3780a68dfa
test(unit): improve taskmgr tests to test real classes
...
U-004 improved: Tests now import and test actual classes:
- TaskContext: new(), trace(), to_dict(), placeholder()
- TaskWrapper: task creation, context, exception/result capture, cancel, to_dict
- AsyncTaskManager: create_task, create_user_task, cancel_task, cancel_by_scope
- Task pruning behavior
Uses pre-mocking technique:
- Mock langbot.pkg.core.app before import (breaks circular chain)
- Mock langbot.pkg.core.entities with proper Enum
All 24 tests now test real class behavior, not patterns.
taskmgr.py coverage should improve significantly.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-16 10:12:48 +08:00
huanghuoguoguo
9908dc7800
style: fix unused imports after ruff auto-fix
...
Remove unused imports in test files:
- test_config_loader.py: remove unused os
- test_taskmgr.py: remove unused Mock
- test_preproc.py: remove unused unsupported_query, image_chain
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-16 10:12:48 +08:00
huanghuoguoguo
84afe8551d
test(unit): add chat and command handler pattern tests
...
U-002: Chat Handler tests (pattern-based)
- Normal message event emission pattern
- prevent_default handling
- User message alteration pattern
- Runner selection pattern
- Streaming/non-streaming response patterns
- Exception handling modes (show-error, show-hint, hide)
- Message history update pattern
- Telemetry payload pattern
U-003: Command Handler tests (pattern-based)
- Command parsing and text extraction
- Event creation pattern
- Privilege/admin check pattern
- Command result handling (text, error, image)
- prevent_default handling
- String truncation helper
Uses pattern-based testing to avoid circular import issues in source code.
Direct imports of handler modules trigger circular import chain.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-16 10:12:48 +08:00
huanghuoguoguo
53747fc1f0
test(unit): add config loader unit tests
...
U-005: Config Loader tests
- Valid YAML config loading
- Valid JSON config loading
- Invalid YAML/JSON error behavior
- Missing config file creation from template
- Template completion for missing keys
- ConfigManager load/dump operations
- Exists check for both YAML and JSON
All tests use tmp_path fixture, no real project config.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-16 10:12:48 +08:00