mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 12:23:32 +01:00
Mock tor_addr_lookup() during part of addr/basic test.
If this function isn't mocked, then our unit tests break on stupid networks where localhost is broken or absent. Fixes bug 6298; bugfix on 0.0.9pre2.
This commit is contained in:
parent
5742e4fd8e
commit
159a8061cf
4
changes/bug6298
Normal file
4
changes/bug6298
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
o Minor bugfixes (unit tests):
|
||||||
|
- The unit tests now pass on systems where localhost is misconfigured
|
||||||
|
to some IPv4 address other than 127.0.0.1. Fixes bug 6298;
|
||||||
|
bugfix on 0.0.9pre2.
|
@ -9,6 +9,24 @@
|
|||||||
#include "test.h"
|
#include "test.h"
|
||||||
#include "addressmap.h"
|
#include "addressmap.h"
|
||||||
|
|
||||||
|
/** Mocking replacement: only handles localhost. */
|
||||||
|
static int
|
||||||
|
mock_tor_addr_lookup(const char *name, uint16_t family, tor_addr_t *addr_out)
|
||||||
|
{
|
||||||
|
if (!strcmp(name, "localhost")) {
|
||||||
|
if (family == AF_INET || family == AF_UNSPEC) {
|
||||||
|
tor_addr_from_ipv4h(addr_out, 0x7f000001);
|
||||||
|
return 0;
|
||||||
|
} else if (family == AF_INET6) {
|
||||||
|
char bytes[16] = { 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 1 };
|
||||||
|
tor_addr_from_ipv6_bytes(addr_out, bytes);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
test_addr_basic(void *arg)
|
test_addr_basic(void *arg)
|
||||||
{
|
{
|
||||||
@ -29,6 +47,9 @@ test_addr_basic(void *arg)
|
|||||||
tt_int_op(u32,OP_EQ, 0x04030201u);
|
tt_int_op(u32,OP_EQ, 0x04030201u);
|
||||||
tt_int_op(u16,OP_EQ, 99);
|
tt_int_op(u16,OP_EQ, 99);
|
||||||
tor_free(cp);
|
tor_free(cp);
|
||||||
|
|
||||||
|
MOCK(tor_addr_lookup, mock_tor_addr_lookup);
|
||||||
|
|
||||||
tt_assert(!addr_port_lookup(LOG_WARN, "nonexistent.address:4040",
|
tt_assert(!addr_port_lookup(LOG_WARN, "nonexistent.address:4040",
|
||||||
&cp, NULL, &u16));
|
&cp, NULL, &u16));
|
||||||
tt_str_op(cp,OP_EQ, "nonexistent.address");
|
tt_str_op(cp,OP_EQ, "nonexistent.address");
|
||||||
@ -36,8 +57,8 @@ test_addr_basic(void *arg)
|
|||||||
tor_free(cp);
|
tor_free(cp);
|
||||||
tt_assert(!addr_port_lookup(LOG_WARN, "localhost:9999", &cp, &u32, &u16));
|
tt_assert(!addr_port_lookup(LOG_WARN, "localhost:9999", &cp, &u32, &u16));
|
||||||
tt_str_op(cp,OP_EQ, "localhost");
|
tt_str_op(cp,OP_EQ, "localhost");
|
||||||
tt_int_op(u32,OP_EQ, 0x7f000001u);
|
|
||||||
tt_int_op(u16,OP_EQ, 9999);
|
tt_int_op(u16,OP_EQ, 9999);
|
||||||
|
tt_int_op(u32,OP_EQ, 0x7f000001u);
|
||||||
tor_free(cp);
|
tor_free(cp);
|
||||||
u32 = 3;
|
u32 = 3;
|
||||||
tt_assert(!addr_port_lookup(LOG_WARN, "localhost", NULL, &u32, &u16));
|
tt_assert(!addr_port_lookup(LOG_WARN, "localhost", NULL, &u32, &u16));
|
||||||
@ -75,6 +96,7 @@ test_addr_basic(void *arg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
UNMOCK(tor_addr_lookup);
|
||||||
tor_free(cp);
|
tor_free(cp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user