From 520b0f73bfa4c72aa3ef3f50edfec936d40d31a8 Mon Sep 17 00:00:00 2001 From: Daniel Bovensiepen Date: Wed, 8 May 2013 21:17:08 +0800 Subject: Implement fallback print method for testing environment in case mruby-print GEM wasn't included. --- test/driver.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'test/driver.c') diff --git a/test/driver.c b/test/driver.c index a55e1180f..8105dca73 100644 --- a/test/driver.c +++ b/test/driver.c @@ -14,6 +14,7 @@ #include #include #include +#include #include void @@ -59,6 +60,32 @@ eval_test(mrb_state *mrb) return EXIT_SUCCESS; } +static void +t_printstr(mrb_state *mrb, mrb_value obj) +{ + struct RString *str; + char *s; + int len; + + if (mrb_string_p(obj)) { + str = mrb_str_ptr(obj); + s = str->ptr; + len = str->len; + fwrite(s, len, 1, stdout); + } +} + +mrb_value +mrb_t_printstr(mrb_state *mrb, mrb_value self) +{ + mrb_value argv; + + mrb_get_args(mrb, "o", &argv); + t_printstr(mrb, argv); + + return argv; +} + int main(int argc, char **argv) { @@ -79,6 +106,10 @@ main(int argc, char **argv) mrb_gv_set(mrb, mrb_intern(mrb, "$mrbtest_verbose"), mrb_true_value()); } + struct RClass *krn; + krn = mrb->kernel_module; + mrb_define_method(mrb, krn, "__t_printstr__", mrb_t_printstr, MRB_ARGS_REQ(1)); + mrb_init_mrbtest(mrb); ret = eval_test(mrb); mrb_close(mrb); -- cgit v1.2.3 From 72f78316aa8f02c920acac052ef502786b32d636 Mon Sep 17 00:00:00 2001 From: Daniel Bovensiepen Date: Wed, 8 May 2013 21:20:35 +0800 Subject: Move declaration of kernel to the beginning of the method --- test/driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'test/driver.c') diff --git a/test/driver.c b/test/driver.c index 8105dca73..cfdfe72a8 100644 --- a/test/driver.c +++ b/test/driver.c @@ -90,6 +90,7 @@ int main(int argc, char **argv) { mrb_state *mrb; + struct RClass *krn; int ret; print_hint(); @@ -106,7 +107,6 @@ main(int argc, char **argv) mrb_gv_set(mrb, mrb_intern(mrb, "$mrbtest_verbose"), mrb_true_value()); } - struct RClass *krn; krn = mrb->kernel_module; mrb_define_method(mrb, krn, "__t_printstr__", mrb_t_printstr, MRB_ARGS_REQ(1)); -- cgit v1.2.3