io: fix some temp-file uses in tests.
							parent
							
								
									9a8f35c23b
								
							
						
					
					
						commit
						68b0f7d0f0
					
				| 
						 | 
				
			
			@ -1,141 +1,130 @@
 | 
			
		|||
USING: io.files io.files.temp io.directories io.sockets io kernel threads
 | 
			
		||||
namespaces tools.test continuations strings byte-arrays
 | 
			
		||||
sequences prettyprint system io.encodings.binary io.encodings.ascii
 | 
			
		||||
io.streams.duplex destructors make io.launcher ;
 | 
			
		||||
IN: io.backend.unix.tests
 | 
			
		||||
 | 
			
		||||
! Unix domain stream sockets
 | 
			
		||||
: socket-server ( -- path ) "unix-domain-socket-test" temp-file ;
 | 
			
		||||
USING: byte-arrays destructors io io.directories
 | 
			
		||||
io.encodings.ascii io.encodings.binary io.files io.files.temp
 | 
			
		||||
io.files.unique io.launcher io.sockets io.streams.duplex kernel
 | 
			
		||||
make namespaces prettyprint sequences strings system threads
 | 
			
		||||
tools.test ;
 | 
			
		||||
 | 
			
		||||
[
 | 
			
		||||
    [ socket-server delete-file ] ignore-errors
 | 
			
		||||
 | 
			
		||||
    socket-server <local>
 | 
			
		||||
    ascii <server> [
 | 
			
		||||
        accept drop [
 | 
			
		||||
            "Hello world" print flush
 | 
			
		||||
            readln "XYZ" = "FOO" "BAR" ? print flush
 | 
			
		||||
        ] with-stream
 | 
			
		||||
    ] with-disposal
 | 
			
		||||
 | 
			
		||||
    socket-server delete-file
 | 
			
		||||
] "Test" spawn drop
 | 
			
		||||
 | 
			
		||||
yield
 | 
			
		||||
 | 
			
		||||
{ { "Hello world" "FOO" } } [
 | 
			
		||||
    [
 | 
			
		||||
        socket-server <local> ascii [
 | 
			
		||||
            readln ,
 | 
			
		||||
            "XYZ" print flush
 | 
			
		||||
            readln ,
 | 
			
		||||
        ] with-client
 | 
			
		||||
    ] { } make
 | 
			
		||||
] unit-test
 | 
			
		||||
        [
 | 
			
		||||
            "socket-server" <local>
 | 
			
		||||
            ascii <server> [
 | 
			
		||||
                accept drop [
 | 
			
		||||
                    "Hello world" print flush
 | 
			
		||||
                    readln "XYZ" = "FOO" "BAR" ? print flush
 | 
			
		||||
                ] with-stream
 | 
			
		||||
            ] with-disposal
 | 
			
		||||
 | 
			
		||||
: datagram-server ( -- path ) "unix-domain-datagram-test" temp-file ;
 | 
			
		||||
: datagram-client ( -- path ) "unix-domain-datagram-test-2" temp-file ;
 | 
			
		||||
            "socket-server" delete-file
 | 
			
		||||
        ] "Test" spawn drop
 | 
			
		||||
 | 
			
		||||
! Unix domain datagram sockets
 | 
			
		||||
[ datagram-server delete-file ] ignore-errors
 | 
			
		||||
[ datagram-client delete-file ] ignore-errors
 | 
			
		||||
        yield
 | 
			
		||||
 | 
			
		||||
[
 | 
			
		||||
    datagram-server <local> <datagram> "d" [
 | 
			
		||||
        { { "Hello world" "FOO" } } [
 | 
			
		||||
            [
 | 
			
		||||
                "socket-server" <local> ascii [
 | 
			
		||||
                    readln ,
 | 
			
		||||
                    "XYZ" print flush
 | 
			
		||||
                    readln ,
 | 
			
		||||
                ] with-client
 | 
			
		||||
            ] { } make
 | 
			
		||||
        ] unit-test
 | 
			
		||||
 | 
			
		||||
        "Receive 1" print
 | 
			
		||||
        ! Unix domain datagram sockets
 | 
			
		||||
        [
 | 
			
		||||
            "datagram-server" <local> <datagram> "d" [
 | 
			
		||||
 | 
			
		||||
        "d" get receive [ reverse ] dip
 | 
			
		||||
                "Receive 1" print
 | 
			
		||||
 | 
			
		||||
        "Send 1" print
 | 
			
		||||
        dup .
 | 
			
		||||
                "d" get receive [ reverse ] dip
 | 
			
		||||
 | 
			
		||||
        "d" get send
 | 
			
		||||
                "Send 1" print
 | 
			
		||||
                dup .
 | 
			
		||||
 | 
			
		||||
        "Receive 2" print
 | 
			
		||||
                "d" get send
 | 
			
		||||
 | 
			
		||||
        "d" get receive [ " world" append ] dip
 | 
			
		||||
                "Receive 2" print
 | 
			
		||||
 | 
			
		||||
        "Send 1" print
 | 
			
		||||
        dup .
 | 
			
		||||
                "d" get receive [ " world" append ] dip
 | 
			
		||||
 | 
			
		||||
         "d" get send
 | 
			
		||||
                "Send 1" print
 | 
			
		||||
                dup .
 | 
			
		||||
 | 
			
		||||
        "d" get dispose
 | 
			
		||||
                 "d" get send
 | 
			
		||||
 | 
			
		||||
        "Done" print
 | 
			
		||||
                "d" get dispose
 | 
			
		||||
 | 
			
		||||
        datagram-server delete-file
 | 
			
		||||
    ] with-variable
 | 
			
		||||
] "Test" spawn drop
 | 
			
		||||
                "Done" print
 | 
			
		||||
 | 
			
		||||
yield
 | 
			
		||||
                "datagram-server" delete-file
 | 
			
		||||
            ] with-variable
 | 
			
		||||
        ] "Test" spawn drop
 | 
			
		||||
 | 
			
		||||
[ datagram-client delete-file ] ignore-errors
 | 
			
		||||
        yield
 | 
			
		||||
 | 
			
		||||
{ } [ datagram-client <local> <datagram> "d" set ] unit-test
 | 
			
		||||
        { } [ "datagram-client" <local> <datagram> "d" set ] unit-test
 | 
			
		||||
 | 
			
		||||
{ } [
 | 
			
		||||
    "hello" >byte-array
 | 
			
		||||
    datagram-server <local>
 | 
			
		||||
    "d" get send
 | 
			
		||||
] unit-test
 | 
			
		||||
        { } [
 | 
			
		||||
            "hello" >byte-array
 | 
			
		||||
            "datagram-server" <local>
 | 
			
		||||
            "d" get send
 | 
			
		||||
        ] unit-test
 | 
			
		||||
 | 
			
		||||
{ "olleh" t } [
 | 
			
		||||
    "d" get receive
 | 
			
		||||
    datagram-server <local> =
 | 
			
		||||
    [ >string ] dip
 | 
			
		||||
] unit-test
 | 
			
		||||
        { "olleh" t } [
 | 
			
		||||
            "d" get receive
 | 
			
		||||
            "datagram-server" <local> =
 | 
			
		||||
            [ >string ] dip
 | 
			
		||||
        ] unit-test
 | 
			
		||||
 | 
			
		||||
{ } [
 | 
			
		||||
    "hello" >byte-array
 | 
			
		||||
    datagram-server <local>
 | 
			
		||||
    "d" get send
 | 
			
		||||
] unit-test
 | 
			
		||||
        { } [
 | 
			
		||||
            "hello" >byte-array
 | 
			
		||||
            "datagram-server" <local>
 | 
			
		||||
            "d" get send
 | 
			
		||||
        ] unit-test
 | 
			
		||||
 | 
			
		||||
{ "hello world" t } [
 | 
			
		||||
    "d" get receive
 | 
			
		||||
    datagram-server <local> =
 | 
			
		||||
    [ >string ] dip
 | 
			
		||||
] unit-test
 | 
			
		||||
        { "hello world" t } [
 | 
			
		||||
            "d" get receive
 | 
			
		||||
            "datagram-server" <local> =
 | 
			
		||||
            [ >string ] dip
 | 
			
		||||
        ] unit-test
 | 
			
		||||
 | 
			
		||||
{ } [ "d" get dispose ] unit-test
 | 
			
		||||
        { } [ "d" get dispose ] unit-test
 | 
			
		||||
 | 
			
		||||
! Test error behavior
 | 
			
		||||
: another-datagram ( -- path ) "unix-domain-datagram-test-3" temp-file ;
 | 
			
		||||
        ! Test error behavior
 | 
			
		||||
 | 
			
		||||
[ another-datagram delete-file ] ignore-errors
 | 
			
		||||
        "datagram-client" delete-file
 | 
			
		||||
 | 
			
		||||
datagram-client delete-file
 | 
			
		||||
        { } [ "datagram-client" <local> <datagram> "d" set ] unit-test
 | 
			
		||||
 | 
			
		||||
{ } [ datagram-client <local> <datagram> "d" set ] unit-test
 | 
			
		||||
        [ B{ 1 2 3 } "another-datagram" <local> "d" get send ] must-fail
 | 
			
		||||
 | 
			
		||||
[ B{ 1 2 3 } another-datagram <local> "d" get send ] must-fail
 | 
			
		||||
        { } [ "d" get dispose ] unit-test
 | 
			
		||||
 | 
			
		||||
{ } [ "d" get dispose ] unit-test
 | 
			
		||||
        ! See what happens on send/receive after close
 | 
			
		||||
 | 
			
		||||
! See what happens on send/receive after close
 | 
			
		||||
        [ "d" get receive ] must-fail
 | 
			
		||||
 | 
			
		||||
[ "d" get receive ] must-fail
 | 
			
		||||
        [ B{ 1 2 } "datagram-server" <local> "d" get send ] must-fail
 | 
			
		||||
 | 
			
		||||
[ B{ 1 2 } datagram-server <local> "d" get send ] must-fail
 | 
			
		||||
        ! Invalid parameter tests
 | 
			
		||||
 | 
			
		||||
! Invalid parameter tests
 | 
			
		||||
        [
 | 
			
		||||
            image-path binary [ input-stream get accept ] with-file-reader
 | 
			
		||||
        ] must-fail
 | 
			
		||||
 | 
			
		||||
[
 | 
			
		||||
    image-path binary [ input-stream get accept ] with-file-reader
 | 
			
		||||
] must-fail
 | 
			
		||||
        [
 | 
			
		||||
            image-path binary [ input-stream get receive ] with-file-reader
 | 
			
		||||
        ] must-fail
 | 
			
		||||
 | 
			
		||||
[
 | 
			
		||||
    image-path binary [ input-stream get receive ] with-file-reader
 | 
			
		||||
] must-fail
 | 
			
		||||
        [
 | 
			
		||||
            image-path binary [
 | 
			
		||||
                B{ 1 2 } "datagram-server" <local>
 | 
			
		||||
                input-stream get send
 | 
			
		||||
            ] with-file-reader
 | 
			
		||||
        ] must-fail
 | 
			
		||||
 | 
			
		||||
[
 | 
			
		||||
    image-path binary [
 | 
			
		||||
        B{ 1 2 } datagram-server <local>
 | 
			
		||||
        input-stream get send
 | 
			
		||||
    ] with-file-reader
 | 
			
		||||
] must-fail
 | 
			
		||||
    ] cleanup-unique-directory
 | 
			
		||||
] with-temp-directory
 | 
			
		||||
 | 
			
		||||
! closing stdin caused some problems
 | 
			
		||||
{ } [
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,82 +1,88 @@
 | 
			
		|||
USING: accessors arrays bootstrap.image calendar
 | 
			
		||||
concurrency.promises continuations debugger.unix destructors io
 | 
			
		||||
io.backend.unix io.directories io.encodings.ascii
 | 
			
		||||
io.encodings.binary io.encodings.utf8 io.files io.files.temp
 | 
			
		||||
io.launcher io.launcher.unix io.pathnames io.streams.duplex
 | 
			
		||||
io.timeouts kernel libc locals math namespaces sequences
 | 
			
		||||
threads tools.test unix unix.process ;
 | 
			
		||||
USING: accessors calendar concurrency.promises continuations
 | 
			
		||||
debugger.unix destructors io io.backend.unix io.directories
 | 
			
		||||
io.encodings.ascii io.encodings.binary io.encodings.utf8
 | 
			
		||||
io.files io.files.temp io.files.unique io.launcher
 | 
			
		||||
io.launcher.unix io.streams.duplex io.timeouts kernel libc
 | 
			
		||||
locals math namespaces sequences threads tools.test unix.process
 | 
			
		||||
;
 | 
			
		||||
IN: io.launcher.unix.tests
 | 
			
		||||
 | 
			
		||||
: arch-temp-file ( str -- str' )
 | 
			
		||||
    "-" my-arch-name 3append temp-file ;
 | 
			
		||||
 | 
			
		||||
{ } [
 | 
			
		||||
    [ "launcher-test-1" arch-temp-file delete-file ] ignore-errors
 | 
			
		||||
] unit-test
 | 
			
		||||
[
 | 
			
		||||
    [
 | 
			
		||||
        { } [ { "touch" "launcher-test-1" } try-process ] unit-test
 | 
			
		||||
 | 
			
		||||
{ } [
 | 
			
		||||
    "touch"
 | 
			
		||||
    "launcher-test-1" arch-temp-file
 | 
			
		||||
    2array
 | 
			
		||||
    try-process
 | 
			
		||||
] unit-test
 | 
			
		||||
        { t } [ "launcher-test-1" exists? ] unit-test
 | 
			
		||||
 | 
			
		||||
{ t } [ "launcher-test-1" arch-temp-file exists? ] unit-test
 | 
			
		||||
        { } [
 | 
			
		||||
            [ "launcher-test-1" delete-file ] ignore-errors
 | 
			
		||||
        ] unit-test
 | 
			
		||||
 | 
			
		||||
{ } [
 | 
			
		||||
    [ "launcher-test-1" arch-temp-file delete-file ] ignore-errors
 | 
			
		||||
] unit-test
 | 
			
		||||
 | 
			
		||||
{ } [
 | 
			
		||||
    <process>
 | 
			
		||||
        "echo Hello" >>command
 | 
			
		||||
        "launcher-test-1" arch-temp-file >>stdout
 | 
			
		||||
    try-process
 | 
			
		||||
] unit-test
 | 
			
		||||
 | 
			
		||||
{ "Hello\n" } [
 | 
			
		||||
    "cat"
 | 
			
		||||
    "launcher-test-1" arch-temp-file
 | 
			
		||||
    2array
 | 
			
		||||
    ascii <process-reader> stream-contents
 | 
			
		||||
] unit-test
 | 
			
		||||
 | 
			
		||||
{ } [
 | 
			
		||||
    [ "launcher-test-1" arch-temp-file delete-file ] ignore-errors
 | 
			
		||||
] unit-test
 | 
			
		||||
 | 
			
		||||
{ } [
 | 
			
		||||
    <process>
 | 
			
		||||
        "cat" >>command
 | 
			
		||||
        +closed+ >>stdin
 | 
			
		||||
        "launcher-test-1" arch-temp-file >>stdout
 | 
			
		||||
    try-process
 | 
			
		||||
] unit-test
 | 
			
		||||
 | 
			
		||||
{ "" } [
 | 
			
		||||
    "cat"
 | 
			
		||||
    "launcher-test-1" arch-temp-file
 | 
			
		||||
    2array
 | 
			
		||||
    ascii <process-reader> stream-contents
 | 
			
		||||
] unit-test
 | 
			
		||||
 | 
			
		||||
{ } [
 | 
			
		||||
    2 [
 | 
			
		||||
        "launcher-test-1" arch-temp-file binary <file-appender> [
 | 
			
		||||
        { } [
 | 
			
		||||
            <process>
 | 
			
		||||
                swap >>stdout
 | 
			
		||||
                "echo Hello" >>command
 | 
			
		||||
                "launcher-test-1" >>stdout
 | 
			
		||||
            try-process
 | 
			
		||||
        ] with-disposal
 | 
			
		||||
    ] times
 | 
			
		||||
] unit-test
 | 
			
		||||
        ] unit-test
 | 
			
		||||
 | 
			
		||||
{ "Hello\nHello\n" } [
 | 
			
		||||
    "cat"
 | 
			
		||||
    "launcher-test-1" arch-temp-file
 | 
			
		||||
    2array
 | 
			
		||||
    ascii <process-reader> stream-contents
 | 
			
		||||
] unit-test
 | 
			
		||||
        { "Hello\n" } [
 | 
			
		||||
            { "cat" "launcher-test-1" }
 | 
			
		||||
            ascii <process-reader> stream-contents
 | 
			
		||||
        ] unit-test
 | 
			
		||||
 | 
			
		||||
        { } [
 | 
			
		||||
            [ "launcher-test-1" delete-file ] ignore-errors
 | 
			
		||||
        ] unit-test
 | 
			
		||||
 | 
			
		||||
        { } [
 | 
			
		||||
            <process>
 | 
			
		||||
                "cat" >>command
 | 
			
		||||
                +closed+ >>stdin
 | 
			
		||||
                "launcher-test-1" >>stdout
 | 
			
		||||
            try-process
 | 
			
		||||
        ] unit-test
 | 
			
		||||
 | 
			
		||||
        { "" } [
 | 
			
		||||
            { "cat" "launcher-test-1" }
 | 
			
		||||
            ascii <process-reader> stream-contents
 | 
			
		||||
        ] unit-test
 | 
			
		||||
 | 
			
		||||
        { } [
 | 
			
		||||
            2 [
 | 
			
		||||
                "launcher-test-1" binary <file-appender> [
 | 
			
		||||
                    <process>
 | 
			
		||||
                        swap >>stdout
 | 
			
		||||
                        "echo Hello" >>command
 | 
			
		||||
                    try-process
 | 
			
		||||
                ] with-disposal
 | 
			
		||||
            ] times
 | 
			
		||||
        ] unit-test
 | 
			
		||||
 | 
			
		||||
        { "Hello\nHello\n" } [
 | 
			
		||||
            { "cat" "launcher-test-1" }
 | 
			
		||||
            ascii <process-reader> stream-contents
 | 
			
		||||
        ] unit-test
 | 
			
		||||
 | 
			
		||||
        { "hi\n" } [
 | 
			
		||||
            <process>
 | 
			
		||||
                { "echo" "hi" } >>command
 | 
			
		||||
                "launcher-test-2" >>stdout
 | 
			
		||||
            try-process
 | 
			
		||||
            "launcher-test-2" utf8 file-contents
 | 
			
		||||
        ] unit-test
 | 
			
		||||
 | 
			
		||||
        { "hi\nhi\n" } [
 | 
			
		||||
            2 [
 | 
			
		||||
                <process>
 | 
			
		||||
                    "echo hi" >>command
 | 
			
		||||
                    "launcher-test-3" <appender> >>stdout
 | 
			
		||||
                try-process
 | 
			
		||||
            ] times
 | 
			
		||||
            "launcher-test-3" utf8 file-contents
 | 
			
		||||
        ] unit-test
 | 
			
		||||
 | 
			
		||||
    ] cleanup-unique-directory
 | 
			
		||||
] with-temp-directory
 | 
			
		||||
 | 
			
		||||
{ t } [
 | 
			
		||||
    <process>
 | 
			
		||||
| 
						 | 
				
			
			@ -94,31 +100,10 @@ IN: io.launcher.unix.tests
 | 
			
		|||
    ascii <process-reader> stream-lines
 | 
			
		||||
] unit-test
 | 
			
		||||
 | 
			
		||||
{ "hi\n" } [
 | 
			
		||||
    [
 | 
			
		||||
        [ "aloha" delete-file ] ignore-errors
 | 
			
		||||
        <process>
 | 
			
		||||
            { "echo" "hi" } >>command
 | 
			
		||||
            "aloha" >>stdout
 | 
			
		||||
        try-process
 | 
			
		||||
        "aloha" utf8 file-contents
 | 
			
		||||
    ] with-temp-directory
 | 
			
		||||
{ t } [
 | 
			
		||||
    "ls" utf8 <process-stream> stream-contents >boolean
 | 
			
		||||
] unit-test
 | 
			
		||||
 | 
			
		||||
[ "append-test" arch-temp-file delete-file ] ignore-errors
 | 
			
		||||
 | 
			
		||||
{ "hi\nhi\n" } [
 | 
			
		||||
    2 [
 | 
			
		||||
        <process>
 | 
			
		||||
            "echo hi" >>command
 | 
			
		||||
            "append-test" arch-temp-file <appender> >>stdout
 | 
			
		||||
        try-process
 | 
			
		||||
    ] times
 | 
			
		||||
    "append-test" arch-temp-file utf8 file-contents
 | 
			
		||||
] unit-test
 | 
			
		||||
 | 
			
		||||
{ t } [ "ls" utf8 <process-stream> stream-contents >boolean ] unit-test
 | 
			
		||||
 | 
			
		||||
{ "Hello world.\n" } [
 | 
			
		||||
    "cat" utf8 <process-stream> [
 | 
			
		||||
        "Hello world.\n" write
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue