Skip to content

Commit

Permalink
BREAKING: remove custom implementation of Deno.Buffer.toString() (den…
Browse files Browse the repository at this point in the history
…oland/deno#4992)

Keep in mind Buffer.toString() still exists, but returns [object Object]. 

Reason for removal of Buffer.toString() was that it implicitly used 
TextDecoder with fixed "utf-8" encoding and no way to customize 
the encoding.
  • Loading branch information
bartlomieju authored and caspervonb committed Jan 24, 2021
1 parent 3a7f926 commit e1ae29f
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 13 deletions.
9 changes: 6 additions & 3 deletions http/io_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ test("chunkedBodyReader", async () => {
await dest.write(buf.subarray(0, len));
}
const exp = "aaabbbbbcccccccccccdddddddddddddddddddddd";
assertEquals(dest.toString(), exp);
assertEquals(new TextDecoder().decode(dest.bytes()), exp);
});

test("chunkedBodyReader with trailers", async () => {
Expand Down Expand Up @@ -133,7 +133,10 @@ test("writeTrailer", async () => {
new Headers({ "transfer-encoding": "chunked", trailer: "deno,node" }),
new Headers({ deno: "land", node: "js" })
);
assertEquals(w.toString(), "deno: land\r\nnode: js\r\n\r\n");
assertEquals(
new TextDecoder().decode(w.bytes()),
"deno: land\r\nnode: js\r\n\r\n"
);
});

test("writeTrailer should throw", async () => {
Expand Down Expand Up @@ -336,7 +339,7 @@ test("writeResponse with trailer", async () => {
body,
trailers: () => new Headers({ deno: "land", node: "js" }),
});
const ret = w.toString();
const ret = new TextDecoder().decode(w.bytes());
const exp = [
"HTTP/1.1 200 OK",
"transfer-encoding: chunked",
Expand Down
2 changes: 1 addition & 1 deletion http/server_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ test("responseWrite", async function (): Promise<void> {
request.conn = mockConn();

await request.respond(testCase.response);
assertEquals(buf.toString(), testCase.raw);
assertEquals(new TextDecoder().decode(buf.bytes()), testCase.raw);
await request.done;
}
});
Expand Down
4 changes: 2 additions & 2 deletions io/ioutil_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,15 +76,15 @@ Deno.test("testCopyN1", async function (): Promise<void> {
const r = stringsReader("abcdefghij");
const n = await copyN(r, w, 3);
assertEquals(n, 3);
assertEquals(w.toString(), "abc");
assertEquals(new TextDecoder().decode(w.bytes()), "abc");
});

Deno.test("testCopyN2", async function (): Promise<void> {
const w = new Buffer();
const r = stringsReader("abcdefghij");
const n = await copyN(r, w, 11);
assertEquals(n, 10);
assertEquals(w.toString(), "abcdefghij");
assertEquals(new TextDecoder().decode(w.bytes()), "abcdefghij");
});

Deno.test("copyNWriteAllData", async function (): Promise<void> {
Expand Down
2 changes: 1 addition & 1 deletion mime/multipart.ts
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@ export class MultipartReader {
if (maxValueBytes < 0) {
throw new RangeError("message too large");
}
const value = buf.toString();
const value = new TextDecoder().decode(buf.bytes());
valueMap.set(p.formName, value);
continue;
}
Expand Down
18 changes: 12 additions & 6 deletions ws/test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ test("[ws] read unmasked text frame", async () => {
const frame = await readFrame(buf);
assertEquals(frame.opcode, OpCode.TextFrame);
assertEquals(frame.mask, undefined);
assertEquals(new Buffer(frame.payload).toString(), "Hello");
const actual = new TextDecoder().decode(new Buffer(frame.payload).bytes());
assertEquals(actual, "Hello");
assertEquals(frame.isLastFrame, true);
});

Expand All @@ -57,7 +58,8 @@ test("[ws] read masked text frame", async () => {
const frame = await readFrame(buf);
assertEquals(frame.opcode, OpCode.TextFrame);
unmask(frame.payload, frame.mask);
assertEquals(new Buffer(frame.payload).toString(), "Hello");
const actual = new TextDecoder().decode(new Buffer(frame.payload).bytes());
assertEquals(actual, "Hello");
assertEquals(frame.isLastFrame, true);
});

Expand All @@ -72,12 +74,14 @@ test("[ws] read unmasked split text frames", async () => {
assertEquals(f1.isLastFrame, false);
assertEquals(f1.mask, undefined);
assertEquals(f1.opcode, OpCode.TextFrame);
assertEquals(new Buffer(f1.payload).toString(), "Hel");
const actual1 = new TextDecoder().decode(new Buffer(f1.payload).bytes());
assertEquals(actual1, "Hel");

assertEquals(f2.isLastFrame, true);
assertEquals(f2.mask, undefined);
assertEquals(f2.opcode, OpCode.Continue);
assertEquals(new Buffer(f2.payload).toString(), "lo");
const actual2 = new TextDecoder().decode(new Buffer(f2.payload).bytes());
assertEquals(actual2, "lo");
});

test("[ws] read unmasked ping / pong frame", async () => {
Expand All @@ -87,15 +91,17 @@ test("[ws] read unmasked ping / pong frame", async () => {
);
const ping = await readFrame(buf);
assertEquals(ping.opcode, OpCode.Ping);
assertEquals(new Buffer(ping.payload).toString(), "Hello");
const actual1 = new TextDecoder().decode(new Buffer(ping.payload).bytes());
assertEquals(actual1, "Hello");
// prettier-ignore
const pongFrame= [0x8a, 0x85, 0x37, 0xfa, 0x21, 0x3d, 0x7f, 0x9f, 0x4d, 0x51, 0x58]
const buf2 = new BufReader(new Buffer(new Uint8Array(pongFrame)));
const pong = await readFrame(buf2);
assertEquals(pong.opcode, OpCode.Pong);
assert(pong.mask !== undefined);
unmask(pong.payload, pong.mask);
assertEquals(new Buffer(pong.payload).toString(), "Hello");
const actual2 = new TextDecoder().decode(new Buffer(pong.payload).bytes());
assertEquals(actual2, "Hello");
});

test("[ws] read unmasked big binary frame", async () => {
Expand Down

0 comments on commit e1ae29f

Please sign in to comment.