Add tests
This commit is contained in:
@@ -1,10 +1,13 @@
|
||||
{
|
||||
"extends": "eslint:recommended",
|
||||
"globals": {
|
||||
"expect": true,
|
||||
"createFFmpegCore": true,
|
||||
"CORE_URL": true,
|
||||
"FFMPEG_TYPE": true,
|
||||
"FFmpegWASM": true,
|
||||
"VIDEO_1S_MP4": true,
|
||||
"FFMPEG_TYPE": true
|
||||
"b64ToUint8Array": true,
|
||||
"createFFmpegCore": true,
|
||||
"expect": true
|
||||
},
|
||||
"env": {
|
||||
"node": true,
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<script src="../node_modules/mocha/mocha.js"></script>
|
||||
<script src="../node_modules/chai/chai.js"></script>
|
||||
<script src="../packages/core-mt/dist/umd/ffmpeg-core.js"></script>
|
||||
<script src="./constants.js"></script>
|
||||
<script src="./test-helper-browser.js"></script>
|
||||
<script type="text/javascript">
|
||||
window.FFMPEG_TYPE = "mt";
|
||||
</script>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<script src="../node_modules/mocha/mocha.js"></script>
|
||||
<script src="../node_modules/chai/chai.js"></script>
|
||||
<script src="../packages/core/dist/umd/ffmpeg-core.js"></script>
|
||||
<script src="./constants.js"></script>
|
||||
<script src="./test-helper-browser.js"></script>
|
||||
<script type="text/javascript">
|
||||
window.FFMPEG_TYPE = "st";
|
||||
</script>
|
||||
|
||||
@@ -1,31 +1,21 @@
|
||||
let ffmpeg;
|
||||
let core;
|
||||
|
||||
const genName = (name) => `[ffmpeg-core][${FFMPEG_TYPE}] ${name}`;
|
||||
|
||||
const b64ToUint8Array = (b64) => {
|
||||
const bin = atob(b64);
|
||||
const len = bin.length;
|
||||
const bytes = new Uint8Array(len);
|
||||
for (let i = 0; i < len; i++) {
|
||||
bytes[i] = bin.charCodeAt(i);
|
||||
}
|
||||
return bytes;
|
||||
};
|
||||
|
||||
const reset = () => {
|
||||
ffmpeg.reset();
|
||||
ffmpeg.setLogger(() => {});
|
||||
ffmpeg.setProgress(() => {});
|
||||
core.reset();
|
||||
core.setLogger(() => {});
|
||||
core.setProgress(() => {});
|
||||
};
|
||||
|
||||
before(async () => {
|
||||
ffmpeg = await createFFmpegCore();
|
||||
ffmpeg.FS.writeFile("video.mp4", b64ToUint8Array(VIDEO_1S_MP4));
|
||||
core = await createFFmpegCore();
|
||||
core.FS.writeFile("video.mp4", b64ToUint8Array(VIDEO_1S_MP4));
|
||||
});
|
||||
|
||||
describe(genName("createFFmpeg()"), () => {
|
||||
it("should be OK", () => {
|
||||
expect(ffmpeg).to.be.ok;
|
||||
expect(core).to.be.ok;
|
||||
});
|
||||
});
|
||||
|
||||
@@ -33,16 +23,16 @@ describe(genName("reset()"), () => {
|
||||
beforeEach(reset);
|
||||
|
||||
it("should exist", () => {
|
||||
expect("reset" in ffmpeg).to.be.true;
|
||||
expect("reset" in core).to.be.true;
|
||||
});
|
||||
it("should reset ret and timeout", () => {
|
||||
ffmpeg.ret = 1024;
|
||||
ffmpeg.timeout = 1024;
|
||||
core.ret = 1024;
|
||||
core.timeout = 1024;
|
||||
|
||||
ffmpeg.reset();
|
||||
core.reset();
|
||||
|
||||
expect(ffmpeg.ret).to.equal(-1);
|
||||
expect(ffmpeg.timeout).to.equal(-1);
|
||||
expect(core.ret).to.equal(-1);
|
||||
expect(core.timeout).to.equal(-1);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -50,18 +40,18 @@ describe(genName("exec()"), () => {
|
||||
beforeEach(reset);
|
||||
|
||||
it("should exist", () => {
|
||||
expect("exec" in ffmpeg).to.be.true;
|
||||
expect("exec" in core).to.be.true;
|
||||
});
|
||||
|
||||
it("should output help", () => {
|
||||
expect(ffmpeg.exec("-h")).to.equal(0);
|
||||
expect(core.exec("-h")).to.equal(0);
|
||||
});
|
||||
|
||||
it("should transcode", () => {
|
||||
expect(ffmpeg.exec("-i", "video.mp4", "video.avi")).to.equal(0);
|
||||
const out = ffmpeg.FS.readFile("video.avi");
|
||||
expect(core.exec("-i", "video.mp4", "video.avi")).to.equal(0);
|
||||
const out = core.FS.readFile("video.avi");
|
||||
expect(out.length).to.not.equal(0);
|
||||
ffmpeg.FS.unlink("video.avi");
|
||||
core.FS.unlink("video.avi");
|
||||
});
|
||||
});
|
||||
|
||||
@@ -69,12 +59,12 @@ describe(genName("setTimeout()"), () => {
|
||||
beforeEach(reset);
|
||||
|
||||
it("should exist", () => {
|
||||
expect("setTimeout" in ffmpeg).to.be.true;
|
||||
expect("setTimeout" in core).to.be.true;
|
||||
});
|
||||
|
||||
it("should timeout", () => {
|
||||
ffmpeg.setTimeout(1); // timeout after 1ms
|
||||
expect(ffmpeg.exec("-i", "video.mp4", "video.avi")).to.equal(1);
|
||||
core.setTimeout(1); // timeout after 1ms
|
||||
expect(core.exec("-i", "video.mp4", "video.avi")).to.equal(1);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -82,13 +72,13 @@ describe(genName("setLogger()"), () => {
|
||||
beforeEach(reset);
|
||||
|
||||
it("should exist", () => {
|
||||
expect("setLogger" in ffmpeg).to.be.true;
|
||||
expect("setLogger" in core).to.be.true;
|
||||
});
|
||||
|
||||
it("should handle logs", () => {
|
||||
const logs = [];
|
||||
ffmpeg.setLogger(({ message }) => logs.push(message));
|
||||
ffmpeg.exec("-h");
|
||||
core.setLogger(({ message }) => logs.push(message));
|
||||
core.exec("-h");
|
||||
expect(logs.length).to.not.equal(0);
|
||||
});
|
||||
});
|
||||
@@ -97,14 +87,14 @@ describe(genName("setProgress()"), () => {
|
||||
beforeEach(reset);
|
||||
|
||||
it("should exist", () => {
|
||||
expect("setProgress" in ffmpeg).to.be.true;
|
||||
expect("setProgress" in core).to.be.true;
|
||||
});
|
||||
|
||||
it("should handle progress", () => {
|
||||
let progress = 0;
|
||||
ffmpeg.setProgress((_progress) => (progress = _progress));
|
||||
expect(ffmpeg.exec("-i", "video.mp4", "video.avi")).to.equal(0);
|
||||
core.setProgress((_progress) => (progress = _progress));
|
||||
expect(core.exec("-i", "video.mp4", "video.avi")).to.equal(0);
|
||||
expect(progress).to.equal(1);
|
||||
ffmpeg.FS.unlink("video.avi");
|
||||
core.FS.unlink("video.avi");
|
||||
});
|
||||
});
|
||||
|
||||
25
tests/ffmpeg-mt.test.html
Normal file
25
tests/ffmpeg-mt.test.html
Normal file
@@ -0,0 +1,25 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>FFmpeg Unit Test</title>
|
||||
<link rel="stylesheet" href="../node_modules/mocha/mocha.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="mocha"></div>
|
||||
<script src="../node_modules/mocha/mocha.js"></script>
|
||||
<script src="../node_modules/chai/chai.js"></script>
|
||||
<script src="../packages/ffmpeg/dist/umd/ffmpeg.js"></script>
|
||||
<script src="./test-helper-browser.js"></script>
|
||||
<script type="text/javascript">
|
||||
window.FFMPEG_TYPE = "mt";
|
||||
window.CORE_URL = "http://localhost:3000/packages/core-mt/dist/umd/ffmpeg-core.js";
|
||||
</script>
|
||||
<script>mocha.setup('bdd');</script>
|
||||
<script src="./ffmpeg.test.js"></script>
|
||||
<script>
|
||||
window.expect = chai.expect;
|
||||
mocha.run();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
25
tests/ffmpeg-st.test.html
Normal file
25
tests/ffmpeg-st.test.html
Normal file
@@ -0,0 +1,25 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>FFmpeg Unit Test</title>
|
||||
<link rel="stylesheet" href="../node_modules/mocha/mocha.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="mocha"></div>
|
||||
<script src="../node_modules/mocha/mocha.js"></script>
|
||||
<script src="../node_modules/chai/chai.js"></script>
|
||||
<script src="../packages/ffmpeg/dist/umd/ffmpeg.js"></script>
|
||||
<script src="./test-helper-browser.js"></script>
|
||||
<script type="text/javascript">
|
||||
window.FFMPEG_TYPE = "st";
|
||||
window.CORE_URL = "http://localhost:3000/packages/core/dist/umd/ffmpeg-core.js";
|
||||
</script>
|
||||
<script>mocha.setup('bdd');</script>
|
||||
<script src="./ffmpeg.test.js"></script>
|
||||
<script>
|
||||
window.expect = chai.expect;
|
||||
mocha.run();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
171
tests/ffmpeg.test.js
Normal file
171
tests/ffmpeg.test.js
Normal file
@@ -0,0 +1,171 @@
|
||||
const { FFmpeg } = FFmpegWASM;
|
||||
|
||||
const genName = (name) => `[ffmpeg][${FFMPEG_TYPE}] ${name}`;
|
||||
|
||||
const createFFmpeg = async () => {
|
||||
const ffmpeg = new FFmpeg();
|
||||
await ffmpeg.load({
|
||||
coreURL: CORE_URL,
|
||||
thread: FFMPEG_TYPE === "mt",
|
||||
});
|
||||
return ffmpeg;
|
||||
};
|
||||
|
||||
describe(genName("new FFmpeg()"), () => {
|
||||
it("should be OK", () => {
|
||||
expect(new FFmpeg()).to.be.ok;
|
||||
});
|
||||
});
|
||||
|
||||
describe(genName("FFmpeg.load()"), function () {
|
||||
// it("should work without any args", async () => {
|
||||
// const ffmpeg = new FFmpeg();
|
||||
// await ffmpeg.load();
|
||||
// expect(ffmpeg).to.be.ok;
|
||||
// });
|
||||
|
||||
it("should work when blob is false", async () => {
|
||||
const ffmpeg = new FFmpeg();
|
||||
await ffmpeg.load({
|
||||
coreURL: CORE_URL,
|
||||
blob: false,
|
||||
thread: FFMPEG_TYPE === "mt",
|
||||
});
|
||||
expect(ffmpeg).to.be.ok;
|
||||
ffmpeg.terminate();
|
||||
});
|
||||
|
||||
it("should receive download progress events", async () => {
|
||||
const ffmpeg = new FFmpeg();
|
||||
let done = false;
|
||||
ffmpeg.on(FFmpeg.DOWNLOAD, ({ done: _done }) => {
|
||||
done = _done;
|
||||
});
|
||||
await ffmpeg.load({
|
||||
coreURL: CORE_URL,
|
||||
thread: FFMPEG_TYPE === "mt",
|
||||
});
|
||||
expect(done).to.be.true;
|
||||
ffmpeg.terminate();
|
||||
});
|
||||
});
|
||||
|
||||
describe(
|
||||
genName(
|
||||
"FFmpeg directory APIs (createDir(), listDir(), deleteDir(), rename())"
|
||||
),
|
||||
function () {
|
||||
let ffmpeg;
|
||||
|
||||
before(async () => {
|
||||
ffmpeg = await createFFmpeg();
|
||||
});
|
||||
|
||||
after(() => {
|
||||
ffmpeg.terminate();
|
||||
});
|
||||
|
||||
it("should list root dir", async () => {
|
||||
const files = await ffmpeg.listDir("/");
|
||||
expect(files).to.have.lengthOf(6);
|
||||
});
|
||||
|
||||
it("should create a dir", async () => {
|
||||
await ffmpeg.createDir("/dir1");
|
||||
const files = await ffmpeg.listDir("/");
|
||||
expect(files).to.include("dir1");
|
||||
});
|
||||
|
||||
it("should delete a dir", async () => {
|
||||
await ffmpeg.createDir("/dir2");
|
||||
await ffmpeg.deleteDir("/dir2");
|
||||
const files = await ffmpeg.listDir("/");
|
||||
expect(files).to.not.include("dir2");
|
||||
});
|
||||
|
||||
it("should rename a dir", async () => {
|
||||
await ffmpeg.createDir("/dir3");
|
||||
await ffmpeg.rename("/dir3", "/dir4");
|
||||
const files = await ffmpeg.listDir("/");
|
||||
expect(files).to.not.include("dir3");
|
||||
expect(files).to.include("dir4");
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
describe(
|
||||
genName(
|
||||
"FFmpeg files APIs (readFile(), writeFile(), deleteFile(), rename())"
|
||||
),
|
||||
function () {
|
||||
let ffmpeg;
|
||||
|
||||
before(async () => {
|
||||
ffmpeg = await createFFmpeg();
|
||||
});
|
||||
|
||||
after(() => {
|
||||
ffmpeg.terminate();
|
||||
});
|
||||
|
||||
it("should write/read a text file", async () => {
|
||||
const text = "foo";
|
||||
await ffmpeg.writeFile("/file1", text);
|
||||
const data = await ffmpeg.readFile("/file1", "utf8");
|
||||
const files = await ffmpeg.listDir("/");
|
||||
expect(files).to.include("file1");
|
||||
expect(data).to.equal(text);
|
||||
});
|
||||
|
||||
it("should write a binary file", async () => {
|
||||
const bin = [1, 2, 3];
|
||||
await ffmpeg.writeFile("/file2", Uint8Array.from(bin));
|
||||
const data = await ffmpeg.readFile("/file2");
|
||||
const files = await ffmpeg.listDir("/");
|
||||
expect(files).to.include("file2");
|
||||
expect(data).to.deep.equal(Uint8Array.from(bin));
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
describe(genName("FFmpeg.exec()"), function () {
|
||||
let ffmpeg;
|
||||
|
||||
before(async () => {
|
||||
ffmpeg = await createFFmpeg();
|
||||
await ffmpeg.writeFile("video.mp4", b64ToUint8Array(VIDEO_1S_MP4));
|
||||
});
|
||||
|
||||
after(() => {
|
||||
ffmpeg.terminate();
|
||||
});
|
||||
|
||||
it("should output help with exit code 0", async () => {
|
||||
let m;
|
||||
const listener = ({ message }) => {
|
||||
m = message;
|
||||
};
|
||||
ffmpeg.on(FFmpeg.LOG, listener);
|
||||
const ret = await ffmpeg.exec(["-h"]);
|
||||
expect(ret).to.equal(0);
|
||||
expect(m).to.be.a("string");
|
||||
ffmpeg.removeListener(FFmpeg.LOG, listener);
|
||||
});
|
||||
|
||||
it("should transcode mp4 to avi", async () => {
|
||||
let p;
|
||||
const listener = ({ progress }) => {
|
||||
p = progress;
|
||||
};
|
||||
ffmpeg.on(FFmpeg.PROGRESS, listener);
|
||||
const ret = await ffmpeg.exec(["-i", "video.mp4", "video.avi"]);
|
||||
expect(ret).to.equal(0);
|
||||
expect(p).to.equal(1);
|
||||
ffmpeg.removeListener(FFmpeg.PROGRESS, listener);
|
||||
});
|
||||
|
||||
it("should stop if timeout", async () => {
|
||||
const ret = await ffmpeg.exec(["-i", "video.mp4", "video.avi"], 1);
|
||||
expect(ret).to.equal(1);
|
||||
});
|
||||
});
|
||||
@@ -1,7 +1,19 @@
|
||||
const VIDEO_1S_MP4 =
|
||||
"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";
|
||||
|
||||
const b64ToUint8Array = (b64) => {
|
||||
const bin = atob(b64);
|
||||
const len = bin.length;
|
||||
const bytes = new Uint8Array(len);
|
||||
for (let i = 0; i < len; i++) {
|
||||
bytes[i] = bin.charCodeAt(i);
|
||||
}
|
||||
return bytes;
|
||||
};
|
||||
|
||||
if (typeof module !== "undefined") {
|
||||
module.exports = {
|
||||
VIDEO_1S_MP4,
|
||||
b64ToUint8Array,
|
||||
};
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
const chai = require("chai");
|
||||
const constants = require("./constants");
|
||||
const browser = require("./test-helper-browser");
|
||||
|
||||
global.expect = chai.expect;
|
||||
global.createFFmpegCore = require("../packages/core-mt");
|
||||
global.atob = require("./util").atob;
|
||||
global.FFMPEG_TYPE = "mt";
|
||||
|
||||
Object.keys(constants).forEach((key) => {
|
||||
global[key] = constants[key];
|
||||
Object.keys(browser).forEach((key) => {
|
||||
global[key] = browser[key];
|
||||
});
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
const chai = require("chai");
|
||||
const constants = require("./constants");
|
||||
const browser = require("./test-helper-browser");
|
||||
|
||||
global.expect = chai.expect;
|
||||
global.createFFmpegCore = require("../packages/core");
|
||||
global.atob = require("./util").atob;
|
||||
global.FFMPEG_TYPE = "st";
|
||||
|
||||
Object.keys(constants).forEach((key) => {
|
||||
global[key] = constants[key];
|
||||
Object.keys(browser).forEach((key) => {
|
||||
global[key] = browser[key];
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user