[cage] Fix pgegrep, which was merely an innocent bystander in the Great Namespace...
[parrot.git] / t / op / io.t
blobde0de6b9b6233a0dddd80a1677a265f1ff114175
1 #!parrot
2 # Copyright (C) 2008, Parrot Foundation.
3 # $Id$
5 =head1 NAME
7 t/op/io.t - Testing io opcodes
9 =head1 SYNOPSIS
11     % prove t/op/io.t
13 =head1 DESCRIPTION
15 Tests various io opcodes.
17 =cut
19 .const int TESTS = 4
21 .sub 'main' :main
22     .include 'test_more.pir'
24     plan(TESTS)
26     open_null_filename()
27     open_null_mode()
28     open_pipe_for_reading()
29     open_pipe_for_writing()
30 .end
32 .sub 'open_null_filename'
33     push_eh open_null_filename_failed
34     null $S0
35     $P0 = open $S0, 'r'
36     nok(1, 'open with null filename')
37     .return ()
39   open_null_filename_failed:
40     ok(1, 'open with null filename')
41 .end
43 .sub 'open_null_mode'
44     push_eh open_null_mode_failed
45     null $S0
46     $P0 = open 'some_name', $S0
47     nok(1, 'open with null mode')
48     .return ()
50   open_null_mode_failed:
51     ok(1, 'open with null mode')
52 .end
54 .sub 'tt661_todo_test' :anon
55     # As of r41963, these tests need to be todo'ed at least on Win32. Add new
56     # platforms known to fail.
57     .include 'sysinfo.pasm'
58     $S0 = sysinfo .SYSINFO_PARROT_OS
59     if $S0 == 'MSWin32' goto tt661_todo
61     .return (0)
63   tt661_todo:
64     .return (1)
65 .end
67 .include 'iglobals.pasm'
69 .sub 'open_pipe_for_reading'
70     .local pmc interp
71     interp = getinterp
73     .local pmc conf
74     conf = interp[.IGLOBALS_CONFIG_HASH]
76     .local string command
77     command = conf['build_dir']
79     .local string aux
80     aux = conf['slash']
81     command .= aux
82     aux = conf['test_prog']
83     command .= aux
84     aux = conf['exe']
85     command .= aux
86     command .= ' -V'
88     .local pmc pipe
89     pipe = open command, 'rp'
90     unless pipe goto open_pipe_for_reading_failed
91     .local string line
92     line = readline pipe
93     line = substr line, 0, 14
94     is('This is Parrot', line, 'open pipe for reading')
95     .return ()
97   open_pipe_for_reading_failed:
98     nok(1, 'open pipe for reading')
99     .return ()
100 .end
102 .sub 'open_pipe_for_writing'
103     $I0 = tt661_todo_test()
104     if $I0 goto open_pipe_for_writing_todoed
105     .local pmc interp
106     interp = getinterp
108     .local pmc conf
109     conf = interp[.IGLOBALS_CONFIG_HASH]
111     .local string command
112     command = conf['build_dir']
114     .local string aux
115     aux = conf['slash']
116     command .= aux
117     .local string filename
118     filename .= command
119     filename .= 'examples/pasm/cat.pasm'
120     aux = conf['test_prog']
121     command .= aux
122     aux = conf['exe']
123     command .= aux
124     command .= ' '
125     command .= filename
127     .local pmc pipe
128     pipe = open command, 'wp'
129     unless pipe goto open_pipe_for_writing_failed
130     pipe.'puts'("ok - open pipe for writing\n")
131     close pipe
132     .return ()
134   open_pipe_for_writing_failed:
135     nok(1, 'open pipe for writing')
136     .return ()
138   open_pipe_for_writing_todoed:
139     todo(0, 'Unimplemented in this platform, TT #661')
141 .end
143 # Local Variables:
144 #   mode: pir
145 #   fill-column: 100
146 # End:
147 # vim: expandtab shiftwidth=4 ft=pir: