diff options
author | Oleksandr Byelkin <sanja@mariadb.com> | 2020-03-16 16:53:10 +0100 |
---|---|---|
committer | Oleksandr Byelkin <sanja@mariadb.com> | 2020-04-01 11:34:32 +0200 |
commit | cb4da5da74b7a6f2e7c4f4ed1b0e5affe45fe2a2 (patch) | |
tree | fdeecd66c05478818479deb89a5dd0cabd99956a /unittest | |
parent | a1846b7a642dd5b5b36f3d4f0099cb7c0149f859 (diff) | |
download | mariadb-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.c | 38 |
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(); |