#~ Copyright 2006 Rene Rivera.
#~ Distributed under the Boost Software License, Version 1.0.
#~ (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)

# TODO: Here we should test for the Windows popen() command unquoting bug but
# that test will have to wait until a better testing framework is implemented.
# To reproduce the bug try executing any command with its first parameter quoted
# and containing spaces and having at least one other quote in the command
# string.
#
# For example:
#
#   "\Long folder name\aaa.exe" --name="Jurko" --no-surname
#
# would get its outermost quotes stripped and would be executed as:
#
#   \Long folder name\aaa.exe" --name="Jurko --no-surname

ECHO --- Testing SHELL builtin... ;

local c = "date" ;
if $(NT) { c = "PATH" ; }

assert ""   : (!=) : [ SHELL $(c) ] ;
assert ""   : (==) : [ SHELL $(c) : no-output ] ;
assert "" 0 : (!=) : [ SHELL $(c) : exit-status ] ;
assert "" 0 : (==) : [ SHELL $(c) : no-output : exit-status ] ;
assert ""   : (!=) : [ COMMAND $(c) ] ;
assert ""   : (==) : [ COMMAND $(c) : no-output ] ;
assert "" 0 : (!=) : [ COMMAND $(c) : exit-status ] ;
assert "" 0 : (==) : [ COMMAND $(c) : no-output : exit-status ] ;
