summaryrefslogtreecommitdiffstats
path: root/tests/phpunit.sh
blob: 66d8997d7527021e6e234c504e86e5d521765aba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#!/usr/bin/env bash

if [ $1 ]; then
    if [ $1 == 'full' ]; then
        fulltest=1
    else
        fulltest=0
    fi
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 <sb@sebastian-bergmann.de>
    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
    # 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