turn ucimap-example.c into a test case
authorFelix Fietkau <nbd@openwrt.org>
Sun, 30 Aug 2009 13:37:22 +0000 (15:37 +0200)
committerFelix Fietkau <nbd@openwrt.org>
Sun, 30 Aug 2009 13:37:22 +0000 (15:37 +0200)
Makefile
test/config/network [new file with mode: 0644]
test/references/ucimap_example.result [new file with mode: 0644]
test/tests.d/060-ucimap_example [new file with mode: 0644]
ucimap-example.c

index 28053c0..57c0f0b 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -59,6 +59,9 @@ libuci.$(SHLIB_EXT): libuci-shared.o
        $(LINK) $(SHLIB_FLAGS) -o $(SHLIB_FILE) $^ $(LIBS)
        ln -sf $(SHLIB_FILE) $@
 
        $(LINK) $(SHLIB_FLAGS) -o $(SHLIB_FILE) $^ $(LIBS)
        ln -sf $(SHLIB_FILE) $@
 
+ucimap-example: ucimap-example.c libuci.a libucimap.a
+       $(CC) $(CFLAGS) -I. -o $@ $^
+
 clean:
        rm -f uci uci-static *.[oa] *.so* *.dylib* uci_config.h
 
 clean:
        rm -f uci uci-static *.[oa] *.so* *.dylib* uci_config.h
 
@@ -77,7 +80,7 @@ install-bin: all
        $(MKDIR) -p $(DESTDIR)$(prefix)/bin
        $(INSTALL) -m0755 uci $(DESTDIR)$(prefix)/bin/
 
        $(MKDIR) -p $(DESTDIR)$(prefix)/bin
        $(INSTALL) -m0755 uci $(DESTDIR)$(prefix)/bin/
 
-test: all
+test: all ucimap-example
        make -C test
 
 FORCE: ;
        make -C test
 
 FORCE: ;
diff --git a/test/config/network b/test/config/network
new file mode 100644 (file)
index 0000000..ec57d7b
--- /dev/null
@@ -0,0 +1,19 @@
+config 'alias' 'a'
+       option 'interface' 'lan'
+
+config 'alias' 'b'
+       option 'interface' 'lan'
+
+config 'interface' 'lan'
+       option 'proto' 'static'
+       option 'ifname' 'eth0'
+       option 'test' '123'
+       option 'enabled' 'on'
+       list 'aliases' 'a'
+       list 'aliases' 'b'
+       option 'ipaddr' '2.3.4.5'
+
+config 'interface' 'wan'
+       option 'proto'  'dhcp'
+       option 'ifname' 'eth1'
+
diff --git a/test/references/ucimap_example.result b/test/references/ucimap_example.result
new file mode 100644 (file)
index 0000000..d27e49e
--- /dev/null
@@ -0,0 +1,14 @@
+New network section 'lan'
+       type: static
+       ifname: eth0
+       ipaddr: 2.3.4.5
+       test: 123
+       enabled: on
+New alias: b
+New alias: a
+New network section 'wan'
+       type: dhcp
+       ifname: eth1
+       ipaddr: 0.0.0.0
+       test: -1
+       enabled: off
diff --git a/test/tests.d/060-ucimap_example b/test/tests.d/060-ucimap_example
new file mode 100644 (file)
index 0000000..c517637
--- /dev/null
@@ -0,0 +1,5 @@
+test_ucimap_example()
+{
+       ( cd ..; ./ucimap-example ) > "${TMP_DIR}/ucimap_example.result"
+       assertSameFile "${TMP_DIR}/ucimap_example.result" "${REF_DIR}/ucimap_example.result"
+}
index baea550..157c32f 100644 (file)
@@ -44,9 +44,8 @@ struct uci_alias {
 static int
 network_parse_ip(void *section, struct uci_optmap *om, union ucimap_data *data, const char *str)
 {
 static int
 network_parse_ip(void *section, struct uci_optmap *om, union ucimap_data *data, const char *str)
 {
-       struct uci_network *net = section;
        unsigned char *target = (unsigned char *) data->s;
        unsigned char *target = (unsigned char *) data->s;
-       unsigned int tmp[4];
+       int tmp[4];
        int i;
 
        if (sscanf(str, "%d.%d.%d.%d", &tmp[0], &tmp[1], &tmp[2], &tmp[3]) != 4)
        int i;
 
        if (sscanf(str, "%d.%d.%d.%d", &tmp[0], &tmp[1], &tmp[2], &tmp[3]) != 4)
@@ -220,7 +219,7 @@ int main(int argc, char **argv)
 {
        struct uci_context *ctx;
        struct uci_package *pkg;
 {
        struct uci_context *ctx;
        struct uci_package *pkg;
-       struct list_head *p, *p2;
+       struct list_head *p;
        struct uci_network *net;
        struct uci_alias *alias;
        int i;
        struct uci_network *net;
        struct uci_alias *alias;
        int i;
@@ -229,6 +228,7 @@ int main(int argc, char **argv)
        ctx = uci_alloc_context();
        ucimap_init(&network_map);
 
        ctx = uci_alloc_context();
        ucimap_init(&network_map);
 
+       uci_set_confdir(ctx, "./test/config");
        uci_load(ctx, "network", &pkg);
 
        ucimap_parse(&network_map, pkg);
        uci_load(ctx, "network", &pkg);
 
        ucimap_parse(&network_map, pkg);
@@ -262,7 +262,6 @@ int main(int argc, char **argv)
        }
 
 
        }
 
 
-done:
        ucimap_cleanup(&network_map);
        uci_free_context(ctx);
 
        ucimap_cleanup(&network_map);
        uci_free_context(ctx);