summaryrefslogtreecommitdiff
path: root/test/inet
diff options
context:
space:
mode:
Diffstat (limited to 'test/inet')
-rw-r--r--test/inet/Makefile.in8
-rw-r--r--test/inet/tst-res.c42
2 files changed, 49 insertions, 1 deletions
diff --git a/test/inet/Makefile.in b/test/inet/Makefile.in
index 0710d3d71..2c84729bf 100644
--- a/test/inet/Makefile.in
+++ b/test/inet/Makefile.in
@@ -7,5 +7,11 @@ TESTS_DISABLED := bug-if1 gethost_r-align gethostid if_nameindex tst-aton \
endif
ifeq ($(UCLIBC_HAS_SOCKET)$(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6),)
-TESTS_DISABLED := tst-ether_aton tst-ethers tst-ethers-line
+TESTS_DISABLED += tst-ether_aton tst-ethers tst-ethers-line
+endif
+
+ifeq ($(UCLIBC_HAS_RESOLVER_SUPPORT),)
+TESTS_DISABLED += tst-res
+else
+LDFLAGS_tst-res_glibc := -lresolv # assume it's glibc or somebody with that lib
endif
diff --git a/test/inet/tst-res.c b/test/inet/tst-res.c
new file mode 100644
index 000000000..ad9de789e
--- /dev/null
+++ b/test/inet/tst-res.c
@@ -0,0 +1,42 @@
+#include <stdlib.h>
+#include <assert.h>
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <resolv.h>
+#include <netdb.h>
+
+int main(int argc, char **argv)
+{
+ int r;
+ struct __res_state state;
+
+ r = res_ninit(&state);
+ if (r) {
+ herror("ninit");
+ abort();
+ }
+ r = res_init();
+ if (r) {
+ herror("init");
+ abort();
+ }
+
+ res_close();
+#ifdef __UCLIBC__
+ /* assume there is at least one resolver configured */
+ assert (state._u._ext.nscount > 0);
+#else
+ assert (state._u._ext.nscount == 0);
+#endif
+ assert (state.options & RES_INIT);
+ res_nclose(&state);
+#ifdef __UCLIBC__
+ /* We wipe the whole thing */
+ assert ((state.options & RES_INIT) == 0);
+#endif
+ assert (state._u._ext.nscount == 0);
+
+ return 0;
+}
+