aboutsummaryrefslogtreecommitdiff
path: root/src/test/test_addr.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2017-05-26 13:53:32 -0400
committerNick Mathewson <nickm@torproject.org>2017-05-26 13:53:32 -0400
commit159a8061cfefd465a39de693cb6510ade4f72022 (patch)
tree8cd0aaac95b863b559c00f58fb13029b9389d1c3 /src/test/test_addr.c
parent5742e4fd8ea28c21f4f8f8a809c88a0b31a5d73d (diff)
downloadtor-159a8061cfefd465a39de693cb6510ade4f72022.tar.gz
tor-159a8061cfefd465a39de693cb6510ade4f72022.zip
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.
Diffstat (limited to 'src/test/test_addr.c')
-rw-r--r--src/test/test_addr.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/test/test_addr.c b/src/test/test_addr.c
index b6d2445bad..daa8e74189 100644
--- a/src/test/test_addr.c
+++ b/src/test/test_addr.c
@@ -9,6 +9,24 @@
#include "test.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
test_addr_basic(void *arg)
{
@@ -29,6 +47,9 @@ test_addr_basic(void *arg)
tt_int_op(u32,OP_EQ, 0x04030201u);
tt_int_op(u16,OP_EQ, 99);
tor_free(cp);
+
+ MOCK(tor_addr_lookup, mock_tor_addr_lookup);
+
tt_assert(!addr_port_lookup(LOG_WARN, "nonexistent.address:4040",
&cp, NULL, &u16));
tt_str_op(cp,OP_EQ, "nonexistent.address");
@@ -36,8 +57,8 @@ test_addr_basic(void *arg)
tor_free(cp);
tt_assert(!addr_port_lookup(LOG_WARN, "localhost:9999", &cp, &u32, &u16));
tt_str_op(cp,OP_EQ, "localhost");
- tt_int_op(u32,OP_EQ, 0x7f000001u);
tt_int_op(u16,OP_EQ, 9999);
+ tt_int_op(u32,OP_EQ, 0x7f000001u);
tor_free(cp);
u32 = 3;
tt_assert(!addr_port_lookup(LOG_WARN, "localhost", NULL, &u32, &u16));
@@ -75,6 +96,7 @@ test_addr_basic(void *arg)
}
done:
+ UNMOCK(tor_addr_lookup);
tor_free(cp);
}