[PATCH 11/11] Ensure temporary directory used by tests exists

Ken Brown kbrown@cornell.edu
Mon Nov 9 17:48:56 GMT 2020

On 11/9/2020 11:25 AM, Jon Turney wrote:
> On 08/11/2020 19:27, Ken Brown via Cygwin-patches wrote:
>> On 11/8/2020 1:52 PM, Jon Turney wrote:
>>> On 08/11/2020 18:19, Ken Brown via Cygwin-patches wrote:
>>>> On 11/5/2020 2:47 PM, Jon Turney wrote:
>>>>> +# temporary directory to be used for files created by tests (as an absolute,
>>>>> +# /cygdrive path, so it can be understood by the test DLL, which will have
>>>>> +# different mount table)
>>>>> +tmpdir = $(shell cygpath -ma $(objdir)/testsuite/tmp/ | sed -e 
>>>>> 's#^\([A-Z]\):#/cygdrive/\L\1#')
>>>> This isn't right if the cygdrive prefix is not 'cygdrive'.  Maybe use 
>>>> 'proc/cygdrive' instead of 'cygdrive'?
>>> That's how I originally had it.  Unfortunately, test ltp/symlink01 relies on 
>>> the test directory being specified as a canonicalized pathname (i.e. is the 
>>> same after realpath()).
>>> Since there's no /etc/fstab in the the filesystem relative to the test DLL, I 
>>> think it should always be using the default cygdrive prefix?
>> But there's a mkdir command that seems to be run in the context of the user 
>> running 'make check'.  If the cygdrive prefix is not 'cygdrive', 'make check' 
>> fails as follows:
>> ERROR: tcl error sourcing 
>> /home/kbrown/src/cygdll/newlib-cygwin/winsup/testsuite/winsup.api/winsup.exp.
>> ERROR: can't create directory "/cygdrive": permission denied
>>      while executing
>> "file mkdir $tmpdir/$base"
> Ah, I see.
> Maybe something like the attached is needed.

That fixes it, thanks.  I get

                 === winsup Summary ===

# of expected passes            253
# of unexpected failures        23
# of unexpected successes       1
# of expected failures          7

Is that consistent with what you see?  I especially like the unexpected success. 
  That made my day.

I think it's great that you're resurrecting the test suite.  Thanks for doing that.

I have my own suite of fifo tests that I run every time I change something, and 
it's very tedious to do it by hand.  Currently almost all of them are set up to 
run interactively.  For example, they might involve typing "echo blah > 
/tmp/myfifo" in one terminal and checking for a response in a second terminal. 
I'll have to figure out how to make them run non-interactively.


More information about the Cygwin-patches mailing list