mrubyc-test 0.7.0.pre.rc0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3999a4b4fc42b7080d1e1923475b9b175c0bfefb9f7438aab342a61d2693de38
4
- data.tar.gz: d734e7f81126a95414c4aff68175f57410653a45e15b4b3d72f5a6ef1cc69e9c
3
+ metadata.gz: 42dad60691e5384546bea0da13394891c4b0a18ca96033542e9674f2cc6637c3
4
+ data.tar.gz: 5c36b3b893edb879b94acdb752a60a892c9b38b0b7d018ecb2b6fca67cf657ff
5
5
  SHA512:
6
- metadata.gz: a28f63efee86b0222ad4c316cf90023fefa18331179f591251d45f5f7145c3bdb102650386a93332869e5bb454f4e8fec6fb5a414233d516e8279aff0a3e6c28
7
- data.tar.gz: e8ffe7d3cd5f3414bf91d37a2dcd8f5da9dc79261f9fc733dda0faf085bdca5f13f4c93452b43b583848560cb3fb7aeb10454c8571c0d398e975c984fc84d812
6
+ metadata.gz: 00bd3455fca3ae3336f263ec19881c8007e3c6dffb24e47082e82f86228e4143989ea122f8dbb9220d8108ff726f786daeed31085346cafdb2f87532f7a3adc6
7
+ data.tar.gz: 3bbf2aeb541bd4bfc6e5109049103a5b9a09a39195594295db5fac490d1d1c6bb687e72589b78de761307b9dbe01e1d930e3874568f6a2d1f6309b421e98acf1
data/Gemfile.lock CHANGED
@@ -1,52 +1,50 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mrubyc-test (0.6.2)
5
- activesupport (~> 6.0)
4
+ mrubyc-test (0.7.1)
5
+ activesupport (~> 7.0)
6
6
  rufo (~> 0.12)
7
- thor (~> 1.0)
7
+ thor (~> 1.2)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- activesupport (6.1.4.1)
12
+ activesupport (7.0.3)
13
13
  concurrent-ruby (~> 1.0, >= 1.0.2)
14
14
  i18n (>= 1.6, < 2)
15
15
  minitest (>= 5.1)
16
16
  tzinfo (~> 2.0)
17
- zeitwerk (~> 2.3)
18
- concurrent-ruby (1.1.9)
19
- diff-lcs (1.4.4)
20
- i18n (1.8.10)
17
+ concurrent-ruby (1.1.10)
18
+ diff-lcs (1.5.0)
19
+ i18n (1.10.0)
21
20
  concurrent-ruby (~> 1.0)
22
- minitest (5.14.4)
21
+ minitest (5.15.0)
23
22
  rake (13.0.6)
24
- rspec (3.10.0)
25
- rspec-core (~> 3.10.0)
26
- rspec-expectations (~> 3.10.0)
27
- rspec-mocks (~> 3.10.0)
28
- rspec-core (3.10.1)
29
- rspec-support (~> 3.10.0)
30
- rspec-expectations (3.10.1)
23
+ rspec (3.11.0)
24
+ rspec-core (~> 3.11.0)
25
+ rspec-expectations (~> 3.11.0)
26
+ rspec-mocks (~> 3.11.0)
27
+ rspec-core (3.11.0)
28
+ rspec-support (~> 3.11.0)
29
+ rspec-expectations (3.11.0)
31
30
  diff-lcs (>= 1.2.0, < 2.0)
32
- rspec-support (~> 3.10.0)
33
- rspec-mocks (3.10.2)
31
+ rspec-support (~> 3.11.0)
32
+ rspec-mocks (3.11.1)
34
33
  diff-lcs (>= 1.2.0, < 2.0)
35
- rspec-support (~> 3.10.0)
36
- rspec-support (3.10.2)
34
+ rspec-support (~> 3.11.0)
35
+ rspec-support (3.11.0)
37
36
  rufo (0.13.0)
38
- thor (1.1.0)
37
+ thor (1.2.1)
39
38
  tzinfo (2.0.4)
40
39
  concurrent-ruby (~> 1.0)
41
- zeitwerk (2.4.2)
42
40
 
43
41
  PLATFORMS
44
42
  ruby
45
43
 
46
44
  DEPENDENCIES
47
- bundler (~> 2.0)
45
+ bundler (~> 2)
48
46
  mrubyc-test!
49
- rake (~> 13.0)
47
+ rake (~> 13)
50
48
  rspec (~> 3.9)
51
49
 
52
50
  BUNDLED WITH
data/README.md CHANGED
@@ -119,17 +119,17 @@ end
119
119
  ```ruby
120
120
  class Sample
121
121
  def do_other_thing
122
- is_to_be_hit()
122
+ is_to_be_hit(1, 2) # Two args for example
123
123
  end
124
124
  end
125
125
  ```
126
126
 
127
- You can test whether `#is_to_be_hit` method will be called:
127
+ You can test whether `#is_to_be_hit(v1, v2)` method will be called:
128
128
 
129
129
  ```ruby
130
130
  def mock_case
131
131
  sample_obj = Sample.new
132
- mock(sample_obj).is_to_be_hit
132
+ mock(sample_obj).is_to_be_hit(2) # `2` should be count of parameters
133
133
  sample_obj.do_other_thing
134
134
  end
135
135
  ```
@@ -13,12 +13,16 @@ module Mrubyc
13
13
  puts "loading #{model_file}"
14
14
  load model_file
15
15
  class_name = File.basename(model_file, '.rb').camelize
16
- begin
17
- model_class = Module.const_get(class_name)
18
- rescue NameError => e
19
- print "\e[33m"
20
- puts "[WARN] #{model_file} doesn't have corresponding class `#{class_name}`."
21
- print "\e[m"
16
+ model_class = if Module.const_defined?(class_name)
17
+ Module.const_get(class_name)
18
+ elsif Module.const_defined?(class_name.upcase)
19
+ Module.const_get(class_name.upcase)
20
+ end
21
+ unless model_class
22
+ # Deprecate 2022-06-01
23
+ #print "\e[33m"
24
+ #puts "[WARN] #{model_file} doesn't have corresponding class `#{class_name}`."
25
+ #print "\e[m"
22
26
  next
23
27
  end
24
28
  model_class.class_eval do
@@ -17,11 +17,13 @@ module Mrubyc
17
17
  end
18
18
 
19
19
  def method_missing(method_name, *args)
20
+ param_size = args[0] || 0
20
21
  @@double_method_locations << {
21
22
  type: @type,
22
23
  class: @klass,
23
24
  method_name: method_name,
24
25
  args: args.to_s,
26
+ method_parameters: Array.new(param_size).map.with_index{|_, i| ('a'.ord + i).chr }.join(','),
25
27
  block: (block_given? ? yield : nil),
26
28
  label: @location.label,
27
29
  path: @location.absolute_path || @location.path,
@@ -13,12 +13,12 @@ module Mrubyc
13
13
  test_erb = ERB.new(
14
14
  File.read(
15
15
  File.expand_path('../../../../templates/test.rb.erb', __FILE__)
16
- ), nil, '-'
16
+ ), trim_mode: '-'
17
17
  )
18
18
  models_erb = ERB.new(
19
19
  File.read(
20
20
  File.expand_path('../../../../templates/models.rb.erb', __FILE__)
21
- ), nil, '-'
21
+ ), trim_mode: '-'
22
22
  )
23
23
  mrubyc_class_dir = File.expand_path('../../../../mrubyc-ext/', __FILE__)
24
24
  File.write(File.join(
@@ -31,6 +31,7 @@ module Mrubyc
31
31
  instance_variables: nil, # TODO
32
32
  method_name: double[:method_name].to_s,
33
33
  args: double[:args],
34
+ method_parameters: double[:method_parameters],
34
35
  return_value: double[:block],
35
36
  line: double[:line]
36
37
  }
@@ -1,5 +1,5 @@
1
1
  module Mrubyc
2
2
  module Test
3
- VERSION = "0.7.0-rc0"
3
+ VERSION = "0.7.1"
4
4
  end
5
5
  end
@@ -16,8 +16,8 @@ class Object
16
16
  'Array'
17
17
  when FalseClass
18
18
  'FalseClass'
19
- when Fixnum
20
- 'Fixnum'
19
+ when Integer
20
+ 'Integer'
21
21
  when Float
22
22
  'Float'
23
23
  when Hash
data/lib/mrubyc-test.rb CHANGED
@@ -47,34 +47,30 @@ module Mrubyc::Test
47
47
  tmp_dir = File.join(Dir.pwd, config['test_tmp_dir'])
48
48
  puts "cd #{tmp_dir}"
49
49
  puts
50
- exit_code = 0
51
50
  pwd = Dir.pwd
52
51
  hal_path = "#{pwd}/#{config['mrubyc_src_dir']}/hal"
53
52
  hal_bak_path = "#{pwd}/#{config['mrubyc_src_dir']}/~hal"
54
53
  FileUtils.mv(hal_path, hal_bak_path) if FileTest.exist?(hal_path)
54
+ exit_code = 0
55
55
  begin
56
56
  FileUtils.ln_s "#{pwd}/#{config['test_tmp_dir']}/hal", "#{pwd}/#{config['mrubyc_src_dir']}/hal"
57
57
  Dir.chdir(tmp_dir) do
58
58
  [
59
- "#{mrbc_path} -B test test.rb",
60
- "#{mrbc_path} -B models models.rb",
61
- "cc -O0 -g3 -Wall -I #{pwd}/#{config['mrubyc_src_dir']} -o test main.c #{pwd}/#{config['mrubyc_src_dir']}/*.c #{pwd}/#{config['mrubyc_src_dir']}/hal/*.c -DMRBC_USE_HAL_POSIX #{ENV["CFLAGS"]} #{ENV["LDFLAGS"]}",
62
- "./test"].each do |cmd|
59
+ "#{mrbc_path} -B test test.rb",
60
+ "#{mrbc_path} -B models models.rb",
61
+ "cc -O0 -g3 -Wall -I #{pwd}/#{config['mrubyc_src_dir']} -o test main.c #{pwd}/#{config['mrubyc_src_dir']}/*.c #{pwd}/#{config['mrubyc_src_dir']}/hal/*.c -DMRBC_USE_MATH=1 -DMRBC_USE_HAL_POSIX #{ENV["CFLAGS"]} #{ENV["LDFLAGS"]}",
62
+ "./test"
63
+ ].each do |cmd|
63
64
  puts cmd
64
65
  puts
65
- exit_code = system(cmd) ? 0 : 1
66
- if exit_code > 0
67
- print "\e[31m"
68
- puts "exit code: #{exit_code}"
69
- puts "\e[0m"
70
- exit(exit_code)
71
- end
66
+ exit_code = 1 unless system(cmd)
72
67
  end
73
68
  end
74
69
  ensure
75
70
  FileUtils.rm hal_path
76
71
  FileUtils.mv(hal_bak_path, hal_path) if FileTest.exist?(hal_bak_path)
77
72
  end
73
+ return exit_code
78
74
  end
79
75
 
80
76
  def init_env
@@ -132,10 +128,16 @@ module Mrubyc::Test
132
128
  end
133
129
  "RBENV_VERSION=#{mruby_version} mrbc"
134
130
  end
131
+ exit_code = 0
135
132
  Dir.glob(test_path).each_slice(options[:every]) do |test_files|
136
133
  prepare(test_files, options[:verbose], method_name_pattern)
137
- make(mrbc_path)
134
+ exit_code += make(mrbc_path)
135
+ end
136
+ if exit_code > 0
137
+ puts "\e[31mFinished with error(s)\e[0m"
138
+ exit 1
138
139
  end
140
+ puts "\e[32mFinished without error\e[0m"
139
141
  end
140
142
 
141
143
  desc "version", "Print the version"
@@ -4,27 +4,47 @@
4
4
  #include "models.c"
5
5
  #include "test.c"
6
6
 
7
- #define MEMORY_SIZE (1024*64)-1
7
+ #define MEMORY_SIZE (1024*640)-1
8
8
  static uint8_t my_memory_pool[MEMORY_SIZE];
9
9
 
10
- int exit_code;
10
+ int exit_code = 0;
11
11
 
12
- static void c_exit(mrb_vm *vm, mrb_value *v, int argc){
12
+ static void c_exit(struct VM *vm, mrbc_value v[], int argc)
13
+ {
13
14
  exit_code = GET_INT_ARG(1);
14
15
  }
15
16
 
17
+ //================================================================
18
+ /*! Object#instance_variable_get
19
+ */
20
+ static void c_instance_variable_get(struct VM *vm, mrbc_value v[], int argc)
21
+ {
22
+ mrbc_kv_handle *kvh = &v[0].instance->ivar;
23
+ const char *name = (const char *)GET_STRING_ARG(1);
24
+ for(int i = 0; i < kvh->n_stored; i++) {
25
+ if (strncmp(&name[1], symid_to_str(kvh->data[i].sym_id), strlen(name) - 1) == 0) {
26
+ SET_RETURN(kvh->data[i].value);
27
+ mrbc_incref(&kvh->data[i].value);
28
+ return;
29
+ }
30
+ }
31
+ SET_NIL_RETURN();
32
+ }
33
+
16
34
  //================================================================
17
35
  /*! DEBUG PRINT
18
36
  */
19
- static void c_debugprint(mrb_vm *vm, mrb_value *v, int argc){
37
+ static void c_debugprint(struct VM *vm, mrbc_value v[], int argc)
38
+ {
20
39
  console_putchar('\n');
21
40
  for( int i = 0; i < 79; i++ ) { console_putchar('='); }
22
41
  console_putchar('\n');
23
42
  unsigned char *message = GET_STRING_ARG(1);
24
43
  console_printf("%s\n", message);
25
- int total, used, free, fragment;
26
- mrbc_alloc_statistics( &total, &used, &free, &fragment );
27
- console_printf("Memory total:%d, used:%d, free:%d, fragment:%d\n", total, used, free, fragment );
44
+
45
+ struct MRBC_ALLOC_STATISTICS mem;
46
+ mrbc_alloc_statistics( &mem );
47
+ console_printf("Memory total:%d, used:%d, free:%d, fragment:%d\n", mem.total, mem.used, mem.free, mem.fragmentation );
28
48
  for( int i = 0; i < 79; i++ ) { console_putchar('='); }
29
49
  console_putchar('\n');
30
50
  console_putchar('\n');
@@ -34,6 +54,7 @@ int main(void) {
34
54
  mrbc_init(my_memory_pool, MEMORY_SIZE);
35
55
  mrbc_define_method(0, mrbc_class_object, "debugprint", c_debugprint);
36
56
  mrbc_define_method(0, mrbc_class_object, "exit", c_exit);
57
+ mrbc_define_method(0, mrbc_class_object, "instance_variable_get", c_instance_variable_get);
37
58
  mrbc_create_task( models, 0 );
38
59
  mrbc_create_task( test, 0 );
39
60
  mrbc_run();
@@ -108,7 +108,7 @@ end
108
108
  <% end -%>
109
109
  <% test_case[:mocks].each do |mock| -%>
110
110
  class <%= mock[:class_name] %>
111
- def <%= mock[:method_name] %>
111
+ def <%= mock[:method_name] %>(<%= mock[:method_parameters] %>)
112
112
  $mock.actual.add_by_key :<%= mock[:method_name] %>
113
113
  end
114
114
  end
@@ -126,7 +126,7 @@ end
126
126
  end
127
127
  <% test_case[:mocks].each do |mock| -%>
128
128
  class <%= mock[:class_name] %>Double
129
- def <%= mock[:method_name] %>
129
+ def <%= mock[:method_name] %>(_param_size = 0)
130
130
  $mock.expected.add_by_key :<%= mock[:method_name] %>
131
131
  end
132
132
  end
data/mrubyc-test.gemspec CHANGED
@@ -23,11 +23,11 @@ Gem::Specification.new do |spec|
23
23
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
24
  spec.require_paths = ["lib"]
25
25
 
26
- spec.add_development_dependency "bundler", "~> 2.0"
27
- spec.add_development_dependency "rake", "~> 13.0"
26
+ spec.add_development_dependency "bundler", "~> 2"
27
+ spec.add_development_dependency "rake", "~> 13"
28
28
  spec.add_development_dependency "rspec", "~> 3.9"
29
29
 
30
- spec.add_dependency "thor", "~> 1.0"
31
- spec.add_dependency "activesupport", "~> 6.0"
30
+ spec.add_dependency "thor", "~> 1.2"
31
+ spec.add_dependency "activesupport", "~> 7.0"
32
32
  spec.add_dependency "rufo", "~> 0.12"
33
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mrubyc-test
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0.pre.rc0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - HASUMI Hitoshi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-09-23 00:00:00.000000000 Z
11
+ date: 2022-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.0'
19
+ version: '2'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '2.0'
26
+ version: '2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '13.0'
33
+ version: '13'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '13.0'
40
+ version: '13'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,28 +58,28 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.0'
61
+ version: '1.2'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1.0'
68
+ version: '1.2'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: activesupport
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '6.0'
75
+ version: '7.0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '6.0'
82
+ version: '7.0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rufo
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -148,11 +148,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
148
148
  version: '0'
149
149
  required_rubygems_version: !ruby/object:Gem::Requirement
150
150
  requirements:
151
- - - ">"
151
+ - - ">="
152
152
  - !ruby/object:Gem::Version
153
- version: 1.3.1
153
+ version: '0'
154
154
  requirements: []
155
- rubygems_version: 3.2.17
155
+ rubygems_version: 3.3.14
156
156
  signing_key:
157
157
  specification_version: 4
158
158
  summary: Test Framework for mruby/c