1 | require 'tempfile'
|
---|
2 |
|
---|
3 | assert('no files') do
|
---|
4 | o = `#{cmd('mruby-strip')} 2>&1`
|
---|
5 | assert_equal 1, $?.exitstatus
|
---|
6 | assert_equal "no files to strip", o.split("\n")[0]
|
---|
7 | end
|
---|
8 |
|
---|
9 | assert('file not found') do
|
---|
10 | o = `#{cmd('mruby-strip')} not_found.mrb 2>&1`
|
---|
11 | assert_equal 1, $?.exitstatus
|
---|
12 | assert_equal "can't open file for reading not_found.mrb\n", o
|
---|
13 | end
|
---|
14 |
|
---|
15 | assert('not irep file') do
|
---|
16 | t = Tempfile.new('script.rb')
|
---|
17 | t.write 'p test\n'
|
---|
18 | t.flush
|
---|
19 | o = `#{cmd('mruby-strip')} #{t.path} 2>&1`
|
---|
20 | assert_equal 1, $?.exitstatus
|
---|
21 | assert_equal "can't read irep file #{t.path}\n", o
|
---|
22 | end
|
---|
23 |
|
---|
24 | assert('success') do
|
---|
25 | script_file, compiled1, compiled2 =
|
---|
26 | Tempfile.new('script.rb'), Tempfile.new('c1.mrb'), Tempfile.new('c2.mrb')
|
---|
27 | script_file.write "p 'test'\n"
|
---|
28 | script_file.flush
|
---|
29 | `#{cmd('mrbc')} -g -o #{compiled1.path} #{script_file.path}`
|
---|
30 | `#{cmd('mrbc')} -g -o #{compiled2.path} #{script_file.path}`
|
---|
31 |
|
---|
32 | o = `#{cmd('mruby-strip')} #{compiled1.path}`
|
---|
33 | assert_equal 0, $?.exitstatus
|
---|
34 | assert_equal "", o
|
---|
35 | assert_equal `#{cmd('mruby')} #{script_file.path}`, `#{cmd('mruby')} -b #{compiled1.path}`
|
---|
36 |
|
---|
37 | o = `#{cmd('mruby-strip')} #{compiled1.path} #{compiled2.path}`
|
---|
38 | assert_equal 0, $?.exitstatus
|
---|
39 | assert_equal "", o
|
---|
40 | end
|
---|
41 |
|
---|
42 | assert('check debug section') do
|
---|
43 | script_file, with_debug, without_debug =
|
---|
44 | Tempfile.new('script.rb'), Tempfile.new('c1.mrb'), Tempfile.new('c2.mrb')
|
---|
45 | script_file.write "p 'test'\n"
|
---|
46 | script_file.flush
|
---|
47 | `#{cmd('mrbc')} -o #{without_debug.path} #{script_file.path}`
|
---|
48 | `#{cmd('mrbc')} -g -o #{with_debug.path} #{script_file.path}`
|
---|
49 |
|
---|
50 | assert_true with_debug.size >= without_debug.size
|
---|
51 |
|
---|
52 | `#{cmd('mruby-strip')} #{with_debug.path}`
|
---|
53 | assert_equal without_debug.size, with_debug.size
|
---|
54 | end
|
---|
55 |
|
---|
56 | assert('check lv section') do
|
---|
57 | script_file, with_lv, without_lv =
|
---|
58 | Tempfile.new('script.rb'), Tempfile.new('c1.mrb'), Tempfile.new('c2.mrb')
|
---|
59 | script_file.write <<EOS
|
---|
60 | a, b = 0, 1
|
---|
61 | a += b
|
---|
62 | p Kernel.local_variables
|
---|
63 | EOS
|
---|
64 | script_file.flush
|
---|
65 | `#{cmd('mrbc')} -o #{with_lv.path} #{script_file.path}`
|
---|
66 | `#{cmd('mrbc')} -o #{without_lv.path} #{script_file.path}`
|
---|
67 |
|
---|
68 | `#{cmd('mruby-strip')} -l #{without_lv.path}`
|
---|
69 | assert_true without_lv.size < with_lv.size
|
---|
70 |
|
---|
71 | assert_equal '[:a, :b]', `#{cmd('mruby')} -b #{with_lv.path}`.chomp
|
---|
72 | assert_equal '[]', `#{cmd('mruby')} -b #{without_lv.path}`.chomp
|
---|
73 | end
|
---|