Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 7 Apr 2021 10:35:27 GMT
From:      Alex Richardson <arichardson@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 2bca8aa7a79a - main - libarchive: Make test_read_append_filter_wrong_program pass again
Message-ID:  <202104071035.137AZRcE019718@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by arichardson:

URL: https://cgit.FreeBSD.org/src/commit/?id=2bca8aa7a79ad2b6683e8f5a5c373de81c5baca2

commit 2bca8aa7a79ad2b6683e8f5a5c373de81c5baca2
Author:     Alex Richardson <arichardson@FreeBSD.org>
AuthorDate: 2021-04-07 10:35:10 +0000
Commit:     Alex Richardson <arichardson@FreeBSD.org>
CommitDate: 2021-04-07 10:35:10 +0000

    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 https://github.com/libarchive/libarchive/commit/a1b7bf8013fb7a11a486794247daae592db6f5ae
    
        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
---
 .../libarchive/test/test_read_set_format.c         | 24 ++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/contrib/libarchive/libarchive/test/test_read_set_format.c b/contrib/libarchive/libarchive/test/test_read_set_format.c
index f357bada82c3..c760de0056d3 100644
--- a/contrib/libarchive/libarchive/test/test_read_set_format.c
+++ b/contrib/libarchive/libarchive/test/test_read_set_format.c
@@ -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
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202104071035.137AZRcE019718>