On Sat, Sep 22, 2001 at 10:59:34PM -0500, Craig A. Berry wrote:
> $ perl -"MCwd" -e "chdir('test'); print Cwd::getcwd();"
> D0:[CRAIG.TEST]

Cwd is running things through VMS::Filespec.  I have no idea which one
is the proper thing to do, but it's already been established that Cwd
is generally inconsistent and will most likely stay that way.


> >For chdir.t, that might be fixed by #12124.
> 
> I'll take a look.  In the meantime, here's the verbose output:

Ok, after applying 12124 (so everything's using File::Spec and not
Cwd) I still have problems with case differences.

not ok 2 -   abs_path() agrees
#     Failed test (t/op/chdir.t at line 26)
#          got: 'USER1:[SCHWERN.PERL.T]'
#     expected: 'USER1:[SCHWERN.PERL.t]'

What's the proper solution to this?

The rest should clear up after tonite's round of chdir patching on
p5p.


> >manifest.t... we can probably fix it if I can see the test output.
> 
> $ perl [-.lib.extutils]manifest.t
> 1..31
> ok 1 - use ExtUtils::Manifest;
> ok 2 - make mantest directory
> ok 3 - chdir() to mantest
> ok 4 - add a temporary file
> not ok 5 - mkmanifest() displayed it's additions
> #     Failed test ([-.lib.extutils]manifest.t at line 58)
> #          got: 'Added to MANIFEST: MANIFEST
> Added to MANIFEST: foo
> Added to MANIFEST: manifest
> '
> #     expected: 'Added to MANIFEST: MANIFEST
> Added to MANIFEST: foo
> '

Ok, it would appear open() is being a smidge too helpful.
ExtUtils::Manifest::mkmanifest() says

    open M, ">MANIFEST";

and it creates the file 'manifest.'  Faaaascinating.  Is this normal?
VMS requires every filename to contain a dot?

So open() seems to be handling the non-case-preserving parts ok.
Should it also handle filehandles with no dot?


> ok 13 - disabled warnings
> not ok 14 - got skipping warning
> #     Failed test ([-.lib.extutils]manifest.t at line 91)
> #                   'Skipping manifest.skip
> '
> #     doesn't match '(?-xism:^Skipping MANIFEST\.SKIP)'

Again, open() being too helpful.


> ok 18 - created moretest directory
> not ok 19 - manifind found [.moretest]quux
> #     Failed test ([-.lib.extutils]manifest.t at line 109)

Ok, this is failing because we use File::Spec there.  We're asking
for:

    [.moretest]quux

but manifind() keeps it's keys as unix file paths.  That's a genuine
problem.  manifind() documents itself as:

    manifind() returns a hash reference. The keys of the hash are the
    files found below the current directory.

would it work best for it to store the keys as native file paths?


> ok 20 - two files found
> not ok 21 - both files found
> #     Failed test ([-.lib.extutils]manifest.t at line 114)
> #          got: 'foo manifest'
> #     expected: 'MANIFEST foo'

Another file casing problem.


> not ok 22 - maniread found comment
> #     Failed test ([-.lib.extutils]manifest.t at line 118)
> #          got: 'none #none'
> #     expected: '#none'

This looks like a simple matter of the VMS special-case code falling
out of date.  Genuine bug.  Ok, a little logic rejiggering, aaaannd,
this should do it.  It should also make sure the special-cases don't
drift away.

--- lib/ExtUtils/Manifest.pm    2001/09/23 06:05:03     1.1
+++ lib/ExtUtils/Manifest.pm    2001/09/23 06:07:46
@@ -142,15 +142,14 @@
     while (<M>){
        chomp;
        next if /^#/;
+
+        my($file, $comment) = /^(\S+)\s*(.*)/;
+        next unless $file;
        if ($Is_MacOS) {
-           my($item,$text) = /^(\S+)\s*(.*)/;
-           $item = _macify($item);
-           $item =~ s/\\([0-3][0-7][0-7])/sprintf("%c", oct($1))/ge;
-           $read->{$item}=$text;
+           $file = _macify($file);
+           $file =~ s/\\([0-3][0-7][0-7])/sprintf("%c", oct($1))/ge;
        }
        elsif ($Is_VMS) {
-           my($file)= /^(\S+)/;
-           next unless $file;
            my($base,$dir) = File::Basename::fileparse($file);
            # Resolve illegal file specifications in the same way as tar
            $dir =~ tr/./_/;
@@ -158,9 +157,10 @@
            if (@pieces > 2) { $base = shift(@pieces) . '.' . join('_',@pieces); }
            my $okfile = "$dir$base";
            warn "Debug: Illegal name $file changed to $okfile\n" if $Debug;
-           $read->{"\L$okfile"}=$_;
+           $file = "\L$okfile";
        }
-       else { /^(\S+)\s*(.*)/ and $read->{$1}=$2; }
+
+        $read->{$file} = $comment;
     }
     close M;
     $read;



> ok 30 - return to parent directory
> not ok 31 - remove mantest directory
> #     Failed test ([-.lib.extutils]manifest.t at line 40)

This is failing because the t/mantest directory is not empty.  The
unlink on line 147 fails to nail mainfest.  Again, related to the
casing issue.


> > > kill_perl.t runs fine by itself but not in the test suite.
> >
> >Run vms/test.com on kill_perl.t with the -v flag set and show me the
> >verbose output.
> 
> Runs fine by itself, either directly from perl or from within test.com.
> 
> >Did t/op/misc.t used to fail?  If so, then it has something to do with
> >the test names on the end confusing test.com.
> 
> Don't remember offhand about misc.t, but it is almost surely
> something in test.com since it only happens when the entire test
> suite is run.

Puzzling.  I can't run the test suite, 'mms test' is barking about
"unrecognized command verb".


> >lib/Test/Simple/t/todo.t failing is probably just a minor bug in
> >vms/test.com
> 
> That may be an issue, but the failures I've noticed are independent of test.com:
> 
> $ perl [-.lib.test.simple.t]todo.t
> 1..13
> not ok 1 - Expected failure # TODO Just testing the todo interface.
> #     Failed (TODO) test ([-.lib.test.simple.t]todo.t at line 18)
...etc...

Believe it or not, that's *exactly* what its supposed to do.
test.com is just misparsing the "# TODO" part.

Apply this patch and it should clear things up.  I don't know how to
run test.com, but I'm sure this will work.

--- vms/test.com        2001/09/22 21:45:52     1.1
+++ vms/test.com        2001/09/22 21:46:19
@@ -201,7 +201,7 @@
                next if /^\s*$/;
 
 
-                if (/^(not )?ok (\d+)(\s*#.*)?/ &&
+                if (/^(not )?ok (\d+)[^#]*(\s*#.*)?/ &&
                     $2 == $next)
                 {
                     my($not, $num, $extra) = ($1, $2, $3);


> >PS Could you please, please, please, take a swing at getting Perl
> >installed on the OpenVMS Compaq testdrive account? 
> 
> Done.  I'll try to post more details in the next day or two.  For now
> you can run it by logging in and typing the following commands:
> 
> $ sd [.perl]
> $ @perl_setup
> $ define/translation=concealed perl_root user1:[schwern.perl.]

ahh, of course.  How did I not see that eariler?! :P

Thanks. :)

> I've also installed a vi-like editor which you can get by typing
> "vile"; GNU diff is available as "gdiff" and GNU patch is available
> as "gpatch".

Ok, let the fun begin.

Oh, this is interesting.  After I use the debugger once I get:
Daughter DB session started...
1..24
######### Forked, but do not know how to create a new TTY. #########
  Since two debuggers fight for the same TTY, input is severely entangled.


-- 

Michael G. Schwern   <[EMAIL PROTECTED]>    http://www.pobox.com/~schwern/
Perl6 Quality Assurance     <[EMAIL PROTECTED]>       Kwalitee Is Job One
Death?  Its like being on holiday with a group of Germans.

Reply via email to