libarchive: Make test_read_append_filter_wrong_program pass again

libarchive: Apply upstream commit a1b7bf8013fb7a11a486794247daae592db6f5ae

This fixes the failing test_read_append_filter_wrong_program test in CI
which has been failing since 01-Dec-2020.

Commit message from a1b7bf8013

    Silence stderr in test_read_append_filter_program

    When the FreeBSD testsuite runs the libarchive tests it checks that stderr
    is empty. Since #1382 this is no longer the case. This change restores
    the behaviour of silencing bunzip2 stderr but doesn't bring back the
    output text check.

    Partially reverts 2e7aa5d9

MFC after:	3 days
Differential Revision: https://reviews.freebsd.org/D29036
This commit is contained in:
Alex Richardson 2021-04-07 11:35:10 +01:00
parent 83532eb68c
commit 2bca8aa7a7

View File

@ -201,6 +201,11 @@ DEFINE_TEST(test_read_append_filter_wrong_program)
{
struct archive_entry *ae;
struct archive *a;
#if !defined(_WIN32) || defined(__CYGWIN__)
FILE * fp;
int fd;
fpos_t pos;
#endif
/*
* If we have "bunzip2 -q", try using that.
@ -210,6 +215,14 @@ DEFINE_TEST(test_read_append_filter_wrong_program)
return;
}
#if !defined(_WIN32) || defined(__CYGWIN__)
/* bunzip2 will write to stderr, redirect it to a file */
fflush(stderr);
fgetpos(stderr, &pos);
assert((fd = dup(fileno(stderr))) != -1);
fp = freopen("stderr1", "w", stderr);
#endif
assert((a = archive_read_new()) != NULL);
assertA(0 == archive_read_set_format(a, ARCHIVE_FORMAT_TAR));
assertEqualIntA(a, ARCHIVE_OK,
@ -219,4 +232,15 @@ DEFINE_TEST(test_read_append_filter_wrong_program)
assertA(archive_read_next_header(a, &ae) < (ARCHIVE_WARN));
assertEqualIntA(a, ARCHIVE_WARN, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
#if !defined(_WIN32) || defined(__CYGWIN__)
/* restore stderr */
if (fp != NULL) {
fflush(stderr);
dup2(fd, fileno(stderr));
clearerr(stderr);
(void)fsetpos(stderr, &pos);
}
close(fd);
#endif
}