From d8048d60d30a2efe7883b36626123630ce69b9fc Mon Sep 17 00:00:00 2001
From: Heiko Becker <heirecka@exherbo.org>
Date: Fri, 23 Jul 2021 16:32:46 +0200
Subject: [PATCH] meson: Make tests optional

Now can be disabled with -DSKIP_TESTS=true.

It allows to avoid meson error during build when ip isn't installed.

Closes: #359

Reviewed-by: Petr Vorel <petr.vorel@gmail.com>
Signed-off-by: Heiko Becker <heirecka@exherbo.org>
[ pvorel: Rename variable TEST => SKIP_TESTS, default false, adjust
the description ]
Signed-off-by: Petr Vorel <petr.vorel@gmail.com>

Upstream-Status: Backport [3163c49f9f4ad473a00d8a345ee334a028376011]
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
 meson_options.txt     |  3 ++
 ping/meson.build      | 84 ++-----------------------------------------
 ping/test/meson.build | 81 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 86 insertions(+), 82 deletions(-)
 create mode 100644 ping/test/meson.build

diff --git a/meson_options.txt b/meson_options.txt
index ac5f5d9..517667f 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -72,3 +72,6 @@ option('INSTALL_SYSTEMD_UNITS', type: 'boolean', value: false,
 
 option('USE_GETTEXT', type: 'boolean', value: true,
 	description: 'Enable I18N')
+
+option('SKIP_TESTS', type: 'boolean', value: false,
+	description: 'Skip tests during build')
diff --git a/ping/meson.build b/ping/meson.build
index 1e678ec..83ea353 100644
--- a/ping/meson.build
+++ b/ping/meson.build
@@ -27,86 +27,6 @@ if (setcap_ping)
 	)
 endif
 
-##### TESTS #####
-
-# TODO: ::1 generates DEPRECATION: ":" is not allowed in test name "ping -c1 ::1", it has been replaced with "_"
-
-# GitHub CI does not have working IPv6
-# https://github.com/actions/virtual-environments/issues/668
-ipv6_dst = []
-ipv6_switch = []
-r = run_command('ip', '-6', 'a')
-if r.stdout().strip().contains('::1')
-  message('IPv6 enabled')
-  ipv6_dst = [ '::1' ]
-  ipv6_switch = [ '-6' ]
-else
-  message('WARNING: IPv6 disabled')
+if not get_option('SKIP_TESTS')
+	subdir('test')
 endif
-
-run_as_root = false
-r = run_command('id', '-u')
-if r.stdout().strip().to_int() == 0
-  message('running as root')
-  run_as_root = true
-else
-  message('running as normal user')
-endif
-
-foreach dst : [ 'localhost', '127.0.0.1' ] + ipv6_dst
-  foreach switch : [ '', '-4' ] + ipv6_switch
-	args = [ '-c1', dst ]
-	should_fail = false
-
-	if switch != ''
-	  args = [switch] + args
-	  if (switch == '-4' and dst == '::1') or (switch == '-6' and dst == '127.0.0.1')
-		 should_fail = true
-	  endif
-	endif
-
-	name = 'ping ' + ' '.join(args)
-	test(name, ping, args : args, should_fail : should_fail)
-  endforeach
-endforeach
-
-ping_tests_opt = [
-  [ '-c1' ],
-  [ '-c5', '-i0.1' ],
-  [ '-c1', '-I', 'lo' ],
-  [ '-c1', '-w1' ],
-  [ '-c1', '-W1' ],
-  [ '-c1', '-W1.1' ],
-]
-foreach dst : [ '127.0.0.1' ] + ipv6_dst
-  foreach args : ping_tests_opt
-	args += [ dst ]
-	name = 'ping ' + ' '.join(args)
-	test(name, ping, args : args)
-  endforeach
-endforeach
-
-ping_tests_opt_fail = [
-  [ '-c1.1' ],
-  [ '-I', 'nonexisting' ],
-  [ '-w0.1' ],
-  [ '-w0,1' ],
-]
-foreach dst : [ '127.0.0.1' ] + ipv6_dst
-  foreach args : ping_tests_opt_fail
-	args += [ dst ]
-	name = 'ping ' + ' '.join(args)
-	test(name, ping, args : args, should_fail : true)
-  endforeach
-endforeach
-
-ping_tests_user_fail = [
-  [ '-c1', '-i0.001' ], # -c1 required to quit ping when running as root
-]
-foreach dst : [ '127.0.0.1' ] + ipv6_dst
-  foreach args : ping_tests_user_fail
-	args += [ dst ]
-	name = 'ping ' + ' '.join(args)
-	test(name, ping, args : args, should_fail : not run_as_root)
-  endforeach
-endforeach
diff --git a/ping/test/meson.build b/ping/test/meson.build
new file mode 100644
index 0000000..43aed75
--- /dev/null
+++ b/ping/test/meson.build
@@ -0,0 +1,81 @@
+# TODO: ::1 generates DEPRECATION: ":" is not allowed in test name "ping -c1 ::1", it has been replaced with "_"
+
+# GitHub CI does not have working IPv6
+# https://github.com/actions/virtual-environments/issues/668
+ipv6_dst = []
+ipv6_switch = []
+r = run_command('ip', '-6', 'a')
+if r.stdout().strip().contains('::1')
+  message('IPv6 enabled')
+  ipv6_dst = [ '::1' ]
+  ipv6_switch = [ '-6' ]
+else
+  message('WARNING: IPv6 disabled')
+endif
+
+run_as_root = false
+r = run_command('id', '-u')
+if r.stdout().strip().to_int() == 0
+  message('running as root')
+  run_as_root = true
+else
+  message('running as normal user')
+endif
+
+foreach dst : [ 'localhost', '127.0.0.1' ] + ipv6_dst
+  foreach switch : [ '', '-4' ] + ipv6_switch
+	args = [ '-c1', dst ]
+	should_fail = false
+
+	if switch != ''
+	  args = [switch] + args
+	  if (switch == '-4' and dst == '::1') or (switch == '-6' and dst == '127.0.0.1')
+		 should_fail = true
+	  endif
+	endif
+
+	name = 'ping ' + ' '.join(args)
+	test(name, ping, args : args, should_fail : should_fail)
+  endforeach
+endforeach
+
+ping_tests_opt = [
+  [ '-c1' ],
+  [ '-c5', '-i0.1' ],
+  [ '-c1', '-I', 'lo' ],
+  [ '-c1', '-w1' ],
+  [ '-c1', '-W1' ],
+  [ '-c1', '-W1.1' ],
+]
+foreach dst : [ '127.0.0.1' ] + ipv6_dst
+  foreach args : ping_tests_opt
+	args += [ dst ]
+	name = 'ping ' + ' '.join(args)
+	test(name, ping, args : args)
+  endforeach
+endforeach
+
+ping_tests_opt_fail = [
+  [ '-c1.1' ],
+  [ '-I', 'nonexisting' ],
+  [ '-w0.1' ],
+  [ '-w0,1' ],
+]
+foreach dst : [ '127.0.0.1' ] + ipv6_dst
+  foreach args : ping_tests_opt_fail
+	args += [ dst ]
+	name = 'ping ' + ' '.join(args)
+	test(name, ping, args : args, should_fail : true)
+  endforeach
+endforeach
+
+ping_tests_user_fail = [
+  [ '-c1', '-i0.001' ], # -c1 required to quit ping when running as root
+]
+foreach dst : [ '127.0.0.1' ] + ipv6_dst
+  foreach args : ping_tests_user_fail
+	args += [ dst ]
+	name = 'ping ' + ' '.join(args)
+	test(name, ping, args : args, should_fail : not run_as_root)
+  endforeach
+endforeach
-- 
2.30.2

