1 |
|
2 | (function() {
|
3 | var autocode, diffMark, fs, test;
|
4 |
|
5 | autocode = require('../autocode');
|
6 |
|
7 | fs = require('fs-extra');
|
8 |
|
9 | diffMark = require('diff-mark');
|
10 |
|
11 | test = function(opts) {
|
12 | var diff, failed_tests, file, files, folder, folders, i, j, len, len1, libContent, outContent, project, test_dir;
|
13 | this.path = (function() {
|
14 | switch (true) {
|
15 | case opts && opts._ && opts._[1]:
|
16 | return opts._[1];
|
17 | case opts && typeof opts.path === 'string':
|
18 | return opts.path;
|
19 | case this.path !== void 0:
|
20 | return this.path;
|
21 | default:
|
22 | return process.cwd();
|
23 | }
|
24 | }).call(this);
|
25 | test_dir = this.path + "/src/test";
|
26 | if (!fs.existsSync(test_dir)) {
|
27 | console.log("Test Directory (" + test_dir + ") does not exist.");
|
28 | return;
|
29 | }
|
30 | folders = fs.readdirSync(test_dir);
|
31 | failed_tests = [];
|
32 | for (i = 0, len = folders.length; i < len; i++) {
|
33 | folder = folders[i];
|
34 | project = new autocode(test_dir + "/" + folder);
|
35 | project.build();
|
36 | files = fs.readdirSync(test_dir + "/" + folder + "/out");
|
37 | for (j = 0, len1 = files.length; j < len1; j++) {
|
38 | file = files[j];
|
39 | if (fs.lstatSync(test_dir + "/" + folder + "/out/" + file).isDirectory()) {
|
40 | continue;
|
41 | }
|
42 | outContent = fs.readFileSync(test_dir + "/" + folder + "/out/" + file);
|
43 | libContent = fs.readFileSync(test_dir + "/" + folder + "/lib/" + file);
|
44 | diff = diffMark.diff(outContent.toString('utf8'), libContent.toString('utf8'));
|
45 | if (diff.length > 0) {
|
46 | failed_tests.push("Test (" + folder + ") failed for file (" + file + ").");
|
47 | }
|
48 | }
|
49 | }
|
50 | if (failed_tests.length) {
|
51 | console.log(failed_tests);
|
52 | } else {
|
53 | console.log("All tests passed for: " + this.path);
|
54 | }
|
55 | return fs.removeSync(test_dir + "/" + folder + "/lib");
|
56 | };
|
57 |
|
58 | module.exports = test;
|
59 |
|
60 | }).call(this);
|