diff options
-rw-r--r-- | js/fetch_test.ts | 9 | ||||
-rw-r--r-- | js/os_test.ts | 164 | ||||
-rw-r--r-- | js/unit_tests.ts | 182 |
3 files changed, 177 insertions, 178 deletions
diff --git a/js/fetch_test.ts b/js/fetch_test.ts new file mode 100644 index 000000000..61221b2c4 --- /dev/null +++ b/js/fetch_test.ts @@ -0,0 +1,9 @@ +// Copyright 2018 the Deno authors. All rights reserved. MIT license. +import { test, testPerm, assert, assertEqual } from "./test_util.ts"; +import * as deno from "deno"; + +testPerm({ net: true }, async function fetchJsonSuccess() { + const response = await fetch("http://localhost:4545/package.json"); + const json = await response.json(); + assertEqual(json.name, "deno"); +}); diff --git a/js/os_test.ts b/js/os_test.ts new file mode 100644 index 000000000..7bf1d86a5 --- /dev/null +++ b/js/os_test.ts @@ -0,0 +1,164 @@ +// Copyright 2018 the Deno authors. All rights reserved. MIT license. +import { test, testPerm, assert, assertEqual } from "./test_util.ts"; +import * as deno from "deno"; + +// TODO Add tests for modified, accessed, and created fields once there is a way +// to create temp files. +test(async function statSyncSuccess() { + const packageInfo = deno.statSync("package.json"); + assert(packageInfo.isFile()); + assert(!packageInfo.isSymlink()); + + const testingInfo = deno.statSync("testing"); + assert(testingInfo.isDirectory()); + assert(!testingInfo.isSymlink()); + + const srcInfo = deno.statSync("src"); + assert(srcInfo.isDirectory()); + assert(!srcInfo.isSymlink()); +}); + +test(async function statSyncNotFound() { + let caughtError = false; + let badInfo; + + try { + badInfo = deno.statSync("bad_file_name"); + } catch (err) { + caughtError = true; + // TODO assert(err instanceof deno.NotFound). + assert(err); + assertEqual(err.name, "deno.NotFound"); + } + + assert(caughtError); + assertEqual(badInfo, undefined); +}); + +test(async function lStatSyncSuccess() { + const packageInfo = deno.lStatSync("package.json"); + assert(packageInfo.isFile()); + assert(!packageInfo.isSymlink()); + + const testingInfo = deno.lStatSync("testing"); + assert(!testingInfo.isDirectory()); + assert(testingInfo.isSymlink()); + + const srcInfo = deno.lStatSync("src"); + assert(srcInfo.isDirectory()); + assert(!srcInfo.isSymlink()); +}); + +test(async function lStatSyncNotFound() { + let caughtError = false; + let badInfo; + + try { + badInfo = deno.lStatSync("bad_file_name"); + } catch (err) { + caughtError = true; + // TODO assert(err instanceof deno.NotFound). + assert(err); + assertEqual(err.name, "deno.NotFound"); + } + + assert(caughtError); + assertEqual(badInfo, undefined); +}); + +test(async function readFileSyncSuccess() { + const data = deno.readFileSync("package.json"); + if (!data.byteLength) { + throw Error( + `Expected positive value for data.byteLength ${data.byteLength}` + ); + } + const decoder = new TextDecoder("utf-8"); + const json = decoder.decode(data); + const pkg = JSON.parse(json); + assertEqual(pkg.name, "deno"); +}); + +/* TODO We should be able to catch specific types. +test(function tests_readFileSync_NotFound() { + let caughtError = false; + let data; + try { + data = deno.readFileSync("bad_filename"); + } catch (e) { + caughtError = true; + assert(e instanceof deno.NotFound); + } + assert(caughtError); + assert(data === undefined); +}); +*/ + +testPerm({ write: true }, function writeFileSyncSuccess() { + const enc = new TextEncoder(); + const data = enc.encode("Hello"); + const filename = deno.makeTempDirSync() + "/test.txt"; + deno.writeFileSync(filename, data, 0o666); + const dataRead = deno.readFileSync(filename); + const dec = new TextDecoder("utf-8"); + const actual = dec.decode(dataRead); + assertEqual("Hello", actual); +}); + +// For this test to pass we need --allow-write permission. +// Otherwise it will fail with deno.PermissionDenied instead of deno.NotFound. +testPerm({ write: true }, function writeFileSyncFail() { + const enc = new TextEncoder(); + const data = enc.encode("Hello"); + const filename = "/baddir/test.txt"; + // The following should fail because /baddir doesn't exist (hopefully). + let caughtError = false; + try { + deno.writeFileSync(filename, data); + } catch (e) { + caughtError = true; + // TODO assertEqual(e, deno.NotFound); + assertEqual(e.name, "deno.NotFound"); + } + assert(caughtError); +}); + +testPerm({ write: true }, function makeTempDirSync() { + const dir1 = deno.makeTempDirSync({ prefix: "hello", suffix: "world" }); + const dir2 = deno.makeTempDirSync({ prefix: "hello", suffix: "world" }); + // Check that both dirs are different. + assert(dir1 != dir2); + for (const dir of [dir1, dir2]) { + // Check that the prefix and suffix are applied. + const lastPart = dir.replace(/^.*[\\\/]/, ""); + assert(lastPart.startsWith("hello")); + assert(lastPart.endsWith("world")); + } + // Check that the `dir` option works. + const dir3 = deno.makeTempDirSync({ dir: dir1 }); + assert(dir3.startsWith(dir1)); + assert(/^[\\\/]/.test(dir3.slice(dir1.length))); + // Check that creating a temp dir inside a nonexisting directory fails. + let err; + try { + deno.makeTempDirSync({ dir: "/baddir" }); + } catch (err_) { + err = err_; + } + // TODO assert(err instanceof deno.NotFound). + assert(err); + assertEqual(err.name, "deno.NotFound"); +}); + +test(function makeTempDirSyncPerm() { + // makeTempDirSync should require write permissions (for now). + let err; + try { + deno.makeTempDirSync({ dir: "/baddir" }); + } catch (err_) { + err = err_; + } + // TODO assert(err instanceof deno.PermissionDenied). + assert(err); + assertEqual(err.name, "deno.PermissionDenied"); +}); diff --git a/js/unit_tests.ts b/js/unit_tests.ts index e1b04d4c4..0e877dea6 100644 --- a/js/unit_tests.ts +++ b/js/unit_tests.ts @@ -1,181 +1,7 @@ // Copyright 2018 the Deno authors. All rights reserved. MIT license. -// This test is executed as part of integration_test.go -// But it can also be run manually: -// ./deno tests.ts - -import { test, testPerm, assert, assertEqual } from "./test_util.ts"; -import * as deno from "deno"; - +// This test is executed as part of tools/test.py +// But it can also be run manually: ./out/debug/deno js/unit_tests.ts import "./compiler_test.ts"; import "./console_test.ts"; - -test(async function tests_test() { - assert(true); -}); - -// TODO Add tests for modified, accessed, and created fields once there is a way -// to create temp files. -test(async function statSyncSuccess() { - const packageInfo = deno.statSync("package.json"); - assert(packageInfo.isFile()); - assert(!packageInfo.isSymlink()); - - const testingInfo = deno.statSync("testing"); - assert(testingInfo.isDirectory()); - assert(!testingInfo.isSymlink()); - - const srcInfo = deno.statSync("src"); - assert(srcInfo.isDirectory()); - assert(!srcInfo.isSymlink()); -}) - -test(async function statSyncNotFound() { - let caughtError = false; - let badInfo; - - try { - badInfo = deno.statSync("bad_file_name"); - } catch (err) { - caughtError = true; - // TODO assert(err instanceof deno.NotFound). - assert(err); - assertEqual(err.name, "deno.NotFound"); - } - - assert(caughtError); - assertEqual(badInfo, undefined); -}); - -test(async function lStatSyncSuccess() { - const packageInfo = deno.lStatSync("package.json"); - assert(packageInfo.isFile()); - assert(!packageInfo.isSymlink()); - - const testingInfo = deno.lStatSync("testing"); - assert(!testingInfo.isDirectory()); - assert(testingInfo.isSymlink()); - - const srcInfo = deno.lStatSync("src"); - assert(srcInfo.isDirectory()); - assert(!srcInfo.isSymlink()); -}) - -test(async function lStatSyncNotFound() { - let caughtError = false; - let badInfo; - - try { - badInfo = deno.lStatSync("bad_file_name"); - } catch (err) { - caughtError = true; - // TODO assert(err instanceof deno.NotFound). - assert(err); - assertEqual(err.name, "deno.NotFound"); - } - - assert(caughtError); - assertEqual(badInfo, undefined); -}); - -test(async function tests_readFileSync() { - const data = deno.readFileSync("package.json"); - if (!data.byteLength) { - throw Error( - `Expected positive value for data.byteLength ${data.byteLength}` - ); - } - const decoder = new TextDecoder("utf-8"); - const json = decoder.decode(data); - const pkg = JSON.parse(json); - assertEqual(pkg.name, "deno"); -}); - -/* TODO We should be able to catch specific types. -test(function tests_readFileSync_NotFound() { - let caughtError = false; - let data; - try { - data = deno.readFileSync("bad_filename"); - } catch (e) { - caughtError = true; - assert(e instanceof deno.NotFound); - } - assert(caughtError); - assert(data === undefined); -}); -*/ - -testPerm({ write: true }, function writeFileSync() { - const enc = new TextEncoder(); - const data = enc.encode("Hello"); - const filename = deno.makeTempDirSync() + "/test.txt"; - deno.writeFileSync(filename, data, 0o666); - const dataRead = deno.readFileSync(filename); - const dec = new TextDecoder("utf-8"); - const actual = dec.decode(dataRead); - assertEqual("Hello", actual); -}); - -// For this test to pass we need --allow-write permission. -// Otherwise it will fail with deno.PermissionDenied instead of deno.NotFound. -testPerm({ write: true }, function writeFileSyncFail() { - const enc = new TextEncoder(); - const data = enc.encode("Hello"); - const filename = "/baddir/test.txt"; - // The following should fail because /baddir doesn't exist (hopefully). - let caughtError = false; - try { - deno.writeFileSync(filename, data); - } catch (e) { - caughtError = true; - // TODO assertEqual(e, deno.NotFound); - assertEqual(e.name, "deno.NotFound"); - } - assert(caughtError); -}); - -testPerm({ write: true }, function makeTempDirSync() { - const dir1 = deno.makeTempDirSync({ prefix: "hello", suffix: "world" }); - const dir2 = deno.makeTempDirSync({ prefix: "hello", suffix: "world" }); - // Check that both dirs are different. - assert(dir1 != dir2); - for (const dir of [dir1, dir2]) { - // Check that the prefix and suffix are applied. - const lastPart = dir.replace(/^.*[\\\/]/, ""); - assert(lastPart.startsWith("hello")); - assert(lastPart.endsWith("world")); - } - // Check that the `dir` option works. - const dir3 = deno.makeTempDirSync({ dir: dir1 }); - assert(dir3.startsWith(dir1)); - assert(/^[\\\/]/.test(dir3.slice(dir1.length))); - // Check that creating a temp dir inside a nonexisting directory fails. - let err; - try { - deno.makeTempDirSync({ dir: "/baddir" }); - } catch (err_) { - err = err_; - } - // TODO assert(err instanceof deno.NotFound). - assert(err); - assertEqual(err.name, "deno.NotFound"); -}); - -test(function makeTempDirSyncPerm() { - // makeTempDirSync should require write permissions (for now). - let err; - try { - deno.makeTempDirSync({ dir: "/baddir" }); - } catch (err_) { - err = err_; - } - // TODO assert(err instanceof deno.PermissionDenied). - assert(err); - assertEqual(err.name, "deno.PermissionDenied"); -}); - -testPerm({ net: true }, async function tests_fetch() { - const response = await fetch("http://localhost:4545/package.json"); - const json = await response.json(); - assertEqual(json.name, "deno"); -}); +import "./os_test.ts"; +import "./fetch_test.ts"; |