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:
parent
83532eb68c
commit
2bca8aa7a7
@ -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
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user