summaryrefslogtreecommitdiff
path: root/http/file_server_test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'http/file_server_test.ts')
-rw-r--r--http/file_server_test.ts65
1 files changed, 39 insertions, 26 deletions
diff --git a/http/file_server_test.ts b/http/file_server_test.ts
index bd00d749b..f8b2429b0 100644
--- a/http/file_server_test.ts
+++ b/http/file_server_test.ts
@@ -1,23 +1,29 @@
-import { readFile } from "deno";
+import { readFile, run } from "deno";
import { test, assert, assertEqual } from "../testing/mod.ts";
+import { BufReader } from "../io/bufio.ts";
+import { TextProtoReader } from "../textproto/mod.ts";
-// Promise to completeResolve when all tests completes
-let completeResolve;
-export const completePromise = new Promise(res => (completeResolve = res));
-let completedTestCount = 0;
-
-function maybeCompleteTests() {
- completedTestCount++;
- // Change this when adding more tests
- if (completedTestCount === 3) {
- completeResolve();
- }
+let fileServer;
+async function startFileServer() {
+ fileServer = run({
+ args: ["deno", "--allow-net", "http/file_server.ts", ".", "--cors"],
+ stdout: "piped"
+ });
+ // Once fileServer is ready it will write to its stdout.
+ const r = new TextProtoReader(new BufReader(fileServer.stdout));
+ const [s, err] = await r.readLine();
+ assert(err == null);
+ assert(s.includes("server listening"));
+}
+function killFileServer() {
+ fileServer.close();
+ fileServer.stdout.close();
}
-export function runTests(serverReadyPromise: Promise<any>) {
- test(async function serveFile() {
- await serverReadyPromise;
+test(async function serveFile() {
+ await startFileServer();
+ try {
const res = await fetch("http://localhost:4500/azure-pipelines.yml");
assert(res.headers.has("access-control-allow-origin"));
assert(res.headers.has("access-control-allow-headers"));
@@ -27,25 +33,32 @@ export function runTests(serverReadyPromise: Promise<any>) {
await readFile("./azure-pipelines.yml")
);
assertEqual(downloadedFile, localFile);
- maybeCompleteTests();
- });
+ } finally {
+ killFileServer();
+ }
+});
- test(async function serveDirectory() {
- await serverReadyPromise;
+test(async function serveDirectory() {
+ await startFileServer();
+ try {
const res = await fetch("http://localhost:4500/");
assert(res.headers.has("access-control-allow-origin"));
assert(res.headers.has("access-control-allow-headers"));
const page = await res.text();
assert(page.includes("azure-pipelines.yml"));
- maybeCompleteTests();
- });
+ } finally {
+ killFileServer();
+ }
+});
- test(async function serveFallback() {
- await serverReadyPromise;
+test(async function serveFallback() {
+ await startFileServer();
+ try {
const res = await fetch("http://localhost:4500/badfile.txt");
assert(res.headers.has("access-control-allow-origin"));
assert(res.headers.has("access-control-allow-headers"));
assertEqual(res.status, 404);
- maybeCompleteTests();
- });
-}
+ } finally {
+ killFileServer();
+ }
+});