slather 2.0.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e29925c45c07bc530dfadabea493ce213e7c463e
4
- data.tar.gz: 4349b2ddac614dc2743cf512ca537637bb765c04
3
+ metadata.gz: 5346e7ae5cba9037d3f9386b52acbdf4a4b40c91
4
+ data.tar.gz: c6c6736662bc1f1f2730cf4fc351e131687b6d92
5
5
  SHA512:
6
- metadata.gz: 12f3d539e348aea80bb1ef490ff281ef4b250de56e21682cdfdfbb1a8371ca62253d693e87ddf14496fee037df2b86b0fff11181e14282eb358232ac0a40b47b
7
- data.tar.gz: e2025df52453c14802781dd7f41bfa2c0f991ef8893febe01a6a14ccff2136d8c50a4c6360b117d34037bc0eb69d8667b437d98b68b8677f581702271febd68f
6
+ metadata.gz: ecd69108753a0d5bc1fd1cb0b89a6d1a98b970a26f29d1af4e7cef63a1b19c9b197212e01828da90a03f85c5a5ae5856c73dbef9959f5b5eaf448caf3c38b1e3
7
+ data.tar.gz: bf38de9f006be3f6ec9ad966435ecb45ace99bc716a483a7eba1b6c0b69294b7f5409aeaa0a88f57a6bfda45846357e15ebbbecebcd7f4cda12128df59f84704
data/.travis.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  language: objective-c
2
- script: bundle exec rspec
2
+ script: bundle exec rake
3
3
  osx_image: xcode7
4
4
 
5
5
  # Sets Travis to run the Ruby specs on OS X machines which are required to
@@ -17,4 +17,4 @@ before_install:
17
17
  - if [[ $RVM_RUBY_VERSION == 'system' ]]; then sudo gem install bundler --no-ri --no-rdoc; else gem install bundler --no-ri --no-rdoc; fi
18
18
 
19
19
  install:
20
- - bundle install --without=documentation --path ./travis_bundle_dir
20
+ - bundle install --without=documentation
data/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  ## master
4
4
 
5
+ ## v2.0.1
6
+
7
+ * Fixes how `profdata_coverage_dir` is created.
8
+ [guidomb](https://github.com/guidomb)
9
+ [#145](https://github.com/SlatherOrg/slather/pull/145)
10
+
5
11
  ## v2.0.0
6
12
  * Correct html rendering when using profdata format
7
13
  [cutz](https://github.com/cutz)
data/Rakefile CHANGED
@@ -1,7 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
2
3
 
3
- desc 'Execute tests'
4
- task :spec do
5
- sh 'bundle exec rspec spec'
6
- end
4
+ RSpec::Core::RakeTask.new(:spec)
7
5
 
6
+ task default: :spec
@@ -1,4 +1,5 @@
1
1
  require 'nokogiri'
2
+ require 'date'
2
3
 
3
4
  module Slather
4
5
  module CoverageService
@@ -50,7 +50,7 @@ end
50
50
  module Slather
51
51
  class Project < Xcodeproj::Project
52
52
 
53
- attr_accessor :build_directory, :ignore_list, :ci_service, :coverage_service, :coverage_access_token, :source_directory,
53
+ attr_accessor :build_directory, :ignore_list, :ci_service, :coverage_service, :coverage_access_token, :source_directory,
54
54
  :output_directory, :xcodeproj, :show_html, :verbose_mode, :input_format, :scheme, :binary_file, :binary_basename
55
55
 
56
56
  alias_method :setup_for_coverage, :slather_setup_for_coverage
@@ -100,13 +100,24 @@ module Slather
100
100
  end
101
101
  private :profdata_coverage_files
102
102
 
103
+ def remove_extension(path)
104
+ path.split(".")[0..-2].join(".")
105
+ end
106
+
107
+ def first_product_name
108
+ first_product = self.products.first
109
+ # If name is not available it computes it using
110
+ # the path by dropping the 'extension' of the path.
111
+ first_product.name || remove_extension(first_product.path)
112
+ end
113
+
103
114
  def profdata_coverage_dir
104
115
  raise StandardError, "The specified build directory (#{self.build_directory}) does not exist" unless File.exists?(self.build_directory)
105
116
  dir = nil
106
117
  if self.scheme
107
- dir = Dir["#{build_directory}/**/CodeCoverage/#{self.scheme}"].first
118
+ dir = Dir[File.join("#{build_directory}","/**/CodeCoverage/#{self.scheme}")].first
108
119
  else
109
- dir = Dir["#{build_directory}/**/#{self.products.first.name}"].first
120
+ dir = Dir[File.join("#{build_directory}","/**/#{first_product_name}")].first
110
121
  end
111
122
 
112
123
  raise StandardError, "No coverage directory found. Are you sure your project is setup for generating coverage files? Try `slather setup your/project.xcodeproj`" unless dir != nil
@@ -247,17 +258,18 @@ module Slather
247
258
 
248
259
  def coverage_service=(service)
249
260
  service = service && service.to_sym
250
- if service == :coveralls
261
+ case service
262
+ when :coveralls
251
263
  extend(Slather::CoverageService::Coveralls)
252
- elsif service == :hardcover
264
+ when :hardcover
253
265
  extend(Slather::CoverageService::Hardcover)
254
- elsif service == :terminal
266
+ when :terminal
255
267
  extend(Slather::CoverageService::SimpleOutput)
256
- elsif service == :gutter_json
268
+ when :gutter_json
257
269
  extend(Slather::CoverageService::GutterJsonOutput)
258
- elsif service == :cobertura_xml
270
+ when :cobertura_xml
259
271
  extend(Slather::CoverageService::CoberturaXmlOutput)
260
- elsif service == :html
272
+ when :html
261
273
  extend(Slather::CoverageService::HtmlOutput)
262
274
  else
263
275
  raise ArgumentError, "`#{coverage_service}` is not a valid coverage service. Try `terminal`, `coveralls`, `gutter_json`, `cobertura_xml` or `html`"
@@ -1,3 +1,3 @@
1
1
  module Slather
2
- VERSION = "2.0.0"
2
+ VERSION = "2.0.1"
3
3
  end
data/slather.gemspec CHANGED
@@ -19,8 +19,8 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.add_development_dependency "bundler", "~> 1.6"
21
21
  spec.add_development_dependency "coveralls"
22
- spec.add_development_dependency "rake", "~> 10.3"
23
- spec.add_development_dependency "rspec", "~> 3.3"
22
+ spec.add_development_dependency "rake", "~> 10.4"
23
+ spec.add_development_dependency "rspec", "~> 3.4"
24
24
  spec.add_development_dependency "pry", "~> 0.9"
25
25
  spec.add_development_dependency "cocoapods", ">= 0.39.0", "< 1.1.0"
26
26
  spec.add_development_dependency "json_spec", "~> 1.1.4"
@@ -6,7 +6,7 @@ describe Slather::CoverageFile do
6
6
  project = Slather::Project.open(FIXTURES_PROJECT_PATH)
7
7
  project.build_directory = TEMP_DERIVED_DATA_PATH
8
8
  project.send(:configure)
9
- project.stub(:input_format).and_return("gcov")
9
+ allow(project).to receive(:input_format).and_return("gcov")
10
10
  project
11
11
  end
12
12
 
@@ -120,7 +120,7 @@ OBJC
120
120
  describe "line coverage" do
121
121
 
122
122
  before(:each) {
123
- fixtures_project.stub(:input_format).and_return("gcov")
123
+ allow(fixtures_project).to receive(:input_format).and_return("gcov")
124
124
  }
125
125
 
126
126
  let(:line_coverage_file) do
@@ -157,7 +157,7 @@ OBJC
157
157
  end
158
158
 
159
159
  it "should return 100 if no testable lines" do
160
- line_coverage_file.stub(:num_lines_testable).and_return(0)
160
+ allow(line_coverage_file).to receive(:num_lines_testable).and_return(0)
161
161
  expect(line_coverage_file.percentage_lines_tested).to eq(100)
162
162
  end
163
163
  end
@@ -32,13 +32,13 @@ describe Slather::CoverageService::Coveralls do
32
32
  before(:each) { fixtures_project.ci_service = :travis_ci }
33
33
 
34
34
  it "should return valid json for coveralls coverage gcov data" do
35
- fixtures_project.stub(:travis_job_id).and_return("9182")
35
+ allow(fixtures_project).to receive(:travis_job_id).and_return("9182")
36
36
  expect(fixtures_project.send(:coveralls_coverage_data)).to be_json_eql("{\"service_job_id\":\"9182\",\"service_name\":\"travis-ci\"}").excluding("source_files")
37
37
  expect(fixtures_project.send(:coveralls_coverage_data)).to be_json_eql(fixtures_project.send(:coverage_files).map(&:as_json).to_json).at_path("source_files")
38
38
  end
39
39
 
40
40
  it "should raise an error if there is no TRAVIS_JOB_ID" do
41
- fixtures_project.stub(:travis_job_id).and_return(nil)
41
+ allow(fixtures_project).to receive(:travis_job_id).and_return(nil)
42
42
  expect { fixtures_project.send(:coveralls_coverage_data) }.to raise_error(StandardError)
43
43
  end
44
44
  end
@@ -47,14 +47,14 @@ describe Slather::CoverageService::Coveralls do
47
47
  before(:each) { fixtures_project.ci_service = :travis_pro }
48
48
 
49
49
  it "should return valid json for coveralls coverage data" do
50
- fixtures_project.stub(:travis_job_id).and_return("9182")
51
- fixtures_project.stub(:coverage_access_token).and_return("abc123")
50
+ allow(fixtures_project).to receive(:travis_job_id).and_return("9182")
51
+ allow(fixtures_project).to receive(:coverage_access_token).and_return("abc123")
52
52
  expect(fixtures_project.send(:coveralls_coverage_data)).to be_json_eql("{\"service_job_id\":\"9182\",\"service_name\":\"travis-pro\",\"repo_token\":\"abc123\"}").excluding("source_files")
53
53
  expect(fixtures_project.send(:coveralls_coverage_data)).to be_json_eql(fixtures_project.send(:coverage_files).map(&:as_json).to_json).at_path("source_files")
54
54
  end
55
55
 
56
56
  it "should raise an error if there is no TRAVIS_JOB_ID" do
57
- fixtures_project.stub(:travis_job_id).and_return(nil)
57
+ allow(fixtures_project).to receive(:travis_job_id).and_return(nil)
58
58
  expect { fixtures_project.send(:coveralls_coverage_data) }.to raise_error(StandardError)
59
59
  end
60
60
  end
@@ -63,17 +63,17 @@ describe Slather::CoverageService::Coveralls do
63
63
  before(:each) { fixtures_project.ci_service = :circleci }
64
64
 
65
65
  it "should return valid json for coveralls coverage data" do
66
- fixtures_project.stub(:circleci_job_id).and_return("9182")
67
- fixtures_project.stub(:coverage_access_token).and_return("abc123")
68
- fixtures_project.stub(:circleci_pull_request).and_return("1")
69
- fixtures_project.stub(:circleci_build_url).and_return("https://circleci.com/gh/Bruce/Wayne/1")
70
- fixtures_project.stub(:circleci_git_info).and_return({ :head => { :id => "ababa123", :author_name => "bwayne", :message => "hello" }, :branch => "master" })
66
+ allow(fixtures_project).to receive(:circleci_job_id).and_return("9182")
67
+ allow(fixtures_project).to receive(:coverage_access_token).and_return("abc123")
68
+ allow(fixtures_project).to receive(:circleci_pull_request).and_return("1")
69
+ allow(fixtures_project).to receive(:circleci_build_url).and_return("https://circleci.com/gh/Bruce/Wayne/1")
70
+ allow(fixtures_project).to receive(:circleci_git_info).and_return({ :head => { :id => "ababa123", :author_name => "bwayne", :message => "hello" }, :branch => "master" })
71
71
  expect(fixtures_project.send(:coveralls_coverage_data)).to be_json_eql("{\"service_job_id\":\"9182\",\"service_name\":\"circleci\",\"repo_token\":\"abc123\",\"service_pull_request\":\"1\",\"service_build_url\":\"https://circleci.com/gh/Bruce/Wayne/1\",\"git\":{\"head\":{\"id\":\"ababa123\",\"author_name\":\"bwayne\",\"message\":\"hello\"},\"branch\":\"master\"}}").excluding("source_files")
72
72
  expect(fixtures_project.send(:coveralls_coverage_data)).to be_json_eql(fixtures_project.send(:coverage_files).map(&:as_json).to_json).at_path("source_files")
73
73
  end
74
74
 
75
75
  it "should raise an error if there is no CIRCLE_BUILD_NUM" do
76
- fixtures_project.stub(:circleci_job_id).and_return(nil)
76
+ allow(fixtures_project).to receive(:circleci_job_id).and_return(nil)
77
77
  expect { fixtures_project.send(:coveralls_coverage_data) }.to raise_error(StandardError)
78
78
  end
79
79
  end
@@ -82,16 +82,16 @@ describe Slather::CoverageService::Coveralls do
82
82
  before(:each) { fixtures_project.ci_service = :jenkins }
83
83
 
84
84
  it "should return valid json for coveralls coverage data" do
85
- fixtures_project.stub(:jenkins_job_id).and_return("9182")
86
- fixtures_project.stub(:coverage_access_token).and_return("abc123")
87
- fixtures_project.stub(:jenkins_git_info).and_return({head: {id: "master", author_name: "author", message: "pull title" }, branch: "branch"})
88
- fixtures_project.stub(:jenkins_branch_name).and_return('master')
85
+ allow(fixtures_project).to receive(:jenkins_job_id).and_return("9182")
86
+ allow(fixtures_project).to receive(:coverage_access_token).and_return("abc123")
87
+ allow(fixtures_project).to receive(:jenkins_git_info).and_return({head: {id: "master", author_name: "author", message: "pull title" }, branch: "branch"})
88
+ allow(fixtures_project).to receive(:jenkins_branch_name).and_return('master')
89
89
  expect(fixtures_project.send(:coveralls_coverage_data)).to be_json_eql("{\"service_job_id\":\"9182\",\"service_name\":\"jenkins\",\"repo_token\":\"abc123\",\"git\":{\"head\":{\"id\":\"master\",\"author_name\":\"author\",\"message\":\"pull title\"},\"branch\":\"branch\"}}").excluding("source_files")
90
90
  expect(fixtures_project.send(:coveralls_coverage_data)).to be_json_eql(fixtures_project.send(:coverage_files).map(&:as_json).to_json).at_path("source_files")
91
91
  end
92
92
 
93
93
  it "should raise an error if there is no BUILD_ID" do
94
- fixtures_project.stub(:jenkins_job_id).and_return(nil)
94
+ allow(fixtures_project).to receive(:jenkins_job_id).and_return(nil)
95
95
  expect { fixtures_project.send(:coveralls_coverage_data) }.to raise_error(StandardError)
96
96
  end
97
97
  end
@@ -107,7 +107,7 @@ describe Slather::CoverageService::Coveralls do
107
107
  before(:each) {
108
108
  fixtures_project.ci_service = :travis_ci
109
109
  project_root = Pathname("./").realpath
110
- fixtures_project.stub(:profdata_llvm_cov_output).and_return("#{project_root}/spec/fixtures/fixtures/fixtures.m:
110
+ allow(fixtures_project).to receive(:profdata_llvm_cov_output).and_return("#{project_root}/spec/fixtures/fixtures/fixtures.m:
111
111
  | 1|//
112
112
  | 2|// fixtures.m
113
113
  | 3|// fixtures
@@ -135,7 +135,7 @@ describe Slather::CoverageService::Coveralls do
135
135
  }
136
136
 
137
137
  it "should save the coveralls_coverage_data to a file and post it to coveralls" do
138
- fixtures_project.stub(:travis_job_id).and_return("9182")
138
+ allow(fixtures_project).to receive(:travis_job_id).and_return("9182")
139
139
  expect(fixtures_project).to receive(:`) do |cmd|
140
140
  expect(cmd).to eq("curl -s --form json_file=@coveralls_json_file https://coveralls.io/api/v1/jobs")
141
141
  expect(File.read('coveralls_json_file')).to be_json_eql(fixtures_project.send(:coveralls_coverage_data))
@@ -144,17 +144,17 @@ describe Slather::CoverageService::Coveralls do
144
144
  end
145
145
 
146
146
  it "should always remove the coveralls_json_file after it's done" do
147
- fixtures_project.stub(:`)
148
- fixtures_project.stub(:travis_job_id).and_return("9182")
147
+ allow(fixtures_project).to receive(:`)
148
+ allow(fixtures_project).to receive(:travis_job_id).and_return("9182")
149
149
  fixtures_project.post
150
150
  expect(File.exist?("coveralls_json_file")).to be_falsy
151
- fixtures_project.stub(:travis_job_id).and_return(nil)
151
+ allow(fixtures_project).to receive(:travis_job_id).and_return(nil)
152
152
  expect { fixtures_project.post }.to raise_error(StandardError)
153
153
  expect(File.exist?("coveralls_json_file")).to be_falsy
154
154
  end
155
155
 
156
156
  it "should return valid json for coveralls coverage profdata data" do
157
- fixtures_project.stub(:travis_job_id).and_return("9182")
157
+ allow(fixtures_project).to receive(:travis_job_id).and_return("9182")
158
158
  expect(fixtures_project.send(:coveralls_coverage_data)).to be_json_eql("{\"service_job_id\":\"9182\",\"service_name\":\"travis-ci\"}").excluding("source_files")
159
159
  expect(fixtures_project.send(:coveralls_coverage_data)).to be_json_eql(fixtures_project.send(:coverage_files).map(&:as_json).to_json).at_path("source_files")
160
160
  end
@@ -38,7 +38,7 @@ describe Slather::CoverageService::Hardcover do
38
38
  context "coverage_service is :jenkins_ci" do
39
39
  before(:each) do
40
40
  fixtures_project.ci_service = :jenkins_ci
41
- Slather::Project.stub(:yml).and_return(fixture_yaml)
41
+ allow(Slather::Project).to receive(:yml).and_return(fixture_yaml)
42
42
  end
43
43
 
44
44
  it "should return a valid json" do
@@ -50,7 +50,7 @@ describe Slather::CoverageService::Hardcover do
50
50
  end
51
51
 
52
52
  it "should raise an error if there is no BUILD_NUMBER or JOB_NAME" do
53
- fixtures_project.stub(:jenkins_job_id).and_return(nil)
53
+ allow(fixtures_project).to receive(:jenkins_job_id).and_return(nil)
54
54
  expect { fixtures_project.send(:hardcover_coverage_data) }.to raise_error(StandardError)
55
55
  end
56
56
  end
@@ -63,10 +63,10 @@ describe Slather::CoverageService::Hardcover do
63
63
 
64
64
  describe '#post' do
65
65
  before(:each) do
66
- Slather::Project.stub(:yml).and_return(fixture_yaml)
66
+ allow(Slather::Project).to receive(:yml).and_return(fixture_yaml)
67
67
  fixtures_project.ci_service = :jenkins_ci
68
68
  project_root = Pathname("./").realpath
69
- fixtures_project.stub(:profdata_llvm_cov_output).and_return("#{project_root}/spec/fixtures/fixtures/fixtures.m:
69
+ allow(fixtures_project).to receive(:profdata_llvm_cov_output).and_return("#{project_root}/spec/fixtures/fixtures/fixtures.m:
70
70
  | 1|//
71
71
  | 2|// fixtures.m
72
72
  | 3|// fixtures
@@ -94,8 +94,8 @@ describe Slather::CoverageService::Hardcover do
94
94
  end
95
95
 
96
96
  it "should save the hardcover_coverage_data to a file and post it to hardcover" do
97
- fixtures_project.stub(:jenkins_job_id).and_return("slather-master/9182")
98
- fixtures_project.stub(:coverage_service_url).and_return("http://api.hardcover.io")
97
+ allow(fixtures_project).to receive(:jenkins_job_id).and_return("slather-master/9182")
98
+ allow(fixtures_project).to receive(:coverage_service_url).and_return("http://api.hardcover.io")
99
99
  expect(fixtures_project).to receive(:`) do |cmd|
100
100
  expect(cmd).to eq("curl --form json_file=@hardcover_json_file http://api.hardcover.io/v1/jobs")
101
101
  end.once
@@ -103,13 +103,13 @@ describe Slather::CoverageService::Hardcover do
103
103
  end
104
104
 
105
105
  it "should always remove the hardcover_json_file after it's done" do
106
- fixtures_project.stub(:`)
106
+ allow(fixtures_project).to receive(:`)
107
107
 
108
- fixtures_project.stub(:jenkins_job_id).and_return("slather-master/9182")
109
- fixtures_project.stub(:coverage_service_url).and_return("http://api.hardcover.io")
108
+ allow(fixtures_project).to receive(:jenkins_job_id).and_return("slather-master/9182")
109
+ allow(fixtures_project).to receive(:coverage_service_url).and_return("http://api.hardcover.io")
110
110
  fixtures_project.post
111
111
  expect(File.exist?("hardcover_json_file")).to be_falsy
112
- fixtures_project.stub(:jenkins_job_id).and_return(nil)
112
+ allow(fixtures_project).to receive(:jenkins_job_id).and_return(nil)
113
113
  expect { fixtures_project.post }.to raise_error(StandardError)
114
114
  expect(File.exist?("hardcover_json_file")).to be_falsy
115
115
  end
@@ -30,7 +30,7 @@ describe Slather::CoverageService::HtmlOutput do
30
30
 
31
31
  describe '#post' do
32
32
  before(:each) {
33
- fixtures_project.stub(:print_path_coverage)
33
+ allow(fixtures_project).to receive(:print_path_coverage)
34
34
  fixtures_project.send(:configure)
35
35
  }
36
36
 
@@ -59,7 +59,7 @@ describe Slather::CoverageService::HtmlOutput do
59
59
  end
60
60
 
61
61
  it "should open the index.html automatically if --show is flagged" do
62
- fixtures_project.stub(:open_coverage)
62
+ allow(fixtures_project).to receive(:open_coverage)
63
63
 
64
64
  fixtures_project.show_html = true
65
65
  fixtures_project.post
@@ -180,8 +180,8 @@ describe Slather::CoverageService::HtmlOutput do
180
180
  (path = doc.at_css('h4.cov_filepath'))? path.text : ""
181
181
  end
182
182
 
183
- fixtures_project.stub(:input_format).and_return("profdata")
184
- fixtures_project.stub(:profdata_llvm_cov_output).and_return("./spec/fixtures/fixtures/other_fixtures.m:
183
+ allow(fixtures_project).to receive(:input_format).and_return("profdata")
184
+ allow(fixtures_project).to receive(:profdata_llvm_cov_output).and_return("./spec/fixtures/fixtures/other_fixtures.m:
185
185
  | 1|//
186
186
  | 2|// other_fixtures.m
187
187
  | 3|// fixtures
@@ -102,7 +102,7 @@ describe Slather::ProfdataCoverageFile do
102
102
  describe "#ignored" do
103
103
 
104
104
  before(:each) {
105
- fixtures_project.stub(:ignore_list).and_return([])
105
+ allow(fixtures_project).to receive(:ignore_list).and_return([])
106
106
  }
107
107
 
108
108
  it "shouldn't ignore project files" do
@@ -52,19 +52,19 @@ describe Slather::Project do
52
52
  end
53
53
 
54
54
  before(:each) do
55
- Dir.stub(:[]).and_call_original
56
- Dir.stub(:[]).with("#{fixtures_project.build_directory}/**/*.gcno").and_return(["/some/path/fixtures.gcno",
55
+ allow(Dir).to receive(:[]).and_call_original
56
+ allow(Dir).to receive(:[]).with("#{fixtures_project.build_directory}/**/*.gcno").and_return(["/some/path/fixtures.gcno",
57
57
  "/some/path/peekaview.gcno",
58
58
  "/some/path/fixturesTests.gcno",
59
59
  "/some/path/peekaviewTests.gcno",
60
60
  "/some/path/NotInProject.gcno",
61
61
  "/some/path/NSRange.gcno"])
62
- fixtures_project.stub(:coverage_file_class).and_return(SpecCoverageFile)
62
+ allow(fixtures_project).to receive(:coverage_file_class).and_return(SpecCoverageFile)
63
63
  end
64
64
 
65
65
  it "should return coverage file objects of type coverage_file_class for unignored project files" do
66
66
  fixtures_project.ignore_list = ["*fixturesTests*"]
67
- fixtures_project.stub(:dedupe) { |coverage_files| coverage_files }
67
+ allow(fixtures_project).to receive(:dedupe) { |coverage_files| coverage_files }
68
68
  coverage_files = fixtures_project.send(:coverage_files)
69
69
  coverage_files.each { |cf| expect(cf.kind_of?(SpecCoverageFile)).to be_truthy }
70
70
  expect(coverage_files.map { |cf| cf.source_file_pathname.basename.to_s }).to eq(["fixtures.m", "peekaview.m"])
@@ -81,9 +81,9 @@ describe Slather::Project do
81
81
  end
82
82
 
83
83
  before(:each) do
84
- Dir.stub(:[]).and_call_original
85
- Dir.stub(:[]).with("#{fixtures_project.build_directory}/**/Coverage.profdata").and_return(["/some/path/Coverage.profdata"])
86
- fixtures_project.stub(:profdata_llvm_cov_output).and_return("#{FIXTURES_SWIFT_FILE_PATH}:
84
+ allow(Dir).to receive(:[]).and_call_original
85
+ allow(Dir).to receive(:[]).with("#{fixtures_project.build_directory}/**/Coverage.profdata").and_return(["/some/path/Coverage.profdata"])
86
+ allow(fixtures_project).to receive(:profdata_llvm_cov_output).and_return("#{FIXTURES_SWIFT_FILE_PATH}:
87
87
  | 0|
88
88
  | 1|import UIKit
89
89
  | 2|
@@ -99,8 +99,8 @@ describe Slather::Project do
99
99
  0| 12| func applicationWillResignActive(application: UIApplication) {
100
100
  0| 13| }
101
101
  0| 14|}")
102
- fixtures_project.stub(:coverage_file_class).and_return(SpecXcode7CoverageFile)
103
- fixtures_project.stub(:ignore_list).and_return([])
102
+ allow(fixtures_project).to receive(:coverage_file_class).and_return(SpecXcode7CoverageFile)
103
+ allow(fixtures_project).to receive(:ignore_list).and_return([])
104
104
  end
105
105
 
106
106
  it "should return Coverage.profdata file objects" do
@@ -110,7 +110,7 @@ describe Slather::Project do
110
110
  end
111
111
 
112
112
  it "should ignore files from the ignore list" do
113
- fixtures_project.stub(:ignore_list).and_return(["**/Fixtures.swift"])
113
+ allow(fixtures_project).to receive(:ignore_list).and_return(["**/Fixtures.swift"])
114
114
  profdata_coverage_files = fixtures_project.send(:profdata_coverage_files)
115
115
  expect(profdata_coverage_files.count).to eq(0)
116
116
  end
@@ -118,10 +118,10 @@ describe Slather::Project do
118
118
 
119
119
  describe "#invalid_characters" do
120
120
  it "should correctly encode invalid characters" do
121
- fixtures_project.stub(:input_format).and_return("profdata")
122
- fixtures_project.stub(:ignore_list).and_return([])
123
- Dir.stub(:[]).with("#{fixtures_project.build_directory}/**/Coverage.profdata").and_return(["/some/path/Coverage.profdata"])
124
- fixtures_project.stub(:unsafe_profdata_llvm_cov_output).and_return("#{FIXTURES_SWIFT_FILE_PATH}:
121
+ allow(fixtures_project).to receive(:input_format).and_return("profdata")
122
+ allow(fixtures_project).to receive(:ignore_list).and_return([])
123
+ allow(Dir).to receive(:[]).with("#{fixtures_project.build_directory}/**/Coverage.profdata").and_return(["/some/path/Coverage.profdata"])
124
+ allow(fixtures_project).to receive(:unsafe_profdata_llvm_cov_output).and_return("#{FIXTURES_SWIFT_FILE_PATH}:
125
125
  1| 8| func application(application: \255, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
126
126
  1| 9| return true
127
127
  0| 14|}")
@@ -138,31 +138,31 @@ describe Slather::Project do
138
138
  end
139
139
 
140
140
  before(:each) do
141
- Dir.stub(:[]).and_call_original
142
- fixtures_project.stub(:build_directory).and_return(build_directory)
143
- fixtures_project.stub(:input_format).and_return("profdata")
144
- fixtures_project.stub(:scheme).and_return("FixtureScheme")
145
- Dir.stub(:[]).with("#{build_directory}/**/CodeCoverage/FixtureScheme").and_return(["#{build_directory}/Build/Intermediates/CodeCoverage/FixtureScheme"])
146
- Dir.stub(:[]).with("#{build_directory}/Build/Intermediates/CodeCoverage/FixtureScheme/**/*.xctest").and_return(["#{build_directory}/Build/Intermediates/CodeCoverage/FixtureScheme/FixtureAppTests.xctest"])
141
+ allow(Dir).to receive(:[]).and_call_original
142
+ allow(fixtures_project).to receive(:build_directory).and_return(build_directory)
143
+ allow(fixtures_project).to receive(:input_format).and_return("profdata")
144
+ allow(fixtures_project).to receive(:scheme).and_return("FixtureScheme")
145
+ allow(Dir).to receive(:[]).with("#{build_directory}/**/CodeCoverage/FixtureScheme").and_return(["#{build_directory}/Build/Intermediates/CodeCoverage/FixtureScheme"])
146
+ allow(Dir).to receive(:[]).with("#{build_directory}/Build/Intermediates/CodeCoverage/FixtureScheme/**/*.xctest").and_return(["#{build_directory}/Build/Intermediates/CodeCoverage/FixtureScheme/FixtureAppTests.xctest"])
147
147
  end
148
148
 
149
149
  it "should return the binary file location for an app bundle provided a scheme" do
150
- Dir.stub(:[]).with("#{build_directory}/Build/Intermediates/CodeCoverage/FixtureScheme/*.app").and_return(["/FixtureScheme/FixtureApp.app"])
151
- Dir.stub(:[]).with("/FixtureScheme/FixtureApp.app/**/FixtureApp").and_return(["/FixtureScheme/FixtureApp.app/FixtureApp"])
150
+ allow(Dir).to receive(:[]).with("#{build_directory}/Build/Intermediates/CodeCoverage/FixtureScheme/*.app").and_return(["/FixtureScheme/FixtureApp.app"])
151
+ allow(Dir).to receive(:[]).with("/FixtureScheme/FixtureApp.app/**/FixtureApp").and_return(["/FixtureScheme/FixtureApp.app/FixtureApp"])
152
152
  fixtures_project.send(:configure_binary_file)
153
153
  binary_file_location = fixtures_project.send(:binary_file)
154
154
  expect(binary_file_location).to eq("/FixtureScheme/FixtureApp.app/FixtureApp")
155
155
  end
156
156
 
157
157
  it "should return the binary file location for a framework bundle provided a scheme" do
158
- Dir.stub(:[]).with("#{build_directory}/Build/Intermediates/CodeCoverage/FixtureScheme/*.framework").and_return(["/FixtureScheme/FixtureFramework.framework"])
158
+ allow(Dir).to receive(:[]).with("#{build_directory}/Build/Intermediates/CodeCoverage/FixtureScheme/*.framework").and_return(["/FixtureScheme/FixtureFramework.framework"])
159
159
  fixtures_project.send(:configure_binary_file)
160
160
  binary_file_location = fixtures_project.send(:binary_file)
161
161
  expect(binary_file_location).to eq("/FixtureScheme/FixtureFramework.framework/FixtureFramework")
162
162
  end
163
163
 
164
164
  it "should return the binary file location for a test bundle provided a scheme" do
165
- Dir.stub(:[]).with("#{build_directory}/Build/Intermediates/CodeCoverage/FixtureScheme/FixtureAppTests.xctest/**/FixtureAppTests").and_return(["/FixtureScheme/FixtureAppTests.xctest/Contents/MacOS/FixtureAppTests"])
165
+ allow(Dir).to receive(:[]).with("#{build_directory}/Build/Intermediates/CodeCoverage/FixtureScheme/FixtureAppTests.xctest/**/FixtureAppTests").and_return(["/FixtureScheme/FixtureAppTests.xctest/Contents/MacOS/FixtureAppTests"])
166
166
  fixtures_project.send(:configure_binary_file)
167
167
  binary_file_location = fixtures_project.send(:binary_file)
168
168
  expect(binary_file_location).to eq("/FixtureScheme/FixtureAppTests.xctest/Contents/MacOS/FixtureAppTests")
@@ -176,7 +176,7 @@ describe Slather::Project do
176
176
  end
177
177
 
178
178
  it "should configure the binary_file from yml" do
179
- Slather::Project.stub(:yml).and_return(fixture_yaml)
179
+ allow(Slather::Project).to receive(:yml).and_return(fixture_yaml)
180
180
  fixtures_project.send(:configure_binary_file)
181
181
  binary_file_location = fixtures_project.send(:binary_file)
182
182
  expect(binary_file_location).to eq("/FixtureScheme/From/Yaml/Contents/MacOS/FixturesFromYaml")
@@ -190,8 +190,8 @@ describe Slather::Project do
190
190
  end
191
191
 
192
192
  it "should configure the binary_basename from yml" do
193
- Slather::Project.stub(:yml).and_return(other_fixture_yaml)
194
- Dir.stub(:[]).with("#{build_directory}/Build/Intermediates/CodeCoverage/FixtureScheme/FixtureFramework.framework").and_return(["/FixtureScheme/FixtureFramework.framework"])
193
+ allow(Slather::Project).to receive(:yml).and_return(other_fixture_yaml)
194
+ allow(Dir).to receive(:[]).with("#{build_directory}/Build/Intermediates/CodeCoverage/FixtureScheme/FixtureFramework.framework").and_return(["/FixtureScheme/FixtureFramework.framework"])
195
195
  fixtures_project.send(:configure_binary_file)
196
196
  binary_file_location = fixtures_project.send(:binary_file)
197
197
  expect(binary_file_location).to eq("/FixtureScheme/FixtureFramework.framework/FixtureFramework")
@@ -209,16 +209,16 @@ describe Slather::Project do
209
209
  describe "#dedupe" do
210
210
  it "should return a deduplicated list of coverage files, favoring the file with higher coverage" do
211
211
  coverage_file_1 = double(Slather::CoverageFile)
212
- coverage_file_1.stub(:source_file_pathname).and_return("some/path/class1.m")
213
- coverage_file_1.stub(:percentage_lines_tested).and_return(100)
212
+ allow(coverage_file_1).to receive(:source_file_pathname).and_return("some/path/class1.m")
213
+ allow(coverage_file_1).to receive(:percentage_lines_tested).and_return(100)
214
214
 
215
215
  coverage_file_2 = double(Slather::CoverageFile)
216
- coverage_file_2.stub(:source_file_pathname).and_return("some/path/class2.m")
217
- coverage_file_2.stub(:percentage_lines_tested).and_return(100)
216
+ allow(coverage_file_2).to receive(:source_file_pathname).and_return("some/path/class2.m")
217
+ allow(coverage_file_2).to receive(:percentage_lines_tested).and_return(100)
218
218
 
219
219
  coverage_file_2b = double(Slather::CoverageFile)
220
- coverage_file_2b.stub(:source_file_pathname).and_return("some/path/class2.m")
221
- coverage_file_2b.stub(:percentage_lines_tested).and_return(0)
220
+ allow(coverage_file_2b).to receive(:source_file_pathname).and_return("some/path/class2.m")
221
+ allow(coverage_file_2b).to receive(:percentage_lines_tested).and_return(0)
222
222
 
223
223
  coverage_files = [coverage_file_1, coverage_file_2, coverage_file_2b]
224
224
  deduped_coverage_files = fixtures_project.send(:dedupe, coverage_files)
@@ -244,26 +244,26 @@ describe Slather::Project do
244
244
 
245
245
  describe "#configure_ignore_list" do
246
246
  it "should set the ignore_list if it has been provided in the yml and has not already been set" do
247
- Slather::Project.stub(:yml).and_return({"ignore" => ["test", "ing"] })
247
+ allow(Slather::Project).to receive(:yml).and_return({"ignore" => ["test", "ing"] })
248
248
  fixtures_project.configure_ignore_list
249
249
  expect(fixtures_project.ignore_list).to eq(["test", "ing"])
250
250
  end
251
251
 
252
252
  it "should force the ignore_list into an array" do
253
- Slather::Project.stub(:yml).and_return({"ignore" => "test" })
253
+ allow(Slather::Project).to receive(:yml).and_return({"ignore" => "test" })
254
254
  fixtures_project.configure_ignore_list
255
255
  expect(fixtures_project.ignore_list).to eq(["test"])
256
256
  end
257
257
 
258
258
  it "should not set the ignore_list if it has already been set" do
259
- Slather::Project.stub(:yml).and_return({"ignore" => ["test", "ing"] })
259
+ allow(Slather::Project).to receive(:yml).and_return({"ignore" => ["test", "ing"] })
260
260
  fixtures_project.ignore_list = ["already", "set"]
261
261
  fixtures_project.configure_ignore_list
262
262
  expect(fixtures_project.ignore_list).to eq(["already", "set"])
263
263
  end
264
264
 
265
265
  it "should default the ignore_list to an empty array if nothing is provided in the yml" do
266
- Slather::Project.stub(:yml).and_return({})
266
+ allow(Slather::Project).to receive(:yml).and_return({})
267
267
  fixtures_project.configure_ignore_list
268
268
  expect(fixtures_project.ignore_list).to eq([])
269
269
  end
@@ -271,20 +271,20 @@ describe Slather::Project do
271
271
 
272
272
  describe "#configure_build_directory" do
273
273
  it "should set the build_directory if it has been provided in the yml and has not already been set" do
274
- Slather::Project.stub(:yml).and_return({"build_directory" => "/some/path"})
274
+ allow(Slather::Project).to receive(:yml).and_return({"build_directory" => "/some/path"})
275
275
  fixtures_project.configure_build_directory
276
276
  expect(fixtures_project.build_directory).to eq("/some/path")
277
277
  end
278
278
 
279
279
  it "should not set the build_directory if it has already been set" do
280
- Slather::Project.stub(:yml).and_return({"build_directory" => "/some/path"})
280
+ allow(Slather::Project).to receive(:yml).and_return({"build_directory" => "/some/path"})
281
281
  fixtures_project.build_directory = "/already/set"
282
282
  fixtures_project.configure_build_directory
283
283
  expect(fixtures_project.build_directory).to eq("/already/set")
284
284
  end
285
285
 
286
286
  it "should default the build_directory to derived data if nothing is provided in the yml" do
287
- Slather::Project.stub(:yml).and_return({})
287
+ allow(Slather::Project).to receive(:yml).and_return({})
288
288
  fixtures_project.configure_build_directory
289
289
  expect(fixtures_project.build_directory).to eq(fixtures_project.send(:derived_data_path))
290
290
  end
@@ -292,13 +292,13 @@ describe Slather::Project do
292
292
 
293
293
  describe "#configure_source_directory" do
294
294
  it "should set the source_directory if it has been provided in the yml and has not already been set" do
295
- Slather::Project.stub(:yml).and_return({"source_directory" => "/some/path"})
295
+ allow(Slather::Project).to receive(:yml).and_return({"source_directory" => "/some/path"})
296
296
  fixtures_project.configure_source_directory
297
297
  expect(fixtures_project.source_directory).to eq("/some/path")
298
298
  end
299
299
 
300
300
  it "should not set the source_directory if it has already been set" do
301
- Slather::Project.stub(:yml).and_return({"source_directory" => "/some/path"})
301
+ allow(Slather::Project).to receive(:yml).and_return({"source_directory" => "/some/path"})
302
302
  fixtures_project.source_directory = "/already/set"
303
303
  fixtures_project.configure_source_directory
304
304
  expect(fixtures_project.source_directory).to eq("/already/set")
@@ -307,13 +307,13 @@ describe Slather::Project do
307
307
 
308
308
  describe "#configure_output_directory" do
309
309
  it "should set the output_directory if it has been provided in the yml and has not already been set" do
310
- Slather::Project.stub(:yml).and_return({"output_directory" => "/some/path"})
310
+ allow(Slather::Project).to receive(:yml).and_return({"output_directory" => "/some/path"})
311
311
  fixtures_project.configure_output_directory
312
312
  expect(fixtures_project.output_directory).to eq("/some/path")
313
313
  end
314
314
 
315
315
  it "should not set the output_directory if it has already been set" do
316
- Slather::Project.stub(:yml).and_return({"output_directory" => "/some/path"})
316
+ allow(Slather::Project).to receive(:yml).and_return({"output_directory" => "/some/path"})
317
317
  fixtures_project.output_directory = "/already/set"
318
318
  fixtures_project.configure_output_directory
319
319
  expect(fixtures_project.output_directory).to eq("/already/set")
@@ -322,20 +322,20 @@ describe Slather::Project do
322
322
 
323
323
  describe "#configure_ci_service" do
324
324
  it "should set the ci_service if it has been provided in the yml and has not already been set" do
325
- Slather::Project.stub(:yml).and_return({"ci_service" => "some_service"})
325
+ allow(Slather::Project).to receive(:yml).and_return({"ci_service" => "some_service"})
326
326
  fixtures_project.configure_ci_service
327
327
  expect(fixtures_project.ci_service).to eq(:some_service)
328
328
  end
329
329
 
330
330
  it "should not set the ci_service if it has already been set" do
331
- Slather::Project.stub(:yml).and_return({"ci_service" => "some service"})
331
+ allow(Slather::Project).to receive(:yml).and_return({"ci_service" => "some service"})
332
332
  fixtures_project.ci_service = "already_set"
333
333
  fixtures_project.configure_ci_service
334
334
  expect(fixtures_project.ci_service).to eq(:already_set)
335
335
  end
336
336
 
337
337
  it "should default the ci_service to :travis_ci if nothing is provided in the yml" do
338
- Slather::Project.stub(:yml).and_return({})
338
+ allow(Slather::Project).to receive(:yml).and_return({})
339
339
  fixtures_project.configure_ci_service
340
340
  expect(fixtures_project.ci_service).to eq(:travis_ci)
341
341
  end
@@ -350,20 +350,20 @@ describe Slather::Project do
350
350
 
351
351
  describe "#configure_coverage_service" do
352
352
  it "should set the coverage_service if it has been provided by the yml" do
353
- Slather::Project.stub(:yml).and_return({"coverage_service" => "some_service"})
353
+ allow(Slather::Project).to receive(:yml).and_return({"coverage_service" => "some_service"})
354
354
  expect(fixtures_project).to receive(:coverage_service=).with("some_service")
355
355
  fixtures_project.configure_coverage_service
356
356
  end
357
357
 
358
358
  it "should default the coverage_service to :terminal if nothing is provided in the yml" do
359
- Slather::Project.stub(:yml).and_return({})
359
+ allow(Slather::Project).to receive(:yml).and_return({})
360
360
  expect(fixtures_project).to receive(:coverage_service=).with(:terminal)
361
361
  fixtures_project.configure_coverage_service
362
362
  end
363
363
 
364
364
  it "should not set the coverage_service if it has already been set" do
365
- Slather::Project.stub(:yml).and_return({"coverage_service" => "some_service" })
366
- fixtures_project.stub(:coverage_service).and_return("already set")
365
+ allow(Slather::Project).to receive(:yml).and_return({"coverage_service" => "some_service" })
366
+ allow(fixtures_project).to receive(:coverage_service).and_return("already set")
367
367
  expect(fixtures_project).to_not receive(:coverage_service=)
368
368
  fixtures_project.configure_coverage_service
369
369
  end
@@ -371,17 +371,17 @@ describe Slather::Project do
371
371
 
372
372
  describe "#configure_coverage_access_token" do
373
373
  it "should set the coverage_access_token if it has been provided by the yml" do
374
- Slather::Project.stub(:yml).and_return({"coverage_access_token" => "abc123"})
374
+ allow(Slather::Project).to receive(:yml).and_return({"coverage_access_token" => "abc123"})
375
375
  expect(fixtures_project).to receive(:coverage_access_token=).with("abc123")
376
376
  fixtures_project.configure_coverage_access_token
377
377
  end
378
-
378
+
379
379
  it "should set the coverage_access_token if it is in the ENV" do
380
380
  stub_const('ENV', ENV.to_hash.merge('COVERAGE_ACCESS_TOKEN' => 'asdf456'))
381
381
  expect(fixtures_project).to receive(:coverage_access_token=).with("asdf456")
382
382
  fixtures_project.configure_coverage_access_token
383
383
  end
384
-
384
+
385
385
  end
386
386
 
387
387
  describe "#coverage_service=" do
@@ -406,7 +406,7 @@ describe Slather::Project do
406
406
 
407
407
  let(:fixtures_project_setup) do
408
408
  FileUtils.cp_r "#{FIXTURES_PROJECT_PATH}/", "#{FIXTURES_PROJECT_SETUP_PATH}/"
409
- Slather::Project.any_instance.stub(:configure)
409
+ allow_any_instance_of(Slather::Project).to receive(:configure)
410
410
  Slather::Project.open(FIXTURES_PROJECT_SETUP_PATH)
411
411
  end
412
412
 
@@ -449,8 +449,8 @@ describe Slather::Project do
449
449
 
450
450
  project_root = Pathname("./").realpath
451
451
 
452
- ["\nProcessing coverage file: #{project_root}/spec/DerivedData/Build/Intermediates/CodeCoverage/fixtures/Coverage.profdata",
453
- "Against binary file: #{project_root}/spec/DerivedData/Build/Intermediates/CodeCoverage/fixtures/Products/Debug/fixturesTests.xctest/Contents/MacOS/fixturesTests\n\n"
452
+ ["\nProcessing coverage file: #{project_root}/spec/DerivedData/libfixtures/Build/Intermediates/CodeCoverage/fixtures/Coverage.profdata",
453
+ "Against binary file: #{project_root}/spec/DerivedData/libfixtures/Build/Intermediates/CodeCoverage/fixtures/Products/Debug/fixturesTests.xctest/Contents/MacOS/fixturesTests\n\n"
454
454
  ].each do |line|
455
455
  expect(fixtures_project).to receive(:puts).with(line)
456
456
  end
data/spec/spec_helper.rb CHANGED
@@ -12,7 +12,8 @@ FIXTURES_JSON_PATH = File.join(File.dirname(__FILE__), 'fixtures/gutter.json')
12
12
  FIXTURES_HTML_FOLDER_PATH = File.join(File.dirname(__FILE__), 'fixtures/fixtures_html')
13
13
  FIXTURES_PROJECT_PATH = File.join(File.dirname(__FILE__), 'fixtures/fixtures.xcodeproj')
14
14
  FIXTURES_SWIFT_FILE_PATH = File.join(File.dirname(__FILE__), 'fixtures/fixtures/Fixtures.swift')
15
- TEMP_DERIVED_DATA_PATH = File.join(File.dirname(__FILE__), 'DerivedData/')
15
+ TEMP_DERIVED_DATA_PATH = File.join(File.dirname(__FILE__), 'DerivedData')
16
+ TEMP_PROJECT_BUILD_PATH = File.join(TEMP_DERIVED_DATA_PATH, "libfixtures")
16
17
  TEMP_OBJC_GCNO_PATH = File.join(File.dirname(__FILE__), 'fixtures/ObjectiveC.gcno')
17
18
  TEMP_OBJC_GCDA_PATH = File.join(File.dirname(__FILE__), 'fixtures/ObjectiveC.gcda')
18
19
 
@@ -39,7 +40,7 @@ RSpec.configure do |config|
39
40
  config.before(:suite) do
40
41
  FixtureHelpers.delete_derived_data
41
42
  FixtureHelpers.delete_temp_gcov_files
42
- `xcodebuild -project "#{FIXTURES_PROJECT_PATH}" -scheme fixtures -configuration Debug -derivedDataPath #{TEMP_DERIVED_DATA_PATH} -enableCodeCoverage YES clean test`
43
+ `xcodebuild -project "#{FIXTURES_PROJECT_PATH}" -scheme fixtures -configuration Debug -derivedDataPath #{TEMP_PROJECT_BUILD_PATH} -enableCodeCoverage YES clean test`
43
44
  end
44
45
 
45
46
  config.after(:suite) do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slather
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Larsen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-04 00:00:00.000000000 Z
11
+ date: 2016-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -44,28 +44,28 @@ dependencies:
44
44
  requirements:
45
45
  - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: '10.3'
47
+ version: '10.4'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: '10.3'
54
+ version: '10.4'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '3.3'
61
+ version: '3.4'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ~>
67
67
  - !ruby/object:Gem::Version
68
- version: '3.3'
68
+ version: '3.4'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: pry
71
71
  requirement: !ruby/object:Gem::Requirement