From 3163c49f9f4ad473a00d8a345ee334a028376011 Mon Sep 17 00:00:00 2001 From: Heiko Becker 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 Signed-off-by: Heiko Becker [ pvorel: Rename variable TEST => SKIP_TESTS, default false, adjust the description ] Signed-off-by: Petr Vorel [Retrieved from: https://github.com/iputils/iputils/commit/3163c49f9f4ad473a00d8a345ee334a028376011] Signed-off-by: Fabrice Fontaine --- 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 ac5f5d98..517667f4 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 1e678ec8..83ea353c 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 00000000..43aed758 --- /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