# # pipe.test # # Tests for the pipe command. #--------------------------------------------------------------------------- # Copyright 1992-1999 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: pipe.test,v 1.2 2002/04/02 02:29:43 hobbs Exp $ #------------------------------------------------------------------------------ # if {[cequal [info procs Test] {}]} { source [file join [file dirname [info script]] testlib.tcl] } # # Fork without exec will not work under Tk, skip this test # if {[info exists tk_version]} { puts "******************************************************************" puts "The pipe commands test require fork, which does not work under Tk." puts "Test skipped." puts "******************************************************************" return } # FIX: Need win95 tests for pipe. # # Create child process to read from the pipe and write a message # back. # proc PipeChild {id numRecs readChan} { flush stdout ;# Not going to exec, must clean up the buffers. flush stderr set pid [fork] if {$pid != 0} { return $pid } for {set cnt 0} {$cnt < $numRecs} {incr cnt} { Test filecmds-4.1 {pipe tests} { if {![gets $readChan msgBuf]} { set msgBuf "Premature eof on pipe" set cnt $numRecs } set msgBuf } 0 [GenRec $cnt] } close $readChan exit 0 } test pipe-1.1 {pipe tests} { list [catch {pipe x y z} msg] $msg } {1 {wrong # args: pipe ?fileId_var_r fileId_var_w?}} test pipe-1.2 {pipe tests} {unixOnly} { pipe readChan writeChan set pid [PipeChild pipe-1.3 50 $readChan] for {set cnt 0} {$cnt < 50} {incr cnt} { puts $writeChan [GenRec $cnt] } flush $writeChan Test pipe-1.32 {pipe tests} { wait $pid } 0 [list $pid EXIT 0] close $readChan close $writeChan } {} # cleanup ::tcltest::cleanupTests return