run.js 980 Bytes
"use strict";

var TestDiscovery = require("./helper/test-discovery");
var TestCase = require("./helper/test-case");
var path = require("path");
var argv = require("yargs").argv;

var testSuite;
if (argv.language) {
	testSuite = TestDiscovery.loadSomeTests(__dirname + "/languages", argv.language);
} else {
	// load complete test suite
	testSuite = TestDiscovery.loadAllTests(__dirname + "/languages");
}

// define tests for all tests in all languages in the test suite
for (var language in testSuite) {
	if (!testSuite.hasOwnProperty(language)) {
		continue;
	}

	(function (language, testFiles) {
		describe("Testing language '" + language + "'", function () {
			testFiles.forEach(
				function (filePath) {
					var fileName = path.basename(filePath, path.extname(filePath));

					it("– should pass test case '" + fileName + "'",
						function () {
							TestCase.runTestCase(language, filePath);
						}
					);
				}
			);
		});
	})(language, testSuite[language]);
}