summaryrefslogtreecommitdiffhomepage
path: root/test/driver.c
diff options
context:
space:
mode:
authorDaniel Bovensiepen <[email protected]>2013-05-08 21:17:08 +0800
committerDaniel Bovensiepen <[email protected]>2013-05-08 21:17:08 +0800
commit520b0f73bfa4c72aa3ef3f50edfec936d40d31a8 (patch)
tree3eb950e81f517fdbb97bbed6e02ca30a60caee69 /test/driver.c
parent8e45630896af83ad9ad938ef135f51cfe35f885e (diff)
downloadmruby-520b0f73bfa4c72aa3ef3f50edfec936d40d31a8.tar.gz
mruby-520b0f73bfa4c72aa3ef3f50edfec936d40d31a8.zip
Implement fallback print method for testing environment in case mruby-print GEM wasn't included.
Diffstat (limited to 'test/driver.c')
-rw-r--r--test/driver.c31
1 files changed, 31 insertions, 0 deletions
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 <mruby/proc.h>
#include <mruby/data.h>
#include <mruby/compile.h>
+#include <mruby/string.h>
#include <mruby/variable.h>
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);