-
Notifications
You must be signed in to change notification settings - Fork 192
Add tests for untested HTTP methods and request/response getters #362
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
- Add HEAD, OPTIONS, TRACE method handlers to complete_test_resource - Add integration tests for HEAD, OPTIONS, TRACE HTTP methods - Add request_info_resource and test for get_requestor(), get_requestor_port(), get_version() - Add content_limit_suite to test content_too_large() with content_size_limit - Add unregister_then_404 test for webserver::unregister_resource() - Create http_response unit test file with tests for response code, headers, footers, and cookies These tests increase coverage for previously untested code paths in webserver.cpp, http_request.cpp, and http_response.cpp.
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #362 +/- ##
==========================================
+ Coverage 61.98% 70.54% +8.55%
==========================================
Files 28 28
Lines 1339 1436 +97
Branches 562 570 +8
==========================================
+ Hits 830 1013 +183
+ Misses 126 35 -91
- Partials 383 388 +5
... and 13 files with indirect coverage changes Continue to review full report in Codecov by Sentry.
🚀 New features to boost your workflow:
|
- Add IPv6 and dual-stack webserver tests - Add HTTPS webserver and TLS session getter tests with graceful failure handling - Add bind_address_ipv4 test with runtime URL building - Add shoutcast response test for MHD_ICY_FLAG verification - Add string_response constructor tests - Remove CONNECT method test (incompatible with curl's tunneling semantics) Coverage improved from ~90% to 91.8% lines, 93.3% functions.
Add --print-summary flag to gcovr command in CI to help diagnose the discrepancy between local coverage (91.8%) and Codecov (64.53%).
The coverage report was including 15,781 lines from system headers and dependencies instead of just the ~1,500 lines of libhttpserver source. Use --filter to restrict coverage to src/ directory only.
- Add footer/trailer tests for http_request and http_response - Add PSK handler configuration tests (setup, empty handler, no handler) - Add ban/allow IP weight comparison tests for specific-then-wildcard case - Add auth skip path tests for root path and wildcards - Add IPv6 parsing edge case tests (too many parts, wildcards, nested) - Add http_endpoint invalid regex pattern test - Add custom error handler tests (not_found, method_not_allowed) - Add request info caching tests Branch coverage: 60.4% -> 64.2% (+65 branches) Line coverage: 91.8% -> 94.9%
50ad76c to
822ab69
Compare
- Add null value query parameter test covering nullptr branches in build_request_args and build_request_querystring (lines 234, 248) - Add digested user caching tests for cache hit and nullptr branches (lines 293-295, 300) in http_request.cpp - Add caret prefix URL pattern tests covering line 85 in http_endpoint.cpp - Add consecutive slashes URL test covering empty parts handling (line 83) Branch coverage improvements: - http_endpoint.cpp: 66.9% -> 68.7% - http_request.cpp: 58.5% -> 59.7%
- Add tests for all HTTP methods falling through to base render() - Add custom internal error resource handler test - Add get_arg_flat fallback test - Add large multipart form field test (100KB) - Add file upload with explicit content-type header test - Add http_endpoint tests for regex validation and error paths - Add tests for invalid URL parameter formats
- Replace static global strings with function-static pattern - Change 'long' to 'int64_t' for http_code variables - Add missing #include <utility> for std::move
- Fix file_upload tests to use subdirectory instead of /tmp for cross-platform compatibility - Extract hex validation functions (is_valid_hex, hex_char_to_val) from webserver.cpp to string_utilities for testability - Add unit tests for hex utility functions to improve coverage
On Windows/MinGW, mkdir() only takes one argument (path), while POSIX mkdir() takes two (path and mode). Add a MKDIR macro that uses the appropriate signature for each platform.
Summary
complete_test_resourcerequest_info_resourceand test forget_requestor(),get_requestor_port(),get_version()content_limit_suiteto testcontent_too_large()withcontent_size_limitunregister_then_404test forwebserver::unregister_resource()http_responseunit test file with tests for response code, headers, footers, and cookiesTest plan
make checkshows 13/13 pass)Coverage improvements
These tests exercise previously untested code paths in:
src/webserver.cpp(HEAD/OPTIONS/TRACE method dispatch, unregister_resource)src/http_request.cpp(get_requestor, get_requestor_port, get_version, content_too_large)src/http_response.cpp(footer/cookie getters, response code)