progtest: Generate index.js files

master
Mike Gerwitz 2018-02-16 12:39:51 -05:00
parent 47f0f4039b
commit 253f845803
4 changed files with 82 additions and 7 deletions

1
progtest/.gitignore vendored
View File

@ -1,2 +1,3 @@
/node_modules
index.js

View File

@ -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 "$*" > "$@"

View File

@ -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 ),

View File

@ -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};"