xref: /OK3568_Linux_fs/buildroot/package/iputils/0001-meson-Make-tests-optional.patch (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunFrom 3163c49f9f4ad473a00d8a345ee334a028376011 Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Heiko Becker <heirecka@exherbo.org>
3*4882a593SmuzhiyunDate: Fri, 23 Jul 2021 16:32:46 +0200
4*4882a593SmuzhiyunSubject: [PATCH] meson: Make tests optional
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunNow can be disabled with -DSKIP_TESTS=true.
7*4882a593Smuzhiyun
8*4882a593SmuzhiyunIt allows to avoid meson error during build when ip isn't installed.
9*4882a593Smuzhiyun
10*4882a593SmuzhiyunCloses: #359
11*4882a593Smuzhiyun
12*4882a593SmuzhiyunReviewed-by: Petr Vorel <petr.vorel@gmail.com>
13*4882a593SmuzhiyunSigned-off-by: Heiko Becker <heirecka@exherbo.org>
14*4882a593Smuzhiyun[ pvorel: Rename variable TEST => SKIP_TESTS, default false, adjust
15*4882a593Smuzhiyunthe description ]
16*4882a593SmuzhiyunSigned-off-by: Petr Vorel <petr.vorel@gmail.com>
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun[Retrieved from:
19*4882a593Smuzhiyunhttps://github.com/iputils/iputils/commit/3163c49f9f4ad473a00d8a345ee334a028376011]
20*4882a593SmuzhiyunSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
21*4882a593Smuzhiyun---
22*4882a593Smuzhiyun meson_options.txt     |  3 ++
23*4882a593Smuzhiyun ping/meson.build      | 84 ++-----------------------------------------
24*4882a593Smuzhiyun ping/test/meson.build | 81 +++++++++++++++++++++++++++++++++++++++++
25*4882a593Smuzhiyun 3 files changed, 86 insertions(+), 82 deletions(-)
26*4882a593Smuzhiyun create mode 100644 ping/test/meson.build
27*4882a593Smuzhiyun
28*4882a593Smuzhiyundiff --git a/meson_options.txt b/meson_options.txt
29*4882a593Smuzhiyunindex ac5f5d98..517667f4 100644
30*4882a593Smuzhiyun--- a/meson_options.txt
31*4882a593Smuzhiyun+++ b/meson_options.txt
32*4882a593Smuzhiyun@@ -72,3 +72,6 @@ option('INSTALL_SYSTEMD_UNITS', type: 'boolean', value: false,
33*4882a593Smuzhiyun
34*4882a593Smuzhiyun option('USE_GETTEXT', type: 'boolean', value: true,
35*4882a593Smuzhiyun 	description: 'Enable I18N')
36*4882a593Smuzhiyun+
37*4882a593Smuzhiyun+option('SKIP_TESTS', type: 'boolean', value: false,
38*4882a593Smuzhiyun+	description: 'Skip tests during build')
39*4882a593Smuzhiyundiff --git a/ping/meson.build b/ping/meson.build
40*4882a593Smuzhiyunindex 1e678ec8..83ea353c 100644
41*4882a593Smuzhiyun--- a/ping/meson.build
42*4882a593Smuzhiyun+++ b/ping/meson.build
43*4882a593Smuzhiyun@@ -27,86 +27,6 @@ if (setcap_ping)
44*4882a593Smuzhiyun 	)
45*4882a593Smuzhiyun endif
46*4882a593Smuzhiyun
47*4882a593Smuzhiyun-##### TESTS #####
48*4882a593Smuzhiyun-
49*4882a593Smuzhiyun-# TODO: ::1 generates DEPRECATION: ":" is not allowed in test name "ping -c1 ::1", it has been replaced with "_"
50*4882a593Smuzhiyun-
51*4882a593Smuzhiyun-# GitHub CI does not have working IPv6
52*4882a593Smuzhiyun-# https://github.com/actions/virtual-environments/issues/668
53*4882a593Smuzhiyun-ipv6_dst = []
54*4882a593Smuzhiyun-ipv6_switch = []
55*4882a593Smuzhiyun-r = run_command('ip', '-6', 'a')
56*4882a593Smuzhiyun-if r.stdout().strip().contains('::1')
57*4882a593Smuzhiyun-  message('IPv6 enabled')
58*4882a593Smuzhiyun-  ipv6_dst = [ '::1' ]
59*4882a593Smuzhiyun-  ipv6_switch = [ '-6' ]
60*4882a593Smuzhiyun-else
61*4882a593Smuzhiyun-  message('WARNING: IPv6 disabled')
62*4882a593Smuzhiyun+if not get_option('SKIP_TESTS')
63*4882a593Smuzhiyun+	subdir('test')
64*4882a593Smuzhiyun endif
65*4882a593Smuzhiyun-
66*4882a593Smuzhiyun-run_as_root = false
67*4882a593Smuzhiyun-r = run_command('id', '-u')
68*4882a593Smuzhiyun-if r.stdout().strip().to_int() == 0
69*4882a593Smuzhiyun-  message('running as root')
70*4882a593Smuzhiyun-  run_as_root = true
71*4882a593Smuzhiyun-else
72*4882a593Smuzhiyun-  message('running as normal user')
73*4882a593Smuzhiyun-endif
74*4882a593Smuzhiyun-
75*4882a593Smuzhiyun-foreach dst : [ 'localhost', '127.0.0.1' ] + ipv6_dst
76*4882a593Smuzhiyun-  foreach switch : [ '', '-4' ] + ipv6_switch
77*4882a593Smuzhiyun-	args = [ '-c1', dst ]
78*4882a593Smuzhiyun-	should_fail = false
79*4882a593Smuzhiyun-
80*4882a593Smuzhiyun-	if switch != ''
81*4882a593Smuzhiyun-	  args = [switch] + args
82*4882a593Smuzhiyun-	  if (switch == '-4' and dst == '::1') or (switch == '-6' and dst == '127.0.0.1')
83*4882a593Smuzhiyun-		 should_fail = true
84*4882a593Smuzhiyun-	  endif
85*4882a593Smuzhiyun-	endif
86*4882a593Smuzhiyun-
87*4882a593Smuzhiyun-	name = 'ping ' + ' '.join(args)
88*4882a593Smuzhiyun-	test(name, ping, args : args, should_fail : should_fail)
89*4882a593Smuzhiyun-  endforeach
90*4882a593Smuzhiyun-endforeach
91*4882a593Smuzhiyun-
92*4882a593Smuzhiyun-ping_tests_opt = [
93*4882a593Smuzhiyun-  [ '-c1' ],
94*4882a593Smuzhiyun-  [ '-c5', '-i0.1' ],
95*4882a593Smuzhiyun-  [ '-c1', '-I', 'lo' ],
96*4882a593Smuzhiyun-  [ '-c1', '-w1' ],
97*4882a593Smuzhiyun-  [ '-c1', '-W1' ],
98*4882a593Smuzhiyun-  [ '-c1', '-W1.1' ],
99*4882a593Smuzhiyun-]
100*4882a593Smuzhiyun-foreach dst : [ '127.0.0.1' ] + ipv6_dst
101*4882a593Smuzhiyun-  foreach args : ping_tests_opt
102*4882a593Smuzhiyun-	args += [ dst ]
103*4882a593Smuzhiyun-	name = 'ping ' + ' '.join(args)
104*4882a593Smuzhiyun-	test(name, ping, args : args)
105*4882a593Smuzhiyun-  endforeach
106*4882a593Smuzhiyun-endforeach
107*4882a593Smuzhiyun-
108*4882a593Smuzhiyun-ping_tests_opt_fail = [
109*4882a593Smuzhiyun-  [ '-c1.1' ],
110*4882a593Smuzhiyun-  [ '-I', 'nonexisting' ],
111*4882a593Smuzhiyun-  [ '-w0.1' ],
112*4882a593Smuzhiyun-  [ '-w0,1' ],
113*4882a593Smuzhiyun-]
114*4882a593Smuzhiyun-foreach dst : [ '127.0.0.1' ] + ipv6_dst
115*4882a593Smuzhiyun-  foreach args : ping_tests_opt_fail
116*4882a593Smuzhiyun-	args += [ dst ]
117*4882a593Smuzhiyun-	name = 'ping ' + ' '.join(args)
118*4882a593Smuzhiyun-	test(name, ping, args : args, should_fail : true)
119*4882a593Smuzhiyun-  endforeach
120*4882a593Smuzhiyun-endforeach
121*4882a593Smuzhiyun-
122*4882a593Smuzhiyun-ping_tests_user_fail = [
123*4882a593Smuzhiyun-  [ '-c1', '-i0.001' ], # -c1 required to quit ping when running as root
124*4882a593Smuzhiyun-]
125*4882a593Smuzhiyun-foreach dst : [ '127.0.0.1' ] + ipv6_dst
126*4882a593Smuzhiyun-  foreach args : ping_tests_user_fail
127*4882a593Smuzhiyun-	args += [ dst ]
128*4882a593Smuzhiyun-	name = 'ping ' + ' '.join(args)
129*4882a593Smuzhiyun-	test(name, ping, args : args, should_fail : not run_as_root)
130*4882a593Smuzhiyun-  endforeach
131*4882a593Smuzhiyun-endforeach
132*4882a593Smuzhiyundiff --git a/ping/test/meson.build b/ping/test/meson.build
133*4882a593Smuzhiyunnew file mode 100644
134*4882a593Smuzhiyunindex 00000000..43aed758
135*4882a593Smuzhiyun--- /dev/null
136*4882a593Smuzhiyun+++ b/ping/test/meson.build
137*4882a593Smuzhiyun@@ -0,0 +1,81 @@
138*4882a593Smuzhiyun+# TODO: ::1 generates DEPRECATION: ":" is not allowed in test name "ping -c1 ::1", it has been replaced with "_"
139*4882a593Smuzhiyun+
140*4882a593Smuzhiyun+# GitHub CI does not have working IPv6
141*4882a593Smuzhiyun+# https://github.com/actions/virtual-environments/issues/668
142*4882a593Smuzhiyun+ipv6_dst = []
143*4882a593Smuzhiyun+ipv6_switch = []
144*4882a593Smuzhiyun+r = run_command('ip', '-6', 'a')
145*4882a593Smuzhiyun+if r.stdout().strip().contains('::1')
146*4882a593Smuzhiyun+  message('IPv6 enabled')
147*4882a593Smuzhiyun+  ipv6_dst = [ '::1' ]
148*4882a593Smuzhiyun+  ipv6_switch = [ '-6' ]
149*4882a593Smuzhiyun+else
150*4882a593Smuzhiyun+  message('WARNING: IPv6 disabled')
151*4882a593Smuzhiyun+endif
152*4882a593Smuzhiyun+
153*4882a593Smuzhiyun+run_as_root = false
154*4882a593Smuzhiyun+r = run_command('id', '-u')
155*4882a593Smuzhiyun+if r.stdout().strip().to_int() == 0
156*4882a593Smuzhiyun+  message('running as root')
157*4882a593Smuzhiyun+  run_as_root = true
158*4882a593Smuzhiyun+else
159*4882a593Smuzhiyun+  message('running as normal user')
160*4882a593Smuzhiyun+endif
161*4882a593Smuzhiyun+
162*4882a593Smuzhiyun+foreach dst : [ 'localhost', '127.0.0.1' ] + ipv6_dst
163*4882a593Smuzhiyun+  foreach switch : [ '', '-4' ] + ipv6_switch
164*4882a593Smuzhiyun+	args = [ '-c1', dst ]
165*4882a593Smuzhiyun+	should_fail = false
166*4882a593Smuzhiyun+
167*4882a593Smuzhiyun+	if switch != ''
168*4882a593Smuzhiyun+	  args = [switch] + args
169*4882a593Smuzhiyun+	  if (switch == '-4' and dst == '::1') or (switch == '-6' and dst == '127.0.0.1')
170*4882a593Smuzhiyun+		 should_fail = true
171*4882a593Smuzhiyun+	  endif
172*4882a593Smuzhiyun+	endif
173*4882a593Smuzhiyun+
174*4882a593Smuzhiyun+	name = 'ping ' + ' '.join(args)
175*4882a593Smuzhiyun+	test(name, ping, args : args, should_fail : should_fail)
176*4882a593Smuzhiyun+  endforeach
177*4882a593Smuzhiyun+endforeach
178*4882a593Smuzhiyun+
179*4882a593Smuzhiyun+ping_tests_opt = [
180*4882a593Smuzhiyun+  [ '-c1' ],
181*4882a593Smuzhiyun+  [ '-c5', '-i0.1' ],
182*4882a593Smuzhiyun+  [ '-c1', '-I', 'lo' ],
183*4882a593Smuzhiyun+  [ '-c1', '-w1' ],
184*4882a593Smuzhiyun+  [ '-c1', '-W1' ],
185*4882a593Smuzhiyun+  [ '-c1', '-W1.1' ],
186*4882a593Smuzhiyun+]
187*4882a593Smuzhiyun+foreach dst : [ '127.0.0.1' ] + ipv6_dst
188*4882a593Smuzhiyun+  foreach args : ping_tests_opt
189*4882a593Smuzhiyun+	args += [ dst ]
190*4882a593Smuzhiyun+	name = 'ping ' + ' '.join(args)
191*4882a593Smuzhiyun+	test(name, ping, args : args)
192*4882a593Smuzhiyun+  endforeach
193*4882a593Smuzhiyun+endforeach
194*4882a593Smuzhiyun+
195*4882a593Smuzhiyun+ping_tests_opt_fail = [
196*4882a593Smuzhiyun+  [ '-c1.1' ],
197*4882a593Smuzhiyun+  [ '-I', 'nonexisting' ],
198*4882a593Smuzhiyun+  [ '-w0.1' ],
199*4882a593Smuzhiyun+  [ '-w0,1' ],
200*4882a593Smuzhiyun+]
201*4882a593Smuzhiyun+foreach dst : [ '127.0.0.1' ] + ipv6_dst
202*4882a593Smuzhiyun+  foreach args : ping_tests_opt_fail
203*4882a593Smuzhiyun+	args += [ dst ]
204*4882a593Smuzhiyun+	name = 'ping ' + ' '.join(args)
205*4882a593Smuzhiyun+	test(name, ping, args : args, should_fail : true)
206*4882a593Smuzhiyun+  endforeach
207*4882a593Smuzhiyun+endforeach
208*4882a593Smuzhiyun+
209*4882a593Smuzhiyun+ping_tests_user_fail = [
210*4882a593Smuzhiyun+  [ '-c1', '-i0.001' ], # -c1 required to quit ping when running as root
211*4882a593Smuzhiyun+]
212*4882a593Smuzhiyun+foreach dst : [ '127.0.0.1' ] + ipv6_dst
213*4882a593Smuzhiyun+  foreach args : ping_tests_user_fail
214*4882a593Smuzhiyun+	args += [ dst ]
215*4882a593Smuzhiyun+	name = 'ping ' + ' '.join(args)
216*4882a593Smuzhiyun+	test(name, ping, args : args, should_fail : not run_as_root)
217*4882a593Smuzhiyun+  endforeach
218*4882a593Smuzhiyun+endforeach
219