mirror of
https://github.com/HeyPuter/puter.git
synced 2026-01-05 20:50:22 -06:00
227 lines
7.3 KiB
JavaScript
227 lines
7.3 KiB
JavaScript
const { expect } = require("chai");
|
|
const { verify_fsentry } = require("./fsentry");
|
|
|
|
module.exports = {
|
|
name: 'batch',
|
|
do: async t => {
|
|
let results;
|
|
/*
|
|
await t.case('batch write', async () => {
|
|
results = null;
|
|
results = await t.batch('/batch/write', [
|
|
{
|
|
path: t.resolve('test_1.txt'),
|
|
overwrite: true,
|
|
},
|
|
{
|
|
path: t.resolve('test_3.txt'),
|
|
}
|
|
], [
|
|
'first file',
|
|
'second file',
|
|
])
|
|
console.log('results?', results)
|
|
expect(results.length).equal(2);
|
|
for ( const result of results ) {
|
|
await verify_fsentry(t, result)
|
|
}
|
|
});
|
|
t.case('batch mkdir', async () => {
|
|
results = null;
|
|
results = await t.batch_json('batch/mkdir', [
|
|
{
|
|
path: t.resolve('test_1_dir'),
|
|
overwrite: true,
|
|
},
|
|
{
|
|
path: t.resolve('test_3_dir'),
|
|
}
|
|
])
|
|
expect(results.length).equal(2);
|
|
for ( const result of results ) {
|
|
await verify_fsentry(t, result)
|
|
}
|
|
});
|
|
*/
|
|
await t.case('3-3 nested directores', async () => {
|
|
results = null;
|
|
results = await t.batch('batch', [
|
|
{
|
|
op: 'mktree',
|
|
parent: t.cwd,
|
|
tree: [
|
|
'a/b/c',
|
|
[
|
|
'a/b/c',
|
|
['a/b/c'],
|
|
['d/e/f'],
|
|
['g/h/i'],
|
|
['j/k/l'],
|
|
],
|
|
[
|
|
'd/e/f',
|
|
['a/b/c'],
|
|
['d/e/f'],
|
|
['g/h/i'],
|
|
['j/k/l'],
|
|
],
|
|
[
|
|
'g/h/i',
|
|
['a/b/c'],
|
|
['d/e/f'],
|
|
['g/h/i'],
|
|
['j/k/l'],
|
|
],
|
|
[
|
|
'j/k/l',
|
|
['a/b/c'],
|
|
['d/e/f'],
|
|
['g/h/i'],
|
|
['j/k/l'],
|
|
],
|
|
]
|
|
}
|
|
], []);
|
|
});
|
|
await t.case('path reference resolution', async () => {
|
|
results = null;
|
|
results = await t.batch('batch', [
|
|
{
|
|
op: 'mkdir',
|
|
as: 'dest_1',
|
|
path: t.resolve('q/w'),
|
|
create_missing_parents: true,
|
|
},
|
|
{
|
|
op: 'mkdir',
|
|
as: 'dest_2',
|
|
path: t.resolve('q/w'), // "q/w (1)"
|
|
dedupe_name: true,
|
|
create_missing_parents: true,
|
|
},
|
|
{
|
|
op: 'write',
|
|
path: t.resolve('$dest_1/file_1.txt'),
|
|
},
|
|
{
|
|
op: 'write',
|
|
path: t.resolve('$dest_2/file_2.txt'),
|
|
},
|
|
], [
|
|
'file 1 contents',
|
|
'file 2 contents',
|
|
]);
|
|
console.log('res?', results)
|
|
expect(results.length).equal(4);
|
|
expect(results[0].name).equal('w');
|
|
expect(results[1].name).equal('w (1)');
|
|
expect(results[2].path).equal(t.resolve('q/w/file_1.txt'));
|
|
expect(results[3].path).equal(t.resolve('q/w (1)/file_2.txt'));
|
|
});
|
|
|
|
await t.case('batch mkdir and write', async () => {
|
|
results = null;
|
|
results = await t.batch('batch', [
|
|
{
|
|
op: 'mkdir',
|
|
path: t.resolve('test_x_1_dir'),
|
|
overwrite: true,
|
|
},
|
|
{
|
|
op: 'write',
|
|
path: t.resolve('test_x_1.txt'),
|
|
},
|
|
{
|
|
op: 'mkdir',
|
|
path: t.resolve('test_x_2_dir'),
|
|
},
|
|
{
|
|
op: 'write',
|
|
path: t.resolve('test_x_2.txt'),
|
|
}
|
|
], [
|
|
'first file',
|
|
'second file',
|
|
]);
|
|
console.log('res?', results)
|
|
expect(results.length).equal(4);
|
|
for ( const result of results ) {
|
|
// await verify_fsentry(t, result)
|
|
}
|
|
});
|
|
|
|
await t.case('path reference resolution (without dedupe)', async () => {
|
|
results = null;
|
|
results = await t.batch('batch', [
|
|
{
|
|
op: 'mkdir',
|
|
as: 'dest_1',
|
|
path: t.resolve('q/w'),
|
|
create_missing_parents: true,
|
|
},
|
|
{
|
|
op: 'write',
|
|
path: t.resolve('$dest_1/file_1.txt'),
|
|
},
|
|
], [
|
|
'file 1 contents',
|
|
]);
|
|
console.log('res?', results)
|
|
expect(results.length).equal(2);
|
|
expect(results[0].name).equal('w');
|
|
expect(results[1].path).equal(t.resolve('q/w/file_1.txt'));
|
|
});
|
|
|
|
// Test for path reference resolution
|
|
await t.case('path reference resolution', async () => {
|
|
results = null;
|
|
results = await t.batch('batch', [
|
|
{
|
|
op: 'mkdir',
|
|
as: 'dest_1',
|
|
path: t.resolve('q/w'),
|
|
create_missing_parents: true,
|
|
},
|
|
{
|
|
op: 'mkdir',
|
|
as: 'dest_2',
|
|
path: t.resolve('q/w'), // "q/w (1)"
|
|
dedupe_name: true,
|
|
create_missing_parents: true,
|
|
},
|
|
{
|
|
op: 'write',
|
|
path: t.resolve('$dest_1/file_1.txt'),
|
|
},
|
|
{
|
|
op: 'write',
|
|
path: t.resolve('$dest_2/file_2.txt'),
|
|
},
|
|
], [
|
|
'file 1 contents',
|
|
'file 2 contents',
|
|
]);
|
|
console.log('res?', results)
|
|
expect(results.length).equal(4);
|
|
expect(results[0].name).equal('w');
|
|
expect(results[1].name).equal('w (1)');
|
|
expect(results[2].path).equal(t.resolve('q/w/file_1.txt'));
|
|
expect(results[3].path).equal(t.resolve('q/w (1)/file_2.txt'));
|
|
});
|
|
|
|
// Test for a single write
|
|
await t.case('single write', async () => {
|
|
results = null;
|
|
results = await t.batch('batch', [
|
|
{
|
|
op: 'write',
|
|
path: t.resolve('just_one_file.txt'),
|
|
},
|
|
], [
|
|
'file 1 contents',
|
|
]);
|
|
console.log('res?', results)
|
|
});
|
|
}
|
|
};
|