mirror of https://github.com/nealey/eris.git
New fnord bug, add another test
This commit is contained in:
parent
e15c2d40a4
commit
90a0d5efa1
|
@ -64,8 +64,7 @@ if [ ! -d default ]; then
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
echo 'Content-type: text/plain'
|
echo 'Content-type: text/plain'
|
||||||
ls / > /dev/null # delay a little
|
ls / > /dev/null # delay a little
|
||||||
echo
|
set
|
||||||
echo james
|
|
||||||
EOD
|
EOD
|
||||||
chmod +x default/a.cgi
|
chmod +x default/a.cgi
|
||||||
mkdir empty:80
|
mkdir empty:80
|
||||||
|
@ -118,6 +117,10 @@ title "HTTP/1.1 default keepalive"
|
||||||
title "RFC 850 Date"
|
title "RFC 850 Date"
|
||||||
printf 'GET / HTTP/1.0\r\nIf-Modified-Since: Thursday, 27-Feb-30 12:12:12 GMT\r\n\r\n' | $HTTPD 2>/dev/null | grep -q '304 Not Changed' && pass || fail
|
printf 'GET / HTTP/1.0\r\nIf-Modified-Since: Thursday, 27-Feb-30 12:12:12 GMT\r\n\r\n' | $HTTPD 2>/dev/null | grep -q '304 Not Changed' && pass || fail
|
||||||
|
|
||||||
|
# 9. Should set PATH_INFO to /; instead sets it to /index.html
|
||||||
|
title "PATH_INFO=/"
|
||||||
|
printf 'GET /a.cgi/ HTTP/1.0\r\n\r\n' | $HTTPD_CGI 2>/dev/null | grep -Eq 'PATH_INFO=.?/.?$' && pass || fail
|
||||||
|
|
||||||
cat <<EOD
|
cat <<EOD
|
||||||
-----------------------------------------
|
-----------------------------------------
|
||||||
$successes of $tests tests passed ($failures failed).
|
$successes of $tests tests passed ($failures failed).
|
||||||
|
|
23
test.sh
23
test.sh
|
@ -37,6 +37,7 @@ d () {
|
||||||
mkdir -p default
|
mkdir -p default
|
||||||
echo james > default/index.html
|
echo james > default/index.html
|
||||||
touch default/a
|
touch default/a
|
||||||
|
|
||||||
cat <<'EOD' > default/a.cgi
|
cat <<'EOD' > default/a.cgi
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
echo 'Content-type: text/plain'
|
echo 'Content-type: text/plain'
|
||||||
|
@ -44,6 +45,16 @@ echo
|
||||||
set | sort
|
set | sort
|
||||||
EOD
|
EOD
|
||||||
chmod +x default/a.cgi
|
chmod +x default/a.cgi
|
||||||
|
|
||||||
|
cat <<'EOD' > default/mongo.cgi
|
||||||
|
#! /bin/sh
|
||||||
|
echo 'Content-type: application/octet-stream'
|
||||||
|
echo
|
||||||
|
dd if=/dev/zero bs=1000 count=800 2>/dev/null
|
||||||
|
echo 'james'
|
||||||
|
EOD
|
||||||
|
chmod +x default/mongo.cgi
|
||||||
|
|
||||||
mkdir -p default/empty
|
mkdir -p default/empty
|
||||||
mkdir -p default/subdir
|
mkdir -p default/subdir
|
||||||
touch default/subdir/a
|
touch default/subdir/a
|
||||||
|
@ -171,6 +182,8 @@ printf 'GET /a.cgi/merf HTTP/1.0\r\n\r\n' | $HTTPD_CGI 2>/dev/null | grep -Eq '^
|
||||||
title "SERVER_PROTOCOL"
|
title "SERVER_PROTOCOL"
|
||||||
printf 'GET /a.cgi HTTP/1.0\r\n\r\n' | $HTTPD_CGI 2>/dev/null | d | grep -Eq '%SERVER_PROTOCOL=.?HTTP/1.0[^#%]?%[^#%]' && pass || fail
|
printf 'GET /a.cgi HTTP/1.0\r\n\r\n' | $HTTPD_CGI 2>/dev/null | d | grep -Eq '%SERVER_PROTOCOL=.?HTTP/1.0[^#%]?%[^#%]' && pass || fail
|
||||||
|
|
||||||
|
title "Large response"
|
||||||
|
printf 'GET /mongo.cgi HTTP/1.0\r\n\r\n' | $HTTPD_CGI 2>/dev/null | grep -q james && pass || fail
|
||||||
|
|
||||||
H "fnord bugs"
|
H "fnord bugs"
|
||||||
|
|
||||||
|
@ -186,6 +199,7 @@ printf 'GET /a.cgi HTTP/1.0\r\n\r\n' | $HTTPD_CGI 2>/dev/null | d | grep -q '#%#
|
||||||
title "Multiple requests in one packet"
|
title "Multiple requests in one packet"
|
||||||
printf 'GET / HTTP/1.1\r\nHost: a\r\nConnection: keep-alive\r\n\r\nGET / HTTP/1.1\r\nHost: a\r\nConnection: keep-alive\r\n\r\n' | $HTTPD 2>/dev/null | grep -c '^HTTP/1.' | grep -q 2 && pass || fail
|
printf 'GET / HTTP/1.1\r\nHost: a\r\nConnection: keep-alive\r\n\r\nGET / HTTP/1.1\r\nHost: a\r\nConnection: keep-alive\r\n\r\n' | $HTTPD 2>/dev/null | grep -c '^HTTP/1.' | grep -q 2 && pass || fail
|
||||||
|
|
||||||
|
## Skip: eris ignores Accept header (fnord does too, as this bug demonstrates)
|
||||||
# 4. Should return 406 Not Acceptable; instead ignores Accept header
|
# 4. Should return 406 Not Acceptable; instead ignores Accept header
|
||||||
#title "Accept header"
|
#title "Accept header"
|
||||||
#printf 'GET / HTTP/1.0\r\nAccept: nothing\r\n\r\n' | $HTTPD 2>/dev/null | grep 406 && pass || fail
|
#printf 'GET / HTTP/1.0\r\nAccept: nothing\r\n\r\n' | $HTTPD 2>/dev/null | grep 406 && pass || fail
|
||||||
|
@ -196,6 +210,7 @@ title "Second MIME-Type"
|
||||||
ls / > /dev/null # Delay required to work around test #3
|
ls / > /dev/null # Delay required to work around test #3
|
||||||
printf 'GET /a HTTP/1.1\r\nHost: a\r\nConnection: keep-alive\r\n\r\n') | $HTTPD 2>/dev/null | grep -q 'text/plain\|application/octet-stream' && pass || fail
|
printf 'GET /a HTTP/1.1\r\nHost: a\r\nConnection: keep-alive\r\n\r\n') | $HTTPD 2>/dev/null | grep -q 'text/plain\|application/octet-stream' && pass || fail
|
||||||
|
|
||||||
|
## Skip: eris doesn't allow POST to static HTML
|
||||||
# 6. Should consume POST data; instead tries to read POST data as second request
|
# 6. Should consume POST data; instead tries to read POST data as second request
|
||||||
#title "POST to static HTML"
|
#title "POST to static HTML"
|
||||||
#(printf 'POST / HTTP/1.1\r\nHost: a\r\nConnection: keep-alive\r\nContent-Type: text/plain\r\nContent-Length: 1\r\n\r\n';
|
#(printf 'POST / HTTP/1.1\r\nHost: a\r\nConnection: keep-alive\r\nContent-Type: text/plain\r\nContent-Length: 1\r\n\r\n';
|
||||||
|
@ -208,6 +223,14 @@ title "HTTP/1.1 default keepalive"
|
||||||
ls / >/dev/null
|
ls / >/dev/null
|
||||||
printf 'GET / HTTP/1.1\r\nHost: a\r\n\r\n') | $HTTPD 2>/dev/null | grep -c '^HTTP/' | grep -q 2 && pass || fail
|
printf 'GET / HTTP/1.1\r\nHost: a\r\n\r\n') | $HTTPD 2>/dev/null | grep -c '^HTTP/' | grep -q 2 && pass || fail
|
||||||
|
|
||||||
|
# 8. Should parse "Thursday"; instead assumes all day names are 6 characters long
|
||||||
|
title "RFC 850 Date"
|
||||||
|
printf 'GET / HTTP/1.0\r\nIf-Modified-Since: Thursday, 27-Feb-30 12:12:12 GMT\r\n\r\n' | $HTTPD 2>/dev/null | grep -q '304 Not Changed' && pass || fail
|
||||||
|
|
||||||
|
# 9. Should set PATH_INFO to /; instead sets it to /index.html
|
||||||
|
title "PATH_INFO=/"
|
||||||
|
printf 'GET /a.cgi/ HTTP/1.0\r\n\r\n' | $HTTPD_CGI 2>/dev/null | grep -Eq 'PATH_INFO=.?/.?$' && pass || fail
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo
|
echo
|
||||||
echo "$successes of $tests tests passed ($failures failed)."
|
echo "$successes of $tests tests passed ($failures failed)."
|
||||||
|
|
Loading…
Reference in New Issue