Add test
This commit is contained in:
parent
dbcb56b55c
commit
c01845d28a
2
.gitpod.Dockerfile
vendored
Normal file
2
.gitpod.Dockerfile
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
FROM gitpod/workspace-full
|
||||||
|
RUN sudo apt-get update && sudo apt-get install libx11-xcb-dev
|
@ -1,4 +1,7 @@
|
|||||||
|
image:
|
||||||
|
file: .gitpod.Dockerfile
|
||||||
tasks:
|
tasks:
|
||||||
- init: >
|
- init: >
|
||||||
wget https://github.com/jeromewu/docker-workspace/raw/master/vim.zip -O /tmp/vim.zip &> /dev/null &&
|
wget https://github.com/jeromewu/docker-workspace/raw/master/vim.zip -O /tmp/vim.zip &> /dev/null &&
|
||||||
unzip /tmp/vim.zip -d /home/gitpod &> /dev/null
|
unzip /tmp/vim.zip -d /home/gitpod &> /dev/null &&
|
||||||
|
npm install
|
||||||
|
1
.nyc_output/45c92447-c5fe-427b-b3d9-e27dc182d6bc.json
Normal file
1
.nyc_output/45c92447-c5fe-427b-b3d9-e27dc182d6bc.json
Normal file
File diff suppressed because one or more lines are too long
1
.nyc_output/ac97f0c5-54ad-4514-8b0f-26f3f7625fab.json
Normal file
1
.nyc_output/ac97f0c5-54ad-4514-8b0f-26f3f7625fab.json
Normal file
File diff suppressed because one or more lines are too long
@ -0,0 +1 @@
|
|||||||
|
{"uuid":"45c92447-c5fe-427b-b3d9-e27dc182d6bc","parent":"ac97f0c5-54ad-4514-8b0f-26f3f7625fab","pid":39992,"argv":["/home/gitpod/.nvm/versions/node/v10.16.3/bin/node","/workspace/ffmpeg.js/src/worker-script/node/index.js"],"execArgv":[],"cwd":"/workspace/ffmpeg.js","time":1573045323607,"ppid":39980,"root":"630f7ff5-edef-40ca-a866-9e846d6f801b","coverageFilename":"/workspace/ffmpeg.js/.nyc_output/45c92447-c5fe-427b-b3d9-e27dc182d6bc.json","files":["/workspace/ffmpeg.js/src/worker-script/node/index.js","/workspace/ffmpeg.js/src/worker-script/index.js","/workspace/ffmpeg.js/src/worker-script/constants/defaultArgs.js","/workspace/ffmpeg.js/src/worker-script/node/getCore.js"]}
|
@ -0,0 +1 @@
|
|||||||
|
{"uuid":"ac97f0c5-54ad-4514-8b0f-26f3f7625fab","parent":null,"pid":39980,"argv":["/home/gitpod/.nvm/versions/node/v10.16.3/bin/node","/workspace/ffmpeg.js/node_modules/.bin/mocha","--exit","--bail","--require","./scripts/test-helper.js","./tests/ffmpeg.test.js"],"execArgv":[],"cwd":"/workspace/ffmpeg.js","time":1573045322692,"ppid":39971,"root":"630f7ff5-edef-40ca-a866-9e846d6f801b","coverageFilename":"/workspace/ffmpeg.js/.nyc_output/ac97f0c5-54ad-4514-8b0f-26f3f7625fab.json","files":["/workspace/ffmpeg.js/scripts/test-helper.js","/workspace/ffmpeg.js/tests/constants.js","/workspace/ffmpeg.js/src/index.js","/workspace/ffmpeg.js/src/utils/log.js","/workspace/ffmpeg.js/src/createWorker.js","/workspace/ffmpeg.js/src/createJob.js","/workspace/ffmpeg.js/src/utils/getId.js","/workspace/ffmpeg.js/src/utils/resolvePaths.js","/workspace/ffmpeg.js/src/utils/getEnvironment.js","/workspace/ffmpeg.js/src/worker/node/index.js","/workspace/ffmpeg.js/src/worker/node/defaultOptions.js","/workspace/ffmpeg.js/src/constants/defaultOptions.js","/workspace/ffmpeg.js/src/worker/node/spawnWorker.js","/workspace/ffmpeg.js/src/worker/node/terminateWorker.js","/workspace/ffmpeg.js/src/worker/node/onMessage.js","/workspace/ffmpeg.js/src/worker/node/send.js","/workspace/ffmpeg.js/src/worker/node/loadMedia.js"]}
|
1
.nyc_output/processinfo/index.json
Normal file
1
.nyc_output/processinfo/index.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"processes":{"ac97f0c5-54ad-4514-8b0f-26f3f7625fab":{"parent":null,"children":[]}},"files":{"/workspace/ffmpeg.js/scripts/test-helper.js":["ac97f0c5-54ad-4514-8b0f-26f3f7625fab"],"/workspace/ffmpeg.js/tests/constants.js":["ac97f0c5-54ad-4514-8b0f-26f3f7625fab"],"/workspace/ffmpeg.js/src/index.js":["ac97f0c5-54ad-4514-8b0f-26f3f7625fab"],"/workspace/ffmpeg.js/src/utils/log.js":["ac97f0c5-54ad-4514-8b0f-26f3f7625fab"],"/workspace/ffmpeg.js/src/createWorker.js":["ac97f0c5-54ad-4514-8b0f-26f3f7625fab"],"/workspace/ffmpeg.js/src/createJob.js":["ac97f0c5-54ad-4514-8b0f-26f3f7625fab"],"/workspace/ffmpeg.js/src/utils/getId.js":["ac97f0c5-54ad-4514-8b0f-26f3f7625fab"],"/workspace/ffmpeg.js/src/utils/resolvePaths.js":["ac97f0c5-54ad-4514-8b0f-26f3f7625fab"],"/workspace/ffmpeg.js/src/utils/getEnvironment.js":["ac97f0c5-54ad-4514-8b0f-26f3f7625fab"],"/workspace/ffmpeg.js/src/worker/node/index.js":["ac97f0c5-54ad-4514-8b0f-26f3f7625fab"],"/workspace/ffmpeg.js/src/worker/node/defaultOptions.js":["ac97f0c5-54ad-4514-8b0f-26f3f7625fab"],"/workspace/ffmpeg.js/src/constants/defaultOptions.js":["ac97f0c5-54ad-4514-8b0f-26f3f7625fab"],"/workspace/ffmpeg.js/src/worker/node/spawnWorker.js":["ac97f0c5-54ad-4514-8b0f-26f3f7625fab"],"/workspace/ffmpeg.js/src/worker/node/terminateWorker.js":["ac97f0c5-54ad-4514-8b0f-26f3f7625fab"],"/workspace/ffmpeg.js/src/worker/node/onMessage.js":["ac97f0c5-54ad-4514-8b0f-26f3f7625fab"],"/workspace/ffmpeg.js/src/worker/node/send.js":["ac97f0c5-54ad-4514-8b0f-26f3f7625fab"],"/workspace/ffmpeg.js/src/worker/node/loadMedia.js":["ac97f0c5-54ad-4514-8b0f-26f3f7625fab"]},"externalIds":{}}
|
1186
package-lock.json
generated
1186
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
15
package.json
15
package.json
@ -10,8 +10,14 @@
|
|||||||
"start": "node scripts/server.js",
|
"start": "node scripts/server.js",
|
||||||
"build": "rimraf dist && webpack --config scripts/webpack.config.prod.js",
|
"build": "rimraf dist && webpack --config scripts/webpack.config.prod.js",
|
||||||
"prepublishOnly": "npm run build",
|
"prepublishOnly": "npm run build",
|
||||||
"test": "mocha",
|
"lint": "eslint src",
|
||||||
"lint": "eslint src"
|
"wait": "rimraf dist && wait-on http://localhost:3000/dist/ffmpeg.dev.js",
|
||||||
|
"test": "npm-run-all -p -r start test:all",
|
||||||
|
"test:all": "npm-run-all wait test:browser:* test:node:all",
|
||||||
|
"test:node": "nyc mocha --exit --bail --require ./scripts/test-helper.js",
|
||||||
|
"test:node:all": "npm run test:node -- ./tests/*.test.js",
|
||||||
|
"test:browser": "mocha-headless-chrome -a incognito -a no-sandbox -a disable-setuid-sandbox -a disable-logging -t 300000",
|
||||||
|
"test:browser:ffmpeg": "npm run test:browser -- -f ./tests/ffmpeg.test.html"
|
||||||
},
|
},
|
||||||
"browser": {
|
"browser": {
|
||||||
"./src/worker/node/index.js": "./src/worker/browser/index.js"
|
"./src/worker/node/index.js": "./src/worker/browser/index.js"
|
||||||
@ -46,8 +52,13 @@
|
|||||||
"eslint": "^6.1.0",
|
"eslint": "^6.1.0",
|
||||||
"eslint-config-airbnb-base": "^14.0.0",
|
"eslint-config-airbnb-base": "^14.0.0",
|
||||||
"eslint-plugin-import": "^2.18.2",
|
"eslint-plugin-import": "^2.18.2",
|
||||||
|
"expect.js": "^0.3.1",
|
||||||
"express": "^4.17.1",
|
"express": "^4.17.1",
|
||||||
"mocha": "^6.2.2",
|
"mocha": "^6.2.2",
|
||||||
|
"mocha-headless-chrome": "^2.0.3",
|
||||||
|
"npm-run-all": "^4.1.5",
|
||||||
|
"nyc": "^14.1.1",
|
||||||
|
"wait-on": "^3.3.0",
|
||||||
"webpack": "^4.41.2",
|
"webpack": "^4.41.2",
|
||||||
"webpack-cli": "^3.3.9",
|
"webpack-cli": "^3.3.9",
|
||||||
"webpack-dev-middleware": "^3.7.2"
|
"webpack-dev-middleware": "^3.7.2"
|
||||||
|
8
scripts/test-helper.js
Normal file
8
scripts/test-helper.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
const constants = require('../tests/constants');
|
||||||
|
|
||||||
|
global.expect = require('expect.js');
|
||||||
|
global.FFmpeg = require('../src');
|
||||||
|
|
||||||
|
Object.keys(constants).forEach((key) => {
|
||||||
|
global[key] = constants[key];
|
||||||
|
});
|
@ -34,7 +34,7 @@ const loadMedia = async (image) => {
|
|||||||
.map((c) => c.charCodeAt(0));
|
.map((c) => c.charCodeAt(0));
|
||||||
} else {
|
} else {
|
||||||
const res = await fetch(resolveURL(image));
|
const res = await fetch(resolveURL(image));
|
||||||
data = res.arrayBuffer();
|
data = await res.arrayBuffer();
|
||||||
}
|
}
|
||||||
} else if (image instanceof File || image instanceof Blob) {
|
} else if (image instanceof File || image instanceof Blob) {
|
||||||
data = await readFromBlobOrFile(image);
|
data = await readFromBlobOrFile(image);
|
||||||
|
@ -14,7 +14,7 @@ module.exports = async (media) => {
|
|||||||
if (typeof media === 'string') {
|
if (typeof media === 'string') {
|
||||||
if (isURL(media) || media.startsWith('chrome-extension://') || media.startsWith('file://')) {
|
if (isURL(media) || media.startsWith('chrome-extension://') || media.startsWith('file://')) {
|
||||||
const res = await fetch(media);
|
const res = await fetch(media);
|
||||||
data = res.arrayBuffer();
|
data = await res.arrayBuffer();
|
||||||
} else if (/data:media\/([a-zA-Z]*);base64,([^"]*)/.test(media)) {
|
} else if (/data:media\/([a-zA-Z]*);base64,([^"]*)/.test(media)) {
|
||||||
data = Buffer.from(media.split(',')[1], 'base64');
|
data = Buffer.from(media.split(',')[1], 'base64');
|
||||||
} else {
|
} else {
|
||||||
|
6
tests/.eslintrc
Normal file
6
tests/.eslintrc
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"rules": {
|
||||||
|
"no-undef": 0,
|
||||||
|
"camelcase": 0
|
||||||
|
}
|
||||||
|
}
|
18
tests/constants.js
Normal file
18
tests/constants.js
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
const TIMEOUT = 30000;
|
||||||
|
const BASE_URL = 'http://localhost:3000/tests/assets';
|
||||||
|
const IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';
|
||||||
|
const OPTIONS = {
|
||||||
|
corePath: '../node_modules/@ffmpeg/core/ffmpeg-core.js',
|
||||||
|
...(IS_BROWSER ? { workerPath: '../dist/worker.dev.js' } : {}),
|
||||||
|
};
|
||||||
|
const FLAME_MP4_LENGTH = 100374;
|
||||||
|
|
||||||
|
if (typeof module !== 'undefined') {
|
||||||
|
module.exports = {
|
||||||
|
TIMEOUT,
|
||||||
|
BASE_URL,
|
||||||
|
IS_BROWSER,
|
||||||
|
OPTIONS,
|
||||||
|
FLAME_MP4_LENGTH,
|
||||||
|
};
|
||||||
|
}
|
20
tests/ffmpeg.test.html
Normal file
20
tests/ffmpeg.test.html
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<!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/expect.js/index.js"></script>
|
||||||
|
<script src="../dist/ffmpeg.dev.js"></script>
|
||||||
|
<script src="./constants.js"></script>
|
||||||
|
<script>mocha.setup('bdd');</script>
|
||||||
|
<script src="./ffmpeg.test.js"></script>
|
||||||
|
<script>
|
||||||
|
mocha.run();
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
22
tests/ffmpeg.test.js
Normal file
22
tests/ffmpeg.test.js
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
const { createWorker } = FFmpeg;
|
||||||
|
const worker = createWorker(OPTIONS);
|
||||||
|
|
||||||
|
before(async function cb() {
|
||||||
|
this.timeout(0);
|
||||||
|
await worker.load();
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('transcode()', () => {
|
||||||
|
describe('should transcode different format', () => {
|
||||||
|
['flame.avi'].forEach((name) => (
|
||||||
|
it(`transcode ${name}`, async () => {
|
||||||
|
await worker.write(name, `${BASE_URL}/${name}`);
|
||||||
|
await worker.transcode(name, 'output.mp4');
|
||||||
|
await worker.remove(name);
|
||||||
|
const { data } = await worker.read('output.mp4');
|
||||||
|
await worker.remove('output.mp4');
|
||||||
|
expect(data.length).to.be(FLAME_MP4_LENGTH);
|
||||||
|
}).timeout(TIMEOUT)
|
||||||
|
));
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user