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 +7 -0
- data/lib/roap_test_helper.rb +5 -0
- data/lib/roap_test_helper/env.rb +30 -0
- data/lib/roap_test_helper/extension.rb +41 -0
- data/lib/roap_test_helper/roap_test_helper.rb +79 -0
- metadata +61 -0
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,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: []
|