155 lines
3.8 KiB
TypeScript
155 lines
3.8 KiB
TypeScript
import { strict as assert } from "assert";
|
|
import { checkIsSkipItemOrNotByName } from "../src/sync";
|
|
|
|
describe("Sync: checkIsSkipItemOrNotByName", () => {
|
|
it("should be ok everywhere for empty config", async () => {
|
|
let isSkip = checkIsSkipItemOrNotByName(
|
|
"xxx.md",
|
|
false,
|
|
false,
|
|
false,
|
|
".obsidian",
|
|
/* ignorePaths */ [],
|
|
/* onlyAllowPaths */ []
|
|
).finalIsIgnored;
|
|
assert.ok(!isSkip);
|
|
|
|
isSkip = checkIsSkipItemOrNotByName(
|
|
"xxx.md",
|
|
false,
|
|
false,
|
|
false,
|
|
".obsidian",
|
|
/* ignorePaths */ [""],
|
|
/* onlyAllowPaths */ ["", "\n"]
|
|
).finalIsIgnored;
|
|
assert.ok(!isSkip);
|
|
});
|
|
|
|
it("should be ok for deny list", async () => {
|
|
let isSkip = checkIsSkipItemOrNotByName(
|
|
"xxx.md",
|
|
false,
|
|
false,
|
|
false,
|
|
".obsidian",
|
|
/* ignorePaths */ ["xxx"],
|
|
/* onlyAllowPaths */ []
|
|
).finalIsIgnored;
|
|
assert.ok(isSkip);
|
|
|
|
isSkip = checkIsSkipItemOrNotByName(
|
|
"yyy.md",
|
|
false,
|
|
false,
|
|
false,
|
|
".obsidian",
|
|
/* ignorePaths */ ["xxx"],
|
|
/* onlyAllowPaths */ []
|
|
).finalIsIgnored;
|
|
assert.ok(!isSkip);
|
|
|
|
isSkip = checkIsSkipItemOrNotByName(
|
|
"xxx.md",
|
|
false,
|
|
false,
|
|
false,
|
|
".obsidian",
|
|
/* ignorePaths */ ["xxx$"],
|
|
/* onlyAllowPaths */ []
|
|
).finalIsIgnored;
|
|
assert.ok(!isSkip);
|
|
|
|
// if we deny a folder, we have to deny all the sub files
|
|
// TODO: it's soooo hard to do the path resolution in this func with regex,
|
|
// so we defer the detection to later steps now.
|
|
// the test here doesn't work.
|
|
// isSkip = checkIsSkipItemOrNotByName(
|
|
// 'xxx/yyy.md',
|
|
// false,
|
|
// false,
|
|
// false,
|
|
// '.obsidian',
|
|
// /* ignorePaths */ ['xxx/$'],
|
|
// /* onlyAllowPaths */ []
|
|
// ).finalIsIgnored;
|
|
// assert.ok(isSkip);
|
|
});
|
|
|
|
it("should be ok for allow list", async () => {
|
|
let isSkip = checkIsSkipItemOrNotByName(
|
|
"xxx.md",
|
|
false,
|
|
false,
|
|
false,
|
|
".obsidian",
|
|
/* ignorePaths */ [],
|
|
/* onlyAllowPaths */ ["xxx"]
|
|
).finalIsIgnored;
|
|
assert.ok(!isSkip);
|
|
|
|
isSkip = checkIsSkipItemOrNotByName(
|
|
"yyy.md",
|
|
false,
|
|
false,
|
|
false,
|
|
".obsidian",
|
|
/* ignorePaths */ [""],
|
|
/* onlyAllowPaths */ ["xxx"]
|
|
).finalIsIgnored;
|
|
assert.ok(isSkip);
|
|
|
|
isSkip = checkIsSkipItemOrNotByName(
|
|
"xxx.md",
|
|
false,
|
|
false,
|
|
false,
|
|
".obsidian",
|
|
/* ignorePaths */ [],
|
|
/* onlyAllowPaths */ ["xxx$"]
|
|
).finalIsIgnored;
|
|
assert.ok(isSkip);
|
|
|
|
// should NOT skip because we allow the sub file AND not deny the folder
|
|
// TODO: it's soooo hard to do the path resolution in this func with regex,
|
|
// so we defer the detection to later steps now.
|
|
// the test here doesn't work.
|
|
// isSkip = checkIsSkipItemOrNotByName(
|
|
// 'xxx/',
|
|
// false,
|
|
// false,
|
|
// false,
|
|
// '.obsidian',
|
|
// /* ignorePaths */ [],
|
|
// /* onlyAllowPaths */ ['xxx/yyy.md']
|
|
// ).finalIsIgnored;
|
|
// assert.ok(!isSkip);
|
|
});
|
|
|
|
it("should detect the name by two lists together", async () => {
|
|
// should skip because we ignore the path
|
|
let isSkip = checkIsSkipItemOrNotByName(
|
|
"xxx.md",
|
|
false,
|
|
false,
|
|
false,
|
|
".obsidian",
|
|
/* ignorePaths */ ["xxx"],
|
|
/* onlyAllowPaths */ ["yyy"]
|
|
).finalIsIgnored;
|
|
assert.ok(isSkip);
|
|
|
|
// should skip because we disallow the whole folder
|
|
isSkip = checkIsSkipItemOrNotByName(
|
|
"xxx/yyy.md",
|
|
false,
|
|
false,
|
|
false,
|
|
".obsidian",
|
|
/* ignorePaths */ ["xxx"],
|
|
/* onlyAllowPaths */ ["xxx/yyy.md"]
|
|
).finalIsIgnored;
|
|
assert.ok(isSkip);
|
|
});
|
|
});
|