mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-11-08 18:27:07 -08:00
net-analyzer/arping: fix tests
* add new dev-python/subunit dep for tests * shorten pkg desc within char limit * other formatting changes Closes: https://bugs.gentoo.org/757090 Signed-off-by: Aaron Bauman <bman@gentoo.org>
This commit is contained in:
@@ -2,9 +2,10 @@
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
|
||||
inherit autotools fcaps
|
||||
|
||||
DESCRIPTION="A utility to see if a specific IP address is taken and what MAC address owns it"
|
||||
DESCRIPTION="A utility to see if a specific IP is taken and what MAC owns it"
|
||||
HOMEPAGE="http://www.habets.pp.se/synscan/programs.php?prog=arping"
|
||||
SRC_URI="https://github.com/ThomasHabets/${PN}/archive/${P}.tar.gz"
|
||||
|
||||
@@ -16,19 +17,23 @@ RESTRICT="!test? ( test )"
|
||||
|
||||
CDEPEND="
|
||||
net-libs/libpcap
|
||||
net-libs/libnet:1.1
|
||||
"
|
||||
net-libs/libnet:1.1"
|
||||
DEPEND="
|
||||
${CDEPEND}
|
||||
test? ( dev-libs/check )
|
||||
"
|
||||
test? (
|
||||
dev-libs/check
|
||||
dev-python/subunit )"
|
||||
RDEPEND="
|
||||
${CDEPEND}
|
||||
!net-misc/iputils[arping(+)]
|
||||
"
|
||||
!net-misc/iputils[arping(+)]"
|
||||
|
||||
FILECAPS=( cap_net_raw /usr/sbin/arping )
|
||||
|
||||
S=${WORKDIR}/${PN}-${P}
|
||||
|
||||
# patch is in upstream master
|
||||
PATCHES=( "${FILESDIR}/arping-tests.patch" )
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
eautoreconf
|
||||
|
||||
@@ -0,0 +1,190 @@
|
||||
diff --git a/src/arping_test.c b/src/arping_test.c
|
||||
index 438670b..0133fe7 100644
|
||||
--- a/src/arping_test.c
|
||||
+++ b/src/arping_test.c
|
||||
@@ -40,35 +40,10 @@ extern libnet_t* libnet;
|
||||
extern int mock_libnet_lo_ok;
|
||||
extern int mock_libnet_null_ok;
|
||||
|
||||
-struct registered_test {
|
||||
- void* fn;
|
||||
- const char* name;
|
||||
-};
|
||||
-
|
||||
-static int numtests = 0;
|
||||
-static struct registered_test test_registry[1024];
|
||||
-
|
||||
-static int num_exit_tests = 0;
|
||||
-static struct registered_test test_exit_registry[1024];
|
||||
-
|
||||
int get_mac_addr(const char *in, char *out);
|
||||
void strip_newline(char* s);
|
||||
|
||||
|
||||
-#define MYTEST(a) static void a(int);__attribute__((constructor)) \
|
||||
-static void cons_##a() { \
|
||||
- test_registry[numtests].fn = a; \
|
||||
- test_registry[numtests].name = #a; \
|
||||
- numtests++; \
|
||||
-} START_TEST(a)
|
||||
-
|
||||
-#define MY_EXIT_TEST(a) static void a(int);__attribute__((constructor)) \
|
||||
-static void cons_##a() { \
|
||||
- test_exit_registry[num_exit_tests].fn = a; \
|
||||
- test_exit_registry[num_exit_tests].name = #a; \
|
||||
- num_exit_tests++; \
|
||||
-} START_TEST(a)
|
||||
-
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@@ -236,7 +211,7 @@ dump_packet(uint8_t* packet, int len)
|
||||
fprintf(stderr, "\n");
|
||||
}
|
||||
|
||||
-MYTEST(test_mkpacket)
|
||||
+START_TEST(test_mkpacket)
|
||||
{
|
||||
uint8_t correct_packet[] = {
|
||||
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa,
|
||||
@@ -261,7 +236,7 @@ MYTEST(test_mkpacket)
|
||||
|
||||
|
||||
// Received uninteresting packet, should not record anything.
|
||||
-MYTEST(pingip_uninteresting_packet)
|
||||
+START_TEST(pingip_uninteresting_packet)
|
||||
{
|
||||
struct pcap_pkthdr pkthdr;
|
||||
uint8_t* packet;
|
||||
@@ -389,7 +364,7 @@ MYTEST(pingip_uninteresting_packet)
|
||||
} END_TEST
|
||||
|
||||
// Received reply that actually matches. Things should happen.
|
||||
-MYTEST(pingip_interesting_packet)
|
||||
+START_TEST(pingip_interesting_packet)
|
||||
{
|
||||
struct pcap_pkthdr pkthdr;
|
||||
extern uint8_t srcmac[ETH_ALEN];
|
||||
@@ -449,7 +424,7 @@ MYTEST(pingip_interesting_packet)
|
||||
"numrecvd not incremented second time");
|
||||
} END_TEST
|
||||
|
||||
-MYTEST(strip_newline_test)
|
||||
+START_TEST(strip_newline_test)
|
||||
{
|
||||
const char *tests[][2] = {
|
||||
{"", ""},
|
||||
@@ -469,7 +444,7 @@ MYTEST(strip_newline_test)
|
||||
}
|
||||
} END_TEST
|
||||
|
||||
-MYTEST(get_mac_addr_success)
|
||||
+START_TEST(get_mac_addr_success)
|
||||
{
|
||||
const char *tests[][2] = {
|
||||
// Null.
|
||||
@@ -501,7 +476,7 @@ MYTEST(get_mac_addr_success)
|
||||
}
|
||||
} END_TEST
|
||||
|
||||
-MYTEST(get_mac_addr_fail)
|
||||
+START_TEST(get_mac_addr_fail)
|
||||
{
|
||||
const char *tests[] = {
|
||||
"",
|
||||
@@ -517,7 +492,7 @@ MYTEST(get_mac_addr_fail)
|
||||
}
|
||||
} END_TEST
|
||||
|
||||
-MY_EXIT_TEST(libnet_init_bad_nolo)
|
||||
+START_TEST(libnet_init_bad_nolo)
|
||||
{
|
||||
// It'll only try lo if named interface fails.
|
||||
// So by accepting lo, we make sure it doesn't try lo.
|
||||
@@ -525,27 +500,28 @@ MY_EXIT_TEST(libnet_init_bad_nolo)
|
||||
do_libnet_init("bad", 0);
|
||||
} END_TEST
|
||||
|
||||
-MY_EXIT_TEST(libnet_init_null_nolo_nonull)
|
||||
+START_TEST(libnet_init_null_nolo_nonull)
|
||||
{
|
||||
mock_libnet_lo_ok = 0;
|
||||
mock_libnet_null_ok = 0;
|
||||
do_libnet_init(NULL, 0);
|
||||
} END_TEST
|
||||
|
||||
-MYTEST(libnet_init_good)
|
||||
+START_TEST(libnet_init_good)
|
||||
{
|
||||
mock_libnet_lo_ok = 0; // Don't even try falling back to lo.
|
||||
do_libnet_init("good", 0);
|
||||
fail_if(libnet == NULL);
|
||||
} END_TEST
|
||||
|
||||
-MYTEST(libnet_init_null_nolo)
|
||||
+START_TEST(libnet_init_null_nolo)
|
||||
{
|
||||
mock_libnet_lo_ok = 0;
|
||||
mock_libnet_null_ok = 1;
|
||||
do_libnet_init(NULL, 0);
|
||||
fail_if(libnet == NULL);
|
||||
-} END_TEST
|
||||
+}
|
||||
+END_TEST
|
||||
|
||||
static Suite*
|
||||
arping_suite(void)
|
||||
@@ -553,17 +529,34 @@ arping_suite(void)
|
||||
int c;
|
||||
Suite* s = suite_create("Arping");
|
||||
|
||||
- //tcase_add_checked_fixture (tc_core, setup, teardown);
|
||||
- for (c = 0; c < numtests; c++) {
|
||||
- TCase *tc_core = tcase_create(test_registry[c].name);
|
||||
- tcase_add_test(tc_core, test_registry[c].fn);
|
||||
- suite_add_tcase(s, tc_core);
|
||||
- }
|
||||
- for (c = 0; c < num_exit_tests; c++) {
|
||||
- TCase *tc_core = tcase_create(test_exit_registry[c].name);
|
||||
- tcase_add_exit_test(tc_core, test_exit_registry[c].fn, 1);
|
||||
- suite_add_tcase(s, tc_core);
|
||||
- }
|
||||
+
|
||||
+ TCase *tc_core;
|
||||
+
|
||||
+ // libcheck broke test registries, so have to resort to code duplication. :-(
|
||||
+ // https://github.com/libcheck/check/pull/158/files
|
||||
+#define SIGH_LIBCHECK(tn) \
|
||||
+ tc_core = tcase_create(#tn); \
|
||||
+ tcase_add_test(tc_core, tn); \
|
||||
+ suite_add_tcase(s, tc_core);
|
||||
+
|
||||
+ SIGH_LIBCHECK(libnet_init_null_nolo);
|
||||
+ SIGH_LIBCHECK(test_mkpacket);
|
||||
+ SIGH_LIBCHECK(pingip_uninteresting_packet);
|
||||
+ SIGH_LIBCHECK(pingip_interesting_packet);
|
||||
+ SIGH_LIBCHECK(strip_newline_test);
|
||||
+ SIGH_LIBCHECK(get_mac_addr_success);
|
||||
+ SIGH_LIBCHECK(get_mac_addr_fail);
|
||||
+ SIGH_LIBCHECK(libnet_init_good);
|
||||
+
|
||||
+
|
||||
+#define SIGH_LIBCHECK_EXIT(tn) \
|
||||
+ tc_core = tcase_create(#tn); \
|
||||
+ tcase_add_exit_test(tc_core, tn, 1); \
|
||||
+ suite_add_tcase(s, tc_core);
|
||||
+
|
||||
+ SIGH_LIBCHECK_EXIT(libnet_init_bad_nolo);
|
||||
+ SIGH_LIBCHECK_EXIT(libnet_init_null_nolo_nonull);
|
||||
+
|
||||
return s;
|
||||
}
|
||||
|
||||
@@ -577,6 +570,7 @@ main()
|
||||
number_failed = srunner_ntests_failed (sr);
|
||||
srunner_free (sr);
|
||||
return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
|
||||
+ return 0;
|
||||
}
|
||||
/* ---- Emacs Variables ----
|
||||
* Local Variables:
|
||||
Reference in New Issue
Block a user