This commit refactors all functions so they have consistent behavior for the space-as-plus encoding option.
- any_params_iter objects store and apply the appropriate option when measuring and copying
- when the option is enabled, encoding functions encode space-as-plus and plus as %2B regardless of the charset
- normalization and comparison algorithms take into consideration special query chars whose meaning changes depending on encoding
- all params_view objects created with default options enable space-as-plus encoding
fix#903
The copy operation from a url_view_base should use the pointed implementation rather than the underlying implementation so that url_views that refer to other urls are accounted for.
fix#872
query_rule broke a grammar parse invariant by using different interpretations of the string depending on whether the reason for termination was the end of a string or a continuation with an invalid character.
fix#864
This commit includes tests for shared `recycled_ptr`s. Unreachable paths are also marked.
This is the last in a series of commits that intend to fix#828, where `recycled_ptr` had low coverage.
fix#828
This commit includes tests for the authority_view host functions when the host type is invalid.
This is a partial solution to #828, where authority_view.cpp has low coverage.
This commit includes tests for the url_base functions whose behavior is customized by static_url.
This is a partial solution to #828, where static_url.cpp has low coverage.
Latest standard implementations have been indirectly including the std::format declaration, which makes urls::format ambiguous in tests because of ADL.
The logic for test flags in cmake also needs to check CMAKE_CXX_COMPILER_FRONTEND_VARIANT. In particular, if the compiler is clang but the frontend is MSVC, we need to add flags as if it were MSVC rather than GCC-like flags.
This commit also updates existing flags to account for new compiler versions.
When URL was configured with cmake `-D BUILD_TESTING=ON` and then reconfigured with cmake `-D BUILD_TESTING=OFF`, tests would remain enabled. That's because `BUILD_TESTING` was only used once as the default value of `BOOST_URL_BUILD_TESTS` being cached. That's not how all other Boost libraries work.
This commit makes tests rely on `BUILD_TESTING` and, for backwards compatibility, `BOOST_URL_BUILD_TESTS` is only available as an extra option to enable Boost.URL tests even if `BUILD_TESTING` is `OFF`.
fix#805
Although 1317ca8c includes support for brackets in key_chars, the lack of support in query_chars made still led to errors when the the complete url is parsed at once.
fix#93
The updated CI workflows include building Boost.URL with the Boost super-project as the project root, with Boost.URL as the project root, building a project that adds the Boost super-project as a subdirectory, a project that adds Boost.URL as a subdirectory, that finds Boost as a package and that finds Boost.URL as a package.
fix#796
URL's find_package() CMake test doesn't actually invoke any methods defined in the found DLL for Windows platforms with BUILD_SHARED_LIBS.
This PR updates the test to use components of URL with out-of-line definitions which now triggers an expected CI failure.