@@ -34,53 +34,140 @@ DANGER_STATUS=
34
34
35
35
if [ " $RUN_ONLY_INTEGRATION_TESTS " = ' no' ]; then
36
36
37
- mvn --batch-mode checkstyle:check -Dcheckstyle.violationSeverity=warning \
38
- > cs.log 2>&1 || CS_STATUS=fail
37
+ # TRAVIS_COMMIT_RANGE: The range of commits that were included in the push or
38
+ # pull request. (Note that this is empty for builds triggered by the initial
39
+ # commit of a new branch.)
40
+ if [ -n " ${TRAVIS_COMMIT_RANGE:- } " ]; then
41
+ echo
42
+ echo " INFO: Range of the commits to be checked: $TRAVIS_COMMIT_RANGE "
43
+ echo ' INFO: List of the files modified by this commits range:'
44
+ git --no-pager diff --name-only $TRAVIS_COMMIT_RANGE -- | sed ' s|^| |' || :
45
+
46
+ MODIFIED_FILES=" $( git --no-pager diff --name-only $TRAVIS_COMMIT_RANGE -- 2> /dev/null || :) "
47
+
48
+ if [ -n " $MODIFIED_FILES " ]; then
49
+ AFFECTS_POM_XML=" $( echo " $MODIFIED_FILES " | fgrep -xq ' pom.xml' || echo ' no' ) "
50
+ AFFECTS_TRAVIS_CFG=" $( echo " $MODIFIED_FILES " | fgrep -xq ' .travis.yml' || echo ' no' ) "
51
+ AFFECTS_CS_CFG=" $( echo " $MODIFIED_FILES " | egrep -q ' (checkstyle\.xml|checkstyle-suppressions\.xml)$' || echo ' no' ) "
52
+ AFFECTS_FB_CFG=" $( echo " $MODIFIED_FILES " | grep -q ' findbugs-filter\.xml$' || echo ' no' ) "
53
+ AFFECTS_PMD_XML=" $( echo " $MODIFIED_FILES " | grep -q ' pmd\.xml$' || echo ' no' ) "
54
+ AFFECTS_JS_FILES=" $( echo " $MODIFIED_FILES " | grep -q ' \.js$' || echo ' no' ) "
55
+ AFFECTS_HTML_FILES=" $( echo " $MODIFIED_FILES " | grep -q ' \.html$' || echo ' no' ) "
56
+ AFFECTS_JAVA_FILES=" $( echo " $MODIFIED_FILES " | grep -q ' \.java$' || echo ' no' ) "
57
+ AFFECTS_ROBOT_FILES=" $( echo " $MODIFIED_FILES " | grep -q ' \.robot$' || echo ' no' ) "
58
+ AFFECTS_GROOVY_FILES=" $( echo " $MODIFIED_FILES " | grep -q ' \.groovy$' || echo ' no' ) "
59
+ AFFECTS_PROPERTIES=" $( echo " $MODIFIED_FILES " | grep -q ' \.properties$' || echo ' no' ) "
60
+ AFFECTS_LICENSE_HEADER=" $( echo " $MODIFIED_FILES " | grep -q ' license_header\.txt$' || echo ' no' ) "
61
+
62
+ if [ " $AFFECTS_POM_XML " = ' no' ]; then
63
+ POM_STATUS=skip
64
+ ENFORCER_STATUS=skip
65
+
66
+ if [ " $AFFECTS_JAVA_FILES " = ' no' ]; then
67
+ [ " $AFFECTS_FB_CFG " != ' no' ] || FINDBUGS_STATUS=skip
68
+ [ " $AFFECTS_CS_CFG " != ' no' -o " $AFFECTS_PROPERTIES " != ' no' ] || CS_STATUS=skip
69
+ [ " $AFFECTS_PMD_XML " != ' no' ] || PMD_STATUS=skip
70
+
71
+ if [ " $AFFECTS_GROOVY_FILES " = ' no' ]; then
72
+ TEST_STATUS=skip
73
+
74
+ [ " $AFFECTS_LICENSE_HEADER " != ' no' ] || LICENSE_STATUS=skip
75
+ fi
76
+ fi
77
+
78
+ [ " $AFFECTS_GROOVY_FILES " != ' no' ] || CODENARC_STATUS=skip
79
+ [ " $AFFECTS_JS_FILES " != ' no' ] || JASMINE_STATUS=skip
80
+ fi
81
+
82
+ if [ " $AFFECTS_TRAVIS_CFG " = ' no' ]; then
83
+ if [ " $AFFECTS_HTML_FILES " = ' no' ]; then
84
+ BOOTLINT_STATUS=skip
85
+ HTML_STATUS=skip
86
+ fi
87
+ [ " $AFFECTS_ROBOT_FILES " != ' no' ] || RFLINT_STATUS=skip
88
+ fi
89
+ echo ' INFO: Some checks could be skipped'
90
+ else
91
+ echo " INFO: Couldn't determine list of modified files."
92
+ echo ' INFO: All checks will be performed'
93
+ fi
94
+ else
95
+ echo
96
+ echo " INFO: Couldn't determine a range of the commits: \$ TRAVIS_COMMIT_RANGE is empty."
97
+ echo ' INFO: All checks will be performed'
98
+ fi
39
99
40
- mvn --batch-mode pmd:check \
41
- > pmd.log 2>&1 || PMD_STATUS=fail
100
+ if [ " $CS_STATUS " != ' skip' ]; then
101
+ mvn --batch-mode checkstyle:check -Dcheckstyle.violationSeverity=warning \
102
+ > cs.log 2>&1 || CS_STATUS=fail
103
+ fi
42
104
43
- mvn --batch-mode codenarc:codenarc -Dcodenarc.maxPriority1Violations=0 -Dcodenarc.maxPriority2Violations=0 -Dcodenarc.maxPriority3Violations=0 \
44
- > codenarc.log 2>&1 || CODENARC_STATUS=fail
105
+ if [ " $PMD_STATUS " != ' skip' ]; then
106
+ mvn --batch-mode pmd:check \
107
+ > pmd.log 2>&1 || PMD_STATUS=fail
108
+ fi
45
109
46
- mvn --batch-mode license:check \
47
- > license.log 2>&1 || LICENSE_STATUS=fail
110
+ if [ " $CODENARC_STATUS " != ' skip' ]; then
111
+ mvn --batch-mode codenarc:codenarc -Dcodenarc.maxPriority1Violations=0 -Dcodenarc.maxPriority2Violations=0 -Dcodenarc.maxPriority3Violations=0 \
112
+ > codenarc.log 2>&1 || CODENARC_STATUS=fail
113
+ fi
48
114
49
- mvn --batch-mode sortpom:verify -Dsort.verifyFail=stop \
50
- > pom.log || POM_STATUS=fail
115
+ if [ " $LICENSE_STATUS " != ' skip' ]; then
116
+ mvn --batch-mode license:check \
117
+ > license.log 2>&1 || LICENSE_STATUS=fail
118
+ fi
51
119
52
- find src -type f -name ' *.html' | xargs bootlint \
53
- > bootlint.log 2>&1 || BOOTLINT_STATUS=fail
120
+ if [ " $POM_STATUS " != ' skip' ]; then
121
+ mvn --batch-mode sortpom:verify -Dsort.verifyFail=stop \
122
+ > pom.log || POM_STATUS=fail
123
+ fi
54
124
55
- rflint --error=all --ignore TooFewKeywordSteps --ignore TooManyTestSteps --configure LineTooLong:130 src/test/robotframework \
56
- > rflint.log 2>&1 || RFLINT_STATUS=fail
125
+ if [ " $BOOTLINT_STATUS " != ' skip' ]; then
126
+ find src -type f -name ' *.html' | xargs bootlint \
127
+ > bootlint.log 2>&1 || BOOTLINT_STATUS=fail
128
+ fi
57
129
58
- mvn --batch-mode jasmine:test \
59
- > jasmine.log 2>&1 || JASMINE_STATUS=fail
130
+ if [ " $RFLINT_STATUS " != ' skip' ]; then
131
+ rflint --error=all --ignore TooFewKeywordSteps --ignore TooManyTestSteps --configure LineTooLong:130 src/test/robotframework \
132
+ > rflint.log 2>&1 || RFLINT_STATUS=fail
133
+ fi
60
134
61
- # FIXME: add check for src/main/config/nginx/503.*html
62
- # TODO: remove ignoring of error about alt attribute after resolving #314
63
- # TODO: remove ignoring of error about document language when it will be resolved in upstream
64
- html5validator \
65
- --root src/main/webapp/WEB-INF/views \
66
- --ignore-re ' Attribute “(th|sec|togglz|xmlns):[a-z]+” not allowed' \
67
- ' Attribute “(th|sec|togglz):[a-z]+” is not serializable' \
68
- ' Attribute with the local name “xmlns:[a-z]+” is not serializable' \
69
- ' An "img" element must have an "alt" attribute' \
70
- ' The first child "option" element of a "select" element with a "required" attribute' \
71
- ' This document appears to be written in (Danish|Lithuanian)' \
72
- --show-warnings \
73
- > validator.log 2>&1 || HTML_STATUS=fail
135
+ if [ " $JASMINE_STATUS " != ' skip' ]; then
136
+ mvn --batch-mode jasmine:test \
137
+ > jasmine.log 2>&1 || JASMINE_STATUS=fail
138
+ fi
74
139
75
- mvn --batch-mode enforcer:enforce \
76
- > enforcer.log 2>&1 || ENFORCER_STATUS=fail
140
+ if [ " $HTML_STATUS " != ' skip' ]; then
141
+ # FIXME: add check for src/main/config/nginx/503.*html
142
+ # TODO: remove ignoring of error about alt attribute after resolving #314
143
+ # TODO: remove ignoring of error about document language when it will be resolved in upstream
144
+ html5validator \
145
+ --root src/main/webapp/WEB-INF/views \
146
+ --ignore-re ' Attribute “(th|sec|togglz|xmlns):[a-z]+” not allowed' \
147
+ ' Attribute “(th|sec|togglz):[a-z]+” is not serializable' \
148
+ ' Attribute with the local name “xmlns:[a-z]+” is not serializable' \
149
+ ' An "img" element must have an "alt" attribute' \
150
+ ' The first child "option" element of a "select" element with a "required" attribute' \
151
+ ' This document appears to be written in (Danish|Lithuanian)' \
152
+ --show-warnings \
153
+ > validator.log 2>&1 || HTML_STATUS=fail
154
+ fi
77
155
78
- mvn --batch-mode test -Denforcer.skip=true -Dmaven.resources.skip=true -DskipMinify=true -DdisableXmlReport=false \
79
- > test.log 2>&1 || TEST_STATUS=fail
156
+ if [ " $ENFORCER_STATUS " != ' skip' ]; then
157
+ mvn --batch-mode enforcer:enforce \
158
+ > enforcer.log 2>&1 || ENFORCER_STATUS=fail
159
+ fi
80
160
81
- # run after tests for getting compiled sources
82
- mvn --batch-mode findbugs:check \
83
- > findbugs.log 2>&1 || FINDBUGS_STATUS=fail
161
+ if [ " $TEST_STATUS " != ' skip' ]; then
162
+ mvn --batch-mode test -Denforcer.skip=true -Dmaven.resources.skip=true -DskipMinify=true -DdisableXmlReport=false \
163
+ > test.log 2>&1 || TEST_STATUS=fail
164
+ fi
165
+
166
+ if [ " $FINDBUGS_STATUS " != ' skip' ]; then
167
+ # run after tests for getting compiled sources
168
+ mvn --batch-mode findbugs:check \
169
+ > findbugs.log 2>&1 || FINDBUGS_STATUS=fail
170
+ fi
84
171
fi
85
172
86
173
mvn --batch-mode verify -Denforcer.skip=true -DskipUnitTests=true \
121
208
echo
122
209
123
210
if [ " $RUN_ONLY_INTEGRATION_TESTS " = ' no' ]; then
124
- print_log cs.log ' Run CheckStyle'
125
- print_log pmd.log ' Run PMD'
126
- print_log codenarc.log ' Run CodeNarc'
127
- print_log license.log ' Check license headers'
128
- print_log pom.log ' Check sorting of pom.xml'
129
- print_log bootlint.log ' Run bootlint'
130
- print_log rflint.log ' Run robot framework lint'
131
- print_log jasmine.log ' Run JavaScript unit tests'
132
- print_log validator.log ' Run html5validator'
133
- print_log enforcer.log ' Run maven-enforcer-plugin'
211
+ [ " $CS_STATUS " = ' skip ' ] || print_log cs.log ' Run CheckStyle'
212
+ [ " $PMD_STATUS " = ' skip ' ] || print_log pmd.log ' Run PMD'
213
+ [ " $CODENARC_STATUS " = ' skip ' ] || print_log codenarc.log ' Run CodeNarc'
214
+ [ " $LICENSE_STATUS " = ' skip ' ] || print_log license.log ' Check license headers'
215
+ [ " $POM_STATUS " = ' skip ' ] || print_log pom.log ' Check sorting of pom.xml'
216
+ [ " $BOOTLINT_STATUS " = ' skip ' ] || print_log bootlint.log ' Run bootlint'
217
+ [ " $RFLINT_STATUS " = ' skip ' ] || print_log rflint.log ' Run robot framework lint'
218
+ [ " $JASMINE_STATUS " = ' skip ' ] || print_log jasmine.log ' Run JavaScript unit tests'
219
+ [ " $HTML_STATUS " = ' skip ' ] || print_log validator.log ' Run html5validator'
220
+ [ " $ENFORCER_STATUS " = ' skip ' ] || print_log enforcer.log ' Run maven-enforcer-plugin'
134
221
print_log test.log ' Run unit tests'
135
- print_log findbugs.log ' Run FindBugs'
222
+ [ " $FINDBUGS_STATUS " = ' skip ' ] || print_log findbugs.log ' Run FindBugs'
136
223
fi
137
224
138
225
print_log verify.log ' Run integration tests'
151
238
152
239
rm -f cs.log pmd.log codenarc.log license.log pom.log bootlint.log rflint.log jasmine.log validator.log enforcer.log test.log findbugs.log verify-raw.log verify.log danger.log
153
240
154
- if [ -n " $CS_STATUS$PMD_STATUS$CODENARC_STATUS$LICENSE_STATUS$POM_STATUS$BOOTLINT_STATUS$RFLINT_STATUS$JASMINE_STATUS$HTML_STATUS$ENFORCER_STATUS$TEST_STATUS$FINDBUGS_STATUS$VERIFY_STATUS$DANGER_STATUS " ] ; then
241
+ if echo " $CS_STATUS$PMD_STATUS$CODENARC_STATUS$LICENSE_STATUS$POM_STATUS$BOOTLINT_STATUS$RFLINT_STATUS$JASMINE_STATUS$HTML_STATUS$ENFORCER_STATUS$TEST_STATUS$FINDBUGS_STATUS$VERIFY_STATUS$DANGER_STATUS " | fgrep -qs ' fail ' ; then
155
242
exit 1
156
243
fi
0 commit comments