]> git.ipfire.org Git - thirdparty/xz.git/commitdiff
Tests: Create a test for the lzma_index_cat bug.
authorJia Tan <jiat0218@gmail.com>
Wed, 21 Sep 2022 12:29:28 +0000 (20:29 +0800)
committerLasse Collin <lasse.collin@tukaani.org>
Thu, 29 Sep 2022 13:54:39 +0000 (16:54 +0300)
tests/test_index.c

index ce2cfe1010ef00d30a2fab3afd3fc10c3a270349..d9e63dd05fa4834871358b99eff8f27d88a41298 100644 (file)
@@ -290,7 +290,7 @@ test_many(lzma_index *i)
 static void
 test_cat(void)
 {
-       lzma_index *a, *b, *c;
+       lzma_index *a, *b, *c, *d, *e, *f;
        lzma_index_iter r;
 
        // Empty Indexes
@@ -411,6 +411,47 @@ test_cat(void)
                                ^ (i == 0));
 
        lzma_index_end(a, NULL);
+
+       // Test for the bug fix 3d5a99ca373a4e86faf671226ca6487febb9eeac.
+       // lzma_index_checks would previously only return the checks
+       // for the last stream that was concatenated to the index.
+       d = create_small();
+       e = create_small();
+       f = create_small();
+
+       lzma_stream_flags crc32_flags = {
+               .backward_size = LZMA_BACKWARD_SIZE_MIN,
+               .check = LZMA_CHECK_CRC32
+       };
+       expect(lzma_index_stream_flags(d, &crc32_flags) == LZMA_OK);
+
+       lzma_stream_flags crc64_flags = {
+               .backward_size = LZMA_BACKWARD_SIZE_MIN,
+               .check = LZMA_CHECK_CRC64
+       };
+       expect(lzma_index_stream_flags(e, &crc64_flags) == LZMA_OK);
+
+       lzma_stream_flags sha256_flags = {
+               .backward_size = LZMA_BACKWARD_SIZE_MIN,
+               .check = LZMA_CHECK_SHA256
+       };
+       expect(lzma_index_stream_flags(f, &sha256_flags) == LZMA_OK);
+
+       expect(lzma_index_checks(d) == (1U << LZMA_CHECK_CRC32));
+       expect(lzma_index_checks(e) == (1U << LZMA_CHECK_CRC64));
+       expect(lzma_index_checks(f) == (1U << LZMA_CHECK_SHA256));
+
+       expect(lzma_index_cat(d, e, NULL) == LZMA_OK);
+       expect(lzma_index_checks(d) == ((1U << LZMA_CHECK_CRC32) |
+                       (1U << LZMA_CHECK_CRC64)));
+
+       expect(lzma_index_cat(d, f, NULL) == LZMA_OK);
+       expect(lzma_index_checks(d) == ((1U << LZMA_CHECK_CRC32) |
+                       (1U << LZMA_CHECK_CRC64) |
+                       (1U << LZMA_CHECK_SHA256)));
+
+       lzma_index_end(d, NULL);
+
 }