openstudio_measure_tester 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 115113315811da74ef6a2d39bf2ed2f617d091c4
4
- data.tar.gz: d0b4058a1a1751da72781357e0325f3a0acf53d7
3
+ metadata.gz: aea59476a002df673244b9df077b9ec4c8064c5c
4
+ data.tar.gz: e33c1970119627924736028e691a7f90daea3d49
5
5
  SHA512:
6
- metadata.gz: 64bffbc0f06b6e17c9616c2eeeb7daf4bc010962637eb7f50c527d48964048a78266f9c25858f0797026032f5618280086503aff85e91c216e7138630601b285
7
- data.tar.gz: 32b3638d6c38aab842e68c4dda5d2d0e44f53661a9238a1db7b8ed11405a498b973ec3f02c7548aba66368d2d989f664a06ac97ae6ee87f4babbec5d35ea5f1d
6
+ metadata.gz: 85dae18b77ea9a3f4888a9083f0deb6a52d21b25439066abf61d1224da062541cbdb2e2f4e771e52521f2bfff0ee7c8e360a1008ab680775041e1141cc48064f
7
+ data.tar.gz: 761c6012b9305cfa2b18fe4525ec6b0ef2623e34f51b8b4199396603af15d08e4a11a36286174abbf7c8dfdd00a113e4dff9257288a61fb76512606ed88cd445
data/.travis.yml CHANGED
@@ -12,4 +12,3 @@ before_script:
12
12
  - sudo ./install_openstudio.sh $OPENSTUDIO_VERSION $OPENSTUDIO_SHA
13
13
  script:
14
14
  - rake
15
-
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # Version 0.1.3
2
+
3
+ * Catch when infoExtractor is unable to parse measure arguments
4
+ * Allow a measure name to include "test"
5
+ * Lock down versions of dependencies
6
+ * Add a broken measure to the test
7
+
1
8
  # Version 0.1.2
2
9
 
3
10
  * Do not crash when the current measure is not in a Git repository
data/Gemfile CHANGED
@@ -4,5 +4,3 @@ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
4
 
5
5
  # Specify your gem's dependencies in openstudio_measure_tester.gemspec
6
6
  gemspec
7
-
8
- gem 'rake'
data/README.md CHANGED
@@ -11,13 +11,13 @@ The OpenStudio Measure Tester is a rubygem that exposes rake tasks for testing O
11
11
 
12
12
  * Gemfile
13
13
  ```ruby
14
- gem 'openstudio_measure_tester', '~> 0.1'
14
+ source 'https://rubygems.org'
15
+ gem 'openstudio_measure_tester'
15
16
 
16
- # or
17
- gem 'openstudio_measure_tester', github: 'NREL/openstudio_measure_tester_gem'
18
-
19
- # or
17
+ # or for release on Github
18
+ gem 'openstudio_measure_tester', github: 'NREL/openstudio_measure_tester_gem', branch: 'develop'
20
19
 
20
+ # or for local development
21
21
  gem 'openstudio_measure_tester', path: '../<path-to-checkout>'
22
22
  ```
23
23
 
@@ -30,22 +30,17 @@ The OpenStudio Measure Tester is a rubygem that exposes rake tasks for testing O
30
30
 
31
31
  * Run `bundle update`
32
32
  * run `bundle exec rake -T` to see the new tests that are available.
33
- * In existing measure directory, run `bundle exec rake openstudio:test`
33
+ * In existing measure directory, run `bundle exec rake openstudio:all`
34
+ * Minitest, Coverage, Rubocop, and OpenStudio Style will run. The last message that appears to the screen is the location of the dashboard.
35
+
36
+ ```
37
+ Open ./test_results/dashboard/index.html to view measure testing dashboard.
38
+ ```
34
39
 
35
40
  ## Disclaimer
36
41
 
37
42
  This project is under active development and will be changing significantly.
38
43
 
39
- ## Potential Issues
40
-
41
- Currently, the project downloads the rubocops from the OpenStudio-resources Github repo and saves them to the gem's installation location. This may be write protected on some machines.
42
-
43
-
44
- # TODOS
45
-
46
- * Callbacks to gather results
47
- * MiniTest results to JSON (currently only stdout)
48
-
49
44
  # Testing in Docker
50
45
 
51
46
  ```bash
@@ -58,5 +53,4 @@ chmod +x install_openstudio.sh
58
53
  ./install_ruby.sh 2.2.4 b6eff568b48e0fda76e5a36333175df049b204e91217aa32a65153cc0cdcb761
59
54
  ./install_openstudio.sh 2.4.0 f58a3e1808
60
55
  export RUBYLIB=/usr/Ruby
61
-
62
56
  ```
@@ -45,10 +45,27 @@ module OpenStudioMeasureTester
45
45
  @total_missed_lines = 0
46
46
 
47
47
  @measure_coverages = {}
48
+ end
49
+
50
+ def parse_class_name(measure_file)
51
+ # grab the class name out of the parts
52
+ unless File.exist? measure_file
53
+ # magically try to find the path name by dropping the first element of array. This is
54
+ # mainly needed for the testing framework as we are committing the .resultset.json which may
55
+ # have been generated by any user, esp since the file names are fully qualified in the .resultsset.json,
56
+ puts "Trying to determine the file path of unknown measure #{measure_file}"
57
+ measure_file = measure_file.split('/')[1..-1].join('/') until File.exist?(measure_file) || measure_file.split('/').empty?
58
+ end
48
59
 
49
- parse_results
60
+ # file should exist now. Read from the class name
61
+ File.readlines(measure_file).each do |line|
62
+ if (line.include? 'class') && line.split(' ')[0] == 'class'
63
+ return line.match(/class\s(.*)\s</)[1]
64
+ end
65
+ end
50
66
  end
51
67
 
68
+ # Call this method to parse the results of the Coverage runs
52
69
  def parse_results
53
70
  file = "#{@path_to_results}/.resultset.json"
54
71
 
@@ -60,24 +77,44 @@ module OpenStudioMeasureTester
60
77
 
61
78
  # Sometimes the coverage is RSpec, sometimes MiniTest. Depends if running
62
79
  # tests in this Gem, or using this gem where MiniTest is already loaded.
63
- k, coverage_results = hash.first
64
- puts "Coverage results are of type #{k}"
65
-
66
- # find all measure names
67
- measure_names = []
68
- coverage_results['coverage'].each do |key, data|
80
+ _, coverage_results = hash.first
81
+ # puts "Coverage results are of type #{k}"
82
+
83
+ # Find all measure names. Currently this is hardcoded to be the second to last element
84
+ # of the file path name of the measure.rb. For example the key in the resultset.json file is
85
+ # typically of the form:
86
+ # OpenStudio-measure-tester-gem/spec/test_measures/AddOverhangsByProjectionFactor/measure.rb"
87
+ # which results in the measure name being 'AddOverhangsByProjectionFactor'
88
+ # The measure names stores the mapping of the measure names to the key in the resultset.json
89
+ # This requires two passes through the list of files, the first to grab the measure.rb files, which has
90
+ # the classname, then to go through and grab all the other files that exist for the same measure class name.
91
+ # Two passes because the order of the files in .resultset.json is not guaranteed to have measure.rb first.
92
+ measure_maps = {}
93
+ coverage_results['coverage'].keys.each do |key|
69
94
  parts = key.split('/')
70
95
  if parts.last == 'measure.rb'
71
- name = parts[-2]
72
- pp name
73
- measure_names << name
96
+ class_name = parse_class_name(key)
97
+ measure_maps[class_name] = {
98
+ class_name: class_name,
99
+ root_path: File.dirname(key),
100
+ files: [key]
101
+ }
74
102
  end
75
103
  end
76
104
 
77
- measure_names.each do |measure_name|
78
- cn = ''
79
- results = coverage_results['coverage'].select { |key, _data| key.include? measure_name }
105
+ # second pass, add other files.
106
+ coverage_results['coverage'].keys.each do |key|
107
+ next if key.split('/').last == 'measure.rb'
80
108
 
109
+ measure_maps.each do |m_key, m_value|
110
+ if key.include? m_value[:root_path]
111
+ measure_maps[m_key][:files] << key
112
+ end
113
+ end
114
+ end
115
+
116
+ # remap all this data to another format... seems like we could do this another way
117
+ measure_maps.each do |class_name, measure_map|
81
118
  mhash = {}
82
119
  mhash['total_lines'] = 0
83
120
  mhash['relevant_lines'] = 0
@@ -86,53 +123,40 @@ module OpenStudioMeasureTester
86
123
  mhash['percent_coverage'] = 0
87
124
  mhash['files'] = []
88
125
 
89
- results.each do |key, data|
126
+ measure_map[:files].each do |test_file|
127
+ cov_results_by_line = coverage_results['coverage'][test_file]
90
128
  fhash = {}
91
- fhash['name'] = key.partition(measure_name + '/').last
92
- fhash['total_lines'] = data.size
93
-
94
- # get the class name
95
- if fhash['name'] == 'measure.rb'
96
- unless File.exist? key
97
- # magically try to find the path name by dropping the first element of array
98
- puts "Trying to determine the file path of unknown measure #{key}"
99
- key = key.split('/')[1..-1].join('/') until File.exist?(key) || key.split('/').empty?
100
- end
101
-
102
- # file should exist now
103
- File.readlines(key).each do |line|
104
- if (line.include? 'class') && line.split(' ')[0] == 'class'
105
- cn = line.split(' ')[1].gsub /_?[tT]est\z/, ''
106
- break
107
- end
108
- end
109
- end
129
+ # get the relative file path
110
130
 
131
+ fhash['name'] = test_file.gsub("#{measure_map[:root_path]}/", '')
132
+ fhash['total_lines'] = cov_results_by_line.size
111
133
  mhash['total_lines'] += fhash['total_lines']
134
+
112
135
  # remove nils from array
113
- data.delete(nil)
136
+ cov_results_by_line.delete(nil)
114
137
 
115
- cov = data.count { |x| x > 0 }
116
- fhash['percent_coverage'] = ((cov.to_f / data.size.to_f) * 100).round(2)
117
- fhash['missed_lines'] = data.size - cov
118
- fhash['relevant_lines'] = data.size
138
+ cov = cov_results_by_line.count {|x| x > 0}
139
+ fhash['percent_coverage'] = ((cov.to_f / cov_results_by_line.size.to_f) * 100).round(2)
140
+ fhash['missed_lines'] = cov_results_by_line.size - cov
141
+ fhash['relevant_lines'] = cov_results_by_line.size
119
142
  fhash['covered_lines'] = cov
120
143
 
121
144
  # measure-level totals
122
145
  mhash['relevant_lines'] += fhash['relevant_lines']
123
146
  mhash['covered_lines'] += fhash['covered_lines']
124
147
  mhash['missed_lines'] += fhash['missed_lines']
125
-
126
148
  mhash['files'] << fhash
127
149
  end
150
+
128
151
  mhash['percent_coverage'] = (mhash['covered_lines'].to_f / mhash['relevant_lines'].to_f * 100).round(2)
129
- @measure_coverages[cn] = mhash
152
+ @measure_coverages[class_name] = mhash
130
153
  @total_lines += mhash['total_lines']
131
154
  @total_relevant_lines += mhash['relevant_lines']
132
155
  @total_covered_lines += mhash['covered_lines']
133
156
  @total_missed_lines += mhash['missed_lines']
134
157
  end
135
158
 
159
+
136
160
  # pp @measure_coverages
137
161
  lines = @total_relevant_lines # unnecessary but breaks formatting otherwise
138
162
  # lines can be zero if coverage doesn't run correctly
@@ -74,13 +74,13 @@ module OpenStudioMeasureTester
74
74
  type: :deprecated,
75
75
  severity: :error,
76
76
  file_type: :measure
77
- }, {
78
- regex: /require .openstudio_measure_tester\/test_helper./,
79
- check_type: :if_missing,
80
- message: "Must include 'require 'openstudio_measure_tester/test_helper'' in Test file to report coverage correctly.",
81
- type: :syntax,
82
- severity: :error,
83
- file_type: :test
77
+ # }, {
78
+ # regex: /require .openstudio_measure_tester\/test_helper./,
79
+ # check_type: :if_missing,
80
+ # message: "Must include 'require 'openstudio_measure_tester/test_helper'' in Test file to report coverage correctly.",
81
+ # type: :syntax,
82
+ # severity: :error,
83
+ # file_type: :test
84
84
  }, {
85
85
  regex: /MiniTest::Unit::TestCase/,
86
86
  check_type: :if_exists,
@@ -149,14 +149,17 @@ module OpenStudioMeasureTester
149
149
  log_message("Could not find LICENSE.md in '#{measure_dir}'.", :general, :warning)
150
150
  end
151
151
 
152
-
153
152
  unless measure_missing
154
153
  measure = OpenStudio::BCLMeasure.load(measure_dir)
155
154
  if measure.empty?
156
155
  log_message("Failed to load measure '#{measure_dir}'", :general, :error)
157
156
  else
158
157
  measure = measure.get
159
- measure_info = infoExtractor(measure, OpenStudio::Model::OptionalModel.new, OpenStudio::OptionalWorkspace.new)
158
+ begin
159
+ measure_info = infoExtractor(measure, OpenStudio::Model::OptionalModel.new, OpenStudio::OptionalWorkspace.new)
160
+ rescue NameError => error
161
+ log_message("Unable to parse info from measure. Error: '#{error}'", :general, :error)
162
+ end
160
163
 
161
164
  measure_hash = generate_measure_hash(measure_dir, measure, measure_info)
162
165
  measure_hash.merge!(get_attributes_from_measure(measure_dir, measure_hash[:class_name]))
@@ -173,8 +176,6 @@ module OpenStudioMeasureTester
173
176
 
174
177
  # pp @measure_messages
175
178
 
176
-
177
-
178
179
  # calculate the info, warnings, errors and return the measure data
179
180
  # TODO: break out the issues by file
180
181
  return {
@@ -52,8 +52,8 @@ module OpenStudioMeasureTester
52
52
  if !logs.empty?
53
53
  sha = logs.first.sha
54
54
  end
55
- rescue StandardError => error
56
- puts "Could not find .git for measure(s), will not be able to report git information"
55
+ rescue StandardError => error
56
+ puts 'Could not find .git for measure(s), will not be able to report git information'
57
57
  end
58
58
 
59
59
  # check if the results data already exist, and if so, then load the file now to keep the results
@@ -76,6 +76,7 @@ module OpenStudioMeasureTester
76
76
  FileUtils.mv "#{@results_dir}/coverage", "#{@test_results_dir}/."
77
77
 
78
78
  cov = OpenStudioMeasureTester::Coverage.new("#{@test_results_dir}/coverage")
79
+ cov.parse_results
79
80
  @results['coverage'] = cov.to_hash
80
81
  end
81
82
 
@@ -83,8 +84,14 @@ module OpenStudioMeasureTester
83
84
  if Dir.exist?("#{@results_dir}/test/html_reports") || Dir.exist?("#{@results_dir}/test/reports")
84
85
  FileUtils.rm_rf "#{@test_results_dir}/minitest" if Dir.exist? "#{@test_results_dir}/minitest"
85
86
  FileUtils.mkdir_p "#{@test_results_dir}/minitest"
86
- FileUtils.mv "#{@results_dir}/test/html_reports", "#{@test_results_dir}/minitest/html_reports"
87
- FileUtils.mv "#{@results_dir}/test/reports", "#{@test_results_dir}/minitest/reports"
87
+
88
+ if Dir.exist?("#{@results_dir}/test/html_reports")
89
+ FileUtils.mv "#{@results_dir}/test/html_reports", "#{@test_results_dir}/minitest/html_reports"
90
+ end
91
+
92
+ if Dir.exist?("#{@results_dir}/test/reports")
93
+ FileUtils.mv "#{@results_dir}/test/reports", "#{@test_results_dir}/minitest/reports"
94
+ end
88
95
 
89
96
  # Delete the test folder if it is empty
90
97
  FileUtils.rm_rf "#{@results_dir}/test" if Dir.entries("#{@results_dir}/test").size == 2
@@ -214,7 +214,7 @@ module OpenStudioMeasureTester
214
214
  end
215
215
 
216
216
  desc 'Run RuboCop Auto Correct on Measures'
217
- task auto_correct: 'openstudio:rubocop_core:auto_correct'
217
+ task auto_correct: ['openstudio:prepare_rubocop', 'openstudio:rubocop_core:auto_correct']
218
218
  end
219
219
 
220
220
  desc 'Run RuboCop on Measures'
@@ -28,7 +28,6 @@
28
28
 
29
29
  $coverage_started = false
30
30
  unless $coverage_started
31
- puts 'Coverage starting'
32
31
  require 'simplecov'
33
32
  SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new(
34
33
  [
@@ -27,5 +27,5 @@
27
27
  ########################################################################################################################
28
28
 
29
29
  module OpenStudioMeasureTester
30
- VERSION = '0.1.2'.freeze
30
+ VERSION = '0.1.3'.freeze
31
31
  end
@@ -20,16 +20,16 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ['lib']
22
22
 
23
- spec.add_development_dependency 'bundler', '~> 1.16'
24
- spec.add_development_dependency 'rspec', '~> 3.0'
23
+ spec.add_development_dependency 'bundler', '1.16.1'
24
+ spec.add_development_dependency 'rspec', '3.7.0'
25
25
 
26
- spec.add_dependency 'activesupport', '~> 5.1.4'
27
- spec.add_dependency 'ci_reporter_minitest', '~> 1.0.0'
28
- spec.add_dependency 'git', '~> 1.3.0'
29
- spec.add_dependency 'minitest', '~> 5.4.0'
30
- spec.add_dependency 'minitest-reporters', '~> 1.1'
31
- spec.add_dependency 'rake', '~> 12.3'
32
- spec.add_dependency 'rubocop', '~> 0.52'
33
- spec.add_dependency 'rubocop-checkstyle_formatter', '~> 0.4'
34
- spec.add_dependency 'simplecov', '~> 0.15'
26
+ spec.add_dependency 'activesupport', '5.1.5'
27
+ spec.add_dependency 'ci_reporter_minitest', '1.0.0'
28
+ spec.add_dependency 'git', '1.3.0'
29
+ spec.add_dependency 'minitest', '5.4.3'
30
+ spec.add_dependency 'minitest-reporters', '1.1.19'
31
+ spec.add_dependency 'rake', '12.3'
32
+ spec.add_dependency 'rubocop', '0.53.0'
33
+ spec.add_dependency 'rubocop-checkstyle_formatter', '0.4'
34
+ spec.add_dependency 'simplecov', '0.16'
35
35
  end
metadata CHANGED
@@ -1,169 +1,169 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openstudio_measure_tester
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicholas Long
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-03-15 00:00:00.000000000 Z
11
+ date: 2018-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: '1.16'
19
+ version: 1.16.1
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: '1.16'
26
+ version: 1.16.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: '3.0'
33
+ version: 3.7.0
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: '3.0'
40
+ version: 3.7.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: activesupport
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - '='
46
46
  - !ruby/object:Gem::Version
47
- version: 5.1.4
47
+ version: 5.1.5
48
48
  type: :runtime
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: 5.1.4
54
+ version: 5.1.5
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: ci_reporter_minitest
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - '='
60
60
  - !ruby/object:Gem::Version
61
61
  version: 1.0.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - '='
67
67
  - !ruby/object:Gem::Version
68
68
  version: 1.0.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: git
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - '='
74
74
  - !ruby/object:Gem::Version
75
75
  version: 1.3.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - '='
81
81
  - !ruby/object:Gem::Version
82
82
  version: 1.3.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: minitest
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - '='
88
88
  - !ruby/object:Gem::Version
89
- version: 5.4.0
89
+ version: 5.4.3
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - '='
95
95
  - !ruby/object:Gem::Version
96
- version: 5.4.0
96
+ version: 5.4.3
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: minitest-reporters
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - "~>"
101
+ - - '='
102
102
  - !ruby/object:Gem::Version
103
- version: '1.1'
103
+ version: 1.1.19
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - "~>"
108
+ - - '='
109
109
  - !ruby/object:Gem::Version
110
- version: '1.1'
110
+ version: 1.1.19
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rake
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - "~>"
115
+ - - '='
116
116
  - !ruby/object:Gem::Version
117
117
  version: '12.3'
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - "~>"
122
+ - - '='
123
123
  - !ruby/object:Gem::Version
124
124
  version: '12.3'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rubocop
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - "~>"
129
+ - - '='
130
130
  - !ruby/object:Gem::Version
131
- version: '0.52'
131
+ version: 0.53.0
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - "~>"
136
+ - - '='
137
137
  - !ruby/object:Gem::Version
138
- version: '0.52'
138
+ version: 0.53.0
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: rubocop-checkstyle_formatter
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - "~>"
143
+ - - '='
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0.4'
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - "~>"
150
+ - - '='
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0.4'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: simplecov
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - "~>"
157
+ - - '='
158
158
  - !ruby/object:Gem::Version
159
- version: '0.15'
159
+ version: '0.16'
160
160
  type: :runtime
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - "~>"
164
+ - - '='
165
165
  - !ruby/object:Gem::Version
166
- version: '0.15'
166
+ version: '0.16'
167
167
  description: Testing framework for OpenStudio measures
168
168
  email:
169
169
  - nicholas.long@nrel.gov