summaryrefslogtreecommitdiff
path: root/service/go
blob: abb9fa94289d5031f19d199c4bd59fff23de4526 (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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#!/bin/bash

NUM_OF_CORES=''
TRIAL_PATH=''

function getTrialAbsolutePath {
    TRIAL_PATH="$(which trial)"
}

function resolveNumOfCores {
        if [ "$(uname)" ==  "Darwin" ]; then
                NUM_OF_CORES="$(sysctl -n hw.ncpu)"
        else
                NUM_OF_CORES="$(nproc)"
        fi
}

function setuppy {
        echo "Installing Pixelated User Agent."
        pip install --upgrade pip setuptools
        if [ `uname -s` = "Darwin" ]; then
                CFLAGS="-DCRYPTOPP_DISABLE_ASM=1" pip install -r requirements.txt
        else
                pip install -r requirements.txt
        fi
        pip install -r test_requirements.txt
        echo "Done."
}

function setupjs {
        echo "Installing node and bower libraries."
        cd ../web-ui
        npm install
        node_modules/bower/bin/bower install --config.interactive=false --allow-root
        LC_ALL=en_US.UTF-8 ./go build
        cd -
        echo "Done."
}

function runIntegrationTests {
        echo "Executing Integration Tests."
        resolveNumOfCores
        trial -j $NUM_OF_CORES --reporter=text $* test.integration
        echo "Done."
}

function runUnitTests {
        echo "Executing Unit Tests."
        if [ -f ~/.config/leap/events/zmq_certificates/public_keys/server.key ] ; then
                echo "Removing zmq server.key before running tests."
                rm ~/.config/leap/events/zmq_certificates/public_keys/server.key
        fi
        trial --reporter=text $* test.unit
        echo "Done."
}

function runPep8 {
        echo "Verifying conformation to pep8."
        pep8 pixelated test --ignore=E501
        echo "Done."
}

function runJSHint {
        echo "Executing JSHint."
        cd ../web-ui
        LC_ALL=en_US.UTF-8 ./go jshint
        cd -
        echo "Done."
}

function runCoverageUnit {
        echo "Generating Unit Test Converage Information."
        coverage erase
        getTrialAbsolutePath
        coverage run -p --source=pixelated $TRIAL_PATH --reporter=text $* test.unit
        coverage combine
        coverage html
        echo "Done."
}

function runCoverageIntegration {
        echo "Generating Integration Test Converage Information."
        coverage erase
        getTrialAbsolutePath
        coverage run -p --source=pixelated $TRIAL_PATH --reporter=text $* test.integration
        coverage combine
        coverage html --ignore-errors
        echo "Done."
}

function runCoverageUnitAndIntegration {
        echo "Generating Unit and Integration Test Converage Information."
        coverage erase
        getTrialAbsolutePath
        coverage run -p --source=pixelated $TRIAL_PATH --reporter=text test.unit
        coverage run -p --source=pixelated $TRIAL_PATH --reporter=text test.integration
        coverage combine
        coverage html
        echo "Done."
}

function runFunctionalTests {
        echo "Executing Functional Tests on headless PhantomJS."
        echo "You should execute it on Debian box for more similar results with CI environment."
        behave --tags ~@wip test/functional/features
        echo "Done."
}

if [ "$1" == 'test' ]; then
        set -e
        runPep8
        runUnitTests "${@:2}"
        runIntegrationTests "${@:2}"
elif [ "$1" == 'unit' ]; then
        set -e
        runUnitTests
elif [ "$1" == 'integration' ]; then
        set -e
        runIntegrationTests
elif [ "$1" == 'pep8' ]; then
        set -e
        runPep8
elif [ "$1" == 'setuppy' ]; then
        setuppy
elif [ "$1" == 'setupjs' ]; then
        setupjs
elif [ "$1" == 'setup' ]; then
        setupjs
        setuppy "${@:2}"
elif [ "$1" == 'coverage_unit' ]; then
        runCoverageUnit "${@:2}"
elif [ "$1" == 'coverage_integration' ]; then
        runCoverageIntegration "${@:2}"
elif [ "$1" == 'coverage_all' ]; then
        set -e
        runPep8
        runCoverageUnitAndIntegration "${@:2}"
elif [ "$1" == 'start' ]; then
        /usr/bin/env pixelated-user-agent "${@:2}"
elif [ "$1" == "functional" ]; then
        runFunctionalTests "${@:2}"
else
        python setup.py $*
fi