Skip to content

Commit

Permalink
fix: failing tests on windows (#163)
Browse files Browse the repository at this point in the history
  • Loading branch information
cmorten authored Mar 12, 2022
1 parent fd602be commit a5072bf
Show file tree
Hide file tree
Showing 12 changed files with 76 additions and 42 deletions.
12 changes: 6 additions & 6 deletions .github/API/application.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ The `app` object conventionally denotes the Opine application. Create it by
calling the top-level `opine()` function exported by the Opine module:

```ts
import opine from "https://deno.land/x/[email protected].3/mod.ts";
import opine from "https://deno.land/x/[email protected].4/mod.ts";

const app = opine();

Expand Down Expand Up @@ -69,7 +69,7 @@ sub-app was mounted.
> to a route.
```ts
import opine from "https://deno.land/x/[email protected].3/mod.ts";
import opine from "https://deno.land/x/[email protected].4/mod.ts";

const app = opine(); // the main app
const admin = opine(); // the sub app
Expand Down Expand Up @@ -487,7 +487,7 @@ starts listening for requests - this is provided for legacy reasons to aid in
transitions from Express on Node.

```ts
import opine from "https://deno.land/x/[email protected].3/mod.ts";
import opine from "https://deno.land/x/[email protected].4/mod.ts";

const app = opine();

Expand Down Expand Up @@ -523,7 +523,7 @@ This method is supported for legacy reasons to aid in transitions from Express
on Node.

```ts
import opine from "https://deno.land/x/[email protected].3/mod.ts";
import opine from "https://deno.land/x/[email protected].4/mod.ts";

const app = opine();
const PORT = 3000;
Expand All @@ -542,7 +542,7 @@ starts listening for requests - this is provided for legacy reasons to aid in
transitions from Express on Node.

```ts
import opine from "https://deno.land/x/[email protected].3/mod.ts";
import opine from "https://deno.land/x/[email protected].4/mod.ts";

const app = opine();

Expand All @@ -560,7 +560,7 @@ starts listening for requests - this is provided for legacy reasons to aid in
transitions from Express on Node.

```ts
import opine from "https://deno.land/x/[email protected].3/mod.ts";
import opine from "https://deno.land/x/[email protected].4/mod.ts";

const app = opine();

Expand Down
8 changes: 4 additions & 4 deletions .github/API/middlewares.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ reasons.
> `toString` may not be a function and instead a string or other user-input.
```ts
import { json, opine } from "https://deno.land/x/[email protected].3/mod.ts";
import { json, opine } from "https://deno.land/x/[email protected].4/mod.ts";

const app = opine();

Expand Down Expand Up @@ -77,7 +77,7 @@ reasons.
> recommended.
```ts
import { opine, raw } from "https://deno.land/x/[email protected].3/mod.ts";
import { opine, raw } from "https://deno.land/x/[email protected].4/mod.ts";

const app = opine();

Expand Down Expand Up @@ -230,7 +230,7 @@ reasons.
> recommended.
```ts
import { opine, text } from "https://deno.land/x/[email protected].3/mod.ts";
import { opine, text } from "https://deno.land/x/[email protected].4/mod.ts";

const app = opine();

Expand Down Expand Up @@ -277,7 +277,7 @@ reasons.
> `toString` may not be a function and instead a string or other user-input.
```ts
import { opine, urlencoded } from "https://deno.land/x/[email protected].3/mod.ts";
import { opine, urlencoded } from "https://deno.land/x/[email protected].4/mod.ts";

const app = opine();

Expand Down
4 changes: 2 additions & 2 deletions .github/API/opine.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@ Creates an Opine application. The `opine()` function is a top-level function
exported by the Opine module:

```ts
import opine from "https://deno.land/x/[email protected].3/mod.ts";
import opine from "https://deno.land/x/[email protected].4/mod.ts";

const app = opine();
```

The `opine()` function is also exported as a named export:

```ts
import { opine } from "https://deno.land/x/[email protected].3/mod.ts";
import { opine } from "https://deno.land/x/[email protected].4/mod.ts";

const app = opine();
```
4 changes: 2 additions & 2 deletions .github/API/request.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ import {
json,
opine,
urlencoded,
} from "https://deno.land/x/[email protected].3/mod.ts";
} from "https://deno.land/x/[email protected].4/mod.ts";

const app = opine();

Expand All @@ -118,7 +118,7 @@ The following example shows how to implement your own simple body-parsing
middleware to transform `req.body` into a raw string:

```ts
import opine from "https://deno.land/x/[email protected].3/mod.ts";
import opine from "https://deno.land/x/[email protected].4/mod.ts";

import { readAll } from "https://deno.land/[email protected]/streams/conversion.ts";

Expand Down
4 changes: 2 additions & 2 deletions .github/API/router.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Opine has a top-level named function export `Router()` that creates a new
`router` object.

```ts
import { Router } from "https://deno.land/x/[email protected].3/mod.ts";
import { Router } from "https://deno.land/x/[email protected].4/mod.ts";

const router = Router(options);
```
Expand Down Expand Up @@ -260,7 +260,7 @@ function defined and work their way "down" the middleware stack processing for
each path they match.

```ts
import opine, { Router } from "https://deno.land/x/[email protected].3/mod.ts";
import opine, { Router } from "https://deno.land/x/[email protected].4/mod.ts";

const app = opine();
const router = Router();
Expand Down
5 changes: 5 additions & 0 deletions .github/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# ChangeLog

## [2.1.4] - 12-03-2022

- fix: handle new OS error thrown for long filenames on windows
- test: compensate for WebSocket messages fired after close resulting in leaking timer ops

## [2.1.3] - 12-03-2022

- deps: support Deno `1.19.3`, std `0.129.0`, and other minor dep upgrades.
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ Fast, minimalist web framework for <a href="https://deno.land/">Deno</a> ported
## Getting Started

```ts
import { opine } from "https://deno.land/x/[email protected].3/mod.ts";
import { opine } from "https://deno.land/x/[email protected].4/mod.ts";

const app = opine();

Expand All @@ -65,14 +65,14 @@ Before importing, [download and install Deno](https://deno.land/#installation).
You can then import Opine straight into your project:

```ts
import { opine } from "https://deno.land/x/[email protected].3/mod.ts";
import { opine } from "https://deno.land/x/[email protected].4/mod.ts";
```

Opine is also available on [nest.land](https://nest.land/package/opine), a
package registry for Deno on the Blockchain.

```ts
import { opine } from "https://x.nest.land/[email protected].3/mod.ts";
import { opine } from "https://x.nest.land/[email protected].4/mod.ts";
```

## Features
Expand Down
6 changes: 3 additions & 3 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ <h2>Table of Contents</h2>
<a href="#getting-started" id="getting-started" style="color: inherit; text-decoration: none;">
<h2>Getting Started</h2>
</a>
<pre><code class="language-ts"><span class="hljs-keyword">import</span> { opine } <span class="hljs-keyword">from</span> <span class="hljs-string">&quot;https://deno.land/x/[email protected].3/mod.ts&quot;</span>;
<pre><code class="language-ts"><span class="hljs-keyword">import</span> { opine } <span class="hljs-keyword">from</span> <span class="hljs-string">&quot;https://deno.land/x/[email protected].4/mod.ts&quot;</span>;

<span class="hljs-keyword">const</span> app = opine();

Expand All @@ -125,11 +125,11 @@ <h2>Installation</h2>
repo and via the <a href="https://deno.land/x">Deno Registry</a>.</p>
<p>Before importing, <a href="https://deno.land/#installation">download and install Deno</a>.</p>
<p>You can then import Opine straight into your project:</p>
<pre><code class="language-ts"><span class="hljs-keyword">import</span> { opine } <span class="hljs-keyword">from</span> <span class="hljs-string">&quot;https://deno.land/x/[email protected].3/mod.ts&quot;</span>;
<pre><code class="language-ts"><span class="hljs-keyword">import</span> { opine } <span class="hljs-keyword">from</span> <span class="hljs-string">&quot;https://deno.land/x/[email protected].4/mod.ts&quot;</span>;
</code></pre>
<p>Opine is also available on <a href="https://nest.land/package/opine">nest.land</a>, a
package registry for Deno on the Blockchain.</p>
<pre><code class="language-ts"><span class="hljs-keyword">import</span> { opine } <span class="hljs-keyword">from</span> <span class="hljs-string">&quot;https://x.nest.land/[email protected].3/mod.ts&quot;</span>;
<pre><code class="language-ts"><span class="hljs-keyword">import</span> { opine } <span class="hljs-keyword">from</span> <span class="hljs-string">&quot;https://x.nest.land/[email protected].4/mod.ts&quot;</span>;
</code></pre>
<a href="#features" id="features" style="color: inherit; text-decoration: none;">
<h2>Features</h2>
Expand Down
2 changes: 1 addition & 1 deletion egg.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "opine",
"description": "Fast, minimalist web framework for Deno ported from ExpressJS.",
"version": "2.1.3",
"version": "2.1.4",
"repository": "https://github.com/cmorten/opine",
"stable": true,
"checkFormat": false,
Expand Down
2 changes: 1 addition & 1 deletion src/utils/send.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ const MAX_MAXAGE = 60 * 60 * 24 * 365 * 1000; // 1 year
const UP_PATH_REGEXP = /(?:^|[\\/])\.\.(?:[\\/]|$)/;

const ENOENT_REGEXP = /\(os error 2\)/;
const ENAMETOOLONG_REGEXP = /\(os error 63\)|\(os error 36\)/;
const ENAMETOOLONG_REGEXP = /\(os error 63\)|\(os error 36\)|\(os error 123\)/;

/**
* Normalize the index option into an array.
Expand Down
63 changes: 46 additions & 17 deletions test/units/req.upgrade.test.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,39 @@
import { opine } from "../../mod.ts";
import { expect } from "../deps.ts";
import { deferred, expect } from "../deps.ts";
import { describe, it } from "../utils.ts";

describe("req", function () {
describe(".upgrade", function () {
it("should upgrade websocket requests", function (done) {
it("should upgrade websocket requests", async function (done) {
let serverSocket: WebSocket;

const clientSocketClosedDeferred = deferred();
const clientSocketPingedDeferred = deferred();
const clientSocketPongedDeferred = deferred();
const serverSocketClosedDeferred = deferred();
const serverSocketPingedDeferred = deferred();
const serverSocketPongedDeferred = deferred();

const handleSocket = (socket: WebSocket) => {
serverSocket = socket;

socket.addEventListener("open", () => {
serverSocket.addEventListener("close", () => {
serverSocketClosedDeferred.resolve();
});

serverSocket.addEventListener("open", () => {
console.log("[server]: ping");
socket.send("ping");
serverSocket.send("ping");
serverSocketPingedDeferred.resolve();
});

socket.addEventListener("message", (e) => {
serverSocket.addEventListener("message", (e) => {
if (e.data === "ping") {
console.log("[server]: pong");
socket.send("pong");
serverSocket.send("pong");
serverSocketPongedDeferred.resolve();
} else if (e.data === "pong") {
serverSocket.close();
}
});
};
Expand All @@ -35,31 +50,45 @@ describe("req", function () {

const server = app.listen(3000);

const socket = new WebSocket("ws://localhost:3000/ws");
const clientSocket = new WebSocket("ws://localhost:3000/ws");

clientSocket.addEventListener("close", () => {
clientSocketClosedDeferred.resolve();
});

socket.addEventListener("open", () => {
clientSocket.addEventListener("open", () => {
console.log("[client]: ping");
socket.send("ping");
clientSocket.send("ping");
clientSocketPingedDeferred.resolve();
});

socket.addEventListener("message", (e) => {
clientSocket.addEventListener("message", (e) => {
if (e.data === "ping") {
console.log("[client]: pong");
socket.send("pong");
clientSocket.send("pong");
clientSocketPongedDeferred.resolve();
} else if (e.data === "pong") {
socket.close();
serverSocket.close();
server.close();

done();
clientSocket.close();
} else {
done(new Error("unexpected message"));
}
});

socket.addEventListener("error", (e) => {
clientSocket.addEventListener("error", (e) => {
done(e);
});

await Promise.all([
clientSocketPingedDeferred,
clientSocketPongedDeferred,
serverSocketPingedDeferred,
serverSocketPongedDeferred,
serverSocketClosedDeferred,
clientSocketClosedDeferred,
]);

server.close();
done();
});
});
});
2 changes: 1 addition & 1 deletion version.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
* Version of Opine.
*/
export const VERSION = "2.1.3";
export const VERSION = "2.1.4";

/**
* Supported version of Deno.
Expand Down

0 comments on commit a5072bf

Please sign in to comment.