picard 0.1 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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