rgot 0.0.3 → 0.0.4

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.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +25 -9
  3. data/bin/rgot +75 -50
  4. data/lib/rgot/m.rb +4 -6
  5. data/lib/rgot/version.rb +1 -1
  6. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8f276d8ac23961aa00103a1217c57b1ef513b7d1
4
- data.tar.gz: f742e18e1815dde34451f3566a303dc2239b9433
3
+ metadata.gz: 0bd2d7a31146606c28b7b373c1f05632088ba374
4
+ data.tar.gz: 14a9e7bf677e9eb24ea70d3710a48f6383d8b7ad
5
5
  SHA512:
6
- metadata.gz: 7be4569af2fdd700a3df4ed304a7e53d00d23d73d40153b555eb05b132640d2cea8990b89a2db5a73d0d91cea67b6f149de405f14e277f8f39bc02919df44f84
7
- data.tar.gz: a89b569ed19bac5b3a26d650fa6262f84daf7a0a65d1ce304d3943fbee7bef1abeada4a24023f317d53f8c11bf8a9590957387c473eef7ef37e67c42c032c09e
6
+ metadata.gz: b912a04b6c18f16b8660d2eefb0a50a0444fd1fd60c7d68292d2fdab77f4bf6de63874f86d05346749bbf5c397a195b5247da17089a71c0558dd2b22ce9dde1b
7
+ data.tar.gz: cc789d6941cb34fc8b0fc1acb1c5844d3a157c69811b5c08e83c04126cdfd38e563fb8f7a1ebaee0c495aa72c1d4f2dc91b815e4ec695c18a84b07caa130ea39
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- rgot
1
+ Rgot
2
2
  ===
3
3
 
4
4
  [![Build Status](https://travis-ci.org/ksss/rgot.svg)](https://travis-ci.org/ksss/rgot)
@@ -7,7 +7,7 @@ Ruby + Golang Testing = Rgot
7
7
 
8
8
  Rgot is a testing package convert from golang testing.
9
9
 
10
- ### usage
10
+ ### Usage
11
11
 
12
12
  test/sample.rb
13
13
  ```ruby
@@ -20,8 +20,6 @@ end
20
20
 
21
21
  test/pass_test.rb
22
22
  ```ruby
23
- require_relative './sample'
24
-
25
23
  module SampleTest
26
24
  class TypeSum < Struct.new(:left, :right, :expect)
27
25
  end
@@ -40,7 +38,7 @@ module SampleTest
40
38
  t.error("expect Fixnum got #{sum.class}")
41
39
  end
42
40
  unless sum == ts.expect
43
- t.error("expect 5 got #{sum}")
41
+ t.error("expect #{ts.expect} got #{sum}")
44
42
  end
45
43
  end
46
44
  end
@@ -48,7 +46,7 @@ end
48
46
  ```
49
47
 
50
48
  ```
51
- $ rgot -v test/pass_test.rb
49
+ $ rgot -v --require ./test/sample test/pass_test.rb
52
50
  === RUN test_pass
53
51
  --- PASS: test_pass (0.00003s)
54
52
  PASS
@@ -168,9 +166,11 @@ end
168
166
  $ rgot -h
169
167
  Usage: rgot [options]
170
168
  -v, --verbose log all tests
171
- -b, --bench [regexp] benchmark
169
+ --bench [regexp] benchmark
172
170
  --benchtime [sec] benchmark running time
173
171
  --timeout [sec] set timeout sec to testing
172
+ --require [path] load some code before running
173
+ --load-path [path] Specify $LOAD_PATH directory
174
174
  ```
175
175
 
176
176
  ## Basic
@@ -208,7 +208,7 @@ Show all log and more detail infomation of testing.
208
208
  ## Benchmark
209
209
 
210
210
  ```
211
- $ rgot target_file_test.rb -b .
211
+ $ rgot target_file_test.rb --bench .
212
212
  ```
213
213
 
214
214
  Run testing with benchmark.
@@ -243,7 +243,7 @@ end
243
243
 
244
244
  Main method should be set 'test_main' only.
245
245
 
246
- variable `m` is a instance of `Rgot::M` class means Main.
246
+ Variable `m` is a instance of `Rgot::M` class means Main.
247
247
 
248
248
  `Rgot::M#run` start all testing methods.
249
249
 
@@ -315,6 +315,22 @@ For Benchmark class.
315
315
 
316
316
  Can use log methods same as `Rgot::T` class
317
317
 
318
+ ## Rgot::B#n
319
+
320
+ Automatic number calculated by running time.
321
+
322
+ Recommend to this idiom.
323
+
324
+ ```ruby
325
+ def benchmark_someone(b)
326
+ i = 0
327
+ while i < b.n
328
+ someone()
329
+ i += 1
330
+ end
331
+ end
332
+ ```
333
+
318
334
  ## Rgot::B#reset_timer
319
335
 
320
336
  Reset benchmark timer
data/bin/rgot CHANGED
@@ -2,12 +2,14 @@
2
2
  require 'optparse'
3
3
  require 'rgot'
4
4
 
5
- opts = {}
5
+ opts = {
6
+ require_paths: []
7
+ }
6
8
  parser = OptionParser.new do |o|
7
9
  o.on '-v', '--verbose', "log all tests" do |arg|
8
10
  opts[:verbose] = arg
9
11
  end
10
- o.on '-b', '--bench [regexp]', "benchmark" do |arg|
12
+ o.on '--bench [regexp]', "benchmark" do |arg|
11
13
  unless arg
12
14
  raise Rgot::OptionError, "missing argument for flag --bench"
13
15
  end
@@ -19,71 +21,94 @@ parser = OptionParser.new do |o|
19
21
  o.on '--timeout [sec]', "set timeout sec to testing" do |arg|
20
22
  opts[:timeout] = arg
21
23
  end
24
+ o.on '--require [path]', "load some code before running" do |arg|
25
+ opts[:require_paths] << arg
26
+ end
27
+ o.on '--load-path [path]', "Specify $LOAD_PATH directory" do |arg|
28
+ $LOAD_PATH.unshift(arg)
29
+ end
22
30
  end
23
31
  parser.parse!(ARGV)
32
+ opts[:require_paths].each do |path|
33
+ require path
34
+ end
24
35
 
25
- target = ARGV[0]
26
-
27
- if target
28
- if File.file?(target)
29
- require File.expand_path(target)
30
- elsif File.directory?(target)
31
- Dir.glob("./#{target}/**/*_test.rb") do |i|
32
- require i
36
+ ARGV.each do |target|
37
+ if target
38
+ if File.file?(target)
39
+ require File.expand_path(target)
40
+ elsif File.directory?(target)
41
+ Dir.glob("./#{target}/*_test.rb") do |i|
42
+ require i
43
+ end
44
+ else
45
+ puts target
33
46
  end
34
47
  else
35
- puts target
36
- end
37
- else
38
- Dir.glob("./**/*_test.rb") do |i|
39
- require i
48
+ Dir.glob("./**/*_test.rb") do |i|
49
+ require i
50
+ end
40
51
  end
41
52
  end
42
53
 
43
54
  modules = Object.constants.select { |c|
44
55
  next if c == :FileTest
45
56
  /.*Test\z/ =~ c
57
+ }.map{ |c|
58
+ Object.const_get(c)
46
59
  }
47
60
 
48
- if 1 != modules.length
49
- puts "can not load module. found #{modules.join(', ')}"
50
- exit 1
51
- end
61
+ # if 1 != modules.length
62
+ # puts "can not load module. found #{modules.join(', ')}"
63
+ # exit 1
64
+ # end
52
65
 
53
- tests = []
54
- benchmarks = []
55
- examples = []
56
- main = nil
57
- c = modules.first
66
+ code = 0
67
+ modules.each do |test_module|
68
+ pid = fork {
69
+ tests = []
70
+ benchmarks = []
71
+ examples = []
72
+ main = nil
73
+ methods = test_module.instance_methods.sort
74
+ methods.grep(/\Atest_/).each do |m|
75
+ if m == :test_main && main.nil?
76
+ main = Rgot::InternalTest.new(test_module, m)
77
+ else
78
+ tests << Rgot::InternalTest.new(test_module, m)
79
+ end
80
+ end
58
81
 
59
- test_module = Object.const_get(c)
60
- methods = test_module.instance_methods.sort
61
- methods.grep(/\Atest_/).each do |m|
62
- if m == :test_main && main.nil?
63
- main = Rgot::InternalTest.new(test_module, m)
64
- else
65
- tests << Rgot::InternalTest.new(test_module, m)
66
- end
67
- end
82
+ methods.grep(/\Abenchmark_/).each do |m|
83
+ benchmarks << Rgot::InternalBenchmark.new(test_module, m)
84
+ end
68
85
 
69
- methods.grep(/\Abenchmark_/).each do |m|
70
- benchmarks << Rgot::InternalBenchmark.new(test_module, m)
71
- end
86
+ methods.grep(/\Aexample_?/).each do |m|
87
+ examples << Rgot::InternalExample.new(test_module, m)
88
+ end
72
89
 
73
- methods.grep(/\Aexample_?/).each do |m|
74
- examples << Rgot::InternalExample.new(test_module, m)
75
- end
90
+ duration = Rgot.now
91
+ at_exit {
92
+ template = "%s\t%s\t%.3fs"
76
93
 
77
- m = Rgot::M.new(tests: tests, benchmarks: benchmarks, examples: examples, opts: opts)
78
- duration = Rgot.now
79
- at_exit {
80
- if !$!
81
- puts sprintf("ok\t%.3fs", Rgot.now - duration)
94
+ if $!.kind_of?(SystemExit) && $!.success?
95
+ puts sprintf(template, "ok", test_module, Rgot.now - duration)
96
+ else
97
+ puts sprintf(template, "FAIL", test_module, Rgot.now - duration)
98
+ end
99
+ }
100
+ m = Rgot::M.new(tests: tests, benchmarks: benchmarks, examples: examples, opts: opts)
101
+ if main
102
+ main.module.extend main.module
103
+ main.module.instance_method(main.name).bind(main.module).call(m)
104
+ else
105
+ exit m.run
106
+ end
107
+ }
108
+ _, status = Process.waitpid2(pid)
109
+ unless status.success?
110
+ code = 1
82
111
  end
83
- }
84
- if main
85
- main.module.extend main.module
86
- main.module.instance_method(main.name).bind(main.module).call(m)
87
- else
88
- exit m.run
89
112
  end
113
+
114
+ exit code
@@ -13,18 +13,18 @@ module Rgot
13
13
  def run
14
14
  test_ok = false
15
15
  example_ok = false
16
+
16
17
  Timeout.timeout(@opts[:timeout].to_f) {
17
18
  test_ok = run_tests
18
19
  example_ok = run_examples
19
20
  }
20
21
  if !test_ok || !example_ok
21
22
  puts "FAIL"
22
- 1
23
- else
24
- puts "PASS"
25
- 0
23
+ return 1
26
24
  end
25
+ puts "PASS" if @opts[:verbose]
27
26
  run_benchmarks
27
+ 0
28
28
  end
29
29
 
30
30
  private
@@ -87,8 +87,6 @@ module Rgot
87
87
  ok
88
88
  end
89
89
 
90
- private
91
-
92
90
  def capture
93
91
  orig_out, orig_err = $stdout, $stderr
94
92
  out, err = StringIO.new, StringIO.new
@@ -1,3 +1,3 @@
1
1
  module Rgot
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rgot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - ksss
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-08 00:00:00.000000000 Z
11
+ date: 2015-08-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler