diff --git a/test/ringbuffer-test-utils.c b/test/ringbuffer-test-utils.c
index 56e37ee..fff4325 100644
--- a/test/ringbuffer-test-utils.c
+++ b/test/ringbuffer-test-utils.c
@@ -36,30 +36,35 @@
 	size_t len, total_len;
 	uint8_t *buf;
 
-	if (ctx->ignore_poll)
+	if (ctx->ignore_poll) {
 		return RINGBUFFER_POLL_OK;
+	}
 
-	if (ctx->force_only && !force_len)
+	if (ctx->force_only && !force_len) {
 		return RINGBUFFER_POLL_OK;
+	}
 
 	ctx->count++;
 
 	total_len = 0;
 	for (;;) {
 		len = ringbuffer_dequeue_peek(ctx->rbc, total_len, &buf);
-		if (!len)
+		if (!len) {
 			break;
+		}
 
-		if (ctx->force_only && total_len + len > force_len)
+		if (ctx->force_only && total_len + len > force_len) {
 			len = force_len - total_len;
+		}
 
 		ctx->data = realloc(ctx->data, ctx->len + len);
 		memcpy(ctx->data + ctx->len, buf, len);
 		ctx->len += len;
 		total_len += len;
 
-		if (ctx->force_only && total_len >= force_len)
+		if (ctx->force_only && total_len >= force_len) {
 			break;
+		}
 	}
 	ringbuffer_dequeue_commit(ctx->rbc, total_len);
 
@@ -79,16 +84,19 @@
 		bool has_consumer = false;
 		const char *prefix = "";
 
-		if (rb->tail == i)
+		if (rb->tail == i) {
 			prefix = "tail=>";
+		}
 
 		printf("%6s %02x", prefix, rb->buf[i]);
 		for (j = 0; j < rb->n_consumers; j++) {
 			rbc = rb->consumers[j];
-			if (rbc->pos != i)
+			if (rbc->pos != i) {
 				continue;
-			if (!has_consumer)
+			}
+			if (!has_consumer) {
 				printf(" <=");
+			}
 			printf("c[%d],len=%zd ", j, ringbuffer_len(rbc));
 			has_consumer = true;
 		}
diff --git a/test/test-client-escape.c b/test/test-client-escape.c
index b818889..b3083b7 100644
--- a/test/test-client-escape.c
+++ b/test/test-client-escape.c
@@ -180,8 +180,9 @@
 		return -1;
 	}
 
-	if (ctx->cur_in >= ctx->test->n_in)
+	if (ctx->cur_in >= ctx->test->n_in) {
 		return 0;
+	}
 
 	inbuf = ctx->test->in[ctx->cur_in];
 	inlen = strlen(inbuf);
@@ -209,8 +210,9 @@
 
 	for (;;) {
 		rc = process_tty(&ctx->client);
-		if (rc != PROCESS_OK)
+		if (rc != PROCESS_OK) {
 			break;
+		}
 	}
 
 	exp_out_len = strlen(test->exp_out);
@@ -229,8 +231,9 @@
 {
 	size_t i;
 
-	for (i = 0; i < ARRAY_SIZE(tests); i++)
+	for (i = 0; i < ARRAY_SIZE(tests); i++) {
 		run_one_test(i, &tests[i], &ctxs[i]);
+	}
 
 	return EXIT_SUCCESS;
 }
diff --git a/test/test-config-parse-logsize.c b/test/test-config-parse-logsize.c
index 9bd4f79..4946cf0 100644
--- a/test/test-config-parse-logsize.c
+++ b/test/test-config-parse-logsize.c
@@ -58,8 +58,9 @@
 			     test_data[i].expected_size, size);
 		}
 		assert(rc == test_data[i].expected_rc);
-		if (rc == 0)
+		if (rc == 0) {
 			assert(size == test_data[i].expected_size);
+		}
 	}
 }
 
diff --git a/test/test-config-parse.c b/test/test-config-parse.c
index 7d2d687..df90e91 100644
--- a/test/test-config-parse.c
+++ b/test/test-config-parse.c
@@ -23,8 +23,9 @@
 	config_parse(ctx, buf);
 	free(buf);
 	found = config_get_value(ctx, key);
-	if (!expected)
+	if (!expected) {
 		assert(!found);
+	}
 	if (expected) {
 		assert(found);
 		assert(!strcmp(expected, found));
diff --git a/test/test-ringbuffer-boundary-read.c b/test/test-ringbuffer-boundary-read.c
index 642c345..f62f66f 100644
--- a/test/test-ringbuffer-boundary-read.c
+++ b/test/test-ringbuffer-boundary-read.c
@@ -34,8 +34,9 @@
 	pos = 0;
 	for (;;) {
 		len = ringbuffer_dequeue_peek(rbc, pos, &out_buf);
-		if (len == 0)
+		if (len == 0) {
 			break;
+		}
 		assert(!memcmp(in_buf + pos, out_buf, len));
 		pos += len;
 	}
diff --git a/test/test-ringbuffer-contained-offset-read.c b/test/test-ringbuffer-contained-offset-read.c
index 7490f01..1fbe1cb 100644
--- a/test/test-ringbuffer-contained-offset-read.c
+++ b/test/test-ringbuffer-contained-offset-read.c
@@ -25,8 +25,9 @@
 	for (i = 0; i <= sizeof(in_buf); i++) {
 		len = ringbuffer_dequeue_peek(rbc, i, &out_buf);
 		assert(len == sizeof(in_buf) - i);
-		if (len)
+		if (len) {
 			assert(!memcmp(in_buf + i, out_buf, len));
+		}
 	}
 
 	ringbuffer_fini(rb);
