12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- 'use strict';
- var Vows = require('vows');
- var Assert = require('assert');
- var Path = require('path');
- var Fs = require('fs');
- var Common = require('../lib/js-yaml/common');
- var Helper = module.exports = {};
- Helper.suite = function suite(name, dirname, regexp) {
- var obj = Vows.describe(name);
- Fs.readdirSync(dirname).forEach(function (filename) {
- var file = Path.join(dirname, filename);
- if (Fs.statSync(file).isFile() && regexp.test(filename)) {
- obj.addBatch(require(file));
- }
- });
- return obj;
- };
- Helper.issue = function issue(desc) {
- var batch = {};
- batch[desc.title] = function () {
- desc.test();
- if (!desc.fixed) {
- throw {message: "Test passed, but it shouldn't!"};
- }
- };
- return batch;
- };
- function findTestFilenames(dataDir) {
- var filenames = {};
-
- Fs.readdirSync(dataDir).forEach(function (file) {
- var ext = Path.extname(file),
- base = Path.basename(file, ext);
- if (undefined === filenames[base]) {
- filenames[base] = [];
- }
- filenames[base].push(ext);
- });
- return filenames;
- }
- Helper.functional = function functional(desc) {
- var batch = {};
- Common.each(findTestFilenames(desc.dirname), function (exts, base) {
- var filenames = [], name;
- desc.files.forEach(function (ext) {
- if (0 <= exts.indexOf(ext)) {
- filenames.push(Path.join(desc.dirname, base + ext));
- }
- });
- if (filenames.length === desc.files.length) {
- name = filenames.map(function (f) {
- return Path.basename(f);
- }).join(', ');
- batch[name] = function () {
- desc.test.apply(desc.test, filenames);
- };
- }
- });
- return batch;
- };
|