roap_test_helper 1.0.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2aa040e05b047f9ae97b907b21f957ba8a634ee9
4
+ data.tar.gz: a72beb3a08c79ba44298dd75c0afce02d4431c2b
5
+ SHA512:
6
+ metadata.gz: 6247a01e9f187f769584e2aab14b211996cfafe8c55fdbeaa08e0facb0349e15c62219c0c07c62558aa997483c917be89e9f5a17f008476230e7240acb739819
7
+ data.tar.gz: bb5555acaa112ac6921d1f80a1813bc0ed9ef7c313e4f4575400b05c7d78d0e5a3d1efc42650fb53e24a9e48e3ae5fe4dc72559da77c1d50bfc632ff4741ae61
@@ -0,0 +1,5 @@
1
+ require 'method_source'
2
+
3
+ require_relative 'roap_test_helper/env'
4
+ require_relative 'roap_test_helper/roap_test_helper'
5
+ require_relative 'roap_test_helper/extension'
@@ -0,0 +1,30 @@
1
+ module Roap
2
+ module TestHelper
3
+ class Env
4
+ attr_writer :setup
5
+ attr_writer :teardown
6
+
7
+ def setup
8
+ @setup.call if @setup != nil
9
+ end
10
+ def teardown
11
+ @teardown.call if @setup != nil
12
+ end
13
+ end
14
+
15
+ class EnvManager
16
+ @@env = {}
17
+
18
+ def self.register_env klass, env
19
+ @@env[klass] = env
20
+ end
21
+
22
+ def self.setup klass
23
+ @@env[klass].setup if @@env[klass] != nil
24
+ end
25
+ def self.teardown klass
26
+ @@env[klass].teardown if @@env[klass] != nil
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,41 @@
1
+ require 'ripper'
2
+
3
+ module Roap
4
+ module TestHelper
5
+ module Extension
6
+ extend Roap::AttributeBase
7
+
8
+ #static
9
+ on /test-me\s*((?<args>.*)=>(?<should>.*))?/ do |klass, method, md|
10
+ args = eval md[:args].to_s
11
+ should = eval md[:should].to_s
12
+
13
+ TestHelper::tests.push({
14
+ :type => :singleton_method,
15
+ :klass => klass,
16
+ :method_name => method.name,
17
+ :args => args,
18
+ :should => should})
19
+ end
20
+
21
+ #static
22
+ on /@example()/ do |klass, method, md|
23
+ body = Roap::Utils::decomment __example__
24
+ last = Ripper.lex(body.lines.last).last
25
+
26
+ if last[1] == :on_comment
27
+ last[2].gsub! /^#=>*/, ""
28
+
29
+ should = eval last[2]
30
+
31
+ TestHelper::tests.push({
32
+ :type => :code,
33
+ :klass => klass,
34
+ :method_name => method.name,
35
+ :should => should,
36
+ :code => body})
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,79 @@
1
+ require 'stringio'
2
+
3
+ module Roap
4
+ module TestHelper
5
+ @@tests = []
6
+
7
+ def self.tests
8
+ @@tests
9
+ end
10
+
11
+ def self.on klass, &block
12
+ @env = Env.new
13
+
14
+ def self.setup &block
15
+ @env.setup = block
16
+ end
17
+ def self.teardown &block
18
+ @env.teardown = block
19
+ end
20
+
21
+ EnvManager::register_env klass, @env
22
+
23
+ instance_eval &block
24
+ end
25
+
26
+ def self.test_all *options
27
+ puts "Roap::TestHelper::test_all"
28
+
29
+ if options.include? :suppress_stdout
30
+ original_stdout = $stdout
31
+ $stdout = File.open File::NULL, "w"
32
+ end
33
+
34
+ @@tests.each do |test|
35
+ #setup
36
+ EnvManager::setup :global
37
+ EnvManager::setup test[:klass]
38
+
39
+ if test[:type] == :singleton_method
40
+ method = test[:klass].singleton_method test[:method_name]
41
+
42
+ begin
43
+ result = method.call *test[:args]
44
+ rescue Exception => e
45
+ exception = e
46
+ end
47
+ elsif test[:type] == :code
48
+ begin
49
+ result = eval test[:code]
50
+ rescue Exception => e
51
+ exception = e
52
+ end
53
+ end
54
+
55
+ #teardown
56
+ EnvManager::teardown test[:klass]
57
+ EnvManager::teardown :global
58
+
59
+ if exception or result != test[:should] and
60
+ exception.class != test[:should]
61
+
62
+ STDERR.puts "test faild / #{test[:klass]}::#{test[:method_name]}"
63
+ STDERR.puts " => #{result} / should #{test[:should]}"
64
+
65
+ if exception
66
+ STDERR.puts " => #{exception}"
67
+ end
68
+
69
+ if options.include? :stop_on_failure
70
+ STDERR.puts "test_all stopped by stop_on_failure option"
71
+ break
72
+ end
73
+ end
74
+ end
75
+
76
+ $stdout = original_stdout if options.include? :suppress_stdout
77
+ end
78
+ end
79
+ end
metadata ADDED
@@ -0,0 +1,61 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: roap_test_helper
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - pjc0247
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-11-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: roap
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: aop for ruby
28
+ email:
29
+ - pjc0247@naver.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - lib/roap_test_helper.rb
35
+ - lib/roap_test_helper/env.rb
36
+ - lib/roap_test_helper/extension.rb
37
+ - lib/roap_test_helper/roap_test_helper.rb
38
+ homepage: http://github.com/pjc0247/roap_test_helper
39
+ licenses: []
40
+ metadata: {}
41
+ post_install_message:
42
+ rdoc_options: []
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ required_rubygems_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ requirements: []
56
+ rubyforge_project: roap_test_helper
57
+ rubygems_version: 2.4.5
58
+ signing_key:
59
+ specification_version: 4
60
+ summary: aop for ruby
61
+ test_files: []