first commit

This commit is contained in:
2025-10-10 18:00:07 -04:00
commit 06b59a3a99
3786 changed files with 571590 additions and 0 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
+175
View File
@@ -0,0 +1,175 @@
/*
Test
テスト用の書庫ファイル ./example.rar をコピーして使う。
example-encrypted.rarは暗号化されているだけで中身は同じ。
example.rar [
example [
hoge.txt,
foo [
bar.txt
],
empty []
]
]
*/
// Modules
// import console from 'console-wrapper';
import Test from '@honeo/test';
import {unrar, list} from '../index.mjs';
import path from 'path';
import fse from 'fs-extra';
import {is, not, any} from '@honeo/check';
// Var
const obj_options = {
chtmpdir: true,
console: true,
exit: true,
tmpdirOrigin: './test/contents'
}
// console.enable();
Test([
async function(){
console.log('unrar(rar, cwd)');
const dirPath = await unrar('example.rar', './');
return is.true(
dirPath===process.cwd(),
await fse.exists('example'),
await fse.exists('example/hoge.txt')
);
},
async function(){
console.log('unrar(buf, cwd)');
const arraybuffer = Uint8Array.from(
await fse.readFile('example.rar')
).buffer;
const dirPath = await unrar(arraybuffer, './');
return is.true(
dirPath===process.cwd(),
await fse.exists('example'),
await fse.exists('example/hoge.txt')
);
},
async function(){
console.log('unrar(rar, NotExistDir)');
const dirPath = await unrar('example.rar', 'output');
console.log(
);
return is.true(
dirPath===path.join(process.cwd(), 'output'),
await fse.exists('./output/example/hoge.txt')
);
},
async function(){
console.log('unrar(rar, cwd) - case overwrite skip');
await unrar('example.rar', './');
const stats_before = await fse.stat('example/hoge.txt');
await unrar('example.rar', './');
const stats_after = await fse.stat('example/hoge.txt');
return stats_before.atimeMs===stats_after.atimeMs;
},
// Atom内臓Node.js(v14)だと何故かコケる
async function(){
console.log('unrar(rar, cwd, {overwrite: true})');
await unrar('example.rar', './');
const stats_before = await fse.stat('example/hoge.txt');
await unrar('example.rar', './', {overwrite: true});
const stats_after = await fse.stat('example/hoge.txt');
return stats_before.atimeMs!==stats_after.atimeMs;
},
async function(){
console.log('unrar(rar, cwd, {filter(){}}) - through');
let count = 0;
await unrar('example.rar', './', {
filter({path, type}){
count++;
if( !is.str(path, type) ){
throw new Error('filter');
}
}
});
return count===5
},
async function(){
console.log('unrar(rar, cwd, {filter(){}}) - dir only');
await unrar('example.rar', './', {
filter({path, type}){
return type==='directory';
}
});
return is.false(
await fse.exists('example/foo/bar.txt'),
await fse.exists('example/hoge.txt')
);
},
async function(){
console.log('unrar(rar-encrypted, cwd, {password})');
const dirPath = await unrar(
'example-encrypted.rar',
'./',
{password: 'password'}
);
return is.true(
dirPath===process.cwd(),
await fse.exists('example-encrypted/hoge.txt'),
await fse.exists('example-encrypted/foo/bar.txt'),
await fse.exists('example-encrypted/empty')
);
},
async function(){
console.log('list(rar)');
const arr = await list('example.rar');
return arr.length===5;
},
async function(){
console.log('list(buf)');
const arraybuffer = Uint8Array.from(
await fse.readFile('example.rar')
).buffer;
const arr = await list(arraybuffer);
return arr.length===5;
},
async function(){
console.log('list(rar-encrypted, {password}');
const arr = await list(
'example-encrypted.rar',
{password: 'password'}
);
return arr.length===5;
},
async function(){
console.log('list(rar) - 日本語パスを含む書庫');
const arr = await list('CP932.rar');
return is.true(
is.arr(arr),
arr.length===2,
arr[0].path==='ディレクトリ',
arr[1].path===path.normalize('ディレクトリ/テキストファイル.txt')
);
}
], obj_options);