Class: Mrubyc::Test::Tool

Inherits:
Thor
  • Object
show all
Defined in:
lib/mrubyc-test.rb

Instance Method Summary collapse

Instance Method Details

#init ⇒ Object



18
19
20
# File 'lib/mrubyc-test.rb', line 18

def init
  Mrubyc::Test::Init.run
end

#make ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/mrubyc-test.rb', line 45

def make
  config = Mrubyc::Test::Config.read
  tmp_dir = File.join(Dir.pwd, config['test_tmp_dir'])
  puts "cd #{tmp_dir}"
  puts
  exit_code = 0
  pwd = Dir.pwd
  FileUtils.mv "#{pwd}/#{config['mrubyc_src_dir']}/hal", "#{pwd}/#{config['mrubyc_src_dir']}/~hal"
  begin
    FileUtils.ln_s "#{pwd}/#{config['test_tmp_dir']}/hal", "#{pwd}/#{config['mrubyc_src_dir']}/hal"
    Dir.chdir(tmp_dir) do
      ['~/.rbenv/versions/mruby-1.4.1/bin/mrbc -E -B test test.rb',
       "cc -I #{pwd}/#{config['mrubyc_src_dir']} -DMRBC_DEBUG -o test main.c #{pwd}/#{config['mrubyc_src_dir']}/*.c #{pwd}/#{config['mrubyc_src_dir']}/hal/*.c",
       './test'].each do |cmd|
         puts cmd
         puts
         exit_code = system(cmd) ? 0 : 1
       end
      puts
      puts "cd -"
      puts
    end
  ensure
    FileUtils.rm "#{pwd}/#{config['mrubyc_src_dir']}/hal"
    FileUtils.mv "#{pwd}/#{config['mrubyc_src_dir']}/~hal", "#{pwd}/#{config['mrubyc_src_dir']}/hal"
  end
  exit(exit_code)
end

#prepare ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/mrubyc-test.rb', line 23

def prepare
  config = Mrubyc::Test::Config.read
  model_files = Dir.glob(File.join(Dir.pwd, config['mruby_lib_dir'], 'models', '*.rb'))
  test_path = File.join(Dir.pwd, config['test_dir'], '*.rb')
  test_files = Dir.glob(test_path)
  if test_files.size == 0
    puts 'Test not found'
    puts 'search path: ' + test_path
    exit(1)
  end

  # gather attributes from your implementations and tests
  attributes = Mrubyc::Test::Generator::Attribute.run(model_files: model_files, test_files: test_files)

  # convert attributes into tast_cases
  test_cases = Mrubyc::Test::Generator::TestCase.run(attributes)

  # generate a ruby script that will be compiled by mrbc and executed in mruby/c VM
  Mrubyc::Test::Generator::Script.run(model_files: model_files, test_files: test_files, test_cases: test_cases)
end

#test ⇒ Object



75
76
77
78
# File 'lib/mrubyc-test.rb', line 75

def test
  prepare
  make
end