Compare commits

..

No commits in common. "5e32d722e81a5feca302fdaefb980d77e8a23875" and "9d96a7d47f3843113d084d84b1cb6fd180633845" have entirely different histories.

5 changed files with 15 additions and 54 deletions

View File

@ -60,8 +60,6 @@ jobs:
- name: Generate coverage report - name: Generate coverage report
run: | run: |
lcov --version
lcov --help
lcov -d . -c -o out.info --rc lcov_branch_coverage=1 --no-external lcov -d . -c -o out.info --rc lcov_branch_coverage=1 --no-external
lcov -e out.info '*include/ss*hpp' -o filtered.info lcov -e out.info '*include/ss*hpp' -o filtered.info

View File

@ -368,22 +368,20 @@ public:
template <typename U, typename... Us, typename Fun = none> template <typename U, typename... Us, typename Fun = none>
void try_convert_and_invoke(std::optional<U>& value, Fun&& fun) { void try_convert_and_invoke(std::optional<U>& value, Fun&& fun) {
if (parser_.valid()) {
return;
}
auto tuple_output = try_same<Us...>();
if (!parser_.valid()) { if (!parser_.valid()) {
return; auto tuple_output = try_same<Us...>();
} if (!parser_.valid()) {
return;
}
if constexpr (!std::is_same_v<U, decltype(tuple_output)>) { if constexpr (!std::is_same_v<U, decltype(tuple_output)>) {
value = to_object<U>(std::move(tuple_output)); value = to_object<U>(std::move(tuple_output));
} else { } else {
value = std::move(tuple_output); value = std::move(tuple_output);
} }
parser_.try_invoke(*value, std::forward<Fun>(fun)); parser_.try_invoke(*value, std::forward<Fun>(fun));
}
} }
template <typename U, typename... Us> template <typename U, typename... Us>
@ -942,7 +940,7 @@ private:
buffer_size = first_size + second_size + 3; buffer_size = first_size + second_size + 3;
auto new_first = static_cast<char*>( auto new_first = static_cast<char*>(
realloc(static_cast<void*>(first), buffer_size)); realloc(static_cast<void*>(first), buffer_size));
if (!new_first) { if (!first) {
throw std::bad_alloc{}; throw std::bad_alloc{};
} }

View File

@ -5,8 +5,6 @@
#include <sstream> #include <sstream>
#include <string> #include <string>
#include <vector> #include <vector>
#include <algorithm>
#include <fstream>
#ifdef CMAKE_GITHUB_CI #ifdef CMAKE_GITHUB_CI
#include <doctest/doctest.h> #include <doctest/doctest.h>
@ -136,7 +134,7 @@ template <typename T>
for (const auto& i : v) { for (const auto& i : v) {
for (auto j : inner_combinations) { for (auto j : inner_combinations) {
j.insert(j.begin(), i); j.insert(j.begin(), i);
ret.push_back(std::move(j)); ret.push_back(move(j));
} }
} }
return ret; return ret;

View File

@ -80,8 +80,7 @@ std::enable_if_t<ss::has_m_tied_t<T>, bool> operator==(const T& lhs,
template <typename T> template <typename T>
static void make_and_write(const std::string& file_name, static void make_and_write(const std::string& file_name,
const std::vector<T>& data, const std::vector<T>& data,
const std::vector<std::string>& header = {}, const std::vector<std::string>& header = {}) {
bool new_line_eof = true) {
std::ofstream out{file_name}; std::ofstream out{file_name};
#ifdef _WIN32 #ifdef _WIN32
@ -102,10 +101,7 @@ static void make_and_write(const std::string& file_name,
} }
for (size_t i = 0; i < data.size(); ++i) { for (size_t i = 0; i < data.size(); ++i) {
out << data[i].to_string(); out << data[i].to_string() << new_lines[i % new_lines.size()];
if (new_line_eof || i + 1 < data.size()) {
out << new_lines[i % new_lines.size()];
}
} }
} }

View File

@ -551,32 +551,3 @@ TEST_CASE("parser test composite conversion") {
test_composite_conversion<false, ss::string_error>(); test_composite_conversion<false, ss::string_error>();
test_composite_conversion<true, ss::string_error>(); test_composite_conversion<true, ss::string_error>();
} }
template <bool buffer_mode>
void test_no_new_line_at_eof_impl(const std::vector<X>& data) {
unique_file_name f{"test_parser"};
make_and_write(f.name, data, {}, false);
auto [p, _] = make_parser<buffer_mode>(f.name);
std::vector<X> parsed_data;
for (const auto& el : p.template iterate<X>()) {
parsed_data.push_back(el);
}
CHECK_EQ(data, parsed_data);
}
template <bool buffer_mode>
void test_no_new_line_at_eof() {
test_no_new_line_at_eof_impl<buffer_mode>({});
test_no_new_line_at_eof_impl<buffer_mode>({{1, 2, "X"}});
test_no_new_line_at_eof_impl<buffer_mode>({{1, 2, "X"}, {3, 4, "YY"}});
test_no_new_line_at_eof_impl<buffer_mode>(
{{1, 2, "X"}, {3, 4, "YY"}, {5, 6, "ZZZ"}, {7, 8, "UUU"}});
}
TEST_CASE("test no new line at end of data") {
test_no_new_line_at_eof<false>();
test_no_new_line_at_eof<true>();
}