Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 0 additions & 8 deletions src/encoding/ascii.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,3 @@ describe('ASCII', () => {
).toBe('ASCII');
});
});

describe('ASCII', () => {
it('should return ASCII', () => {
expect(
chardet.detectFileSync(__dirname + '/../test/data/encodings/shortascii', { sampleSize: 32 }),
).toBe('ASCII');
});
});
10 changes: 10 additions & 0 deletions src/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,16 @@ describe('chardet', () => {
const res = await chardet.detectFile(path, { sampleSize: 32, offset: 64 });
expect(res).toBe('UTF-8');
});

it('should work as expected with sampleSize larger than actual file size (1)', async () => {
const res = await chardet.detectFile(path, { sampleSize: 1024 * 1024 });
expect(res).toBe('UTF-8');
});

it('should work as expected with sampleSize larger than actual file size (2)', async () => {
const res = await chardet.detectFile(__dirname + '/test/data/encodings/koi8r', { sampleSize: 1024 * 1024 });
expect(res).toBe('KOI8-R');
});
});

describe('#detectFileSync', () => {
Expand Down
17 changes: 10 additions & 7 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -103,27 +103,30 @@ export const detectFile = (
let fd: any;
const fs = loadFs();

const handler = (err: Error | null | undefined, buffer: Buffer) => {
const handler = (err: Error | null, buffer: Buffer | null) => {
if (fd) {
fs.closeSync(fd);
}

if (err) {
reject(err);
} else {
} else if (buffer) {
resolve(detect(buffer));
} else {
reject(new Error('No error and no buffer received'));
}
};

if (opts && opts.sampleSize) {
const sampleSize = opts?.sampleSize || 0;
if (sampleSize > 0) {
fd = fs.openSync(filepath, 'r');
let sample = Buffer.allocUnsafe(opts.sampleSize);
let sample = Buffer.allocUnsafe(sampleSize);

fs.read(fd, sample, 0, opts.sampleSize, opts.offset, (err: NodeJS.ErrnoException | null, bytesRead: number, buffer: Buffer) => {
fs.read(fd, sample, 0, sampleSize, opts.offset, (err: NodeJS.ErrnoException | null, bytesRead: number) => {
if (err) {
handler(err);
handler(err, null);
} else {
if (bytesRead < opts.sampleSize!) {
if (bytesRead < sampleSize) {
sample = sample.subarray(0, bytesRead);
}
handler(null, sample);
Expand Down
1 change: 0 additions & 1 deletion src/test/data/encodings/shortascii

This file was deleted.