From: Michael Tremer Date: Wed, 10 Nov 2021 10:20:55 +0000 (+0000) Subject: util: Add tests for pakfire_format_size X-Git-Tag: 0.9.28~879 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9b0e3d52c8425dd52b33087be034b28de30513c2;p=pakfire.git util: Add tests for pakfire_format_size Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/include/pakfire/util.h b/src/libpakfire/include/pakfire/util.h index b143f91f3..8b8933b1c 100644 --- a/src/libpakfire/include/pakfire/util.h +++ b/src/libpakfire/include/pakfire/util.h @@ -48,7 +48,9 @@ char* pakfire_string_replace(const char* s, const char* pattern, const char* rep char** pakfire_split_string(const char* s, char delim); char* pakfire_string_join(char** list, const char* delim); -int pakfire_format_size(char* dst, size_t length, double value); +#define pakfire_format_size(dst, value) \ + __pakfire_format_size(dst, sizeof(dst) - 1, value) +int __pakfire_format_size(char* dst, size_t length, double value); int pakfire_format_speed(char* dst, size_t length, double value); char* pakfire_format_date(time_t t); diff --git a/src/libpakfire/package.c b/src/libpakfire/package.c index 738e98867..6e82e6a41 100644 --- a/src/libpakfire/package.c +++ b/src/libpakfire/package.c @@ -983,7 +983,11 @@ static void pakfire_package_dump_add_line_date(char** str, const char* key, unsi static void pakfire_package_dump_add_line_size(char** str, const char* key, size_t size) { char buffer[128]; - pakfire_format_size(buffer, sizeof(buffer) - 1, size); + + // Format size in human-readable format + int r = pakfire_format_size(buffer, size); + if (r < 0) + return; pakfire_package_dump_add_line(str, key, buffer); } diff --git a/src/libpakfire/progressbar.c b/src/libpakfire/progressbar.c index ead625078..df9e47532 100644 --- a/src/libpakfire/progressbar.c +++ b/src/libpakfire/progressbar.c @@ -561,7 +561,7 @@ static const char* pakfire_progressbar_bytes_transferred(struct pakfire_progress struct pakfire_progressbar_widget* widget, unsigned int width, void* data) { char buffer[16]; - int r = pakfire_format_size(buffer, sizeof(buffer) - 1, p->value); + int r = pakfire_format_size(buffer, p->value); if (r < 0) return NULL; diff --git a/src/libpakfire/transaction.c b/src/libpakfire/transaction.c index 622531557..7aac78687 100644 --- a/src/libpakfire/transaction.c +++ b/src/libpakfire/transaction.c @@ -331,7 +331,9 @@ static void pakfire_transaction_add_package(char*** lines, size_t width, struct struct pakfire_repo* repo = pakfire_package_get_repo(pkg); // Format size - pakfire_format_size(size, sizeof(size) - 1, pakfire_package_get_size(pkg)); + int r = pakfire_format_size(size, pakfire_package_get_size(pkg)); + if (r < 0) + return; pakfire_transaction_add_line(lines, width, pakfire_package_get_name(pkg), @@ -366,7 +368,10 @@ static void pakfire_transaction_add_separator(char*** lines, size_t width) { static void pakfire_transaction_add_usage_line(char*** lines, size_t width, const char* headline, ssize_t size) { char buffer[128]; - pakfire_format_size(buffer, sizeof(buffer) - 1, size); + + int r = pakfire_format_size(buffer, size); + if (r < 0) + return; pakfire_transaction_append_line(lines, "%-21s: %s\n", headline, buffer); } diff --git a/src/libpakfire/util.c b/src/libpakfire/util.c index a0fa330c4..92d228294 100644 --- a/src/libpakfire/util.c +++ b/src/libpakfire/util.c @@ -618,7 +618,7 @@ char* pakfire_string_join(char** list, const char* delim) { return string; } -int pakfire_format_size(char* dst, size_t length, double value) { +int __pakfire_format_size(char* dst, size_t length, double value) { const char* units[] = { "%.0f ", "%.0fk", diff --git a/tests/libpakfire/util.c b/tests/libpakfire/util.c index 4f6b46a11..999f12707 100644 --- a/tests/libpakfire/util.c +++ b/tests/libpakfire/util.c @@ -277,6 +277,29 @@ FAIL: return EXIT_FAILURE; } +static int test_format_size(const struct test* t) { + char buffer[128]; + char small_buffer[2]; + int r; + + ASSERT(pakfire_format_size(buffer, 0) == 2); + ASSERT_STRING_EQUALS(buffer, "0 "); + + ASSERT(pakfire_format_size(buffer, 1024) == 2); + ASSERT_STRING_EQUALS(buffer, "1k"); + + ASSERT(pakfire_format_size(buffer, 1024 * 1024) == 4); + ASSERT_STRING_EQUALS(buffer, "1.0M"); + + ASSERT(pakfire_format_size(small_buffer, 0) == 2); + ASSERT_STRING_EQUALS(small_buffer, ""); + + return EXIT_SUCCESS; + +FAIL: + return EXIT_FAILURE; +} + int main(int argc, char** argv) { testsuite_add_test(test_basename); testsuite_add_test(test_dirname); @@ -287,6 +310,7 @@ int main(int argc, char** argv) { testsuite_add_test(test_string_replace); testsuite_add_test(test_string_split); testsuite_add_test(test_string_join); + testsuite_add_test(test_format_size); return testsuite_run(); }