diff --git a/.travis.yml b/.travis.yml
index 25d9efc..0ede582 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -23,4 +23,4 @@ install:
- composer update
- chmod +x ./tests/phpunit.sh
-script: ./tests/phpunit.sh travis
+script: ./phpunit.sh travis
diff --git a/composer.json b/composer.json
index d70abf4..90cc1be 100644
--- a/composer.json
+++ b/composer.json
@@ -23,6 +23,9 @@
"require": {
"php": ">=5.2.0"
},
+ "require-dev": {
+ "phpunit/phpunit": "4.*"
+ },
"suggest": {
"ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
},
diff --git a/phpunit.sh b/phpunit.sh
new file mode 100755
index 0000000..c4c6a9f
--- /dev/null
+++ b/phpunit.sh
@@ -0,0 +1,62 @@
+#!/usr/bin/env bash
+
+if [ "$1" == 'full' ]; then
+ fulltest=1
+elif [ "$1" == 'each' ]; then
+ testeach=1
+else
+ fulltest=0
+fi
+
+PHP_VERSION=$(php -r "echo PHP_VERSION_ID;")
+
+echo
+echo -e "\033[33mBegin Unit Testing\033[0m"
+# Run the testing suite
+echo "Basic test suite:"
+php vendor/bin/phpunit tests/unit
+if [ $? -ne 0 ]; then
+ # Test failure
+ exit 1
+fi
+echo "With open_basedir enabled:"
+php -d open_basedir=`pwd` vendor/bin/phpunit tests/unit
+if [ $? -ne 0 ]; then
+ # Test failure
+ exit 1
+fi
+echo "With open_basedir enabled, allowing /dev:"
+php -d open_basedir=`pwd`:/dev vendor/bin/phpunit tests/unit
+if [ $? -ne 0 ]; then
+ # Test failure
+ exit 1
+fi
+echo "With mbstring.func_overload enabled:"
+php -d mbstring.func_overload=7 vendor/bin/phpunit tests/unit
+if [ $? -ne 0 ]; then
+ # Test failure
+ exit 1
+fi
+
+if [[ "$testeach" == "1" ]]; then
+ echo " CAPICOM:"
+ php vendor/bin/phpunit --bootstrap tests/specific/capicom.php tests/unit
+ echo " /dev/urandom:"
+ php vendor/bin/phpunit --bootstrap tests/specific/dev_urandom.php tests/unit
+ echo " libsodium:"
+ php vendor/bin/phpunit --bootstrap tests/specific/libsodium.php tests/unit
+ echo " mcrypt:"
+ php vendor/bin/phpunit --bootstrap tests/specific/mcrypt.php tests/unit
+ echo " openssl:"
+ php vendor/bin/phpunit --bootstrap tests/specific/openssl.php tests/unit
+fi
+
+# Should we perform full statistical analyses?
+if [[ "$fulltest" == "1" ]]; then
+ php vendor/bin/phpunit tests/full
+ if [ $? -ne 0 ]; then
+ # Test failure
+ exit 1
+ fi
+fi
+
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
new file mode 100644
index 0000000..b4697d3
--- /dev/null
+++ b/phpunit.xml.dist
@@ -0,0 +1,29 @@
+
+
+
+
+ tests/unit
+
+
+
+
+ ./tests/unit
+
+
+
+
+ ./lib
+
+
+
\ No newline at end of file
diff --git a/tests/phpunit.sh b/tests/phpunit.sh
deleted file mode 100755
index 93c9970..0000000
--- a/tests/phpunit.sh
+++ /dev/null
@@ -1,122 +0,0 @@
-#!/usr/bin/env bash
-
-if [ "$1" == 'full' ]; then
- fulltest=1
-elif [ "$1" == 'each' ]; then
- testeach=1
-else
- fulltest=0
-fi
-origdir=`pwd`
-cdir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
-cd $origdir
-parentdir="$(dirname $cdir)"
-
-clean=0 # Clean up?
-
-gpg --fingerprint D8406D0D82947747293778314AA394086372C20A
-if [ $? -ne 0 ]; then
- echo -e "\033[33mDownloading PGP Public Key...\033[0m"
- gpg --recv-keys D8406D0D82947747293778314AA394086372C20A
- # Sebastian Bergmann
- gpg --fingerprint D8406D0D82947747293778314AA394086372C20A
- if [ $? -ne 0 ]; then
- echo -e "\033[31mCould not download PGP public key for verification\033[0m"
- exit
- fi
-fi
-
-if [ "$clean" -eq 1 ]; then
- # Let's clean them up, if they exist
- if [ -f phpunit.phar ]; then
- rm -f phpunit.phar
- fi
- if [ -f phpunit.phar.asc ]; then
- rm -f phpunit.phar.asc
- fi
-fi
-
-PHP_VERSION=$(php -r "echo PHP_VERSION_ID;")
-
-# Let's grab the latest release and its signature
-if [ ! -f phpunit.phar ]; then
- if [[ $PHP_VERSION -ge 50600 ]]; then
- wget https://phar.phpunit.de/phpunit.phar
- else
- wget -O phpunit.phar https://phar.phpunit.de/phpunit-old.phar
- fi
-fi
-if [ ! -f phpunit.phar.asc ]; then
- if [[ $PHP_VERSION -ge 50600 ]]; then
- wget https://phar.phpunit.de/phpunit.phar.asc
- else
- wget -O phpunit.phar.asc https://phar.phpunit.de/phpunit-old.phar.asc
- fi
-fi
-
-# Verify before running
-gpg --verify phpunit.phar.asc phpunit.phar
-if [ $? -eq 0 ]; then
- echo
- echo -e "\033[33mBegin Unit Testing\033[0m"
- # Run the testing suite
- echo "Basic test suite:"
- php phpunit.phar --bootstrap "$parentdir/lib/random.php" "$parentdir/tests/unit"
- if [ $? -ne 0 ]; then
- # Test failure
- exit 1
- fi
- echo "With open_basedir enabled:"
- php -d open_basedir=$parentdir phpunit.phar --bootstrap "$parentdir/vendor/autoload.php" "$parentdir/tests/unit"
- if [ $? -ne 0 ]; then
- # Test failure
- exit 1
- fi
- echo "With open_basedir enabled, allowing /dev:"
- php -d open_basedir=$parentdir:/dev phpunit.phar --bootstrap "$parentdir/vendor/autoload.php" "$parentdir/tests/unit"
- if [ $? -ne 0 ]; then
- # Test failure
- exit 1
- fi
- echo "With mbstring.func_overload enabled:"
- php -d mbstring.func_overload=7 phpunit.phar --bootstrap "$parentdir/vendor/autoload.php" "$parentdir/tests/unit"
- if [ $? -ne 0 ]; then
- # Test failure
- exit 1
- fi
-
- if [[ "$testeach" == "1" ]]; then
- echo " CAPICOM:"
- php phpunit.phar --bootstrap "$parentdir/tests/specific/capicom.php" "$parentdir/tests/unit"
- echo " /dev/urandom:"
- php phpunit.phar --bootstrap "$parentdir/tests/specific/dev_urandom.php" "$parentdir/tests/unit"
- echo " libsodium:"
- php phpunit.phar --bootstrap "$parentdir/tests/specific/libsodium.php" "$parentdir/tests/unit"
- echo " mcrypt:"
- php phpunit.phar --bootstrap "$parentdir/tests/specific/mcrypt.php" "$parentdir/tests/unit"
- echo " openssl:"
- php phpunit.phar --bootstrap "$parentdir/tests/specific/openssl.php" "$parentdir/tests/unit"
- fi
-
- # Should we perform full statistical analyses?
- if [[ "$fulltest" == "1" ]]; then
- php phpunit.phar --bootstrap "$parentdir/vendor/autoload.php" "$parentdir/tests/full"
- if [ $? -ne 0 ]; then
- # Test failure
- exit 1
- fi
- fi
- # Cleanup
- if [[ "$clean" == "1" ]]; then
- echo -e "\033[32mCleaning Up!\033[0m"
- rm -f phpunit.phar
- rm -f phpunit.phar.asc
- fi
-else
- echo
- chmod -x phpunit.phar
- mv phpunit.phar /tmp/bad-phpunit.phar
- mv phpunit.phar.asc /tmp/bad-phpunit.phar.asc
- echo -e "\033[31mSignature did not match! Check /tmp/bad-phpunit.phar for trojans\033[0m"
- exit 1
-fi