summaryrefslogtreecommitdiff
path: root/node_modules/mmmagic/test/test.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/mmmagic/test/test.js')
-rw-r--r--node_modules/mmmagic/test/test.js134
1 files changed, 134 insertions, 0 deletions
diff --git a/node_modules/mmmagic/test/test.js b/node_modules/mmmagic/test/test.js
new file mode 100644
index 0000000..934b011
--- /dev/null
+++ b/node_modules/mmmagic/test/test.js
@@ -0,0 +1,134 @@
+var mmm = require('../lib/index');
+
+var path = require('path');
+var assert = require('assert');
+var fs = require('fs');
+var format = require('util').format;
+
+var t = -1;
+var group = path.basename(__filename, '.js') + '/';
+var timeout;
+
+var tests = [
+ { run: function() {
+ var magic = new mmm.Magic(mmm.MAGIC_MIME_TYPE);
+ magic.detectFile(path.join(__dirname, '..', 'src', 'binding.cc'),
+ function(err, result) {
+ assert.strictEqual(err, null);
+ assert.strictEqual(result, 'text/x-c++');
+ next();
+ });
+ },
+ what: 'detectFile - Normal operation, mime type'
+ },
+ { run: function() {
+ var magic = new mmm.Magic(mmm.MAGIC_MIME_ENCODING);
+ magic.detectFile(path.join(__dirname, '..', 'src', 'binding.cc'),
+ function(err, result) {
+ assert.strictEqual(err, null);
+ assert.strictEqual(result, 'us-ascii');
+ next();
+ });
+ },
+ what: 'detectFile - Normal operation, encoding'
+ },
+ { run: function() {
+ var magic = new mmm.Magic(mmm.MAGIC_MIME);
+ magic.detectFile(path.join(__dirname, '..', 'src', 'binding.cc'),
+ function(err, result) {
+ assert.strictEqual(err, null);
+ assert.strictEqual(result, 'text/x-c++; charset=us-ascii');
+ next();
+ });
+ },
+ what: 'detectFile - Normal operation, mime type + encoding'
+ },
+ { run: function() {
+ var magic = new mmm.Magic();
+ magic.detectFile(path.join(__dirname, '..', 'src', 'binding.cc'),
+ function(err, result) {
+ assert.strictEqual(err, null);
+ assert.strictEqual(/^C\+\+ source, ASCII text/.test(result), true);
+ next();
+ });
+ },
+ what: 'detectFile - Normal operation, description'
+ },
+ { run: function() {
+ var magic = new mmm.Magic(mmm.MAGIC_MIME_TYPE | mmm.MAGIC_CONTINUE);
+ magic.detectFile(path.join(__dirname, '..', 'src', 'binding.cc'),
+ function(err, result) {
+ assert.strictEqual(err, null);
+ assert.strictEqual(Array.isArray(result), true);
+ assert.strictEqual(result[0], 'text/x-c++');
+ next();
+ });
+ },
+ what: 'detectFile - Normal operation, find all matches'
+ },
+ { run: function() {
+ var magic = new mmm.Magic(mmm.MAGIC_MIME_TYPE);
+ magic.detectFile('/no/such/path1234567', function(err, result) {
+ assert(err);
+ assert.strictEqual(result, undefined);
+ next();
+ });
+ },
+ what: 'detectFile - Nonexistent file'
+ },
+ { run: function() {
+ var magic = new mmm.Magic(mmm.MAGIC_MIME_TYPE);
+ magic.detectFile(path.join(__dirname, 'fixtures', 'tést.txt'),
+ function(err, result) {
+ assert.strictEqual(err, null);
+ assert.strictEqual(result, 'text/x-c++');
+ next();
+ });
+ },
+ what: 'detectFile - UTF-8 filename'
+ },
+ { run: function() {
+ var buf = fs.readFileSync(path.join(__dirname, '..', 'src', 'binding.cc'));
+ var magic = new mmm.Magic(mmm.MAGIC_MIME_TYPE);
+ magic.detect(buf, function(err, result) {
+ assert.strictEqual(err, null);
+ assert.strictEqual(result, 'text/x-c++');
+ next();
+ });
+ },
+ what: 'detect - Normal operation, mime type'
+ },
+];
+
+function next() {
+ clearTimeout(timeout);
+ if (t > -1)
+ console.log('Finished %j', tests[t].what)
+ if (t === tests.length - 1)
+ return;
+ var v = tests[++t];
+ timeout = setTimeout(function() {
+ throw new Error(format('Test case %j timed out', v.what));
+ }, 10 * 1000);
+ console.log('Executing %j', v.what);
+ v.run.call(v);
+}
+
+function makeMsg(msg) {
+ var fmtargs = ['[%s]: ' + msg, tests[t].what];
+ for (var i = 1; i < arguments.length; ++i)
+ fmtargs.push(arguments[i]);
+ return format.apply(null, fmtargs);
+}
+
+process.once('uncaughtException', function(err) {
+ if (t > -1 && !/(?:^|\n)AssertionError: /i.test(''+err))
+ console.error(makeMsg('Unexpected Exception:'));
+
+ throw err;
+}).once('exit', function() {
+ assert(t === tests.length - 1,
+ makeMsg('Only finished %d/%d tests', (t + 1), tests.length));
+});
+
+next();