From 4bf895db711f3d4d229d3f18fbb2145cce2a73af Mon Sep 17 00:00:00 2001 From: bptato Date: Thu, 15 Aug 2024 19:11:49 +0200 Subject: xhr: more progress * add responseText, response * add net tests -> currently sync XHR only; should find a way to do async tests... * update monoucha -> simplified & updated some related code that no longer worked properly --- test/net/all.expected | 1 + test/net/asserts.js | 1 + test/net/config.toml | 12 ++++++++++++ test/net/ping | 1 + test/net/run.nim | 47 +++++++++++++++++++++++++++++++++++++++++++++++ test/net/run.sh | 17 +++++++++++++++++ test/net/xhr.html | 20 ++++++++++++++++++++ 7 files changed, 99 insertions(+) create mode 100644 test/net/all.expected create mode 120000 test/net/asserts.js create mode 100644 test/net/config.toml create mode 100644 test/net/ping create mode 100644 test/net/run.nim create mode 100755 test/net/run.sh create mode 100644 test/net/xhr.html (limited to 'test/net') diff --git a/test/net/all.expected b/test/net/all.expected new file mode 100644 index 00000000..35821117 --- /dev/null +++ b/test/net/all.expected @@ -0,0 +1 @@ +Success diff --git a/test/net/asserts.js b/test/net/asserts.js new file mode 120000 index 00000000..8471bc87 --- /dev/null +++ b/test/net/asserts.js @@ -0,0 +1 @@ +../asserts.js \ No newline at end of file diff --git a/test/net/config.toml b/test/net/config.toml new file mode 100644 index 00000000..ce723641 --- /dev/null +++ b/test/net/config.toml @@ -0,0 +1,12 @@ +[buffer] +scripting = true + +[display] +columns = 80 +lines = 24 +pixels-per-column = 9 +pixels-per-line = 18 +force-columns = true +force-lines = true +force-pixels-per-column = true +force-pixels-per-line = true diff --git a/test/net/ping b/test/net/ping new file mode 100644 index 00000000..8e554694 --- /dev/null +++ b/test/net/ping @@ -0,0 +1 @@ +pong diff --git a/test/net/run.nim b/test/net/run.nim new file mode 100644 index 00000000..d27bbef3 --- /dev/null +++ b/test/net/run.nim @@ -0,0 +1,47 @@ +import std/asyncdispatch +import std/asynchttpserver +import std/os +import std/posix + +import utils/twtstr + +proc cb(req: Request) {.async.} = + const headers = {"Content-type": "text/html; charset=utf-8"} + if req.url.path == "/stop": + await req.respond(Http200, "", headers.newHttpHeaders()) + quit(0) + let s = readFile(req.url.path.after('/')) + #echo (req.reqMethod, req.url.path, req.headers) + await req.respond(Http200, s, headers.newHttpHeaders()) + +proc runServer(server: AsyncHttpServer) {.async.} = + while true: + if server.shouldAcceptRequest(): + await server.acceptRequest(cb) + else: + # too many concurrent connections, `maxFDs` exceeded + # wait 500ms for FDs to be closed + await sleepAsync(500) + +proc main() {.async.} = + var server = newAsyncHttpServer() + if paramCount() >= 1 and paramStr(1) == "-x": + server.listen(Port(8000)) + await server.runServer() + quit(0) + server.listen(Port(0)) + let port = server.getPort() + case fork() + of 0: + let cmd = getAppFileName().beforeLast('/') & "/run.sh " & $uint16(port) + discard execl("/bin/sh", "sh", "-c", cstring(cmd), nil) + quit(1) + of -1: + stderr.write("Failed to start run.sh") + quit(1) + else: + await server.runServer() + var x: cint + quit(WEXITSTATUS(wait(addr x))) + +waitFor main() diff --git a/test/net/run.sh b/test/net/run.sh new file mode 100755 index 00000000..1ea90e3a --- /dev/null +++ b/test/net/run.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +if ! test "$CHA" +then test -f ../../cha && CHA=../../cha || CHA=cha +fi + +failed=0 +for h in *.html +do printf '%s\r' "$h" + if ! "$CHA" -dC config.toml "http://localhost:$1/$h" | diff all.expected - + then failed=$(($failed+1)) + printf 'FAIL: %s\n' "$h" + fi +done +printf '\n' +$CHA -d "http://localhost:$1/stop" >/dev/null +exit "$failed" diff --git a/test/net/xhr.html b/test/net/xhr.html new file mode 100644 index 00000000..2d034772 --- /dev/null +++ b/test/net/xhr.html @@ -0,0 +1,20 @@ + +onclick setter/getter +
Fail
+ + -- cgit 1.4.1-2-gfad0