commit:     b88892c8d906c8bf491a8d9cf8fd7ddde1251700
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 10 17:17:36 2021 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Sep 10 17:17:36 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b88892c8

net-misc/iputils: make tests conditional

Closes: https://bugs.gentoo.org/807973
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../files/iputils-20210722-optional-tests.patch    | 202 +++++++++++++++++++++
 net-misc/iputils/iputils-20210722.ebuild           |  10 +-
 net-misc/iputils/iputils-99999999.ebuild           |   5 +-
 3 files changed, 215 insertions(+), 2 deletions(-)

diff --git a/net-misc/iputils/files/iputils-20210722-optional-tests.patch 
b/net-misc/iputils/files/iputils-20210722-optional-tests.patch
new file mode 100644
index 00000000000..d6c4e98c080
--- /dev/null
+++ b/net-misc/iputils/files/iputils-20210722-optional-tests.patch
@@ -0,0 +1,202 @@
+https://github.com/iputils/iputils/commit/3163c49f9f4ad473a00d8a345ee334a028376011.patch
+https://bugs.gentoo.org/807973
+
+From: Heiko Becker <heire...@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.vo...@gmail.com>
+Signed-off-by: Heiko Becker <heire...@exherbo.org>
+[ pvorel: Rename variable TEST => SKIP_TESTS, default false, adjust
+the description ]
+Signed-off-by: Petr Vorel <petr.vo...@gmail.com>
+--- 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')
+--- 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
+--- /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

diff --git a/net-misc/iputils/iputils-20210722.ebuild 
b/net-misc/iputils/iputils-20210722.ebuild
index 0e3d015bdb9..b89114ba078 100644
--- a/net-misc/iputils/iputils-20210722.ebuild
+++ b/net-misc/iputils/iputils-20210722.ebuild
@@ -28,10 +28,12 @@ 
HOMEPAGE="https://wiki.linuxfoundation.org/networking/iputils";
 
 LICENSE="BSD GPL-2+ rdisc"
 SLOT="0"
-IUSE="+arping caps clockdiff doc gcrypt idn ipv6 nettle nls rarpd rdisc ssl 
static tftpd tracepath traceroute6"
+IUSE="+arping caps clockdiff doc gcrypt idn ipv6 nettle nls rarpd rdisc ssl 
static test tftpd tracepath traceroute6"
+RESTRICT="!test? ( test )"
 
 BDEPEND="
        virtual/pkgconfig
+       test? ( sys-apps/iproute2 )
        nls? ( sys-devel/gettext )
 "
 
@@ -62,6 +64,11 @@ if [[ ${PV} == "99999999" ]] ; then
        "
 fi
 
+PATCHES=(
+       # Upstream; drop on bump
+       "${FILESDIR}"/${P}-optional-tests.patch
+)
+
 src_prepare() {
        default
 
@@ -88,6 +95,7 @@ src_configure() {
                -DNO_SETCAP_OR_SUID="true"
                -Dsystemdunitdir="$(systemd_get_systemunitdir)"
                -DUSE_GETTEXT="$(usex nls true false)"
+               $(meson_use !test SKIP_TESTS)
        )
 
        if [[ "${PV}" == 99999999 ]] ; then

diff --git a/net-misc/iputils/iputils-99999999.ebuild 
b/net-misc/iputils/iputils-99999999.ebuild
index 0e3d015bdb9..fe97d131c7f 100644
--- a/net-misc/iputils/iputils-99999999.ebuild
+++ b/net-misc/iputils/iputils-99999999.ebuild
@@ -28,10 +28,12 @@ 
HOMEPAGE="https://wiki.linuxfoundation.org/networking/iputils";
 
 LICENSE="BSD GPL-2+ rdisc"
 SLOT="0"
-IUSE="+arping caps clockdiff doc gcrypt idn ipv6 nettle nls rarpd rdisc ssl 
static tftpd tracepath traceroute6"
+IUSE="+arping caps clockdiff doc gcrypt idn ipv6 nettle nls rarpd rdisc ssl 
static test tftpd tracepath traceroute6"
+RESTRICT="!test? ( test )"
 
 BDEPEND="
        virtual/pkgconfig
+       test? ( sys-apps/iproute2 )
        nls? ( sys-devel/gettext )
 "
 
@@ -88,6 +90,7 @@ src_configure() {
                -DNO_SETCAP_OR_SUID="true"
                -Dsystemdunitdir="$(systemd_get_systemunitdir)"
                -DUSE_GETTEXT="$(usex nls true false)"
+               $(meson_use !test SKIP_TESTS)
        )
 
        if [[ "${PV}" == 99999999 ]] ; then

Reply via email to