first commit
This commit is contained in:
+175
@@ -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);
|
||||
Reference in New Issue
Block a user