// Fail if the buffer is full
if (buffer->max_length > 0) {
if (pakfire_log_buffer_length(buffer) >= buffer->max_length)
- return -ENOSPC;
+ return -ENOBUFS;
}
// Automatically determine the length
return r;
}
+static int test_full(const struct test* t) {
+ struct pakfire_log_buffer* buffer = NULL;
+ int r = EXIT_FAILURE;
+
+ // Create buffer
+ ASSERT_SUCCESS(pakfire_log_buffer_create(&buffer, t->ctx, 2));
+
+ // Enqueue something
+ ASSERT_SUCCESS(pakfire_log_buffer_enqueue(buffer, LOG_DEBUG, "Line 1", -1));
+ ASSERT_SUCCESS(pakfire_log_buffer_enqueue(buffer, LOG_DEBUG, "Line 2", -1));
+
+ // There should be no more space for a third line
+ ASSERT_ERROR(pakfire_log_buffer_enqueue(buffer, LOG_DEBUG, "Line 3", -1), ENOBUFS);
+
+ // Everything passed
+ r = EXIT_SUCCESS;
+
+FAIL:
+ if (buffer)
+ pakfire_log_buffer_unref(buffer);
+
+ return r;
+}
+
int main(int argc, const char* argv[]) {
testsuite_add_test(test_simple, 0);
testsuite_add_test(test_wrong_usage, 0);
+ testsuite_add_test(test_full, 0);
return testsuite_run(argc, argv);
}