blob: 75192daa48b6f08beade46475420c8421680968b [file] [log] [blame]
#!/bin/sh -e
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
SRC_DIR=%abs_top_srcdir%
BUILD_DIR=%abs_top_builddir%
SCRIPT_DIR=$SRC_DIR/share/www/script
JS_TEST_DIR=$SRC_DIR/test/javascript
COUCHJS=%abs_top_builddir%/src/couchdb/priv/couchjs
COUCH_URI_FILE=%localstaterundir%/couch.uri
# make check-js calls us with MAKE=$(MAKE) so BSDish `gmake` invocations
# will get passed on correctly. If $0 gets run manually, default to
# `make`
if [ -z "$MAKE" ]; then
MAKE=make
fi
trap 'abort' EXIT INT
start() {
./utils/run -b -r 0 -n \
-a $BUILD_DIR/etc/couchdb/default_dev.ini \
-a $SRC_DIR/test/random_port.ini \
-a $BUILD_DIR/etc/couchdb/local_dev.ini 1>/dev/null
}
stop() {
./utils/run -d 1>/dev/null
}
restart() {
stop
start
}
abort() {
trap - 0
stop
exit 2
}
process_response() {
while read data
do
if [ $data = 'restart' ];
then
if [ -z $COUCHDB_NO_START ]; then
restart
fi
else
echo "$data"
fi
done
}
run() {
# start the tests
/bin/echo -n "$1 ... "
$COUCHJS -H -u $COUCH_URI_FILE \
$SCRIPT_DIR/json2.js \
$SCRIPT_DIR/sha1.js \
$SCRIPT_DIR/oauth.js \
$SCRIPT_DIR/couch.js \
$SCRIPT_DIR/replicator_db_inc.js \
$SCRIPT_DIR/couch_test_runner.js \
$JS_TEST_DIR/couch_http.js \
$JS_TEST_DIR/test_setup.js \
$1 \
$JS_TEST_DIR/cli_runner.js | process_response
if [ -z $RESULT ]; then
RESULT=$?
elif [ "$?" -eq 1 ]; then
RESULT=$?
fi
}
run_files() {
COUNTER=1
FILE_COUNT=$(ls -l $1 | wc -l)
FILE_COUNT=$(expr $FILE_COUNT + 0)
for TEST_SRC in $1
do
/bin/echo -n "$COUNTER/$FILE_COUNT "
COUNTER=$(expr $COUNTER + 1)
run $TEST_SRC
done
}
# start CouchDB
if [ -z $COUCHDB_NO_START ]; then
$MAKE dev
start
fi
echo "Running javascript tests ..."
if [ "$#" -eq 0 ];
then
run_files "$SCRIPT_DIR/test/*.js"
else
if [ -d $1 ]; then
run_files "$1/*.js"
else
TEST_SRC="$1"
if [ ! -f $TEST_SRC ]; then
TEST_SRC="$SCRIPT_DIR/test/$1"
if [ ! -f $TEST_SRC ]; then
TEST_SRC="$SCRIPT_DIR/test/$1.js"
if [ ! -f $TEST_SRC ]; then
echo "file $1 does not exist"
exit 1
fi
fi
fi
fi
run $TEST_SRC
fi
if [ -z $COUCHDB_NO_START ]; then
stop
fi
trap - 0
exit $RESULT