summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDaniel Bovensiepen <[email protected]>2012-09-20 01:31:26 +0800
committerDaniel Bovensiepen <[email protected]>2012-09-20 01:31:26 +0800
commit9a11c45e64dd9010d70a3a7e63819cec78c83afb (patch)
treed1671ebc9abbeb893b6f879b659f874226836abb
parent19fa4a0993acef802ab4250541c1df72c7e2b604 (diff)
downloadmruby-9a11c45e64dd9010d70a3a7e63819cec78c83afb.tar.gz
mruby-9a11c45e64dd9010d70a3a7e63819cec78c83afb.zip
Integrate tests into mrbgems
-rw-r--r--Makefile1
-rw-r--r--mrbgems/Makefile3
-rw-r--r--mrbgems/g/hello_world/test/hello_world.rb3
-rw-r--r--mrbgems/gem_helper.c35
4 files changed, 34 insertions, 8 deletions
diff --git a/Makefile b/Makefile
index d18222c3c..6866ec9e3 100644
--- a/Makefile
+++ b/Makefile
@@ -52,6 +52,7 @@ all :
.PHONY : test
test : all
@$(MAKE) -C test $(MAKE_FLAGS)
+ @$(MAKE) test -C mrbgems $(MAKE_FLAGS)
# clean up
.PHONY : clean
diff --git a/mrbgems/Makefile b/mrbgems/Makefile
index abd726a0e..6fde97128 100644
--- a/mrbgems/Makefile
+++ b/mrbgems/Makefile
@@ -41,6 +41,9 @@ all_gems : $(MMAKER_BIN) g/Makefile
@echo "Build all gems"
$(MAKE) -C g
+test :
+ $(MAKE) test -C g
+
# clean driver and all gems
.PHONY : clean
clean : $(MMAKER_BIN)
diff --git a/mrbgems/g/hello_world/test/hello_world.rb b/mrbgems/g/hello_world/test/hello_world.rb
new file mode 100644
index 000000000..2d8c335db
--- /dev/null
+++ b/mrbgems/g/hello_world/test/hello_world.rb
@@ -0,0 +1,3 @@
+assert('Hello World') do
+ HW.respond_to? :say
+end
diff --git a/mrbgems/gem_helper.c b/mrbgems/gem_helper.c
index d1cbfb046..01daef364 100644
--- a/mrbgems/gem_helper.c
+++ b/mrbgems/gem_helper.c
@@ -10,7 +10,7 @@ one (const struct dirent *unused)
}
void
-dir_list (char before[1024], char after[1024])
+dir_list (char before[1024], char after[1024], char start[1024], char end[1024])
{
struct dirent **eps;
int n;
@@ -19,6 +19,8 @@ dir_list (char before[1024], char after[1024])
char complete_line[4096] = "";
struct stat attribut;
+ strcat(complete_line, start);
+
n = scandir("./g", &eps, one, alphasort);
if (n >= 0) {
int cnt;
@@ -39,17 +41,22 @@ dir_list (char before[1024], char after[1024])
strcat(complete_line, before);
strcat(complete_line, gemname);
strcat(complete_line, after);
- strcat(complete_line, "\n");
+
}
- puts(complete_line);
}
- else
+ else {
perror("Error while scanning the directory.");
+ }
+
+ strcat(complete_line, end);
+ puts(complete_line);
}
void
make_gem_makefile()
{
+ puts("CFLAGS := -I. -I../../include -I../../src");
+ puts("");
puts("ifeq ($(OS),Windows_NT)");
puts("MAKE_FLAGS = --no-print-directory CC=$(CC) LL=$(LL) ALL_CFLAGS='$(ALL_CFLAGS)'");
puts("else");
@@ -59,11 +66,23 @@ make_gem_makefile()
puts(".PHONY : all");
puts("all :");
- dir_list("\t@$(MAKE) -C ", " $(MAKE_FLAGS)");
+ dir_list("\t@$(MAKE) -C ", " $(MAKE_FLAGS)\n", "", "");
+
+ puts(".PHONY : test");
+ puts("test :");
+ dir_list("", "/test/*.rb ", "\tcat ../../test/assert.rb ", "> mrbtest.rbtmp");
+ puts("\t../../bin/mrbc -Bmrbtest_irep -omrbtest.ctmp mrbtest.rbtmp");
+ puts("\tcat ../../test/init_mrbtest.c mrbtest.ctmp > mrbtest.c");
+ puts("\t$(CC) -c ../../test/driver.c -o ./driver.o $(CFLAGS)");
+ puts("\t$(CC) -c ./mrbtest.c -o ./mrbtest.o $(CFLAGS)");
+ puts("\t$(CC) -o ./mrbtest ./mrbtest.o ../../lib/libmruby.a ./driver.o $(CFLAGS) -lm");
+ puts("\t./mrbtest");
+ puts("");
puts(".PHONY : clean");
puts("clean :");
- dir_list("\t@$(MAKE) clean -C ", " $(MAKE_FLAGS)");
+ puts("\t$(RM) *.c *.d *.rbtmp *.ctmp *.o mrbtest");
+ dir_list("\t@$(MAKE) clean -C ", " $(MAKE_FLAGS)\n", "", "");
}
void
@@ -83,12 +102,12 @@ make_init_gems()
puts("#include \"mruby.h\"");
puts("");
- dir_list("void mrb_", "_gem_init(mrb_state*);");
+ dir_list("void mrb_", "_gem_init(mrb_state*);\n", "", "");
puts("void");
puts("mrb_init_mrbgems(mrb_state *mrb)");
puts("{");
- dir_list(" mrb_", "_gem_init(mrb);");
+ dir_list(" mrb_", "_gem_init(mrb);\n", "", "");
puts("}");
}