Browse Source

turn ucimap-example.c into a test case

Felix Fietkau 14 years ago
parent
commit
2be6befa78
5 changed files with 45 additions and 5 deletions
  1. 4 1
      Makefile
  2. 19 0
      test/config/network
  3. 14 0
      test/references/ucimap_example.result
  4. 5 0
      test/tests.d/060-ucimap_example
  5. 3 4
      ucimap-example.c

+ 4 - 1
Makefile

@@ -59,6 +59,9 @@ libuci.$(SHLIB_EXT): libuci-shared.o
 	$(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
 
@@ -77,7 +80,7 @@ install-bin: all
 	$(MKDIR) -p $(DESTDIR)$(prefix)/bin
 	$(INSTALL) -m0755 uci $(DESTDIR)$(prefix)/bin/
 
-test: all
+test: all ucimap-example
 	make -C test
 
 FORCE: ;

+ 19 - 0
test/config/network

@@ -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'
+

+ 14 - 0
test/references/ucimap_example.result

@@ -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

+ 5 - 0
test/tests.d/060-ucimap_example

@@ -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"
+}

+ 3 - 4
ucimap-example.c

@@ -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)
 {
-	struct uci_network *net = section;
 	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)
@@ -220,7 +219,7 @@ int main(int argc, char **argv)
 {
 	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;
@@ -229,6 +228,7 @@ int main(int argc, char **argv)
 	ctx = uci_alloc_context();
 	ucimap_init(&network_map);
 
+	uci_set_confdir(ctx, "./test/config");
 	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);