progtest: Add runner script

* .gitignore: Ignore new generated files (Autoconf, Automake, output).
* Makefile: Rename to `Makefile.am', dynamically expand
  `--harmony-destructuring'.
* autogen.sh: New script.
* bin/runner.in: New runner script.
* bin/runner.js: Resolve program path relative to CWD.
* configure.ac: New configure script.
master
Mike Gerwitz 2018-03-05 15:53:26 -05:00
parent abca20b02d
commit 06435f9f17
6 changed files with 129 additions and 3 deletions

15
progtest/.gitignore vendored
View File

@ -1,6 +1,19 @@
/node_modules
# generated by autotools
/aclocal.m4
/autom4te.cache
/build-aux
/configure
/Makefile.in
# generated by configure
bin/runner
/config.*
/Makefile
# output
/tame-progtest.js
index.js
# npm
/node_modules

View File

@ -35,7 +35,7 @@ modindex: $(nsindex)
test: check
check:
PATH="$(PATH):$(CURDIR)/node_modules/mocha/bin" \
mocha --harmony_destructuring --recursive test/
mocha @NODE_DESTRUCTURE@ --recursive test/
browserify: tame-progtest.js
tame-progtest.js: check modindex

View File

@ -0,0 +1,27 @@
#!/bin/bash
# Autoreconf runner
#
# Copyright (C) 2018 R-T Specialty, LLC.
#
# This file is part of TAME.
#
# 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/>.
##
which autoreconf &>/dev/null || {
echo "\`autoreconf' not found in PATH"
exit 1
}
exec autoreconf -fvi

View File

@ -0,0 +1,37 @@
#!/bin/bash
# Start runner using Node.js executable determined at configure-time
#
# Copyright (C) 2018 R-T Specialty, LLC.
#
# This file is part of TAME.
#
# 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/>.
#
# In addition to the configure-time NODE_FLAGS, the NODE_FLAGS environment
# variable can be used to add additional arguments to this script.
# WARNING: NODE_FLAGS arguments provided via environment varialbes are _not_
# escaped, so be mindful of word expansion!
#
# @AUTOGENERATED@
##
declare -r mypath=$( dirname $( readlink -f "$0" ) )
declare -r program="${1?Missing program JS path}"
shift
# this kluge just concatenates all test files together until we have
# multi-file support (consequently, no args will read from stdin, which is
# convenient)
"@NODE@" @NODE_FLAGS@ $NODE_FLAGS "$mypath/runner.js" "$program" <( cat "$@" )

View File

@ -21,7 +21,7 @@
"use strict";
const program = require( process.argv[ 2 ] );
const program = require( process.cwd() + '/' + process.argv[ 2 ] );
const filename = process.argv[ 3 ];
const fs = require( 'fs' );

View File

@ -0,0 +1,49 @@
## For use my automake and autoconf
#
# Copyright (C) 2018 R-T Specialty, LLC.
#
# This file is part of TAME.
#
# 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/>.
##
AC_INIT([tame-progtest], [0.0.0])
AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([foreign])
AC_ARG_VAR([NODE], [The Node.js interpreter])
AC_ARG_VAR([NODE_FLAGS], [Arguments to Node.js for test runner (bin/runner)])
AC_CHECK_PROGS(NODE, [node nodejs])
test -n "$NODE" || AC_MSG_ERROR([missing Node.js])
# only needed for older versions of Node
AC_MSG_CHECKING([$NODE --harmony_destructuring])
AS_IF(["$NODE" --harmony_destructuring >/dev/null 2>/dev/null],
[AC_MSG_RESULT(available)
AC_SUBST([NODE_DESTRUCTURE], [--harmony_destructuring])],
[AC_MSG_RESULT(no)])
NODE_FLAGS="$NODE_FLAGS $NODE_DESTRUCTURE"
AC_SUBST([AUTOGENERATED],
["THIS FILE IS AUTOGENERATED! DO NOT MODIFY! See *.in."])
AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([bin/runner],
[chmod +x bin/runner])
AC_OUTPUT
AC_MSG_NOTICE([You may now invoke \`make' to build.])