Re: [patch@34896] File::Compare test fixes for VMS.

[email protected] ("John E. Malmberg")
Newsgroups perl.perl5.porters,perl.vmsperl
Message-ID <[email protected]>
Craig A. Berry wrote:
> 
> On Nov 24, 2008, at 8:32 PM, John E. Malmberg wrote:
> 
>> In lib/File/Compare.t :
>>
>> The tests with the filename having a trailing space was not working 
>> correctly on VMS in the traditional mode, and was leaving one of the 
>> temporary files behind.
>>
>>
>> With VMS in the Extended File System (EFS) character set mode, the 
>> test fails because it requires two things:
>>
>> 1. VMS to be in UNIX file sharing modes.
>>   This is default exclusive locking disabled.
>>
>> 2. flush() on file handles need to be implemented/fixed on VMS to work.
>>
>> It also needs to have the temp directory as chosen by File::Temp to be 
>> set to an ODS-5 volume.
>>
>>
>> -John
>> [email protected]
>> Personal Opinion Only
>> --- /rsync_root/perl/lib/File/Compare.t    Tue Jun 13 14:29:14 2006
>> +++ lib/File/Compare.t    Mon Nov 24 19:24:36 2008
> 
> I appreciate the effort but something is not adding up here. We start 
> with a test file that has no VMS-specific workarounds at all.  It uses 
> File::Spec and File::Temp and generally behaves itself from a 
> portability standpoint.

It only appears to behave in the VMS environment, it is not actually 
doing the intended test, and as a side effect it is leaving behind the 
temp file.

>  Then, in order to run it in a VMS environment 
> that emulates unixy behavior we have to add 60+ lines of VMS-specific 
> code to the test.  Huh?  Something's wrong with this picture.
> 
> I can see the failures and I agree something needs to be done, though I 
> haven't looked at it in detail to think about what that might be.  But I 
> sure hope it's something less intrusive than this.

The additional lines are to provide diagnostics to the VMS user, because 
  when EFS charset mode is enabled, the test tries to open the file a 
second time.

That open fails unless DECC$FILE_SHARING is enabled.

Then the test will still fail because VMS requires the output to be 
flushed after the write a filehandle for the data to actually be in the 
file.

Previous investigations showed that while the flush() method is 
available on filehandles, on VMS, it currently does not actually flush 
the buffer.

-John
[email protected]
Personal Opinion Only
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.