mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
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 froma1b7bf8013Silence 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 (cherry picked from commit2bca8aa7a7)
This commit is contained in:
parent
676010ab86
commit
d612bd6d0d
1 changed files with 24 additions and 0 deletions
|
|
@ -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 a new issue