Skip to content

Commit dbbcde1

Browse files
committed
Add some gzip header tests including RFC 1952 compression level flag
1 parent 13277fb commit dbbcde1

1 file changed

Lines changed: 28 additions & 2 deletions

File tree

libarchive/test/test_write_filter_gzip.c

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ DEFINE_TEST(test_write_filter_gzip)
3939
struct archive* a;
4040
char *buff, *data;
4141
size_t buffsize, datasize;
42+
unsigned char *rbuff;
4243
char path[16];
4344
size_t used1, used2;
4445
int i, r, use_prog = 0;
@@ -58,6 +59,7 @@ DEFINE_TEST(test_write_filter_gzip)
5859

5960
/*
6061
* Write a 100 files and read them all back.
62+
* Use default compression level (6).
6163
*/
6264
assert((a = archive_write_new()) != NULL);
6365
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
@@ -93,6 +95,14 @@ DEFINE_TEST(test_write_filter_gzip)
9395
assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
9496
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
9597

98+
/* Basic gzip header tests */
99+
rbuff = (unsigned char *)buff;
100+
assertEqualInt(rbuff[0], 0x1f);
101+
assertEqualInt(rbuff[1], 0x8b);
102+
assertEqualInt(rbuff[2], 0x08);
103+
assertEqualInt(rbuff[3], 0x00);
104+
assertEqualInt(rbuff[8], 0); /* RFC 1952 flag for compression level 6 */
105+
96106
assert((a = archive_read_new()) != NULL);
97107
assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
98108
r = archive_read_support_filter_gzip(a);
@@ -116,7 +126,7 @@ DEFINE_TEST(test_write_filter_gzip)
116126

117127
/*
118128
* Repeat the cycle again, this time setting some compression
119-
* options.
129+
* options. Compression level is 9.
120130
*/
121131
assert((a = archive_write_new()) != NULL);
122132
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
@@ -150,6 +160,14 @@ DEFINE_TEST(test_write_filter_gzip)
150160
assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
151161
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
152162

163+
/* Basic gzip header tests */
164+
rbuff = (unsigned char *)buff;
165+
assertEqualInt(rbuff[0], 0x1f);
166+
assertEqualInt(rbuff[1], 0x8b);
167+
assertEqualInt(rbuff[2], 0x08);
168+
assertEqualInt(rbuff[3], 0x00);
169+
assertEqualInt(rbuff[8], 2); /* RFC 1952 flag for compression level 9 */
170+
153171
/* Curiously, this test fails; the test data above compresses
154172
* better at default compression than at level 9. */
155173
/*
@@ -181,7 +199,7 @@ DEFINE_TEST(test_write_filter_gzip)
181199
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
182200

183201
/*
184-
* Repeat again, with much lower compression.
202+
* Repeat again, with compression level 1
185203
*/
186204
assert((a = archive_write_new()) != NULL);
187205
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
@@ -213,6 +231,14 @@ DEFINE_TEST(test_write_filter_gzip)
213231
(int)used2, (int)used1);
214232
assert(used2 > used1);
215233

234+
/* Basic gzip header tests */
235+
rbuff = (unsigned char *)buff;
236+
assertEqualInt(rbuff[0], 0x1f);
237+
assertEqualInt(rbuff[1], 0x8b);
238+
assertEqualInt(rbuff[2], 0x08);
239+
assertEqualInt(rbuff[3], 0x00);
240+
assertEqualInt(rbuff[8], 4); /* RFC 1952 flag for compression level 1 */
241+
216242
assert((a = archive_read_new()) != NULL);
217243
assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
218244
assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));

0 commit comments

Comments
 (0)