summaryrefslogtreecommitdiff
path: root/unittest
diff options
context:
space:
mode:
authorOleksandr Byelkin <sanja@mariadb.com>2020-03-16 16:53:10 +0100
committerOleksandr Byelkin <sanja@mariadb.com>2020-04-01 11:34:32 +0200
commitcb4da5da74b7a6f2e7c4f4ed1b0e5affe45fe2a2 (patch)
treefdeecd66c05478818479deb89a5dd0cabd99956a /unittest
parenta1846b7a642dd5b5b36f3d4f0099cb7c0149f859 (diff)
downloadmariadb-git-cb4da5da74b7a6f2e7c4f4ed1b0e5affe45fe2a2.tar.gz
MDEV-20604: Duplicate key value is silently truncated to 64 characters in print_keydup_error
Added indication of truncated string for "s" and "M" formats
Diffstat (limited to 'unittest')
-rw-r--r--unittest/mysys/my_vsnprintf-t.c38
1 files changed, 27 insertions, 11 deletions
diff --git a/unittest/mysys/my_vsnprintf-t.c b/unittest/mysys/my_vsnprintf-t.c
index 6ba0a42cf7e..872e88ddd7e 100644
--- a/unittest/mysys/my_vsnprintf-t.c
+++ b/unittest/mysys/my_vsnprintf-t.c
@@ -61,7 +61,7 @@ static void test_many(const char **res, const char *fmt, ...)
int main(void)
{
- plan(39);
+ plan(43);
test1("Constant string",
"Constant string");
@@ -99,12 +99,28 @@ int main(void)
test1("Width is ignored for strings <x> <y>",
"Width is ignored for strings <%04s> <%5s>", "x", "y");
- test1("Precision works for strings <abcde>",
+ test1("Precision works for strings <ab...>",
"Precision works for strings <%.5s>", "abcdef!");
- test1("Flag '`' (backtick) works: `abcd` `op``q` (mysql extension)",
- "Flag '`' (backtick) works: %`s %`.4s (mysql extension)",
- "abcd", "op`qrst");
+ test1("Flag '`' (backtick) works: `abcd` `op``q...` (mysql extension)",
+ "Flag '`' (backtick) works: %`s %`.7s (mysql extension)",
+ "abcd", "op`qrstuuuuuuuuu");
+
+ test1("Flag '`' (backtick) works: `abcd` `.` (mysql extension)",
+ "Flag '`' (backtick) works: %`s %`.1s (mysql extension)",
+ "abcd", "op`qrstuuuuuuuuu");
+
+ test1("Flag '`' (backtick) works: `abcd` `...` (mysql extension)",
+ "Flag '`' (backtick) works: %`s %`.3s (mysql extension)",
+ "abcd", "op`qrstuuuuuuuuu");
+
+ test1("Flag '`' (backtick) works: `abcd` `op...` (mysql extension)",
+ "Flag '`' (backtick) works: %`s %`.5s (mysql extension)",
+ "abcd", "op`qrstuuuuuuuuu");
+
+ test1("Flag '`' (backtick) works: `abcd` `op``...` (mysql extension)",
+ "Flag '`' (backtick) works: %`s %`.6s (mysql extension)",
+ "abcd", "op`qrstuuuuuuuuu");
test1("Length modifiers work: 1 * -1 * 2 * 3",
"Length modifiers work: %d * %ld * %lld * %zd", 1, -1L, 2LL, (size_t)3);
@@ -125,13 +141,13 @@ int main(void)
test1("Asterisk '*' as a width works: < 4>",
"Asterisk '*' as a width works: <%*d>", 5, 4);
- test1("Asterisk '*' as a precision works: <qwerty>",
+ test1("Asterisk '*' as a precision works: <qwe...>",
"Asterisk '*' as a precision works: <%.*s>", 6, "qwertyuiop");
test1("Positional arguments for a width: < 4>",
"Positional arguments for a width: <%1$*2$d>", 4, 5);
- test1("Positional arguments for a precision: <qwerty>",
+ test1("Positional arguments for a precision: <qwe...>",
"Positional arguments for a precision: <%1$.*2$s>", "qwertyuiop", 6);
test1("Positional arguments and a width: <0000ab>",
@@ -168,14 +184,14 @@ int main(void)
test1("M with positional: 0 \"Internal error/check (Not system error)\"",
"M with positional: %1$M", 0);
- test1("M with width: 0 \"Internal error/ch",
+ test1("M with width: 0 \"Internal error...",
"M with width: %.20M", 0);
- test1("M with width positional: 0 \"Internal error/ch",
+ test1("M with width positional: 0 \"Internal error...",
"M with width positional: %2$.*1$M", 20, 0);
- test_w_len("M small buf: 0 \"In",
+ test_w_len("M small buf: 0 \"..",
19, "M small buf: %M", 0);
- test_w_len("M small buf positional: 0 \"In",
+ test_w_len("M small buf positional: 0 \"..",
30, "M small buf positional: %1$M", 0);
return exit_status();