emacs-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#35762: closed (When `test-driver` script + `check` testing framework


From: GNU bug Tracking System
Subject: bug#35762: closed (When `test-driver` script + `check` testing framework are writing to same logfile = corrupted output)
Date: Tue, 24 Nov 2020 02:07:03 +0000

Your message dated Mon, 23 Nov 2020 19:06:51 -0700
with message-id <202011240206.0AO26pPO005529@freefriends.org>
and subject line Re: bug#35762: (No Subject)
has caused the debbugs.gnu.org bug report #35762,
regarding When `test-driver` script + `check` testing framework are writing to 
same logfile = corrupted output
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs@gnu.org.)


-- 
35762: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=35762
GNU Bug Tracking System
Contact help-debbugs@gnu.org with problems
--- Begin Message --- Subject: When `test-driver` script + `check` testing framework are writing to same logfile = corrupted output Date: Thu, 16 May 2019 08:07:36 +0000
Hi. This isn't a bug, but just to inform you that `test-driver` redirecting 
stdout(and stderr) to the log file, coupled with  the test itself also writing 
to the same log file(for whatever reason), will result in them both using the 
same outfile (with different descriptors) thus corrupted output is the result.

For an example of what happens, see this comment: 
https://github.com/libcheck/check/issues/188#issuecomment-492794060 which I'll 
reproduce below for easy reading.

For exact reproduction steps with using `check` (the unit test framework for C) 
see the previous comment aka 
https://github.com/libcheck/check/issues/188#issuecomment-492782675

#include <stdio.h>
  

int main() {
  FILE *f=NULL;
  f = fopen("/tmp/a_out_.log", "w");
  if (NULL == f) {
    fprintf(stderr,"oopsie\n");
  } else {
    fprintf(stdout, "Something");
    fprintf(f," messy ");
    fprintf(f," jessy\n");
    fprintf(stdout, " or another\n");
    fprintf(f,"More stuff\n");
    fclose(f);                                                                  
                                                

  }
}

$ gcc a.c && { ./a.out >/tmp/a_out_.log ; cat /tmp/a_out_.log ; }
Something or another
uff

That's basically what happens.

I'm on Arch Linux, and have the following versions:

local/autoconf 2.69-5 (base-devel)
    A GNU tool for automatically configuring source code
local/autoconf2.13 2.13-5
    A GNU tool for automatically configuring source code (Legacy 2.1x version)
local/automake 1.16.1-1 (base-devel)
    A GNU tool for automatically creating Makefiles

$ automake --version
automake (GNU automake) 1.16.1

$ autoconf --version
autoconf (GNU Autoconf) 2.69

$ make --version
GNU Make 4.2.1
Built for x86_64-pc-linux-gnu

  # test-driver - basic testsuite driver script.
  

  scriptversion=2018-03-07.03; # UTC

Thanks.

Attachment: publickey - howaboutsynergy@protonmail.com - 0x947B9B34.asc
Description: application/pgp-keys

Attachment: signature.asc
Description: OpenPGP digital signature


--- End Message ---
--- Begin Message --- Subject: Re: bug#35762: (No Subject) Date: Mon, 23 Nov 2020 19:06:51 -0700
   : >"$log_file"
   "$@" >>"$log_file" 2>&1

I committed this change to test-driver, so it'll (finally) be in the
next release. (Sorry for the long-delayed response.)

(I was tempted to make the script exit unsuccessfully if either of the
commands failed (e.g., add  || exit 1  or some such), but I was too scared.)

Thanks for the report,
Karl


--- End Message ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]