diff options
-rw-r--r-- | progtest/.gitignore | 1 | ||||
-rw-r--r-- | progtest/Makefile | 10 | ||||
-rw-r--r-- | progtest/bin/runner.js | 20 | ||||
-rwxr-xr-x | progtest/build-aux/gen-index | 58 |
4 files changed, 82 insertions, 7 deletions
diff --git a/progtest/.gitignore b/progtest/.gitignore index 4d64059..f2fd83b 100644 --- a/progtest/.gitignore +++ b/progtest/.gitignore @@ -1,2 +1,3 @@ /node_modules +index.js diff --git a/progtest/Makefile b/progtest/Makefile index 8c92c08..e4808ae 100644 --- a/progtest/Makefile +++ b/progtest/Makefile @@ -17,9 +17,17 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -.PHONY: check test +.PHONY: check test modindex FORCE + +namespaces=$(shell find src/ -type d) +nsindex=$(addsuffix /index.js, $(namespaces)) test: check check: PATH="$(PATH):$(CURDIR)/node_modules/mocha/bin" \ mocha --harmony_destructuring --recursive test/ + +modindex: $(nsindex) +%/index.js: FORCE + $(CURDIR)/build-aux/gen-index "$*" > "$@" + diff --git a/progtest/bin/runner.js b/progtest/bin/runner.js index 98a134e..65a499a 100644 --- a/progtest/bin/runner.js +++ b/progtest/bin/runner.js @@ -27,12 +27,20 @@ const filename = process.argv[ 3 ]; const fs = require( 'fs' ); const yaml_reader = require( 'js-yaml' ); -const TestCase = require( '../src/TestCase' ); -const YamlTestReader = require( '../src/reader/YamlTestReader' ); -const ConstResolver = require( '../src/reader/ConstResolver' ); -const DateResolver = require( '../src/reader/DateResolver' ); -const TestRunner = require( '../src/TestRunner' ); -const ConsoleTestReporter = require( '../src/reporter/ConsoleTestReporter' ); +const { + TestCase, + TestRunner, + + reader: { + ConstResolver, + DateResolver, + YamlTestReader + }, + + reporter: { + ConsoleTestReporter + }, +} = require( '../src' ); const runner = TestRunner( ConsoleTestReporter( process.stdout ), diff --git a/progtest/build-aux/gen-index b/progtest/build-aux/gen-index new file mode 100755 index 0000000..5cdb350 --- /dev/null +++ b/progtest/build-aux/gen-index @@ -0,0 +1,58 @@ +#!/bin/bash +# Generates index.js from sources in destination directory +# +# Copyright (C) 2014 R-T Specialty, LLC. +# +# This file is part of liza. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +## + +shopt -s extglob nullglob + +destpath="${1?Destination path required}" + +cat <<EOH +/*** GENERATED BY gen-index; DO NOT MODIFY ***/ + +module.exports = { +EOH + +declare -i i + +# generate require for each module +for module in "$destpath"/!(index).js; do + modname="$( basename "$module" .js )" + + # humor ECMAScript 3 for now + if ((i++)); then + echo , + fi + + echo -n " get '$modname'() { return require( './$modname' ); }" +done + +# include index.js for any sub-directories (namespace) +for dir in $( find "$destpath" -maxdepth 1 -mindepth 1 -type d ); do + ns=$( basename "$dir" ) + + # humor ECMAScript 3 for now + if ((i++)); then + echo , + fi + + echo -n " get '$ns'() { return require('./$ns'); }" +done + +echo -e "\n};" |