feat: add docker pipeline and preview fixes
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
|
||||
import {
|
||||
buildResolvedFilesetId,
|
||||
computeCanonicalBlockSize,
|
||||
normalizeCompressionMethod,
|
||||
toZipEntryName
|
||||
} from '../src/lib/duplicati.js';
|
||||
import { normalizeApiPath, toApiPath } from '../src/lib/paths.js';
|
||||
import { duplicatiTicksToIso, unixSecondsToIso } from '../src/lib/time.js';
|
||||
|
||||
test('db paths normalize to API paths', () => {
|
||||
assert.equal(toApiPath('C:\\Users\\me\\movie.mp4'), '/C:/Users/me/movie.mp4');
|
||||
assert.equal(normalizeApiPath('/movies/demo.mp4/'), '/movies/demo.mp4');
|
||||
});
|
||||
|
||||
test('hashes convert to duplicati zip entry names', () => {
|
||||
assert.equal(toZipEntryName('abc+/def='), 'abc-_def=');
|
||||
});
|
||||
|
||||
test('compression methods normalize from zip numeric codes', () => {
|
||||
assert.equal(normalizeCompressionMethod(8), 'deflate');
|
||||
assert.equal(normalizeCompressionMethod('0'), 'store');
|
||||
});
|
||||
|
||||
test('resolved fileset id is deterministic', () => {
|
||||
assert.equal(buildResolvedFilesetId('2026-05-05T08:00:00.000Z'), 'fs_2026-05-05T08:00:00.000Z');
|
||||
});
|
||||
|
||||
test('canonical block size chooses the dominant chunk size', () => {
|
||||
assert.equal(
|
||||
computeCanonicalBlockSize([
|
||||
{ logicalSize: 102400 },
|
||||
{ logicalSize: 102400 },
|
||||
{ logicalSize: 4096 }
|
||||
]),
|
||||
102400
|
||||
);
|
||||
});
|
||||
|
||||
test('timestamps convert from unix seconds and .NET ticks', () => {
|
||||
assert.equal(unixSecondsToIso(0), '1970-01-01T00:00:00.000Z');
|
||||
assert.equal(duplicatiTicksToIso('621355968000000000'), '1970-01-01T00:00:00.000Z');
|
||||
});
|
||||
Reference in New Issue
Block a user