picard 0.1 → 0.2.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.
data/Gemfile CHANGED
@@ -1,3 +1,3 @@
1
1
  source "http://rubygems.org"
2
-
3
- gemspec
2
+ gem 'rake'
3
+ gemspec
@@ -1,12 +1 @@
1
- require "picard/version"
2
-
3
- require_relative 'picard/extensions'
4
- require_relative 'picard/context'
5
- require_relative 'picard/error_message_formatter'
6
- require_relative 'picard/ast_helper'
7
- require_relative 'picard/assertion_wrapper'
8
- require_relative 'picard/s_expression_sugar'
9
- require_relative 'picard/class_ripper'
10
- require_relative 'picard/preprocessor'
11
- require_relative 'picard/method_ripper'
12
- require_relative 'picard/test_unit'
1
+ require_relative 'picard_02'
@@ -1,43 +1,95 @@
1
- require 'live_ast'
2
1
  require 'ruby2ruby'
3
2
  require_relative 's_expression_sugar'
4
3
 
5
4
  module Picard
5
+
6
+ class BasicAssertion
7
+ def extract_argument ast
8
+ ast[3][1]
9
+ end
10
+
11
+ def extract_receiver ast
12
+ ast[1]
13
+ end
14
+ end
15
+
16
+ class Default < BasicAssertion
17
+ def === ast
18
+ true
19
+ end
20
+
21
+ def transform ast, message
22
+ s(:call, nil, :assert, s(:arglist,ast, s(:str, message)))
23
+ end
24
+ end
25
+
26
+ class EqualTo < BasicAssertion
27
+ def === ast
28
+ ast[0] == :call and ast[2] == :==
29
+ end
30
+
31
+ def transform ast, message
32
+ s(:call, nil,
33
+ :assert_equal,
34
+ s(:arglist,
35
+ extract_argument(ast),
36
+ extract_receiver(ast),
37
+ s(:str, message)))
38
+ end
39
+ end
40
+
41
+ class NotEqualTo < BasicAssertion
42
+ def === ast
43
+ ast[0] == :call and ast[2] == :'!='
44
+ end
45
+
46
+ def transform ast, message
47
+ s(:call, nil,
48
+ :assert_not_equal,
49
+ s(:arglist,
50
+ extract_argument(ast),
51
+ extract_receiver(ast),
52
+ s(:str, message)))
53
+ end
54
+ end
55
+
56
+ class Match < BasicAssertion
57
+ def === ast
58
+ ast[0] == :call and ast[2] == :'=~'
59
+ end
60
+
61
+ def transform ast, message
62
+ s(:call, nil,
63
+ :assert_match,
64
+ s(:arglist,
65
+ extract_argument(ast),
66
+ extract_receiver(ast),
67
+ s(:str, message)))
68
+ end
69
+ end
70
+
6
71
  class AssertionWrapper
7
72
  include Picard::SExpressionSugar
8
73
 
9
74
  def initialize formatter = ErrorMessageFormatter.new
10
75
  @formatter = formatter
76
+ @handlers = [EqualTo.new, NotEqualTo.new, Match.new, Default.new]
11
77
  end
12
78
 
13
79
  def wrap_assertion ast, context
14
80
  line = ast_to_str(ast)
15
81
  message = @formatter.format_message(line, context)
16
-
17
- if equal_to_assertion? ast
18
- s(:call, nil,
19
- :assert_equal,
20
- s(:arglist,
21
- extract_argument(ast),
22
- extract_receiver(ast),
23
- s(:str, message)))
24
- else
25
- s(:call, nil, :assert, s(:arglist,ast, s(:str, message)))
26
- end
27
- end
28
82
 
29
- private
30
-
31
- def equal_to_assertion? ast
32
- ast[0] == :call and ast[2] == :==
83
+ handler = find_matching_handler ast
84
+ handler.transform ast, message
33
85
  end
34
86
 
35
- def extract_argument ast
36
- ast[3][1]
37
- end
87
+ private
38
88
 
39
- def extract_receiver ast
40
- ast[1]
89
+ def find_matching_handler ast
90
+ @handlers.find do |h|
91
+ h === ast
92
+ end
41
93
  end
42
94
 
43
95
  def ast_to_str ast
@@ -1,80 +1,84 @@
1
- require 'live_ast'
2
1
  require 'ruby2ruby'
3
2
 
4
3
  module Picard
5
- class AstHelper
6
- ResultItem = Struct.new(:index, :ast)
7
4
 
8
- def initialize wrapper = Picard::AssertionWrapper.new
9
- @wrapper = wrapper
10
- end
5
+ ResultItem = Struct.new(:ast, :index)
11
6
 
12
- def all_statements method
13
- method_ast = method.to_ast
14
- body_statements = extract_body_statements(method_ast)
15
- wrap_in_result_items body_statements
7
+ class AstHelper
8
+ def initialize(wrapper = Picard::AssertionWrapper.new)
9
+ @wrapper = wrapper
16
10
  end
17
11
 
18
- def all_statements_in_block method, block_name
19
- statements = all_statements(method)
20
-
21
- start_index = find_index_of_statements_calling(statements, block_name)
22
- start_index ? statements[start_index + 1 .. -1] : []
12
+ def extract_ast method
13
+ ast = method.to_sexp do |code|
14
+ index = code.index('def') + 3
15
+ code[index...index] = ' fake.'
16
+ true
17
+ end
18
+ MethodAst.new ast
23
19
  end
24
20
 
25
21
  def wrap_assertion method, ast
26
22
  context = Picard::Context.new(method.source_location[0], ast.line)
27
23
  @wrapper.wrap_assertion ast, context
28
24
  end
29
-
30
- def replace_statement method, index, new_statement_ast
31
- method_ast = method.to_ast
32
- body_statements = extract_statements(method_ast)
33
- body_statements[index + 1] = new_statement_ast
25
+ end
26
+
27
+ class MethodAst
28
+ def initialize ast
29
+ @ast = ast
34
30
  end
35
31
 
36
- def method_to_string method
37
- ast = method.to_ast
38
- str = ast_to_str ast
39
- remove_spaces str
32
+ def body_statements
33
+ st = wrap_into_result_items(all_statements)
34
+ remove_prefix_statement st
40
35
  end
41
36
 
42
- private
43
-
44
- def ast_to_str ast
45
- Ruby2Ruby.new.process ast
37
+ def all_statements_in_block block_name
38
+ statements = body_statements
39
+ start_index = find_index_of_statements_calling(statements, block_name)
40
+ start_index ? statements[start_index + 1 .. -1] : []
46
41
  end
47
42
 
48
- def remove_spaces str
49
- str.gsub(/\n\s+/, "\n")
43
+ def replace_statement! index, new_statement
44
+ all_statements[index] = new_statement
50
45
  end
51
46
 
52
- def find_index_of_statements_calling items, method_name
53
- items.index do |item|
54
- ast = item.ast
55
- ast[0] == :call and ast[2] == method_name
56
- end
47
+ def generate_method
48
+ str = ast_to_str(@ast)
49
+ remove_spaces str
57
50
  end
58
51
 
59
- def extract_body_statements method_ast
60
- st = extract_statements(method_ast)
61
- remove_prefix_statement st
52
+ private
53
+
54
+ def wrap_into_result_items statements
55
+ res = []
56
+ statements.each_with_index do |s, i|
57
+ res << ResultItem.new(s, i)
58
+ end
59
+ res
62
60
  end
63
61
 
64
62
  def remove_prefix_statement statements
65
63
  statements[1..-1]
66
64
  end
67
65
 
68
- def extract_statements method_ast
69
- method_ast[3][1]
66
+ def all_statements
67
+ @ast[3][1]
70
68
  end
71
69
 
72
- def wrap_in_result_items asts
73
- res = []
74
- asts.each_with_index do |e, i|
75
- res << ResultItem.new(i, e)
70
+ def find_index_of_statements_calling items, method_name
71
+ items.index do |item|
72
+ item.ast[0] == :call and item.ast[2] == method_name
76
73
  end
77
- res
74
+ end
75
+
76
+ def ast_to_str ast
77
+ Ruby2Ruby.new.process ast
78
+ end
79
+
80
+ def remove_spaces str
81
+ str.gsub(/\n\s+/, "\n")
78
82
  end
79
83
  end
80
84
  end
@@ -1,3 +1,5 @@
1
+ require 'sourcify'
2
+
1
3
  module Picard
2
4
  class ::Object
3
5
  def metaclass; class << self; self; end; end
@@ -7,4 +9,8 @@ module Picard
7
9
  meta_eval { define_method name, &blk }
8
10
  end
9
11
  end
10
- end
12
+
13
+ ::UnboundMethod.class_eval do
14
+ include Sourcify::Method
15
+ end
16
+ end
@@ -1,5 +1,3 @@
1
- require 'live_ast'
2
-
3
1
  module Picard
4
2
  class MethodRipper
5
3
  def initialize ast_helper = AstHelper.new
@@ -7,22 +5,24 @@ module Picard
7
5
  end
8
6
 
9
7
  def wrap_all_assertions! method
10
- assertions = @ast_helper.all_statements_in_block(method, :expect)
11
- replace_all_statements_with_assertions! assertions, method
12
- replace_method_implementation_in_owner! method
8
+ ast = @ast_helper.extract_ast(method)
9
+ assertions = ast.all_statements_in_block(:expect)
10
+
11
+ replace_all_statements_with_assertions! ast, assertions, method
12
+ replace_method_implementation_in_owner! ast, method
13
13
  end
14
14
 
15
15
  private
16
16
 
17
- def replace_all_statements_with_assertions! assertions, method
17
+ def replace_all_statements_with_assertions! ast, assertions, method
18
18
  assertions.each do |e|
19
19
  wrapped = @ast_helper.wrap_assertion(method, e.ast)
20
- @ast_helper.replace_statement(method, e.index, wrapped)
20
+ ast.replace_statement!(e.index, wrapped)
21
21
  end
22
22
  end
23
23
 
24
- def replace_method_implementation_in_owner! method
25
- new_method_str = @ast_helper.method_to_string(method)
24
+ def replace_method_implementation_in_owner! ast, method
25
+ new_method_str = ast.generate_method
26
26
  method.owner.class_eval new_method_str
27
27
  end
28
28
  end
@@ -1,5 +1,3 @@
1
- require 'live_ast'
2
- require 'live_ast/to_ruby'
3
1
  require 'ruby2ruby'
4
2
 
5
3
  module Picard
@@ -1,7 +1,6 @@
1
1
  module PicardTestFramework
2
- module V01
3
- VERSION = "0.1"
2
+ module V02
3
+ VERSION = "0.2.1"
4
4
  end
5
5
  end
6
-
7
- Picard = PicardTestFramework::V01
6
+ Picard = PicardTestFramework::V02
@@ -0,0 +1,11 @@
1
+ require_relative "picard/version"
2
+ require_relative 'picard/extensions'
3
+ require_relative 'picard/context'
4
+ require_relative 'picard/error_message_formatter'
5
+ require_relative 'picard/ast_helper'
6
+ require_relative 'picard/assertion_wrapper'
7
+ require_relative 'picard/s_expression_sugar'
8
+ require_relative 'picard/class_ripper'
9
+ require_relative 'picard/preprocessor'
10
+ require_relative 'picard/method_ripper'
11
+ require_relative 'picard/test_unit'
@@ -18,7 +18,8 @@ Gem::Specification.new do |s|
18
18
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
19
  s.require_paths = ["lib"]
20
20
 
21
- s.add_dependency 'live_ast', '= 1.0.2'
22
- s.add_dependency 'live_ast_ripper', '= 0.6.5'
21
+ s.add_dependency 'sourcify', '>= 0.6.0.rc1'
23
22
  s.add_development_dependency 'flexmock'
23
+ s.add_development_dependency 'picard', '= 0.1'
24
+ s.add_development_dependency 'test-unit'
24
25
  end
@@ -1,8 +1,8 @@
1
1
  require File.expand_path("../../test_helper", __FILE__)
2
2
 
3
3
  class Picard::AssertionWrapperTest < Test::Unit::TestCase
4
- include Picard::TestUnit
5
- include Picard::SExpressionSugar
4
+ include PicardStable::TestUnit
5
+ include PicardStable::SExpressionSugar
6
6
 
7
7
  def setup
8
8
  @formatter = flexmock('formatter')
@@ -12,8 +12,7 @@ class Picard::AssertionWrapperTest < Test::Unit::TestCase
12
12
  def test_should_wrap_simple_assertions
13
13
  given
14
14
  ast = s(:lit, true)
15
- context = flexmock(:file => 'file', :lineno => 1)
16
- @formatter.should_receive(:format_message).with('true', context).and_return('generated error message')
15
+ context = init_context_and_formatter('true')
17
16
 
18
17
  expect
19
18
  @wrapper.wrap_assertion(ast, context) == s(:call, nil,
@@ -26,8 +25,7 @@ class Picard::AssertionWrapperTest < Test::Unit::TestCase
26
25
  def test_should_wrap_equal_to_assertions
27
26
  given
28
27
  ast = s(:call, s(:lit, 1), :==, s(:arglist, s(:lit, 2)))
29
- context = flexmock(:file => 'file', :lineno => 1)
30
- @formatter.should_receive(:format_message).with('(1 == 2)', context).and_return('generated error message')
28
+ context = init_context_and_formatter('(1 == 2)')
31
29
 
32
30
  expect
33
31
  @wrapper.wrap_assertion(ast, context) == s(:call, nil,
@@ -37,4 +35,39 @@ class Picard::AssertionWrapperTest < Test::Unit::TestCase
37
35
  s(:lit, 1),
38
36
  s(:str, 'generated error message')))
39
37
  end
38
+
39
+ def test_should_wrap_not_equal_to_assertions
40
+ given
41
+ ast = s(:call, s(:lit, 1), :'!=', s(:arglist, s(:lit, 2)))
42
+ context = init_context_and_formatter('1.!=(2)')
43
+
44
+ expect
45
+ @wrapper.wrap_assertion(ast, context) == s(:call, nil,
46
+ :assert_not_equal,
47
+ s(:arglist,
48
+ s(:lit, 2),
49
+ s(:lit, 1),
50
+ s(:str, 'generated error message')))
51
+ end
52
+
53
+ def test_should_wrap_matching_assertions
54
+ given
55
+ ast = s(:call, s(:lit, 1), :'=~', s(:arglist, s(:lit, 2)))
56
+ context = init_context_and_formatter('1.=~(2)')
57
+
58
+ expect
59
+ @wrapper.wrap_assertion(ast, context) == s(:call, nil,
60
+ :assert_match,
61
+ s(:arglist,
62
+ s(:lit, 2),
63
+ s(:lit, 1),
64
+ s(:str, 'generated error message')))
65
+ end
66
+
67
+ private
68
+ def init_context_and_formatter line
69
+ context = flexmock(:file => 'file', :lineno => 1)
70
+ @formatter.should_receive(:format_message).with(line, context).and_return('generated error message')
71
+ context
72
+ end
40
73
  end
@@ -1,117 +1,127 @@
1
1
  require File.expand_path("../../test_helper", __FILE__)
2
2
 
3
3
  class Picard::AstHelperTest < Test::Unit::TestCase
4
- include Picard::TestUnit
5
- include Picard::SExpressionSugar
6
-
7
- def setup
8
- @wrapper = flexmock('wrapper')
9
- @helper = Picard::AstHelper.new @wrapper
10
- end
11
-
4
+ include PicardStable::TestUnit
5
+ include PicardStable::SExpressionSugar
12
6
 
13
7
  class TestClass1
14
8
  def test_method
15
- one
16
- two
17
9
  end
18
10
  end
19
11
 
20
- def test_should_return_all_statements_of_method
12
+ def test_ast_helper_should_add_nil_to_empty_method
21
13
  given
22
- method = TestClass1.instance_method(:test_method)
23
- actual = @helper.all_statements(method)
14
+ ast = ast_of(TestClass1)
24
15
 
25
16
  expect
26
- actual[0].index == 0
27
- actual[0].ast == s(:call, nil, :one, s(:arglist))
28
-
29
- actual[1].index == 1
30
- actual[1].ast == s(:call, nil, :two, s(:arglist))
17
+ ast.body_statements[0].ast == s(:nil)
31
18
  end
32
19
 
33
20
 
34
21
  class TestClass2
35
22
  def test_method
36
23
  one
37
- expect
38
24
  two
39
25
  end
40
26
  end
41
27
 
42
- def test_should_find_all_statements_in_specified_block
28
+ def test_ast_helper_should_extract_ast_including_body_statments
43
29
  given
44
- method = TestClass2.instance_method(:test_method)
45
- actual = @helper.all_statements_in_block(method, :expect)
30
+ statements = ast_of(TestClass2).body_statements
46
31
 
47
32
  expect
48
- actual.size == 1
49
- actual[0].index == 2
50
- actual[0].ast == s(:call, nil, :two, s(:arglist))
33
+ statements[0].index == 1
34
+ statements[0].ast == s(:call, nil, :one, s(:arglist))
35
+
36
+ statements[1].index == 2
37
+ statements[1].ast == s(:call, nil, :two, s(:arglist))
51
38
  end
52
39
 
53
40
 
54
41
  class TestClass3
55
42
  def test_method
56
43
  one
44
+ expect
57
45
  two
58
46
  end
59
47
  end
60
48
 
61
- def test_should_return_empty_array_if_block_is_not_found
49
+ def test_method_ast_should_return_all_statements_in_block
62
50
  given
63
- method = TestClass3.instance_method(:test_method)
51
+ statements = ast_of(TestClass3).all_statements_in_block(:expect)
64
52
 
65
53
  expect
66
- @helper.all_statements_in_block(method, :where) == []
54
+ statements[0].index == 3
55
+ statements[0].ast = s(:call, nil, :two, s(:arglist))
67
56
  end
68
57
 
69
58
 
70
59
  class TestClass4
71
60
  def test_method
72
- false
61
+ one
62
+ two
73
63
  end
74
64
  end
75
65
 
76
- def test_should_replace_statement
66
+ def test_method_ast_should_return_empty_array_if_block_is_not_found
77
67
  given
78
- method = TestClass4.instance_method(:test_method)
79
- @helper.replace_statement(method, 0, s(:lit, true))
80
- all_statements = @helper.all_statements(method)
68
+ statements = ast_of(TestClass4)
81
69
 
82
70
  expect
83
- all_statements[0].ast == s(:lit, true)
71
+ statements.all_statements_in_block(:where) == []
84
72
  end
85
73
 
86
74
 
87
75
  class TestClass5
88
- def method
76
+ def test_method
77
+ false
89
78
  end
90
79
  end
91
80
 
92
- def test_should_wrap_assertion
81
+ def test_method_ast_should_replace_statement
93
82
  given
94
- method = TestClass5.instance_method(:method)
95
- ast = s(:lit, true)
96
- @wrapper.should_receive(:wrap_assertion).and_return('wrapped ast')
83
+ ast = ast_of(TestClass5)
84
+ ast.replace_statement!(1, s(:true))
97
85
 
98
86
  expect
99
- @helper.wrap_assertion(method, ast) == 'wrapped ast'
87
+ ast.body_statements[0].ast == s(:true)
100
88
  end
101
89
 
102
90
 
103
- class TestClass5
104
- def method
91
+ class TestClass6
92
+ def test_method
105
93
  false
106
94
  end
107
95
  end
108
96
 
109
- def test_should_return_string_representation_of_a_method_reflecting_updated_ast
97
+ def test_method_ast_should_generate_method_as_string
110
98
  given
111
- method = TestClass5.instance_method(:method)
112
- @helper.replace_statement(method, 0, s(:lit, true))
99
+ ast = ast_of(TestClass5)
100
+
101
+ expect
102
+ ast.generate_method == "def test_method\nfalse\nend"
103
+ end
104
+
113
105
 
106
+ def test_ast_helper_should_wrap_assertion
107
+ given
108
+ ast = flexmock(:line => 100)
109
+ method = flexmock(:source_location => ['location'])
110
+ expected_context = Picard::Context.new('location', 100)
111
+
112
+ wrapper = flexmock('wrapper')
113
+ wrapper.should_receive(:wrap_assertion).with(ast, expected_context).and_return('wrapped ast')
114
+
115
+ helper = Picard::AstHelper.new(wrapper)
116
+
114
117
  expect
115
- @helper.method_to_string(method) == "def method\ntrue\nend"
118
+ helper.wrap_assertion(method, ast) == 'wrapped ast'
119
+ end
120
+
121
+ private
122
+
123
+ def ast_of(clazz)
124
+ method = clazz.instance_method(:test_method)
125
+ Picard::AstHelper.new.extract_ast(method)
116
126
  end
117
127
  end
@@ -1,7 +1,7 @@
1
1
  require File.expand_path("../../test_helper", __FILE__)
2
2
 
3
3
  class Picard::ClassRipperTest < Test::Unit::TestCase
4
- include Picard::TestUnit
4
+ include PicardStable::TestUnit
5
5
 
6
6
  def setup
7
7
  @ripper = Picard::ClassRipper.new
@@ -1,5 +1,11 @@
1
1
  require File.expand_path("../../test_helper", __FILE__)
2
- require 'live_ast'
2
+ #require 'live_ast'
3
+ #require 'live_ast_ripper'
4
+ #require 'sorcerer'
5
+ #require 'test/unit'
6
+ #require 'sourcify'
7
+ #require 'ruby2ruby'
8
+
3
9
 
4
10
  module Picard
5
11
  class DemoTest < Test::Unit::TestCase
@@ -7,11 +13,31 @@ module Picard
7
13
  #
8
14
  #def test_one
9
15
  # expect
10
- # 1 == 2
16
+ # 2 == 2
17
+ #end
18
+
19
+ #def method1
20
+ # false
11
21
  #end
12
- #def regular_method
13
- # method 1, 2
22
+
23
+ #def test_what_breaks_ruby
24
+ # #method = MyMath.method(:regular_method)
25
+ # #puts method.inspect
26
+ # #puts method.to_sexp.inspect
27
+ # method = DemoTest.instance_method(:method1)
28
+ # #method = method.bind('fake')
29
+ # puts method.inspect
30
+ #
31
+ # ast = method.to_sexp do |code|
32
+ # index = code.index('def') + 3
33
+ # code[index...index] = ' fake.'
34
+ # true
35
+ # end
36
+ # puts ast.inspect
37
+ # puts Ruby2Ruby.new.process(ast)
38
+ # #puts(ast.inspect)
14
39
  #end
40
+
15
41
  #
16
42
  #def test_two
17
43
  # ast = DemoTest.instance_method(:regular_method).to_ast
@@ -1,7 +1,7 @@
1
1
  require File.expand_path("../../test_helper", __FILE__)
2
2
 
3
3
  class Picard::ErrorMessageFormatterTest < Test::Unit::TestCase
4
- include Picard::TestUnit
4
+ include PicardStable::TestUnit
5
5
 
6
6
  def test_should_wrap_error_message
7
7
  given
@@ -1,7 +1,7 @@
1
1
  require File.expand_path("../../test_helper", __FILE__)
2
2
 
3
3
  class Picard::MethodRipperTest < Test::Unit::TestCase
4
- include Picard::TestUnit
4
+ include PicardStable::TestUnit
5
5
 
6
6
  class TestClass
7
7
  attr_reader :assert_args
@@ -1,7 +1,7 @@
1
1
  require File.expand_path("../../test_helper", __FILE__)
2
2
 
3
3
  class Picard::PreprocessorTest < Test::Unit::TestCase
4
- include Picard::TestUnit
4
+ include PicardStable::TestUnit
5
5
 
6
6
  class BaseTestClass
7
7
  attr_reader :assert_args
@@ -1,7 +1,7 @@
1
1
  require File.expand_path("../../test_helper", __FILE__)
2
2
 
3
3
  class Picard::TestUnitTest < Test::Unit::TestCase
4
- include Picard::TestUnit
4
+ include PicardStable::TestUnit
5
5
 
6
6
  class TestUsingPicard
7
7
  include Picard::TestUnit
@@ -1,13 +1,7 @@
1
1
  require 'test/unit'
2
2
  require 'flexmock/test_unit'
3
+ require 'picard'
4
+ PicardStable = PicardTestFramework::V01
3
5
 
4
- require_relative '../lib/picard/extensions'
5
- require_relative '../lib/picard/context'
6
- require_relative '../lib/picard/error_message_formatter'
7
- require_relative '../lib/picard/ast_helper'
8
- require_relative '../lib/picard/assertion_wrapper'
9
- require_relative '../lib/picard/s_expression_sugar'
10
- require_relative '../lib/picard/class_ripper'
11
- require_relative '../lib/picard/preprocessor'
12
- require_relative '../lib/picard/method_ripper'
13
- require_relative '../lib/picard/test_unit'
6
+ Picard = PicardTestFramework::V02
7
+ require_relative '../lib/picard_02.rb'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: picard
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.1'
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,33 +9,44 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-10-15 00:00:00.000000000Z
12
+ date: 2011-10-22 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: live_ast
16
- requirement: &2156661700 !ruby/object:Gem::Requirement
15
+ name: sourcify
16
+ requirement: &2153158180 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - =
19
+ - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: 1.0.2
21
+ version: 0.6.0.rc1
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2156661700
24
+ version_requirements: *2153158180
25
+ - !ruby/object:Gem::Dependency
26
+ name: flexmock
27
+ requirement: &2153157260 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *2153157260
25
36
  - !ruby/object:Gem::Dependency
26
- name: live_ast_ripper
27
- requirement: &2156659860 !ruby/object:Gem::Requirement
37
+ name: picard
38
+ requirement: &2153155940 !ruby/object:Gem::Requirement
28
39
  none: false
29
40
  requirements:
30
41
  - - =
31
42
  - !ruby/object:Gem::Version
32
- version: 0.6.5
33
- type: :runtime
43
+ version: '0.1'
44
+ type: :development
34
45
  prerelease: false
35
- version_requirements: *2156659860
46
+ version_requirements: *2153155940
36
47
  - !ruby/object:Gem::Dependency
37
- name: flexmock
38
- requirement: &2156659180 !ruby/object:Gem::Requirement
48
+ name: test-unit
49
+ requirement: &2153154960 !ruby/object:Gem::Requirement
39
50
  none: false
40
51
  requirements:
41
52
  - - ! '>='
@@ -43,7 +54,7 @@ dependencies:
43
54
  version: '0'
44
55
  type: :development
45
56
  prerelease: false
46
- version_requirements: *2156659180
57
+ version_requirements: *2153154960
47
58
  description: Test framework inspired by Spock
48
59
  email:
49
60
  - vic.savkin@gmail.com
@@ -68,6 +79,7 @@ files:
68
79
  - lib/picard/s_expression_sugar.rb
69
80
  - lib/picard/test_unit.rb
70
81
  - lib/picard/version.rb
82
+ - lib/picard_02.rb
71
83
  - picard.gemspec
72
84
  - test/picard/assertion_wrapper_test.rb
73
85
  - test/picard/ast_helper_test.rb