]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
torture:charset: use < and > assertions for strncasecmp_m
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>
Fri, 5 Apr 2024 01:43:42 +0000 (14:43 +1300)
committerJule Anger <janger@samba.org>
Mon, 10 Jun 2024 13:25:16 +0000 (13:25 +0000)
strncasecmp_m is supposed to return a negative, zero, or positive
number, not necessarily the difference between the codepoints in
the first  character that differs, which we have been asserting up to
now.

This fixes a knownfail on 32 bit.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15625

Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
(cherry picked from commit dda0bb6fc71bae91f3158f69462cb79fdad210fb)

lib/util/charset/tests/charset.c
selftest/knownfail-32bit

index 94bf76c010d9b05568dd93d146d49727a788c84e..6fca3f36c19c0ec7729967dfe639fb78a5a2ecb3 100644 (file)
@@ -151,19 +151,19 @@ static bool test_strncasecmp_m(struct torture_context *tctx)
        const char file_iso8859_1[7] = { 0x66, 0x69, 0x6c, 0x65, 0x2d, 0xe9, 0 };
        /* file.{accented e} in utf8 */
        const char file_utf8[8] =      { 0x66, 0x69, 0x6c, 0x65, 0x2d, 0xc3, 0xa9, 0 };
-       torture_assert_int_equal(tctx, strncasecmp_m("foo", "bar", 3), 4, "different strings both lower");
-       torture_assert_int_equal(tctx, strncasecmp_m("foo", "Bar", 3), 4, "different strings lower/upper");
-       torture_assert_int_equal(tctx, strncasecmp_m("Foo", "bar", 3), 4, "different strings upper/lower");
-       torture_assert_int_equal(tctx, strncasecmp_m("AFoo", "_bar", 4), 2, "different strings upper/lower");
+       torture_assert_int_greater(tctx, strncasecmp_m("foo", "bar", 3), 0, "different strings both lower");
+       torture_assert_int_greater(tctx, strncasecmp_m("foo", "Bar", 3), 0, "different strings lower/upper");
+       torture_assert_int_greater(tctx, strncasecmp_m("Foo", "bar", 3), 0, "different strings upper/lower");
+       torture_assert_int_greater(tctx, strncasecmp_m("AFoo", "_bar", 4), 0, "different strings upper/lower");
        torture_assert_int_equal(tctx, strncasecmp_m("foo", "foo", 3), 0, "same case strings");
        torture_assert_int_equal(tctx, strncasecmp_m("foo", "Foo", 3), 0, "different case strings");
        torture_assert_int_equal(tctx, strncasecmp_m("fool", "Foo", 3),0, "different case strings");
        torture_assert_int_equal(tctx, strncasecmp_m("fool", "Fool", 40), 0, "over size");
        torture_assert_int_equal(tctx, strncasecmp_m("BLA", "Fool", 0),0, "empty");
-       torture_assert_int_equal(tctx, strncasecmp_m(NULL, "Foo", 3),  -1, "one NULL");
-       torture_assert_int_equal(tctx, strncasecmp_m("foo", NULL, 3),  1, "other NULL");
+       torture_assert_int_less(tctx, strncasecmp_m(NULL, "Foo", 3),  0, "one NULL");
+       torture_assert_int_greater(tctx, strncasecmp_m("foo", NULL, 3),  0, "other NULL");
        torture_assert_int_equal(tctx, strncasecmp_m(NULL, NULL, 3),   0, "both NULL");
-       torture_assert_int_equal(tctx, strncasecmp_m(file_iso8859_1, file_utf8, 6), 38,
+       torture_assert_int_greater(tctx, strncasecmp_m(file_iso8859_1, file_utf8, 6), 0,
                "file.{accented e} should differ");
        return true;
 }
index 5cb896f14fea21f9a1bb78ccfa9db1cd6620c615..8ab625d969e0b4b580d982eb4abdc999c7c3b755 100644 (file)
@@ -67,9 +67,6 @@
 # REASON: Exception: Exception: ../../lib/util/charset/tests/charset.c:56: strcasecmp("foo", "bar") was 1 (0x1), expected 4 (0x4): different strings both lower
 # UNEXPECTED(failure): samba4.local.charset.strncasecmp(none)
 # REASON: Exception: Exception: ../../lib/util/charset/tests/charset.c:132: strncasecmp("foo", "bar", 3) was 1 (0x1), expected 4 (0x4): different strings both lower
-# UNEXPECTED(failure): samba4.local.charset.strncasecmp_m(none)
-# REASON: Exception: Exception: ../../lib/util/charset/tests/charset.c:167: strncasecmp_m(file_iso8859_1, file_utf8, 6) was 1 (0x1), expected 38 (0x26): file.{accent
-# ed e} should differ
 # command:  /home/samba/samba.git/bin/smbtorture  $LOADLIST --configfile=$SMB_CONF_PATH --option='fss:sequence timeout=1' --maximum-runtime=$SELFTEST_MAXTIME --based
 # ir=$SELFTEST_TMPDIR --format=subunit --option=torture:progress=no --target=samba4 ncalrpc:localhost local.charset 2>&1  | python3 /home/samba/samba.git/selftest/fi
 # lter-subunit --fail-on-empty --prefix="samba4.local.charset." --suffix="(none)"
@@ -80,7 +77,6 @@
 # REASON: Exit code was 1
 ^samba4.local.charset.strcasecmp.none
 ^samba4.local.charset.strncasecmp.none
-^samba4.local.charset.strncasecmp_m.none
 #
 # [229(2702)/261 at 8m44s, 5 errors] samba.tests.samba_tool.provision_lmdb_size
 # UNEXPECTED(failure): samba.tests.samba_tool.provision_lmdb_size.samba.tests.samba_tool.provision_lmdb_size.ProvisionLmdbSizeTestCase.test_134217728b(none)