return r;
}
-static int test_pty(const struct test* t) {
+static int test_file(const struct test* t) {
struct pakfire_log_stream* stream = NULL;
int r = EXIT_FAILURE;
int lines_read = 0;
+ FILE* f = NULL;
ASSERT_SUCCESS(pakfire_log_stream_create(&stream, t->ctx, log_callback, &lines_read));
+ // Fetch a file handle
+ ASSERT((f = pakfire_log_stream_as_file(stream)));
+
// Write some individual parts and await until the streamer has found a line
- ASSERT(pakfire_log_stream_pty(t->ctx, stream, "A", strlen("A")) == 1);
- ASSERT_EQUALS(lines_read, 0);
- ASSERT(pakfire_log_stream_pty(t->ctx, stream, "B", strlen("B")) == 1);
- ASSERT_EQUALS(lines_read, 0);
- ASSERT(pakfire_log_stream_pty(t->ctx, stream, "C", strlen("C")) == 1);
- ASSERT_EQUALS(lines_read, 0);
- ASSERT(pakfire_log_stream_pty(t->ctx, stream, "\n", strlen("\n")) == 1);
+ ASSERT(fwrite("A", 1, strlen("A"), f) == 1);
+ ASSERT(fwrite("B", 1, strlen("B"), f) == 1);
+ ASSERT(fwrite("C", 1, strlen("C"), f) == 1);
+ ASSERT(fwrite("\n", 1, strlen("\n"), f) == 1);
+
+ // Flush all buffers
+ ASSERT_SUCCESS(fflush(f));
+
+ // Now we should have one line
ASSERT_EQUALS(lines_read, 1);
// Write a second line
- ASSERT(pakfire_log_stream_pty(t->ctx, stream, "D", strlen("D")) == 1);
- ASSERT_EQUALS(lines_read, 1);
- ASSERT(pakfire_log_stream_pty(t->ctx, stream, "E", strlen("E")) == 1);
- ASSERT_EQUALS(lines_read, 1);
- ASSERT(pakfire_log_stream_pty(t->ctx, stream, "F", strlen("F")) == 1);
- ASSERT_EQUALS(lines_read, 1);
- ASSERT(pakfire_log_stream_pty(t->ctx, stream, "\n", strlen("\n")) == 1);
+ ASSERT(fwrite("DEF\n", 1, strlen("DEF\n"), f) == 4);
+
+ // Flush all buffers
+ ASSERT_SUCCESS(fflush(f));
+
+ // Now we should have another line
ASSERT_EQUALS(lines_read, 2);
// Everything passed
FAIL:
if (stream)
pakfire_log_stream_unref(stream);
+ if (f)
+ fclose(f);
return r;
}
int main(int argc, const char* argv[]) {
testsuite_add_test(test_simple, 0);
testsuite_add_test(test_fork, 0);
- testsuite_add_test(test_pty, 0);
+ testsuite_add_test(test_file, 0);
return testsuite_run(argc, argv);
}