transpec 0.2.3 → 0.2.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.
@@ -9,7 +9,7 @@ module Transpec
9
9
  include_context 'parsed objects'
10
10
 
11
11
  subject(:method_stub_object) do
12
- AST::Scanner.scan(ast) do |node, ancestor_nodes, in_example_group_context|
12
+ AST::Scanner.scan(ast) do |node, ancestor_nodes|
13
13
  next unless MethodStub.target_node?(node)
14
14
  return MethodStub.new(
15
15
  node,
@@ -92,7 +92,7 @@ module Transpec
92
92
 
93
93
  describe '#allowize!' do
94
94
  before do
95
- method_stub_object.context.stub(:in_example_group?).and_return(true)
95
+ method_stub_object.context.stub(:allow_to_receive_available?).and_return(true)
96
96
  method_stub_object.allowize!
97
97
  end
98
98
 
@@ -389,7 +389,6 @@ module Transpec
389
389
 
390
390
  describe '#replace_deprecated_method!' do
391
391
  before do
392
- method_stub_object.context.stub(:in_example_group?).and_return(true)
393
392
  method_stub_object.replace_deprecated_method!
394
393
  end
395
394
 
@@ -9,7 +9,7 @@ module Transpec
9
9
  include_context 'parsed objects'
10
10
 
11
11
  subject(:should_receive_object) do
12
- AST::Scanner.scan(ast) do |node, ancestor_nodes, in_example_group_context|
12
+ AST::Scanner.scan(ast) do |node, ancestor_nodes|
13
13
  next unless ShouldReceive.target_node?(node)
14
14
  return ShouldReceive.new(
15
15
  node,
@@ -23,7 +23,7 @@ module Transpec
23
23
  let(:record) { should_receive_object.report.records.first }
24
24
 
25
25
  before do
26
- should_receive_object.context.stub(:in_example_group?).and_return(true)
26
+ should_receive_object.context.stub(:non_monkey_patch_mock_available?).and_return(true)
27
27
  end
28
28
 
29
29
  describe '#expectize!' do
@@ -12,7 +12,7 @@ module Transpec
12
12
  let(:record) { should_object.report.records.first }
13
13
 
14
14
  before do
15
- should_object.context.stub(:in_example_group?).and_return(true)
15
+ should_object.context.stub(:expect_to_matcher_available?).and_return(true)
16
16
  end
17
17
 
18
18
  describe '#matcher_node' do
data/tasks/demo.rake ADDED
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+
3
+ require_relative 'lib/transpec_demo'
4
+
5
+ namespace :demo do
6
+ # rubocop:disable LineLength
7
+ demos = [
8
+ TranspecDemo.new('git@github.com:yujinakayama/twitter.git', 'v4.1.0'),
9
+ TranspecDemo.new('git@github.com:yujinakayama/guard.git', 'transpec-test', %w(--without development)),
10
+ TranspecDemo.new('git@github.com:yujinakayama/mail.git', 'transpec-test')
11
+ ]
12
+ # rubocop:enable LineLength
13
+
14
+ desc 'Run demo of Transpec on all projects'
15
+ task all: demos.map(&:name)
16
+
17
+ demos.each do |demo|
18
+ desc "Run demo of Transpec on #{demo.name.capitalize} project"
19
+ task demo.name do
20
+ demo.run
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,51 @@
1
+ # coding: utf-8
2
+
3
+ require_relative 'transpec_test'
4
+
5
+ class TranspecDemo < TranspecTest
6
+ DEMO_BRANCH = 'transpec-demo'
7
+
8
+ def self.base_dir_path
9
+ @base_dir_path = File.join('tmp', 'demos')
10
+ end
11
+
12
+ def run
13
+ require 'transpec'
14
+
15
+ puts " Running demo on #{name} Project ".center(80, '=')
16
+
17
+ prepare_project
18
+ run_demo
19
+ end
20
+
21
+ private
22
+
23
+ def prepare_with_git_repo
24
+ super
25
+ git_branch_delete(DEMO_BRANCH) if git_local_branch_exist?(DEMO_BRANCH)
26
+ end
27
+
28
+ def run_demo(transpec_args = [])
29
+ in_project_dir do
30
+ with_clean_bundler_env do
31
+ sh File.join(Transpec.root, 'bin', 'transpec'), '--force', '--commit-message'
32
+ sh 'bundle exec rspec'
33
+ sh "git checkout --quiet -b #{DEMO_BRANCH}"
34
+ sh 'git commit --all --file .git/COMMIT_EDITMSG'
35
+ sh "git push --force origin #{DEMO_BRANCH}"
36
+ end
37
+ end
38
+ end
39
+
40
+ def git_local_branch_exist?(branch_name)
41
+ in_project_dir do
42
+ system('git', 'show-ref', '--verify', '--quiet', "refs/heads/#{branch_name}")
43
+ end
44
+ end
45
+
46
+ def git_branch_delete(branch_name)
47
+ in_project_dir do
48
+ sh "git branch -D #{branch_name}"
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,148 @@
1
+ # coding: utf-8
2
+
3
+ class TranspecTest
4
+ include FileUtils # This is Rake's one.
5
+
6
+ attr_reader :url, :ref, :bundler_args
7
+
8
+ def self.base_dir
9
+ @base_dir ||= begin
10
+ unless Dir.exist?(base_dir_path)
11
+ require 'fileutils'
12
+ FileUtils.mkdir_p(base_dir_path)
13
+ end
14
+
15
+ base_dir_path
16
+ end
17
+ end
18
+
19
+ def self.base_dir_path
20
+ @base_dir_path = File.join('tmp', 'tests')
21
+ end
22
+
23
+ def initialize(url, ref = nil, bundler_args = [])
24
+ @url = url
25
+ @ref = ref
26
+ @bundler_args = bundler_args
27
+ end
28
+
29
+ def name
30
+ @name ||= File.basename(url, '.git')
31
+ end
32
+
33
+ def project_dir
34
+ @project_dir ||= File.join(self.class.base_dir, name)
35
+ end
36
+
37
+ def run
38
+ require 'transpec'
39
+
40
+ puts " Testing on #{name} Project ".center(80, '=')
41
+
42
+ [%w(--force), %w(--force --no-parentheses-matcher-arg)].each do |args|
43
+ prepare_project
44
+ run_test(args)
45
+ end
46
+ end
47
+
48
+ private
49
+
50
+ def prepare_project
51
+ if url.start_with?('/')
52
+ prepare_with_local_dir
53
+ else
54
+ prepare_with_git_repo
55
+ end
56
+ end
57
+
58
+ def prepare_with_local_dir
59
+ if Dir.exist?(project_dir)
60
+ require 'fileutils'
61
+ FileUtils.rm_rf(project_dir)
62
+ end
63
+
64
+ Dir.mkdir(project_dir)
65
+
66
+ Dir.chdir(url) do
67
+ Dir.new('.').each do |entry|
68
+ next if ['.', '..', '.git', 'tmp'].include?(entry)
69
+ FileUtils.cp_r(entry, project_dir)
70
+ end
71
+ end
72
+
73
+ bundle_install
74
+ end
75
+
76
+ def prepare_with_git_repo
77
+ if Dir.exist?(project_dir)
78
+ git_checkout(ref) unless current_ref == ref
79
+ git_checkout('.')
80
+ else
81
+ git_clone
82
+ bundle_install
83
+ end
84
+ end
85
+
86
+ def run_test(transpec_args = [])
87
+ in_project_dir do
88
+ with_clean_bundler_env do
89
+ sh File.join(Transpec.root, 'bin', 'transpec'), *transpec_args
90
+ sh 'bundle exec rspec'
91
+ end
92
+ end
93
+ end
94
+
95
+ def in_project_dir(&block)
96
+ Dir.chdir(project_dir, &block)
97
+ end
98
+
99
+ def current_ref
100
+ in_project_dir do
101
+ `git describe --all`.chomp.sub(/\Aheads\//, '')
102
+ end
103
+ end
104
+
105
+ def git_checkout(*args)
106
+ in_project_dir do
107
+ sh 'git', 'checkout', *args
108
+ end
109
+ end
110
+
111
+ def git_clone
112
+ Dir.chdir(self.class.base_dir) do
113
+ # Disabling checkout here to suppress "detached HEAD" warning.
114
+ sh "git clone --no-checkout --depth 1 --branch #{ref} #{url}"
115
+ end
116
+
117
+ in_project_dir do
118
+ sh "git checkout --quiet #{ref}"
119
+ end
120
+ end
121
+
122
+ def bundle_install
123
+ in_project_dir do
124
+ with_clean_bundler_env do
125
+ sh 'bundle', 'install', *bundler_args
126
+ end
127
+ end
128
+ end
129
+
130
+ def with_clean_bundler_env
131
+ if defined?(Bundler)
132
+ Bundler.with_clean_env do
133
+ # Bundler.with_clean_env cleans environment variables
134
+ # which are set after bundler is loaded.
135
+ prepare_env
136
+ yield
137
+ end
138
+ else
139
+ prepare_env
140
+ yield
141
+ end
142
+ end
143
+
144
+ def prepare_env
145
+ # Disable Coveralls.
146
+ ENV['CI'] = ENV['JENKINS_URL'] = ENV['COVERALLS_RUN_LOCALLY'] = nil
147
+ end
148
+ end
data/tasks/test.rake CHANGED
@@ -1,154 +1,6 @@
1
1
  # coding: utf-8
2
2
 
3
- class TranspecTest
4
- include FileUtils # This is Rake's one.
5
-
6
- attr_reader :url, :ref, :bundler_args
7
-
8
- def self.base_dir
9
- @base_dir ||= begin
10
- base_dir = File.join('tmp', 'projects')
11
-
12
- unless Dir.exist?(base_dir)
13
- require 'fileutils'
14
- FileUtils.mkdir_p(base_dir)
15
- end
16
-
17
- base_dir
18
- end
19
- end
20
-
21
- def initialize(url, ref = nil, bundler_args = [])
22
- @url = url
23
- @ref = ref
24
- @bundler_args = bundler_args
25
- end
26
-
27
- def name
28
- @name ||= File.basename(url, '.git')
29
- end
30
-
31
- def project_dir
32
- @project_dir ||= File.join(self.class.base_dir, name)
33
- end
34
-
35
- def run
36
- require 'transpec'
37
-
38
- puts " Testing on #{name} Project ".center(80, '=')
39
-
40
- [%w(--force), %w(--force --no-parentheses-matcher-arg)].each do |args|
41
- prepare_project
42
- run_test(args)
43
- end
44
- end
45
-
46
- private
47
-
48
- def prepare_project
49
- if url.start_with?('/')
50
- prepare_with_local_dir
51
- else
52
- prepare_with_git_repo
53
- end
54
- end
55
-
56
- def prepare_with_local_dir
57
- if Dir.exist?(project_dir)
58
- require 'fileutils'
59
- FileUtils.rm_rf(project_dir)
60
- end
61
-
62
- Dir.mkdir(project_dir)
63
-
64
- Dir.chdir(url) do
65
- Dir.new('.').each do |entry|
66
- next if ['.', '..', '.git', 'tmp'].include?(entry)
67
- FileUtils.cp_r(entry, project_dir)
68
- end
69
- end
70
-
71
- bundle_install
72
- end
73
-
74
- def prepare_with_git_repo
75
- if Dir.exist?(project_dir)
76
- if current_ref == ref
77
- git_reset_hard
78
- return
79
- else
80
- require 'fileutils'
81
- FileUtils.rm_rf(project_dir)
82
- end
83
- end
84
-
85
- git_clone
86
- bundle_install
87
- end
88
-
89
- def run_test(transpec_args = [])
90
- in_project_dir do
91
- with_clean_bundler_env do
92
- sh File.join(Transpec.root, 'bin', 'transpec'), *transpec_args
93
- sh 'bundle exec rspec'
94
- end
95
- end
96
- end
97
-
98
- def in_project_dir(&block)
99
- Dir.chdir(project_dir, &block)
100
- end
101
-
102
- def current_ref
103
- in_project_dir do
104
- `git describe --all`.chomp.sub(/\Aheads\//, '')
105
- end
106
- end
107
-
108
- def git_reset_hard
109
- in_project_dir do
110
- sh 'git reset --hard'
111
- end
112
- end
113
-
114
- def git_clone
115
- Dir.chdir(self.class.base_dir) do
116
- # Disabling checkout here to suppress "detached HEAD" warning.
117
- sh "git clone --no-checkout --depth 1 --branch #{ref} #{url}"
118
- end
119
-
120
- in_project_dir do
121
- sh "git checkout --quiet #{ref}"
122
- end
123
- end
124
-
125
- def bundle_install
126
- in_project_dir do
127
- with_clean_bundler_env do
128
- sh 'bundle', 'install', *bundler_args
129
- end
130
- end
131
- end
132
-
133
- def with_clean_bundler_env
134
- if defined?(Bundler)
135
- Bundler.with_clean_env do
136
- # Bundler.with_clean_env cleans environment variables
137
- # which are set after bundler is loaded.
138
- prepare_env
139
- yield
140
- end
141
- else
142
- prepare_env
143
- yield
144
- end
145
- end
146
-
147
- def prepare_env
148
- # Disable Coveralls.
149
- ENV['CI'] = ENV['JENKINS_URL'] = ENV['COVERALLS_RUN_LOCALLY'] = nil
150
- end
151
- end
3
+ require_relative 'lib/transpec_test'
152
4
 
153
5
  namespace :test do
154
6
  # On Travis CI, reuse system gems to speed up build.
@@ -162,8 +14,8 @@ namespace :test do
162
14
  tests = [
163
15
  TranspecTest.new(File.expand_path('.'), nil, ['--quiet']),
164
16
  TranspecTest.new('https://github.com/sferik/twitter.git', 'v4.1.0', bundler_args),
165
- TranspecTest.new('https://github.com/yujinakayama/guard.git', 'transpec', bundler_args + %w(--without development)),
166
- TranspecTest.new('https://github.com/yujinakayama/mail.git', 'transpec', bundler_args)
17
+ TranspecTest.new('https://github.com/yujinakayama/guard.git', 'transpec-test', bundler_args + %w(--without development)),
18
+ TranspecTest.new('https://github.com/yujinakayama/mail.git', 'transpec-test', bundler_args)
167
19
  ]
168
20
  # rubocop:enable LineLength
169
21
 
data/transpec.gemspec CHANGED
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
27
27
  spec.add_development_dependency 'rake', '~> 10.1'
28
28
  spec.add_development_dependency 'simplecov', '~> 0.7'
29
29
  spec.add_development_dependency 'rubocop', '~> 0.10'
30
- spec.add_development_dependency 'guard-rspec', '~> 3.0'
30
+ spec.add_development_dependency 'guard-rspec', '~> 4.0'
31
31
  spec.add_development_dependency 'guard-rubocop', '~> 1.0'
32
32
  spec.add_development_dependency 'guard-shell', '~> 0.5'
33
33
  spec.add_development_dependency 'ruby_gntp', '~> 0.3'