Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TestEnv] Fallback print method #1239

Merged
merged 2 commits into from May 8, 2013
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
50 changes: 27 additions & 23 deletions test/assert.rb
Expand Up @@ -4,6 +4,20 @@
$asserts = []
$test_start = Time.now if Object.const_defined?(:Time)

# Implementation of print due to the reason that there might be no print
def t_print(*args)
i = 0
len = args.size
while i < len
begin
__printstr__ args[i].to_s
rescue NoMethodError
__t_printstr__ args[i].to_s
end
i += 1
end
end

##
# Create the assertion in a readable way
def assertion_string(err, str, iso=nil, e=nil)
Expand All @@ -28,31 +42,31 @@ def assertion_string(err, str, iso=nil, e=nil)
# which will be tested by this
# assertion
def assert(str = 'Assertion failed', iso = '')
print(str, (iso != '' ? " [#{iso}]" : ''), ' : ') if $mrbtest_verbose
t_print(str, (iso != '' ? " [#{iso}]" : ''), ' : ') if $mrbtest_verbose
begin
$mrbtest_assert = []
$mrbtest_assert_idx = 0
if(!yield || $mrbtest_assert.size > 0)
$asserts.push(assertion_string('Fail: ', str, iso, nil))
$ko_test += 1
print('F')
t_print('F')
else
$ok_test += 1
print('.')
t_print('.')
end
rescue Exception => e
if e.class.to_s == 'MRubyTestSkip'
$asserts.push "Skip: #{str} #{iso} #{e.cause}"
print('?')
t_print('?')
else
$asserts.push(assertion_string('Error: ', str, iso, e))
$kill_test += 1
print('X')
t_print('X')
end
ensure
$mrbtest_assert = nil
end
print("\n") if $mrbtest_verbose
t_print("\n") if $mrbtest_verbose
end

def assertion_diff(exp, act)
Expand Down Expand Up @@ -125,31 +139,21 @@ def assert_raise(*exp)
# Report the test result and print all assertions
# which were reported broken.
def report()
print "\n"
t_print("\n")

$asserts.each do |msg|
puts msg
end

$total_test = $ok_test.+($ko_test)
print('Total: ')
print($total_test)
print("\n")

print(' OK: ')
print($ok_test)
print("\n")
print(' KO: ')
print($ko_test)
print("\n")
print('Crash: ')
print($kill_test)
print("\n")
t_print("Total: #{$total_test}\n")

t_print(" OK: #{$ok_test}\n")
t_print(" KO: #{$ko_test}\n")
t_print("Crash: #{$kill_test}\n")

if Object.const_defined?(:Time)
print(' Time: ')
print(Time.now - $test_start)
print(" seconds\n")
t_print(" Time: #{Time.now - $test_start} seconds\n")
end
end

Expand Down
31 changes: 31 additions & 0 deletions test/driver.c
Expand Up @@ -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
Expand Down Expand Up @@ -59,10 +60,37 @@ 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)
{
mrb_state *mrb;
struct RClass *krn;
int ret;

print_hint();
Expand All @@ -79,6 +107,9 @@ main(int argc, char **argv)
mrb_gv_set(mrb, mrb_intern(mrb, "$mrbtest_verbose"), mrb_true_value());
}

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);
Expand Down