You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
180 lines
5.3 KiB
180 lines
5.3 KiB
const should = require("should");
|
|
|
|
describe("fileNameParser", () => {
|
|
describe("with default options", () => {
|
|
const parser = require("../lib/fileNameParser")({
|
|
file: {
|
|
dir: "/path/to/file",
|
|
base: "thefile.log",
|
|
ext: ".log",
|
|
name: "thefile"
|
|
}
|
|
});
|
|
it("should return null for filenames that do not match", () => {
|
|
should(parser("cheese.txt")).not.be.ok();
|
|
should(parser("thefile.log.biscuits")).not.be.ok();
|
|
});
|
|
it("should take a filename and return the index", () => {
|
|
parser("thefile.log.2").should.eql({
|
|
filename: "thefile.log.2",
|
|
index: 2,
|
|
isCompressed: false
|
|
});
|
|
parser("thefile.log.2.gz").should.eql({
|
|
filename: "thefile.log.2.gz",
|
|
index: 2,
|
|
isCompressed: true
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("with pattern option", () => {
|
|
const parser = require("../lib/fileNameParser")({
|
|
file: {
|
|
dir: "/path/to/file",
|
|
base: "thefile.log",
|
|
ext: ".log",
|
|
name: "thefile"
|
|
},
|
|
pattern: "yyyy-MM-dd"
|
|
});
|
|
it("should return null for files that do not match", () => {
|
|
should(parser("thefile.log.biscuits")).not.be.ok();
|
|
should(parser("thefile.log.2019")).not.be.ok();
|
|
should(parser("thefile.log.3.2")).not.be.ok();
|
|
should(parser("thefile.log.04-18")).not.be.ok();
|
|
should(parser("anotherfile.log.2020-04-18")).not.be.ok();
|
|
should(parser("2020-05-18")).not.be.ok();
|
|
});
|
|
it("should take a filename and return the date", () => {
|
|
parser("thefile.log.2019-07-17").should.eql({
|
|
filename: "thefile.log.2019-07-17",
|
|
index: 0,
|
|
date: "2019-07-17",
|
|
timestamp: new Date(2019, 6, 17).getTime(),
|
|
isCompressed: false
|
|
});
|
|
parser("thefile.log.gz").should.eql({
|
|
filename: "thefile.log.gz",
|
|
index: 0,
|
|
isCompressed: true
|
|
});
|
|
});
|
|
it("should take a filename and return both date and index", () => {
|
|
parser("thefile.log.2019-07-17.2").should.eql({
|
|
filename: "thefile.log.2019-07-17.2",
|
|
index: 2,
|
|
date: "2019-07-17",
|
|
timestamp: new Date(2019, 6, 17).getTime(),
|
|
isCompressed: false
|
|
});
|
|
parser("thefile.log.2019-07-17.2.gz").should.eql({
|
|
filename: "thefile.log.2019-07-17.2.gz",
|
|
index: 2,
|
|
date: "2019-07-17",
|
|
timestamp: new Date(2019, 6, 17).getTime(),
|
|
isCompressed: true
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("with keepFileExt option", () => {
|
|
const parser = require("../lib/fileNameParser")({
|
|
file: {
|
|
dir: "/path/to/file",
|
|
base: "thefile.log",
|
|
ext: ".log",
|
|
name: "thefile"
|
|
},
|
|
keepFileExt: true
|
|
});
|
|
it("should take a filename and return the index", () => {
|
|
should(parser("thefile.log.2")).not.be.ok();
|
|
should(parser("thefile.log.2.gz")).not.be.ok();
|
|
parser("thefile.2.log").should.eql({
|
|
filename: "thefile.2.log",
|
|
index: 2,
|
|
isCompressed: false
|
|
});
|
|
parser("thefile.2.log.gz").should.eql({
|
|
filename: "thefile.2.log.gz",
|
|
index: 2,
|
|
isCompressed: true
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("with a two-digit date pattern", () => {
|
|
const parser = require("../lib/fileNameParser")({
|
|
file: {
|
|
dir: "/path/to/file",
|
|
base: "thing.log",
|
|
ext: ".log",
|
|
name: "thing"
|
|
},
|
|
pattern: "mm"
|
|
});
|
|
it("should take a filename and return the date", () => {
|
|
const expectedTimestamp = new Date(0, 0);
|
|
expectedTimestamp.setMinutes(34);
|
|
parser("thing.log.34").should.eql({
|
|
filename: "thing.log.34",
|
|
date: "34",
|
|
isCompressed: false,
|
|
index: 0,
|
|
timestamp: expectedTimestamp.getTime()
|
|
});
|
|
});
|
|
})
|
|
|
|
describe("with a four-digit date pattern", () => {
|
|
const parser = require("../lib/fileNameParser")({
|
|
file: {
|
|
dir: "/path/to/file",
|
|
base: "stuff.log",
|
|
ext: ".log",
|
|
name: "stuff"
|
|
},
|
|
pattern: "mm-ss"
|
|
});
|
|
it("should return null for files that do not match", () => {
|
|
should(parser("stuff.log.2020-04-18")).not.be.ok();
|
|
should(parser("09-18")).not.be.ok();
|
|
});
|
|
it("should take a filename and return the date", () => {
|
|
const expectedTimestamp = new Date(0, 0);
|
|
expectedTimestamp.setMinutes(34);
|
|
expectedTimestamp.setSeconds(59);
|
|
parser("stuff.log.34-59").should.eql({
|
|
filename: "stuff.log.34-59",
|
|
date: "34-59",
|
|
isCompressed: false,
|
|
index: 0,
|
|
timestamp: expectedTimestamp.getTime()
|
|
});
|
|
});
|
|
it("should take a filename and return both date and index", () => {
|
|
const expectedTimestamp_1 = new Date(0, 0);
|
|
expectedTimestamp_1.setMinutes(7);
|
|
expectedTimestamp_1.setSeconds(17);
|
|
parser("stuff.log.07-17.2").should.eql({
|
|
filename: "stuff.log.07-17.2",
|
|
index: 2,
|
|
date: "07-17",
|
|
timestamp: expectedTimestamp_1.getTime(),
|
|
isCompressed: false
|
|
});
|
|
const expectedTimestamp_2 = new Date(0, 0);
|
|
expectedTimestamp_2.setMinutes(17);
|
|
expectedTimestamp_2.setSeconds(30);
|
|
parser("stuff.log.17-30.3.gz").should.eql({
|
|
filename: "stuff.log.17-30.3.gz",
|
|
index: 3,
|
|
date: "17-30",
|
|
timestamp: expectedTimestamp_2.getTime(),
|
|
isCompressed: true
|
|
});
|
|
});
|
|
})
|
|
|
|
});
|