Re: What's needed for a new languages/t/*?

2005-08-07 Thread Amir Karger
[Argh! Posted to google groups again!]

Bernhard Schmalhofer wrote: 
 Amir Karger schrieb: 

 I have a test script that runs 85 tests (and will run many more once I 
 write more opcodes. 


 So if all I want to do is, essentially, perl -e 'chdir languages/Z and 
 system(parrot z3.imc t/test.z3)' and let the script print out a 
 bunch of (not )?ok's for Test::Harness to read, what should I do in my 
 t directory? 


 AFAIK there are no strict testing requirements for language implementations. 
 I think that the most important thing is to try to be nice. 



Or, as a wise comedian once said, Be Excellent to each other. 


 There are three things that I want to suggest: 

 i. Z/t/z3.t should be a Perl5 script that prints output in Test Anything 
 Protcol. 
 So put your 'system(parrot z3.imc t/test.z3)' into Z/t/z3.t 



Done (ish). 


 ii. Z/t/harness should behave like most other 't/harness'. It executes 
 the t/*.t files and prints 
 a harness report of the output. 


I think I can copy someone else's pretty much verbatim 


 iii. 'Z/t/harness --files' returns the list of test files. 


Looks like I can perl -pe 's/urm/Zcode/' urm/t/harness  
Zcode/t/harness 


 You could also try to put 'Z' into @unified_testable_languages of 
 'languages/testall' and add support for Z in 
 'config/gen/makefiles/languageĀ­s.in'. Calling 'make languages-test' could 
 then test 'Z' along the other languages. 


I think I'll try that once I can get make test to work. 


  (Also, how do I make sure it'll find parrot before make 
 install has been done?) 

 I would expect that an install parrot is only found when the 
 executable 'parrot' is in $PATH. 
 Before installation I usually use $FindBin::Bin for building up the 
 relevant paths. 



OK. I see others say PARROT=../../parrot 

Thanks, 


-Amir


Re: What's needed for a new languages/t/*?

2005-08-05 Thread chromatic
On Thu, 2005-08-04 at 08:52 -0400, Amir Karger wrote:

 I'm about to commit an updated version of leo's Z-code-to-PIR
 translator. I'm wondering what I should do about t.

I hope to have a variant of Test::More written in pure PIR in the near
future (though it probably requires the new calling conventions code to
reach the trunk) and a port of Parrot::Test shortly after that.  That
ought to let you write tests either in PIR or, with the appropriate
calling code, in the language of your choice.

-- c



What's needed for a new languages/t/*?

2005-08-04 Thread Amir Karger
I'm about to commit an updated version of leo's Z-code-to-PIR
translator. I'm wondering what I should do about t.

I have a test script that runs 85 tests (and will run many more once I
write more opcodes. Luckily, I developed it already when I was doing
plotz). I could easily modify it to output ok n and not ok with a
comment about what went wrong.  However, because it's a big Z-code
file, it would be hard to write a Test::Simple script that calls ok()
85 times. In quickly looking at languages/* I saw that there seem to
be a number of different ways of doing tests, some of which use
Parrot::Test.

So if all I want to do is, essentially, perl -e 'chdir languages/Z and
system(parrot z3.imc t/test.z3)' and let the script print out a
bunch of (not )?ok's for Test::Harness to read, what should I do in my
t directory? (Also, how do I make sure it'll find parrot before make
install has been done?) I didn't see a languages.pod with this info,
but maybe I just wasn't looking in the right place.

-Amir Karger


Re: What's needed for a new languages/t/*?

2005-08-04 Thread Will Coleda
Excellent questions. Perhaps I can whip up a languages.pod once 0.2.3  
is out the door, based on partcl and the current state of a few other  
languages out there.


Right now, the unified language testing harness, such as it is,  
would rather you had a script called harness that took a --files  
option to figure out what .t files to run. The .t files don't have to  
be perl scripts, but it helps: we don't have a lot of requirements  
for parrot at the moment, so for portability perl is the best. (but  
you could make it a shell script, or whatever. Just be careful with  
$Test::Harness::Switches).


Finding parrot before make install is done is somewhat tricky: this  
is another reason to use the builtin Parrot::Test modules. Right now,  
several languages provide a language specific class this can dispatch  
to, e.g. Parrot::Test::Tcl. {{ this implementation is a little  
muddy at the moment and could probably use some cleanup }}


But, for now, if you have a .t script that works, I would say commit  
it (after the code freeze, of course); we can have you be standalone  
for now and integrate you into the unified lang testing later. Many  
of the existing languages are in various states of disrepair in re:  
testing, so it won't be evil.


On Aug 4, 2005, at 8:52 AM, Amir Karger wrote:



I'm about to commit an updated version of leo's Z-code-to-PIR
translator. I'm wondering what I should do about t.

I have a test script that runs 85 tests (and will run many more once I
write more opcodes. Luckily, I developed it already when I was doing
plotz). I could easily modify it to output ok n and not ok with a
comment about what went wrong.  However, because it's a big Z-code
file, it would be hard to write a Test::Simple script that calls ok()
85 times. In quickly looking at languages/* I saw that there seem to
be a number of different ways of doing tests, some of which use
Parrot::Test.

So if all I want to do is, essentially, perl -e 'chdir languages/Z and
system(parrot z3.imc t/test.z3)' and let the script print out a
bunch of (not )?ok's for Test::Harness to read, what should I do in my
t directory? (Also, how do I make sure it'll find parrot before make
install has been done?) I didn't see a languages.pod with this info,
but maybe I just wasn't looking in the right place.

-Amir Karger








Re: What's needed for a new languages/t/*?

2005-08-04 Thread Bernhard Schmalhofer

Amir Karger schrieb:


I have a test script that runs 85 tests (and will run many more once I
write more opcodes. Luckily, I developed it already when I was doing
plotz). I could easily modify it to output ok n and not ok with a
comment about what went wrong.  However, because it's a big Z-code
file, it would be hard to write a Test::Simple script that calls ok()
85 times. In quickly looking at languages/* I saw that there seem to
be a number of different ways of doing tests, some of which use
Parrot::Test.

So if all I want to do is, essentially, perl -e 'chdir languages/Z and
system(parrot z3.imc t/test.z3)' and let the script print out a
bunch of (not )?ok's for Test::Harness to read, what should I do in my
t directory?


AFAIK there are no strict testing requirements for language implementations.
I think that the most important thing is to try to be nice.

There are three things that I want to suggest:

i. Z/t/z3.t should be a Perl5 script that prints output in Test Anything 
Protcol.

So put your 'system(parrot z3.imc t/test.z3)' into Z/t/z3.t

ii. Z/t/harness should behave like most other 't/harness'. It executes 
the t/*.t files and prints

a harness report of the output.

iii. 'Z/t/harness --files' returns the list of test files.

You could also try to put 'Z' into @unified_testable_languages of 
'languages/testall' and add support for Z in
'config/gen/makefiles/languages.in'. Calling 'make languages-test' could 
then test 'Z' along the other languages.



(Also, how do I make sure it'll find parrot before make
install has been done?) 


I would expect that an install parrot is only found when the
executable 'parrot' is in $PATH.
Before installation I usually use $FindBin::Bin for building up the
relevant paths.


I didn't see a languages.pod with this info,
but maybe I just wasn't looking in the right place.
 

I think there in no such documentation. New insight could be added to 
'docs/compiler_faq.pod'.


CU, Bernhard