test: improve test coverage of internal/blob

PR-URL: https://github.com/nodejs/node/pull/41513
Refs: https://coverage.nodejs.org/coverage-74b9baa4265a8f0d/lib/internal/blob.js.html
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Daijiro Wachi <daijiro.wachi@gmail.com>
This commit is contained in:
Yoshiki Kurihara
2022-04-15 07:19:57 +09:00
committed by GitHub
parent 76e7170a40
commit 1285ac116d
2 changed files with 50 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
// Flags: --no-warnings
'use strict';
const common = require('../common');
const assert = require('assert');
const { Blob } = require('buffer');
if (common.isFreeBSD)
common.skip('Oversized buffer make the FreeBSD CI runner crash');
try {
new Blob([new Uint8Array(0xffffffff), [1]]);
} catch (e) {
if (
e.message === 'Array buffer allocation failed' ||
e.message === 'Invalid typed array length: 4294967295'
) {
common.skip(
'Insufficient memory on this platform for oversized buffer test.'
);
} else {
assert.strictEqual(e.code, 'ERR_BUFFER_TOO_LARGE');
}
}

View File

@@ -198,6 +198,8 @@ assert.throws(() => new Blob({}), {
const b = new Blob();
assert.strictEqual(inspect(b, { depth: null }),
'Blob { size: 0, type: \'\' }');
assert.strictEqual(inspect(b, { depth: 1 }),
'Blob { size: 0, type: \'\' }');
assert.strictEqual(inspect(b, { depth: -1 }), '[Blob]');
}
@@ -230,6 +232,30 @@ assert.throws(() => new Blob({}), {
});
}
{
assert.throws(() => Reflect.get(Blob.prototype, 'type', {}), {
code: 'ERR_INVALID_THIS',
});
assert.throws(() => Reflect.get(Blob.prototype, 'size', {}), {
code: 'ERR_INVALID_THIS',
});
assert.throws(() => Blob.prototype.slice(Blob.prototype, 0, 1), {
code: 'ERR_INVALID_THIS',
});
assert.throws(() => Blob.prototype.stream.call(), {
code: 'ERR_INVALID_THIS',
});
}
(async () => {
assert.rejects(async () => Blob.prototype.arrayBuffer.call(), {
code: 'ERR_INVALID_THIS',
});
assert.rejects(async () => Blob.prototype.text.call(), {
code: 'ERR_INVALID_THIS',
});
})().then(common.mustCall());
(async () => {
const blob = new Blob([
new Uint8Array([0x50, 0x41, 0x53, 0x53]),