Mike Gerwitz

Activist for User Freedom

aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'progtest')
-rw-r--r--progtest/.gitignore1
-rw-r--r--progtest/Makefile10
-rw-r--r--progtest/bin/runner.js20
-rwxr-xr-xprogtest/build-aux/gen-index58
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};"