diff --git a/tests/utils/utils_test.c b/tests/utils/utils_test.c
index f358e9a..a124352 100644
--- a/tests/utils/utils_test.c
+++ b/tests/utils/utils_test.c
@@ -371,6 +371,60 @@
 	OSMO_ASSERT(out_buf[0] == 0x7f);
 }
 
+static void str_quote_test(void)
+{
+	int i;
+	int j;
+	uint8_t in_buf[32];
+	char out_buf[11];
+	const char *printable = "printable";
+	const char *res;
+
+	printf("\nTesting string quoting\n");
+	printf("- all chars from 0 to 255 in batches of 16:\n");
+	in_buf[16] = '\0';
+	for (j = 0; j < 16; j++) {
+		for (i = 0; i < 16; i++)
+			in_buf[i] = (j << 4) | i;
+		printf("'%s'\n", osmo_quote_str((const char*)in_buf, 16));
+	}
+
+	printf("- nul terminated:\n");
+	printf("'%s'\n", osmo_quote_str("termi\nated", -1));
+
+	printf("- never passthru:\n");
+	res = osmo_quote_str(printable, -1);
+	if (res != printable)
+		printf("NOT passed through. '%s'\n", res);
+	else
+		printf("passed through unchanged '%s'\n", res);
+
+	printf("- zero length:\n");
+	printf("'%s'\n", osmo_quote_str("omitted", 0));
+
+	printf("- truncation when too long:\n");
+	memset(in_buf, 'x', sizeof(in_buf));
+	in_buf[0] = '\a';
+	in_buf[5] = 'E';
+	memset(out_buf, 0x7f, sizeof(out_buf));
+	printf("'%s'\n", osmo_quote_str_buf((const char *)in_buf, sizeof(in_buf), out_buf, 10));
+	OSMO_ASSERT(out_buf[10] == 0x7f);
+
+	printf("- always truncation, even when no escaping needed:\n");
+	memset(in_buf, 'x', sizeof(in_buf));
+	in_buf[6] = 'E'; /* dst has 10, less 2 quotes and nul, leaves 7, i.e. in[6] is last */
+	in_buf[20] = '\0';
+	memset(out_buf, 0x7f, sizeof(out_buf));
+	printf("'%s'\n", osmo_quote_str_buf((const char *)in_buf, -1, out_buf, 10));
+	OSMO_ASSERT(out_buf[0] == '"');
+
+	printf("- try to feed too little buf for quoting:\n");
+	printf("'%s'\n", osmo_quote_str_buf("", -1, out_buf, 2));
+
+	printf("- NULL string becomes a \"NULL\" literal:\n");
+	printf("'%s'\n", osmo_quote_str_buf(NULL, -1, out_buf, 10));
+}
+
 int main(int argc, char **argv)
 {
 	static const struct log_info log_info = {};
@@ -382,5 +436,6 @@
 	test_is_hexstr();
 	bcd_test();
 	str_escape_test();
+	str_quote_test();
 	return 0;
 }
diff --git a/tests/utils/utils_test.ok b/tests/utils/utils_test.ok
index fb1d62e..5bc3896 100644
--- a/tests/utils/utils_test.ok
+++ b/tests/utils/utils_test.ok
@@ -104,3 +104,36 @@
 "\axxxxxxE"
 - passthrough without truncation when no escaping needed:
 "xxxxxxxxxxxxxxxxxxxE"
+
+Testing string quoting
+- all chars from 0 to 255 in batches of 16:
+'"\0\1\2\3\4\5\6\a\b\t\n\v\f\r\14\15"'
+'"\16\17\18\19\20\21\22\23\24\25\26\27\28\29\30\31"'
+'" !\"#$%&'()*+,-./"'
+'"0123456789:;<=>?"'
+'"@ABCDEFGHIJKLMNO"'
+'"PQRSTUVWXYZ[\\]^_"'
+'"`abcdefghijklmno"'
+'"pqrstuvwxyz{|}~\127"'
+'"\128\129\130\131\132\133\134\135\136\137\138\139\140\141\142\143"'
+'"\144\145\146\147\148\149\150\151\152\153\154\155\156\157\158\159"'
+'"\160\161\162\163\164\165\166\167\168\169\170\171\172\173\174\175"'
+'"\176\177\178\179\180\181\182\183\184\185\186\187\188\189\190\191"'
+'"\192\193\194\195\196\197\198\199\200\201\202\203\204\205\206\207"'
+'"\208\209\210\211\212\213\214\215\216\217\218\219\220\221\222\223"'
+'"\224\225\226\227\228\229\230\231\232\233\234\235\236\237\238\239"'
+'"\240\241\242\243\244\245\246\247\248\249\250\251\252\253\254\255"'
+- nul terminated:
+'"termi\nated"'
+- never passthru:
+NOT passed through. '"printable"'
+- zero length:
+'""'
+- truncation when too long:
+'"\axxxxE"'
+- always truncation, even when no escaping needed:
+'"xxxxxxE"'
+- try to feed too little buf for quoting:
+'<buf-too-small>'
+- NULL string becomes a "NULL" literal:
+'NULL'
