1 |
commit: 27122b247cd14a8503fc5a4c126342cdbb973a97 |
2 |
Author: Mike Frysinger <vapier <AT> gentoo <DOT> org> |
3 |
AuthorDate: Thu Dec 17 03:26:01 2015 +0000 |
4 |
Commit: Mike Frysinger <vapier <AT> gentoo <DOT> org> |
5 |
CommitDate: Thu Dec 17 03:26:01 2015 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=27122b24 |
7 |
|
8 |
enable travis build support |
9 |
|
10 |
Rework some of the tests too to work under Ubuntu. |
11 |
|
12 |
.travis.yml | 20 ++++++++++++++++++++ |
13 |
tests/atom_compare/Makefile | 23 +++++++++++++++++------ |
14 |
tests/atom_compare/atom-compare.py | 8 +++++++- |
15 |
tests/init.sh | 2 +- |
16 |
tests/qfile/dotest | 10 ++++++++-- |
17 |
tests/qmerge/dotest | 6 ++++++ |
18 |
travis/install-iniparser.sh | 18 ++++++++++++++++++ |
19 |
travis/lib.sh | 38 ++++++++++++++++++++++++++++++++++++++ |
20 |
travis/main.sh | 18 ++++++++++++++++++ |
21 |
9 files changed, 133 insertions(+), 10 deletions(-) |
22 |
|
23 |
diff --git a/.travis.yml b/.travis.yml |
24 |
new file mode 100644 |
25 |
index 0000000..015172e |
26 |
--- /dev/null |
27 |
+++ b/.travis.yml |
28 |
@@ -0,0 +1,20 @@ |
29 |
+# Travis build integration. |
30 |
+# https://docs.travis-ci.com/ |
31 |
+ |
32 |
+language: c |
33 |
+compiler: |
34 |
+ - clang |
35 |
+ - gcc |
36 |
+ |
37 |
+sudo: false |
38 |
+ |
39 |
+os: |
40 |
+ - linux |
41 |
+ |
42 |
+addons: |
43 |
+ apt: |
44 |
+ packages: |
45 |
+ |
46 |
+before_install: |
47 |
+ - ./travis/install-iniparser.sh |
48 |
+script: ./travis/main.sh |
49 |
|
50 |
diff --git a/tests/atom_compare/Makefile b/tests/atom_compare/Makefile |
51 |
index 8151922..71a980f 100644 |
52 |
--- a/tests/atom_compare/Makefile |
53 |
+++ b/tests/atom_compare/Makefile |
54 |
@@ -4,15 +4,26 @@ include ../subdir.mk |
55 |
all: test |
56 |
|
57 |
test check: static static.q portage |
58 |
- diff -u $(s)/static.good $(b)/static |
59 |
- diff -u $(s)/static.q.good $(b)/static.q |
60 |
- diff -u $(s)/static.good $(b)/portage |
61 |
|
62 |
t = \ |
63 |
- set -f && \ |
64 |
+ @set -f && \ |
65 |
$(call mkdir,$(b)) && \ |
66 |
- $(realpath $(lastword $^)) $(1) `sed 's:\#.*::' $<` \ |
67 |
- > $(@:.tests=) |
68 |
+ good=`echo $< | sed 's:.tests:.good:'`; \ |
69 |
+ out=$(@:.tests=); \ |
70 |
+ ret=0; \ |
71 |
+ $(realpath $(lastword $^)) $(1) `sed 's:\#.*::' $<` > $$out || ret=$$?; \ |
72 |
+ case $$ret in \ |
73 |
+ 0) \ |
74 |
+ if diff -u $$good $$out; then \ |
75 |
+ echo "PASS atom_compare $$out"; \ |
76 |
+ else \ |
77 |
+ echo "FAIL atom_compare $$out"; \ |
78 |
+ fi;; \ |
79 |
+ 77) echo "SKIP atom_compare $$out"; ret=0;; \ |
80 |
+ *) echo "FAIL atom_compare $$out";; \ |
81 |
+ esac; \ |
82 |
+ [ $$ret -eq 0 ] && rm -f $$out; \ |
83 |
+ exit $$ret |
84 |
|
85 |
static: $(s)/static.tests $(atb)/q |
86 |
$(call t,atom -c) |
87 |
|
88 |
diff --git a/tests/atom_compare/atom-compare.py b/tests/atom_compare/atom-compare.py |
89 |
index 7a9ce89..ab5ed6d 100755 |
90 |
--- a/tests/atom_compare/atom-compare.py |
91 |
+++ b/tests/atom_compare/atom-compare.py |
92 |
@@ -1,6 +1,12 @@ |
93 |
#!/usr/bin/python |
94 |
|
95 |
-import sys,portage |
96 |
+from __future__ import print_function |
97 |
+ |
98 |
+import sys |
99 |
+try: |
100 |
+ import portage |
101 |
+except ImportError: |
102 |
+ sys.exit(77) |
103 |
|
104 |
i = 1 |
105 |
while i < len(sys.argv): |
106 |
|
107 |
diff --git a/tests/init.sh b/tests/init.sh |
108 |
index a17821d..03d728a 100644 |
109 |
--- a/tests/init.sh |
110 |
+++ b/tests/init.sh |
111 |
@@ -24,7 +24,7 @@ setup_env() { |
112 |
: ${as:=${ats}/tests/${a}} |
113 |
|
114 |
if [[ -z ${GOOD} ]] && [[ -d ${ats}/.git ]] ; then |
115 |
- eval $(eval_ecolors) 2>/dev/null |
116 |
+ eval $(eval_ecolors 2>/dev/null) |
117 |
fi |
118 |
} |
119 |
setup_env |
120 |
|
121 |
diff --git a/tests/qfile/dotest b/tests/qfile/dotest |
122 |
index 32ca841..889aa95 100755 |
123 |
--- a/tests/qfile/dotest |
124 |
+++ b/tests/qfile/dotest |
125 |
@@ -1,5 +1,11 @@ |
126 |
#!/bin/bash |
127 |
|
128 |
+# TODO: Make these work with local vdb instead of requiring /. |
129 |
+if [[ -n ${TRAVIS_OS_NAME} ]] ; then |
130 |
+ echo "TODO: Make it work on non-Gentoo system" |
131 |
+ exit 0 |
132 |
+fi |
133 |
+ |
134 |
. ../init.sh || exit 1 |
135 |
|
136 |
tests=( |
137 |
@@ -9,10 +15,10 @@ tests=( |
138 |
"q file -Co /bin/bash /bin/XXXXX" |
139 |
"/bin/XXXXX" |
140 |
|
141 |
- "echo -e \"/bin/bash\n/bin/XXXXX\" | q file -Cq -f -" |
142 |
+ "printf \"/bin/bash\n/bin/XXXXX\" | q file -Cq -f -" |
143 |
"app-shells/bash" |
144 |
|
145 |
- "echo -e \"/bin/bash\n/bin/XXXXX\" | q file -Co -f -" |
146 |
+ "printf \"/bin/bash\n/bin/XXXXX\" | q file -Co -f -" |
147 |
"/bin/XXXXX" |
148 |
|
149 |
"q file -Co -x bash /bin/bash" |
150 |
|
151 |
diff --git a/tests/qmerge/dotest b/tests/qmerge/dotest |
152 |
index 3fc01f2..224f3b9 100755 |
153 |
--- a/tests/qmerge/dotest |
154 |
+++ b/tests/qmerge/dotest |
155 |
@@ -1,5 +1,11 @@ |
156 |
#!/bin/bash |
157 |
|
158 |
+# TODO: Make these work with local vdb instead of requiring /. |
159 |
+if [[ -n ${TRAVIS_OS_NAME} ]] ; then |
160 |
+ echo "TODO: Make it work on non-Gentoo system" |
161 |
+ exit 0 |
162 |
+fi |
163 |
+ |
164 |
. ../init.sh || exit 1 |
165 |
|
166 |
set -e |
167 |
|
168 |
diff --git a/travis/install-iniparser.sh b/travis/install-iniparser.sh |
169 |
new file mode 100755 |
170 |
index 0000000..c0edd83 |
171 |
--- /dev/null |
172 |
+++ b/travis/install-iniparser.sh |
173 |
@@ -0,0 +1,18 @@ |
174 |
+#!/bin/bash -e |
175 |
+ |
176 |
+. "${0%/*}"/lib.sh |
177 |
+ |
178 |
+main() { |
179 |
+ local pv="3.1" |
180 |
+ local S="iniparser" |
181 |
+ travis_fold start dep-iniparser |
182 |
+ rm -rf iniparser* |
183 |
+ v mkdir -p ../sysroot |
184 |
+ v wget http://distfiles.gentoo.org/distfiles/iniparser-${pv}.tar.gz |
185 |
+ v tar xf iniparser-${pv}.tar.gz |
186 |
+ m -C ${S} |
187 |
+ v cp ${S}/libiniparser.a ${S}/src/{dictionary,iniparser}.h ../sysroot/ |
188 |
+ v rm -rf iniparser* |
189 |
+ travis_fold end dep-iniparser |
190 |
+} |
191 |
+main "$@" |
192 |
|
193 |
diff --git a/travis/lib.sh b/travis/lib.sh |
194 |
new file mode 100644 |
195 |
index 0000000..687ed41 |
196 |
--- /dev/null |
197 |
+++ b/travis/lib.sh |
198 |
@@ -0,0 +1,38 @@ |
199 |
+#!/bin/bash |
200 |
+# Common funcs for working w/Travis. |
201 |
+ |
202 |
+travis_fold() { |
203 |
+ if [[ -n ${TRAVIS_OS_NAME} ]] ; then |
204 |
+ printf 'travis_fold:%s:%s\r\n' "$@" | sed 's: :_:g' |
205 |
+ fi |
206 |
+} |
207 |
+ |
208 |
+if [[ -n ${TRAVIS_OS_NAME} ]] ; then |
209 |
+ whitebg=$(tput setab 7) |
210 |
+ blackfg=$(tput setaf 0) |
211 |
+ normal=$(tput sgr0) |
212 |
+else |
213 |
+ whitebg= |
214 |
+ blackbg= |
215 |
+ normal= |
216 |
+fi |
217 |
+v() { |
218 |
+ local fold="" |
219 |
+ case $1 in |
220 |
+ --fold=*) fold=${1:7}; shift;; |
221 |
+ esac |
222 |
+ if [[ -n ${fold} ]] ; then |
223 |
+ travis_fold start "${fold}" |
224 |
+ echo "\$ $*" |
225 |
+ "$@" |
226 |
+ travis_fold end "${fold}" |
227 |
+ else |
228 |
+ echo "${whitebg}${blackfg}\$ $*${normal}" |
229 |
+ "$@" |
230 |
+ fi |
231 |
+} |
232 |
+ |
233 |
+ncpus=$(getconf _NPROCESSORS_ONLN) |
234 |
+m() { |
235 |
+ v make -j${ncpus} "$@" |
236 |
+} |
237 |
|
238 |
diff --git a/travis/main.sh b/travis/main.sh |
239 |
new file mode 100755 |
240 |
index 0000000..e333685 |
241 |
--- /dev/null |
242 |
+++ b/travis/main.sh |
243 |
@@ -0,0 +1,18 @@ |
244 |
+#!/bin/bash -e |
245 |
+ |
246 |
+. "${0%/*}"/lib.sh |
247 |
+ |
248 |
+main() { |
249 |
+ # For local deps like iniparser. |
250 |
+ export CPPFLAGS="-I${PWD}/../sysroot" |
251 |
+ export LDFLAGS="-L${PWD}/../sysroot" |
252 |
+ |
253 |
+ # Standard optimized build. |
254 |
+ m |
255 |
+ m check |
256 |
+ |
257 |
+ # Debug build w/ASAN and such enabled. |
258 |
+ m debug |
259 |
+ m check |
260 |
+} |
261 |
+main "$@" |