diff --git a/progtest/.gitignore b/progtest/.gitignore index b3878006..146e7e9c 100644 --- a/progtest/.gitignore +++ b/progtest/.gitignore @@ -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 + diff --git a/progtest/Makefile b/progtest/Makefile.am similarity index 96% rename from progtest/Makefile rename to progtest/Makefile.am index 2d50e916..4276795f 100644 --- a/progtest/Makefile +++ b/progtest/Makefile.am @@ -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 diff --git a/progtest/autogen.sh b/progtest/autogen.sh new file mode 100755 index 00000000..d9c18b79 --- /dev/null +++ b/progtest/autogen.sh @@ -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 . +## + +which autoreconf &>/dev/null || { + echo "\`autoreconf' not found in PATH" + exit 1 +} + +exec autoreconf -fvi diff --git a/progtest/bin/runner.in b/progtest/bin/runner.in new file mode 100644 index 00000000..2b7593c1 --- /dev/null +++ b/progtest/bin/runner.in @@ -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 . +# +# 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 "$@" ) diff --git a/progtest/bin/runner.js b/progtest/bin/runner.js index 88959922..c6c5debf 100644 --- a/progtest/bin/runner.js +++ b/progtest/bin/runner.js @@ -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' ); diff --git a/progtest/configure.ac b/progtest/configure.ac new file mode 100644 index 00000000..ea5863d2 --- /dev/null +++ b/progtest/configure.ac @@ -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 . +## + +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.])