Skip to content

Commit

Permalink
test: browser+node testing
Browse files Browse the repository at this point in the history
  • Loading branch information
SgtPooki committed Feb 6, 2024
1 parent c36f167 commit 466e828
Show file tree
Hide file tree
Showing 7 changed files with 319 additions and 257 deletions.
65 changes: 64 additions & 1 deletion .aegir.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,50 @@
import { dirname, join } from 'node:path'
import { createReadStream } from 'node:fs';
import { fileURLToPath } from 'node:url';
import * as http from 'node:http';
import getPort from 'aegir/get-port'

const __dirname = dirname(fileURLToPath(import.meta.url));

// create an http server that will host the fixture data files. When receiving a request for a fileName, it will return './src/fixtures/data/${fileName}'
async function createFixtureServer() {
const port = await getPort(3333)
const fixturesDataFolder = join(__dirname, 'fixture')
const server = await new Promise((resolve, _reject) => {
const s = http.createServer(async (req, res) => {
// Set CORS headers
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Request-Method', '*');
res.setHeader('Access-Control-Allow-Methods', 'OPTIONS, GET');
res.setHeader('Access-Control-Allow-Headers', '*');
if ( req.method === 'OPTIONS' ) {
res.writeHead(200);
res.end();
return;
}
const fileName = req.url?.split('/').pop()
if (fileName) {
try {
createReadStream(join(fixturesDataFolder, fileName)).pipe(res)
res.writeHead(200, {'Content-Type': 'application/octet-stream'})
} catch (e) {
console.error(e)
res.writeHead(500, e.message)
res.end()
}
} else {
res.writeHead(404)
res.end()
}
}).listen(port, () => resolve(s))
})

return {
server,
port
}
}

/** @type {import('aegir').PartialOptions} */
export default {
build: {
Expand All @@ -15,6 +62,22 @@ export default {
'test.js',
'**/*.test-d.ts',
'**/*.spec.[tj]s',
'test/**'
]
}
},
test: {
async before(_options) {
const { server: httpServer, port: httpPort } = await createFixtureServer()
return {
env: {
FIXTURE_DATA_SERVER: `http://127.0.0.1:${httpPort}`
},
httpServer
}
},
after: async (_options, {httpServer}) => {
await httpServer.closeAllConnections()
await httpServer.close()
}
},
}
8 changes: 7 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,13 @@
"lint": "aegir lint",
"lint:fix": "aegir lint --fix",
"release": "aegir release",
"test": "npm run build && ava --fail-fast",
"test": "aegir test",
"test:chrome": "aegir test -t browser --cov",
"test:chrome-webworker": "aegir test -t webworker",
"test:firefox": "aegir test -t browser -- --browser firefox",
"test:firefox-webworker": "aegir test -t webworker -- --browser firefox",
"test:node": "aegir test -t node --cov",
"test:electron-main": "aegir test -t electron-main",
"test:tsd": "tsd"
},
"eslintConfig": {
Expand Down
7 changes: 4 additions & 3 deletions src/basic-token-type.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import * as ieee754 from 'ieee754'
import type { IToken, IGetToken } from '@tokenizer/token'
import { bufferToString } from './buffer-dataview-tools.js'
// import { Buffer } from 'node:buffer';

// Primitive types
Expand Down Expand Up @@ -431,8 +432,8 @@ export class BufferType implements IGetToken<Uint8Array, Buffer> {
public constructor (public len: number) {
}

public get (uint8Array: Uint8Array, off: number): Buffer {
return Buffer.from(uint8Array.subarray(off, off + this.len))
public get (uint8Array: Uint8Array, off: number): Uint8Array {
return uint8Array.subarray(off, off + this.len)
}
}

Expand All @@ -444,7 +445,7 @@ export class StringType implements IGetToken<string, Buffer> {
}

public get (uint8Array: Uint8Array, offset: number): string {
return Buffer.from(uint8Array).toString(this.encoding, offset, offset + this.len)
return bufferToString(uint8Array, this.encoding, offset, offset + this.len)
}
}

Expand Down
11 changes: 2 additions & 9 deletions src/core.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,9 @@ function _check (buffer, headers, options) {
offset: 0,
...options
}
// console.group('_check')
// console.log('options: ', options)
// console.log('headers: ', headers)

let result = true
for (const [index, header] of headers.entries()) {
// console.log('index: ', index)
// console.log('header: ', header)
// If a bitmask is set
if (options.mask) {
// If header doesn't equal `buf` with bits masked off
Expand All @@ -51,8 +46,6 @@ function _check (buffer, headers, options) {
break
}
}
// console.log('result: ', result)
// console.groupEnd()

return result
}
Expand Down Expand Up @@ -1234,7 +1227,7 @@ export class FileTypeParser {
// ASF_Header_Object first 80 bytes
if (this.check([0x30, 0x26, 0xB2, 0x75, 0x8E, 0x66, 0xCF, 0x11, 0xA6, 0xD9])) {
async function readHeader () {
const guid = Buffer.alloc(16)
const guid = alloc(16)
await tokenizer.readBuffer(guid)
return {
id: guid,
Expand All @@ -1249,7 +1242,7 @@ export class FileTypeParser {
let payload = header.size - 24
if (_check(header.id, [0x91, 0x07, 0xDC, 0xB7, 0xB7, 0xA9, 0xCF, 0x11, 0x8E, 0xE6, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65])) {
// Sync on Stream-Properties-Object (B7DC0791-A9B7-11CF-8EE6-00C00C205365)
const typeId = Buffer.alloc(16)
const typeId = alloc(16)
payload -= await tokenizer.readBuffer(typeId)

if (_check(typeId, [0x40, 0x9E, 0x69, 0xF8, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B])) {
Expand Down
Loading

0 comments on commit 466e828

Please sign in to comment.