diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1b6fc94
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+test/assert.sh
\ No newline at end of file
diff --git a/Makefile b/Makefile
index f17f19f..d4e715a 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,11 @@
-test:
+prepare:
+ test -f "test/assert.sh" || ( \
+ echo "fetching assert.sh..." && \
+ curl -s -L -o test/assert.sh \
+ https://raw.github.com/lehmannro/assert.sh/master/assert.sh \
+ )
+
+test: prepare
./test.sh
.SILENT:
diff --git a/test/assert.sh b/test/assert.sh
deleted file mode 100644
index f3d03d8..0000000
--- a/test/assert.sh
+++ /dev/null
@@ -1,139 +0,0 @@
-#!/bin/bash
-# assert.sh 1.0 - bash unit testing framework
-# Copyright (C) 2009, 2010, 2011, 2012 Robert Lehmann
-#
-# http://github.com/lehmannro/assert.sh
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this program. If not, see .
-
-export DISCOVERONLY=${DISCOVERONLY:-}
-export DEBUG=${DEBUG:-}
-export STOP=${STOP:-}
-export INVARIANT=${INVARIANT:-}
-
-args="$(getopt -n "$0" -l verbose,help,stop,discover,invariant vhxdi $*)" \
-|| exit -1
-for arg in $args; do
- case "$arg" in
- -h)
- echo "$0 [-vxid] [--verbose] [--stop] [--invariant] [--discover]"
- echo "`sed 's/./ /g' <<< "$0"` [-h] [--help]"
- exit 0;;
- --help)
- cat < [stdin]
- (( tests_ran++ ))
- [[ -n "$DISCOVERONLY" ]] && return
- # printf required for formatting
- printf -v expected "x${2:-}" # x required to overwrite older results
- result="$(eval 2>/dev/null $1 <<< ${3:-})"
- # Note: $expected is already decorated
- if [[ "x$result" == "$expected" ]]; then
- [[ -n "$DEBUG" ]] && echo -n .
- return
- fi
- [[ -n "$DEBUG" ]] && echo -n X
- result="$(sed -e :a -e '$!N;s/\n/\\n/;ta' <<< "$result")"
- [[ -z "$result" ]] && result="nothing" || result="\"$result\""
- [[ -z "$2" ]] && expected="nothing" || expected="\"$2\""
- failure="expected $expected${_indent}got $result"
- report="test #$tests_ran \"$1${3:+ <<< $3}\" failed:${_indent}$failure"
- tests_errors[$tests_failed]="$report"
- (( tests_failed++ ))
- if [[ -n "$STOP" ]]; then
- [[ -n "$DEBUG" ]] && echo
- echo "$report"
- exit 1
- fi
-}
-
-assert_raises() {
- # assert_raises [stdin]
- (( tests_ran++ ))
- [[ -n "$DISCOVERONLY" ]] && return
- (eval $1 <<< ${3:-}) > /dev/null 2>&1
- status=$?
- expected=${2:-0}
- if [[ "$status" -eq "$expected" ]]; then
- [[ -n "$DEBUG" ]] && echo -n .
- return
- fi
- [[ -n "$DEBUG" ]] && echo -n X
- failure="program terminated with code $status instead of $expected"
- report="test #$tests_ran \"$1${3:+ <<< $3}\" failed:${_indent}$failure"
- tests_errors[$tests_failed]="$report"
- (( tests_failed++ ))
- if [[ -n "$STOP" ]]; then
- [[ -n "$DEBUG" ]] && echo
- echo "$report"
- exit 1
- fi
-}
-
-_assert_reset