getrepos 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +6 -0
- data/README.md +154 -0
- data/Rakefile +16 -0
- data/bin/getrepos +68 -0
- data/getrepos.gemspec +29 -0
- data/lib/getrepos/init.rb +34 -0
- data/lib/getrepos/install.rb +115 -0
- data/lib/getrepos/util.rb +48 -0
- data/lib/getrepos/version.rb +3 -0
- data/lib/getrepos.rb +3 -0
- data/test/basic-usage-test.sh +80 -0
- data/test/check-test.sh +60 -0
- data/test/common-archives-test.sh +63 -0
- data/test/github-archives-test.sh +108 -0
- data/test/helper/roundup.sh +307 -0
- data/test/helper/valid_json.rb +25 -0
- data/test/path-filter-test.sh +28 -0
- data/test/repos-basic-usage.json +24 -0
- data/test/repos-check-absent-all.json +3 -0
- data/test/repos-check-absent-name.json +3 -0
- data/test/repos-check-absent-repos.json +3 -0
- data/test/repos-check-absent-url.json +3 -0
- data/test/repos-check-absent-version.json +3 -0
- data/test/repos-check-invalid-filetype.json +3 -0
- data/test/repos-common-httpd-tar-bz2.json +3 -0
- data/test/repos-common-httpd-tar-gz.json +3 -0
- data/test/repos-common-mod_fcgid-tar-bz2.json +3 -0
- data/test/repos-common-mod_fcgid-tar-gz.json +3 -0
- data/test/repos-common-python-tar-xz.json +3 -0
- data/test/repos-common-python-tgz.json +3 -0
- data/test/repos-common-ruby-tar-bz2.json +3 -0
- data/test/repos-common-ruby-tar-gz.json +3 -0
- data/test/repos-common-ruby-tar-xz.json +3 -0
- data/test/repos-common-ruby-zip.json +3 -0
- data/test/repos-github-hiredis-git.json +3 -0
- data/test/repos-github-hiredis-tar-gz.json +3 -0
- data/test/repos-github-hiredis-zip.json +3 -0
- data/test/repos-github-libmaxminddb-git.json +3 -0
- data/test/repos-github-libmaxminddb-release-tar-gz.json +3 -0
- data/test/repos-github-libmaxminddb-tar-gz.json +3 -0
- data/test/repos-github-libmaxminddb-zip.json +3 -0
- data/test/repos-github-other-name-id-tar-gz.json +3 -0
- data/test/repos-github-other-name-id-zip.json +3 -0
- data/test/repos-github-other-name-id.json +3 -0
- data/test/repos-github-other-name-tag-tar-gz.json +3 -0
- data/test/repos-github-other-name-tag-zip.json +3 -0
- data/test/repos-github-other-name-tag.json +3 -0
- data/test/repos-github-same-name-id-tar-gz.json +3 -0
- data/test/repos-github-same-name-id-zip.json +3 -0
- data/test/repos-github-same-name-id.json +3 -0
- data/test/repos-github-same-name-tag-tar-gz.json +3 -0
- data/test/repos-github-same-name-tag-zip.json +3 -0
- data/test/repos-github-same-name-tag.json +3 -0
- data/test/repos-path-filter-git.json +5 -0
- data/test/repos-path-filter-tar-gz.json +5 -0
- data/test/repos-path-filter-zip.json +5 -0
- metadata +181 -0
@@ -0,0 +1,63 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
describe "Common archive packages handling (tar.gz/tgz, tar.bz2, tar.xz, zip, jar)"
|
4
|
+
|
5
|
+
before() {
|
6
|
+
rm -rf build
|
7
|
+
}
|
8
|
+
|
9
|
+
after() {
|
10
|
+
rm -rf build
|
11
|
+
}
|
12
|
+
|
13
|
+
it_common_httpd_tar_gz() {
|
14
|
+
../bin/getrepos install repos-common-httpd-tar-gz.json
|
15
|
+
test -f build/repos/httpd-2.4.18/configure
|
16
|
+
}
|
17
|
+
|
18
|
+
it_common_httpd_tar_bz2() {
|
19
|
+
../bin/getrepos install repos-common-httpd-tar-bz2.json
|
20
|
+
test -f build/repos/httpd-2.4.18/configure
|
21
|
+
}
|
22
|
+
|
23
|
+
it_common_mod_fcgid_tar_gz() {
|
24
|
+
../bin/getrepos install repos-common-mod_fcgid-tar-gz.json
|
25
|
+
test -f build/repos/mod_fcgid-2.3.9/configure.apxs
|
26
|
+
}
|
27
|
+
|
28
|
+
it_common_mod_fcgid_tar_bz2() {
|
29
|
+
../bin/getrepos install repos-common-mod_fcgid-tar-bz2.json
|
30
|
+
test -f build/repos/mod_fcgid-2.3.9/configure.apxs
|
31
|
+
}
|
32
|
+
|
33
|
+
it_common_python_tgz() {
|
34
|
+
../bin/getrepos install repos-common-python-tgz.json
|
35
|
+
test -f build/repos/python-3.5.1/configure
|
36
|
+
}
|
37
|
+
|
38
|
+
it_common_python_tar_xz() {
|
39
|
+
../bin/getrepos install repos-common-python-tar-xz.json
|
40
|
+
test -f build/repos/python-3.5.1/configure
|
41
|
+
}
|
42
|
+
|
43
|
+
it_common_ruby_tar_gz() {
|
44
|
+
../bin/getrepos install repos-common-ruby-tar-gz.json
|
45
|
+
test -f build/repos/ruby-2.3.0/configure
|
46
|
+
}
|
47
|
+
|
48
|
+
it_common_ruby_tar_bz2() {
|
49
|
+
../bin/getrepos install repos-common-ruby-tar-bz2.json
|
50
|
+
test -f build/repos/ruby-2.3.0/configure
|
51
|
+
}
|
52
|
+
|
53
|
+
it_common_ruby_tar_xz() {
|
54
|
+
../bin/getrepos install repos-common-ruby-tar-xz.json
|
55
|
+
test -f build/repos/ruby-2.3.0/configure
|
56
|
+
}
|
57
|
+
|
58
|
+
it_common_ruby_zip() {
|
59
|
+
../bin/getrepos install repos-common-ruby-zip.json
|
60
|
+
test -f build/repos/ruby-2.3.0/configure
|
61
|
+
}
|
62
|
+
|
63
|
+
# EOF
|
@@ -0,0 +1,108 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
describe "GitHub archives handling (git, tar.gz, zip)"
|
4
|
+
|
5
|
+
before() {
|
6
|
+
rm -rf build
|
7
|
+
}
|
8
|
+
|
9
|
+
after() {
|
10
|
+
rm -rf build
|
11
|
+
}
|
12
|
+
|
13
|
+
it_github_same_name_id() {
|
14
|
+
../bin/getrepos install repos-github-same-name-id.json
|
15
|
+
test -f build/repos/nginx-push-stream-module-b2056f63c27117952afc82d7a295acf0054edc28/config
|
16
|
+
}
|
17
|
+
|
18
|
+
it_github_same_name_id_tar_gz() {
|
19
|
+
../bin/getrepos install repos-github-same-name-id-tar-gz.json
|
20
|
+
test -f build/repos/nginx-push-stream-module-b2056f63c27117952afc82d7a295acf0054edc28/config
|
21
|
+
}
|
22
|
+
|
23
|
+
it_github_same_name_id_zip() {
|
24
|
+
../bin/getrepos install repos-github-same-name-id-zip.json
|
25
|
+
test -f build/repos/nginx-push-stream-module-b2056f63c27117952afc82d7a295acf0054edc28/config
|
26
|
+
}
|
27
|
+
|
28
|
+
it_github_same_name_tag() {
|
29
|
+
../bin/getrepos install repos-github-same-name-tag.json
|
30
|
+
test -f build/repos/nginx-push-stream-module-0.5.1/config
|
31
|
+
}
|
32
|
+
|
33
|
+
it_github_same_name_tag_tar_gz() {
|
34
|
+
../bin/getrepos install repos-github-same-name-tag-tar-gz.json
|
35
|
+
test -f build/repos/nginx-push-stream-module-0.5.1/config
|
36
|
+
}
|
37
|
+
|
38
|
+
it_github_same_name_tag_zip() {
|
39
|
+
../bin/getrepos install repos-github-same-name-tag-zip.json
|
40
|
+
test -f build/repos/nginx-push-stream-module-0.5.1/config
|
41
|
+
}
|
42
|
+
|
43
|
+
it_github_other_name_id() {
|
44
|
+
../bin/getrepos install repos-github-other-name-id.json
|
45
|
+
test -f build/repos/nginx-push-stream-b2056f63c27117952afc82d7a295acf0054edc28/config
|
46
|
+
}
|
47
|
+
|
48
|
+
it_github_other_name_id_tar_gz() {
|
49
|
+
../bin/getrepos install repos-github-other-name-id-tar-gz.json
|
50
|
+
test -f build/repos/nginx-push-stream-b2056f63c27117952afc82d7a295acf0054edc28/config
|
51
|
+
}
|
52
|
+
|
53
|
+
it_github_other_name_id_zip() {
|
54
|
+
../bin/getrepos install repos-github-other-name-id-zip.json
|
55
|
+
test -f build/repos/nginx-push-stream-b2056f63c27117952afc82d7a295acf0054edc28/config
|
56
|
+
}
|
57
|
+
|
58
|
+
it_github_other_name_tag() {
|
59
|
+
../bin/getrepos install repos-github-other-name-tag.json
|
60
|
+
test -f build/repos/nginx-push-stream-0.5.1/config
|
61
|
+
}
|
62
|
+
|
63
|
+
it_github_other_name_tag_tar_gz() {
|
64
|
+
../bin/getrepos install repos-github-other-name-tag-tar-gz.json
|
65
|
+
test -f build/repos/nginx-push-stream-0.5.1/config
|
66
|
+
}
|
67
|
+
|
68
|
+
it_github_other_name_tag_zip() {
|
69
|
+
../bin/getrepos install repos-github-other-name-tag-zip.json
|
70
|
+
test -f build/repos/nginx-push-stream-0.5.1/config
|
71
|
+
}
|
72
|
+
|
73
|
+
it_github_hiredis_git() {
|
74
|
+
../bin/getrepos install repos-github-hiredis-git.json
|
75
|
+
test -f build/repos/hiredis-v0.13.3/Makefile
|
76
|
+
}
|
77
|
+
|
78
|
+
it_github_hiredis_tar_gz() {
|
79
|
+
../bin/getrepos install repos-github-hiredis-tar-gz.json
|
80
|
+
test -f build/repos/hiredis-0.13.3/Makefile
|
81
|
+
}
|
82
|
+
|
83
|
+
it_github_hiredis_zip() {
|
84
|
+
../bin/getrepos install repos-github-hiredis-zip.json
|
85
|
+
test -f build/repos/hiredis-0.13.3/Makefile
|
86
|
+
}
|
87
|
+
|
88
|
+
it_github_libmaxminddb_git() {
|
89
|
+
../bin/getrepos install repos-github-libmaxminddb-git.json
|
90
|
+
test -f build/repos/libmaxminddb-1.1.4/Makefile.am
|
91
|
+
}
|
92
|
+
|
93
|
+
it_github_libmaxminddb_tar_gz() {
|
94
|
+
../bin/getrepos install repos-github-libmaxminddb-tar-gz.json
|
95
|
+
test -f build/repos/libmaxminddb-1.1.4/Makefile.am
|
96
|
+
}
|
97
|
+
|
98
|
+
it_github_libmaxminddb_zip() {
|
99
|
+
../bin/getrepos install repos-github-libmaxminddb-zip.json
|
100
|
+
test -f build/repos/libmaxminddb-1.1.4/Makefile.am
|
101
|
+
}
|
102
|
+
|
103
|
+
it_github_libmaxminddb_release_tar_gz() {
|
104
|
+
../bin/getrepos install repos-github-libmaxminddb-release-tar-gz.json
|
105
|
+
test -f build/repos/libmaxminddb-1.1.4/configure
|
106
|
+
}
|
107
|
+
|
108
|
+
# EOF
|
@@ -0,0 +1,307 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
# [r5]: roundup.5.html
|
3
|
+
# [r1t]: roundup-1-test.sh.html
|
4
|
+
# [r5t]: roundup-5-test.sh.html
|
5
|
+
#
|
6
|
+
# _(c) 2010 Blake Mizerany - MIT License_
|
7
|
+
#
|
8
|
+
# Spray **roundup** on your shells to eliminate weeds and bugs. If your shells
|
9
|
+
# survive **roundup**'s deathly toxic properties, they are considered
|
10
|
+
# roundup-ready.
|
11
|
+
#
|
12
|
+
# **roundup** reads shell scripts to form test plans. Each
|
13
|
+
# test plan is sourced into a sandbox where each test is executed.
|
14
|
+
#
|
15
|
+
# See [roundup-1-test.sh.html][r1t] or [roundup-5-test.sh.html][r5t] for example
|
16
|
+
# test plans.
|
17
|
+
#
|
18
|
+
# __Install__
|
19
|
+
#
|
20
|
+
# git clone http://github.com/bmizerany/roundup.git
|
21
|
+
# cd roundup
|
22
|
+
# make
|
23
|
+
# sudo make install
|
24
|
+
# # Alternatively, copy `roundup` wherever you like.
|
25
|
+
#
|
26
|
+
# __NOTE__: Because test plans are sourced into roundup, roundup prefixes its
|
27
|
+
# variable and function names with `roundup_` to avoid name collisions. See
|
28
|
+
# "Sandbox Test Runs" below for more insight.
|
29
|
+
|
30
|
+
# Usage and Prerequisites
|
31
|
+
# -----------------------
|
32
|
+
|
33
|
+
# Exit if any following command exits with a non-zero status.
|
34
|
+
set -e
|
35
|
+
|
36
|
+
# The current version is set during `make version`. Do not modify this line in
|
37
|
+
# anyway unless you know what you're doing.
|
38
|
+
ROUNDUP_VERSION="0.0.5"
|
39
|
+
export ROUNDUP_VERSION
|
40
|
+
|
41
|
+
# Usage is defined in a specific comment syntax. It is `grep`ed out of this file
|
42
|
+
# when needed (i.e. The Tomayko Method). See
|
43
|
+
# [shocco](http://rtomayko.heroku.com/shocco) for more detail.
|
44
|
+
#/ usage: roundup [--help|-h] [--version|-v] [plan ...]
|
45
|
+
|
46
|
+
roundup_usage() {
|
47
|
+
grep '^#/' <"$0" | cut -c4-
|
48
|
+
}
|
49
|
+
|
50
|
+
while test "$#" -gt 0
|
51
|
+
do
|
52
|
+
case "$1" in
|
53
|
+
--help|-h)
|
54
|
+
roundup_usage
|
55
|
+
exit 0
|
56
|
+
;;
|
57
|
+
--version|-v)
|
58
|
+
echo "roundup version $ROUNDUP_VERSION"
|
59
|
+
exit 0
|
60
|
+
;;
|
61
|
+
--color)
|
62
|
+
color=always
|
63
|
+
shift
|
64
|
+
;;
|
65
|
+
-)
|
66
|
+
echo >&2 "roundup: unknown switch $1"
|
67
|
+
exit 1
|
68
|
+
;;
|
69
|
+
*)
|
70
|
+
break
|
71
|
+
;;
|
72
|
+
esac
|
73
|
+
done
|
74
|
+
|
75
|
+
# Consider all scripts with names matching `*-test.sh` the plans to run unless
|
76
|
+
# otherwise specified as arguments.
|
77
|
+
if [ "$#" -gt "0" ]
|
78
|
+
then
|
79
|
+
roundup_plans="$@"
|
80
|
+
else
|
81
|
+
roundup_plans="$(ls *-test.sh)"
|
82
|
+
fi
|
83
|
+
|
84
|
+
: ${color:="auto"}
|
85
|
+
|
86
|
+
# Create a temporary storage place for test output to be retrieved for display
|
87
|
+
# after failing tests.
|
88
|
+
roundup_tmp="$PWD/.roundup.$$"
|
89
|
+
mkdir -p "$roundup_tmp"
|
90
|
+
|
91
|
+
trap "rm -rf \"$roundup_tmp\"" EXIT INT
|
92
|
+
|
93
|
+
# __Tracing failures__
|
94
|
+
roundup_trace() {
|
95
|
+
# Delete the first two lines that represent roundups execution of the
|
96
|
+
# test function. They are useless to the user.
|
97
|
+
sed '1d' |
|
98
|
+
# Delete the last line which is the "set +x" of the error trap
|
99
|
+
sed '$d' |
|
100
|
+
# Replace the rc=$? of the error trap with an verbose string appended
|
101
|
+
# to the failing command trace line.
|
102
|
+
sed '$s/.*rc=/exit code /' |
|
103
|
+
# Trim the two left most `+` signs. They represent the depth at which
|
104
|
+
# roundup executed the function. They also, are useless and confusing.
|
105
|
+
sed 's/^++//' |
|
106
|
+
# Indent the output by 4 spaces to align under the test name in the
|
107
|
+
# summary.
|
108
|
+
sed 's/^/ /' |
|
109
|
+
# Highlight the last line in front of the exit code to bring notice to
|
110
|
+
# where the error occurred.
|
111
|
+
#
|
112
|
+
# The sed magic puts every line into the hold buffer first, then
|
113
|
+
# substitutes in the previous hold buffer content, prints that and starts
|
114
|
+
# with the next cycle. At the end the last line (in the hold buffer)
|
115
|
+
# is printed without substitution.
|
116
|
+
sed -n "x;1!{ \$s/\(.*\)/$mag\1$clr/; };1!p;\$x;\$p"
|
117
|
+
}
|
118
|
+
|
119
|
+
# __Other helpers__
|
120
|
+
|
121
|
+
# Track the test stats while outputting a real-time report. This takes input on
|
122
|
+
# **stdin**. Each input line must come in the format of:
|
123
|
+
#
|
124
|
+
# # The plan description to be displayed
|
125
|
+
# d <plan description>
|
126
|
+
#
|
127
|
+
# # A passing test
|
128
|
+
# p <test name>
|
129
|
+
#
|
130
|
+
# # A failed test
|
131
|
+
# f <test name>
|
132
|
+
roundup_summarize() {
|
133
|
+
set -e
|
134
|
+
|
135
|
+
# __Colors for output__
|
136
|
+
|
137
|
+
# Use colors if we are writing to a tty device.
|
138
|
+
if (test -t 1) || (test $color = always)
|
139
|
+
then
|
140
|
+
red=$(printf "\033[31m")
|
141
|
+
grn=$(printf "\033[32m")
|
142
|
+
mag=$(printf "\033[35m")
|
143
|
+
clr=$(printf "\033[m")
|
144
|
+
cols=$(tput cols)
|
145
|
+
fi
|
146
|
+
|
147
|
+
# Make these available to `roundup_trace`.
|
148
|
+
export red grn mag clr
|
149
|
+
|
150
|
+
ntests=0
|
151
|
+
passed=0
|
152
|
+
failed=0
|
153
|
+
|
154
|
+
: ${cols:=10}
|
155
|
+
|
156
|
+
while read status name
|
157
|
+
do
|
158
|
+
case $status in
|
159
|
+
p)
|
160
|
+
ntests=$(expr $ntests + 1)
|
161
|
+
passed=$(expr $passed + 1)
|
162
|
+
printf " %-48s " "$name:"
|
163
|
+
printf "$grn[PASS]$clr\n"
|
164
|
+
;;
|
165
|
+
f)
|
166
|
+
ntests=$(expr $ntests + 1)
|
167
|
+
failed=$(expr $failed + 1)
|
168
|
+
printf " %-48s " "$name:"
|
169
|
+
printf "$red[FAIL]$clr\n"
|
170
|
+
roundup_trace < "$roundup_tmp/$name"
|
171
|
+
;;
|
172
|
+
d)
|
173
|
+
printf "%s\n" "$name"
|
174
|
+
;;
|
175
|
+
esac
|
176
|
+
done
|
177
|
+
# __Test Summary__
|
178
|
+
#
|
179
|
+
# Display the summary now that all tests are finished.
|
180
|
+
yes = | head -n 57 | tr -d '\n'
|
181
|
+
printf "\n"
|
182
|
+
printf "Tests: %3d | " $ntests
|
183
|
+
printf "Passed: %3d | " $passed
|
184
|
+
printf "Failed: %3d" $failed
|
185
|
+
printf "\n"
|
186
|
+
|
187
|
+
# Exit with an error if any tests failed
|
188
|
+
test $failed -eq 0 || exit 2
|
189
|
+
}
|
190
|
+
|
191
|
+
# Sandbox Test Runs
|
192
|
+
# -----------------
|
193
|
+
|
194
|
+
# The above checks guarantee we have at least one test. We can now move through
|
195
|
+
# each specified test plan, determine its test plan, and administer each test
|
196
|
+
# listed in a isolated sandbox.
|
197
|
+
for roundup_p in $roundup_plans
|
198
|
+
do
|
199
|
+
# Create a sandbox, source the test plan, run the tests, then leave
|
200
|
+
# without a trace.
|
201
|
+
(
|
202
|
+
# Consider the description to be the `basename` of the plan minus the
|
203
|
+
# tailing -test.sh.
|
204
|
+
roundup_desc=$(basename "$roundup_p" -test.sh)
|
205
|
+
|
206
|
+
# Define functions for
|
207
|
+
# [roundup(5)][r5]
|
208
|
+
|
209
|
+
# A custom description is recommended, but optional. Use `describe` to
|
210
|
+
# set the description to something more meaningful.
|
211
|
+
# TODO: reimplement this.
|
212
|
+
describe() {
|
213
|
+
roundup_desc="$*"
|
214
|
+
}
|
215
|
+
|
216
|
+
# Provide default `before` and `after` functions that run only `:`, a
|
217
|
+
# no-op. They may or may not be redefined by the test plan.
|
218
|
+
before() { :; }
|
219
|
+
after() { :; }
|
220
|
+
|
221
|
+
# Seek test methods and aggregate their names, forming a test plan.
|
222
|
+
# This is done before populating the sandbox with tests to avoid odd
|
223
|
+
# conflicts.
|
224
|
+
|
225
|
+
# TODO: I want to do this with sed only. Please send a patch if you
|
226
|
+
# know a cleaner way.
|
227
|
+
roundup_plan=$(
|
228
|
+
grep "^it_.*()" $roundup_p |
|
229
|
+
sed "s/\(it_[a-zA-Z0-9_]*\).*$/\1/g"
|
230
|
+
)
|
231
|
+
|
232
|
+
# We have the test plan and are in our sandbox with [roundup(5)][r5]
|
233
|
+
# defined. Now we source the plan to bring its tests into scope.
|
234
|
+
. ./$roundup_p
|
235
|
+
|
236
|
+
# Output the description signal
|
237
|
+
printf "d %s" "$roundup_desc" | tr "\n" " "
|
238
|
+
printf "\n"
|
239
|
+
|
240
|
+
for roundup_test_name in $roundup_plan
|
241
|
+
do
|
242
|
+
# Any number of things are possible in `before`, `after`, and the
|
243
|
+
# test. Drop into an subshell to contain operations that may throw
|
244
|
+
# off roundup; such as `cd`.
|
245
|
+
(
|
246
|
+
# Output `before` trace to temporary file. If `before` runs cleanly,
|
247
|
+
# the trace will be overwritten by the actual test case below.
|
248
|
+
{
|
249
|
+
# redirect tracing output of `before` into file.
|
250
|
+
{
|
251
|
+
set -x
|
252
|
+
# If `before` wasn't redefined, then this is `:`.
|
253
|
+
before
|
254
|
+
} &>"$roundup_tmp/$roundup_test_name"
|
255
|
+
# disable tracing again. Its trace output goes to /dev/null.
|
256
|
+
set +x
|
257
|
+
} &>/dev/null
|
258
|
+
|
259
|
+
# exit subshell with return code of last failing command. This
|
260
|
+
# is needed to see the return code 253 on failed assumptions.
|
261
|
+
# But, only do this if the error handling is activated.
|
262
|
+
set -E
|
263
|
+
trap 'rc=$?; set +x; set -o | grep "errexit.*on" >/dev/null && exit $rc' ERR
|
264
|
+
|
265
|
+
# If `before` wasn't redefined, then this is `:`.
|
266
|
+
before
|
267
|
+
|
268
|
+
# Momentarily turn off auto-fail to give us access to the tests
|
269
|
+
# exit status in `$?` for capturing.
|
270
|
+
set +e
|
271
|
+
(
|
272
|
+
# Set `-xe` before the test in the subshell. We want the
|
273
|
+
# test to fail fast to allow for more accurate output of
|
274
|
+
# where things went wrong but not in _our_ process because a
|
275
|
+
# failed test should not immediately fail roundup. Each
|
276
|
+
# tests trace output is saved in temporary storage.
|
277
|
+
set -xe
|
278
|
+
$roundup_test_name
|
279
|
+
) >"$roundup_tmp/$roundup_test_name" 2>&1
|
280
|
+
|
281
|
+
# We need to capture the exit status before returning the `set
|
282
|
+
# -e` mode. Returning with `set -e` before we capture the exit
|
283
|
+
# status will result in `$?` being set with `set`'s status
|
284
|
+
# instead.
|
285
|
+
roundup_result=$?
|
286
|
+
|
287
|
+
# It's safe to return to normal operation.
|
288
|
+
set -e
|
289
|
+
|
290
|
+
# If `after` wasn't redefined, then this runs `:`.
|
291
|
+
after
|
292
|
+
|
293
|
+
# This is the final step of a test. Print its pass/fail signal
|
294
|
+
# and name.
|
295
|
+
if [ "$roundup_result" -ne 0 ]
|
296
|
+
then printf "f"
|
297
|
+
else printf "p"
|
298
|
+
fi
|
299
|
+
|
300
|
+
printf " $roundup_test_name\n"
|
301
|
+
)
|
302
|
+
done
|
303
|
+
)
|
304
|
+
done |
|
305
|
+
|
306
|
+
# All signals are piped to this for summary.
|
307
|
+
roundup_summarize
|
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
def is_valid_json?(data)
|
6
|
+
begin
|
7
|
+
JSON.parse(data)
|
8
|
+
true
|
9
|
+
rescue
|
10
|
+
false
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def is_valid_json_file?(filename)
|
15
|
+
is_valid_json?(File.read(filename))
|
16
|
+
end
|
17
|
+
|
18
|
+
############
|
19
|
+
### MAIN ###
|
20
|
+
############
|
21
|
+
|
22
|
+
if __FILE__ == $0
|
23
|
+
exit 0 if is_valid_json_file?(ARGV.first)
|
24
|
+
exit 1
|
25
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
describe "Path filtering during extraction"
|
4
|
+
|
5
|
+
before() {
|
6
|
+
rm -rf build
|
7
|
+
}
|
8
|
+
|
9
|
+
after() {
|
10
|
+
rm -rf build
|
11
|
+
}
|
12
|
+
|
13
|
+
it_path_filter_git() {
|
14
|
+
../bin/getrepos install repos-path-filter-git.json
|
15
|
+
test -f build/repos/openresty-v1.9.7.4/nginx-0.8.54-allow_request_body_updating.patch
|
16
|
+
}
|
17
|
+
|
18
|
+
it_path_filter_tar_gz() {
|
19
|
+
../bin/getrepos install repos-path-filter-tar-gz.json
|
20
|
+
test -f build/repos/openresty-1.9.7.4/nginx-0.8.54-allow_request_body_updating.patch
|
21
|
+
}
|
22
|
+
|
23
|
+
it_path_filter_zip() {
|
24
|
+
../bin/getrepos install repos-path-filter-zip.json
|
25
|
+
test -f build/repos/openresty-1.9.7.4/nginx-0.8.54-allow_request_body_updating.patch
|
26
|
+
}
|
27
|
+
|
28
|
+
# EOF
|
@@ -0,0 +1,24 @@
|
|
1
|
+
{"repos": [
|
2
|
+
// Nginx
|
3
|
+
{"name": "nginx", "version": "1.9.12", "url": "http://nginx.org/download/nginx-1.9.12.tar.gz"},
|
4
|
+
// Deps
|
5
|
+
{"name": "luajit", "version": "2.1.0-beta2", "url": "http://luajit.org/download/LuaJIT-2.1.0-beta2.tar.gz"},
|
6
|
+
{"name": "lua-cjson", "version": "2.1.0.3", "url": "https://github.com/openresty/lua-cjson.git"},
|
7
|
+
{"name": "hiredis", "version": "v0.13.3", "url": "https://github.com/redis/hiredis.git"},
|
8
|
+
{"name": "libmaxminddb", "version": "1.1.4", "url": "https://github.com/maxmind/libmaxminddb/releases/download/1.1.4/libmaxminddb-1.1.4.tar.gz"},
|
9
|
+
// Native modules
|
10
|
+
{"name": "lua-nginx", "version": "v0.10.2", "url": "https://github.com/openresty/lua-nginx-module.git"},
|
11
|
+
{"name": "lua-upstream-nginx", "version": "v0.05", "url": "https://github.com/openresty/lua-upstream-nginx-module.git"},
|
12
|
+
{"name": "redis2-nginx", "version": "v0.12", "url": "https://github.com/openresty/redis2-nginx-module.git"},
|
13
|
+
{"name": "set-misc-nginx", "version": "v0.30", "url": "https://github.com/openresty/set-misc-nginx-module.git"},
|
14
|
+
{"name": "ngx_cache_purge", "version": "2.3", "url": "https://github.com/FRiCKLE/ngx_cache_purge/archive/2.3.tar.gz"},
|
15
|
+
{"name": "nginx-push-stream", "version": "0.5.1", "url": "https://github.com/wandenberg/nginx-push-stream-module.git"},
|
16
|
+
{"name": "ngx_http_auth_request", "version": "662785733552", "url": "http://mdounin.ru/hg/ngx_http_auth_request_module/archive/tip.tar.gz", "path": "ngx_http_auth_request_module-662785733552"},
|
17
|
+
// Lua modules
|
18
|
+
{"name": "lua-resty-core", "version": "v0.1.5", "url": "https://github.com/openresty/lua-resty-core.git"},
|
19
|
+
{"name": "lua-resty-dns", "version": "v0.15", "url": "https://github.com/openresty/lua-resty-dns.git"},
|
20
|
+
{"name": "lua-resty-redis", "version": "v0.22", "url": "https://github.com/openresty/lua-resty-redis.git"},
|
21
|
+
{"name": "lua-resty-upstream-healthcheck", "version": "v0.04", "url": "https://github.com/openresty/lua-resty-upstream-healthcheck.git"},
|
22
|
+
// Strange
|
23
|
+
{"name": "log4j", "version": "1.2.17", "url": "https://repo1.maven.org/maven2/log4j/log4j/1.2.17/log4j-1.2.17.jar"}
|
24
|
+
]}
|