diff options
author | Nick Mathewson <nickm@torproject.org> | 2017-05-26 13:53:32 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2017-05-26 13:53:32 -0400 |
commit | 159a8061cfefd465a39de693cb6510ade4f72022 (patch) | |
tree | 8cd0aaac95b863b559c00f58fb13029b9389d1c3 /src/test | |
parent | 5742e4fd8ea28c21f4f8f8a809c88a0b31a5d73d (diff) | |
download | tor-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')
-rw-r--r-- | src/test/test_addr.c | 24 |
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); } |