openstudio_measure_tester 0.1.7 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +25 -0
- data/Gemfile +2 -2
- data/Jenkinsfile +10 -0
- data/LICENSE.md +1 -1
- data/README.md +9 -5
- data/Rakefile +2 -0
- data/bin/console +1 -0
- data/bin/run_measure_tests +4 -3
- data/lib/openstudio_measure_tester.rb +5 -3
- data/lib/openstudio_measure_tester/core_ext.rb +3 -1
- data/lib/openstudio_measure_tester/coverage.rb +3 -1
- data/lib/openstudio_measure_tester/dashboard.rb +32 -2
- data/lib/openstudio_measure_tester/minitest_result.rb +10 -8
- data/lib/openstudio_measure_tester/openstudio_style.rb +12 -10
- data/lib/openstudio_measure_tester/openstudio_testing_result.rb +4 -2
- data/lib/openstudio_measure_tester/rake_task.rb +4 -2
- data/lib/openstudio_measure_tester/rubocop_result.rb +4 -2
- data/lib/openstudio_measure_tester/runner.rb +89 -62
- data/lib/openstudio_measure_tester/version.rb +4 -2
- data/openstudio_measure_tester.gemspec +29 -25
- metadata +57 -56
- data/.travis.yml +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: fadfcba5d12f6b9ebbb36237521c99fd08ffd36cc8f14fab967e607800abf902
|
4
|
+
data.tar.gz: 41a3b63176ed3bb96554216d5dc50cd668c42648faf32ef0f36d20d30b5595f2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b42fc88d7ee1221a215a7fb079a7e22633e6b1f7f70b7ee9b96551325a2d9259d03998efd024a7d5e7a6ff95bd4b9f2795f4edbb03f8645577c1edc7952bd212
|
7
|
+
data.tar.gz: 2df445991da6b52f06e8bff11452a47d26003ca72491a3b6490f3fa97aabc662e32e3acdda2679d660a1f164b8fcf89cb3ddddb91767768266d737443e4e0f67
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,28 @@
|
|
1
|
+
# Version 0.3.0
|
2
|
+
|
3
|
+
* Upgrade to Ruby 2.7.0
|
4
|
+
|
5
|
+
# Version 0.2.3
|
6
|
+
|
7
|
+
* Use updated rubocop style (v3)
|
8
|
+
* Update instructions on running tests in Docker.
|
9
|
+
|
10
|
+
# Version 0.2.2
|
11
|
+
|
12
|
+
* Revert to using Rubocop 0.54 to support non-native gems in OpenStudio CLI.
|
13
|
+
|
14
|
+
# Version 0.2.1
|
15
|
+
|
16
|
+
* Update to SimpleCov 0.18.2
|
17
|
+
* Pessimistically version dependencies
|
18
|
+
|
19
|
+
# Version 0.2.0
|
20
|
+
|
21
|
+
* Remove support for Ruby 2.2.4. Use Ruby ~> 2.5.x
|
22
|
+
* Remove NREL's fork of simplecov
|
23
|
+
* Update copyrights
|
24
|
+
* Remove travis and leverage NREL's Jenkins CI
|
25
|
+
|
1
26
|
# Version 0.1.7
|
2
27
|
|
3
28
|
* Support running measure tester in the directory of the measure.rb with OpenStudio CLI (e.g. `openstudio measure -r .`)
|
data/Gemfile
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
source 'http://rubygems.org'
|
2
4
|
|
3
5
|
git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
|
4
6
|
|
5
7
|
# Specify your gem's dependencies in openstudio_measure_tester.gemspec
|
6
8
|
gemspec
|
7
|
-
|
8
|
-
gem 'simplecov', github: 'NREL/simplecov'
|
data/Jenkinsfile
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
//Jenkins pipelines are stored in shared libraries. Please see: https://github.com/NREL/cbci_jenkins_libs
|
2
|
+
|
3
|
+
@Library('cbci_shared_libs@ruby_270') _
|
4
|
+
|
5
|
+
// Build for PR to develop branch only.
|
6
|
+
if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) { // check if set
|
7
|
+
|
8
|
+
openstudio_measure_tester_gem()
|
9
|
+
|
10
|
+
}
|
data/LICENSE.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
OpenStudio(R), Copyright (c) 2008-
|
1
|
+
OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC. All rights reserved.
|
2
2
|
|
3
3
|
Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
4
4
|
that the following conditions are met:
|
data/README.md
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
# OpenStudio® Measure Tester
|
2
2
|
|
3
|
-
[![Build Status](https://travis-ci.org/NREL/OpenStudio-measure-tester-gem.svg?branch=develop)](https://travis-ci.org/NREL/OpenStudio-measure-tester-gem)
|
4
3
|
[![Gem Version](https://badge.fury.io/rb/openstudio_measure_tester.svg)](https://badge.fury.io/rb/openstudio_measure_tester)
|
5
4
|
|
6
5
|
The OpenStudio Measure Tester is a rubygem that exposes rake tasks for testing OpenStudio measures.
|
@@ -71,17 +70,22 @@ The OpenStudio Measure Tester is a rubygem that exposes rake tasks for testing O
|
|
71
70
|
# Testing in Docker
|
72
71
|
|
73
72
|
```bash
|
73
|
+
docker run -it -v $(pwd):/root/test -w '/root' ubuntu:18.04 bash
|
74
74
|
|
75
|
+
# within container
|
75
76
|
apt-get update && apt-get install -y curl
|
76
77
|
curl -sLO https://raw.githubusercontent.com/NREL/OpenStudio-server/develop/docker/deployment/scripts/install_ruby.sh
|
77
|
-
curl -sLO https://raw.githubusercontent.com/NREL/OpenStudio-server/develop/
|
78
|
+
curl -sLO https://raw.githubusercontent.com/NREL/OpenStudio-server/develop/ci/travis/install_openstudio.sh
|
78
79
|
chmod +x install_ruby.sh
|
79
80
|
chmod +x install_openstudio.sh
|
80
|
-
./install_ruby.sh 2.
|
81
|
-
./install_openstudio.sh
|
81
|
+
./install_ruby.sh 2.5.5 28a945fdf340e6ba04fc890b98648342e3cccfd6d223a48f3810572f11b2514c
|
82
|
+
./install_openstudio.sh 3.0.0 1c9617fa4e
|
82
83
|
export RUBYLIB=/usr/Ruby
|
83
|
-
```
|
84
84
|
|
85
|
+
cd /root/test
|
86
|
+
bundle update
|
87
|
+
bundle exec rake
|
88
|
+
```
|
85
89
|
|
86
90
|
# Releasing
|
87
91
|
|
data/Rakefile
CHANGED
data/bin/console
CHANGED
data/bin/run_measure_tests
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
require 'openstudio_measure_tester'
|
4
5
|
|
@@ -12,11 +13,11 @@ end
|
|
12
13
|
begin
|
13
14
|
runner = OpenStudioMeasureTester::Runner.new(measure_dir)
|
14
15
|
runner.run_all(Dir.pwd)
|
15
|
-
rescue StandardError =>
|
16
|
+
rescue StandardError => e
|
16
17
|
puts
|
17
18
|
puts '!!!!!!!!!!!!!!!!!!!!! Error Occurred !!!!!!!!!!!!!!!!!!!!!'
|
18
|
-
puts
|
19
|
-
puts
|
19
|
+
puts e.message
|
20
|
+
puts e.backtrace
|
20
21
|
puts '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
|
21
22
|
puts
|
22
23
|
end
|
@@ -1,5 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
########################################################################################################################
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
4
|
+
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC. All rights reserved.
|
3
5
|
#
|
4
6
|
# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
|
5
7
|
# following conditions are met:
|
@@ -34,8 +36,8 @@ require 'minitest'
|
|
34
36
|
require 'simplecov'
|
35
37
|
|
36
38
|
begin
|
37
|
-
require 'git'
|
38
|
-
rescue LoadError =>
|
39
|
+
require 'git'
|
40
|
+
rescue LoadError => e
|
39
41
|
puts 'Could not load git, will not be able to report git information'
|
40
42
|
end
|
41
43
|
|
@@ -1,5 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
########################################################################################################################
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
4
|
+
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC. All rights reserved.
|
3
5
|
#
|
4
6
|
# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
|
5
7
|
# following conditions are met:
|
@@ -1,5 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
########################################################################################################################
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
4
|
+
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC. All rights reserved.
|
3
5
|
#
|
4
6
|
# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
|
5
7
|
# following conditions are met:
|
@@ -1,3 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
########################################################################################################################
|
4
|
+
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC. All rights reserved.
|
5
|
+
#
|
6
|
+
# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
|
7
|
+
# following conditions are met:
|
8
|
+
#
|
9
|
+
# (1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following
|
10
|
+
# disclaimer.
|
11
|
+
#
|
12
|
+
# (2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
|
13
|
+
# following disclaimer in the documentation and/or other materials provided with the distribution.
|
14
|
+
#
|
15
|
+
# (3) Neither the name of the copyright holder nor the names of any contributors may be used to endorse or promote
|
16
|
+
# products derived from this software without specific prior written permission from the respective party.
|
17
|
+
#
|
18
|
+
# (4) Other than as required in clauses (1) and (2), distributions in any form of modifications or other derivative
|
19
|
+
# works may not use the "OpenStudio" trademark, "OS", "os", or any other confusingly similar designation without
|
20
|
+
# specific prior written permission from Alliance for Sustainable Energy, LLC.
|
21
|
+
#
|
22
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
23
|
+
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
24
|
+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER, THE UNITED STATES GOVERNMENT, OR ANY CONTRIBUTORS BE LIABLE FOR
|
25
|
+
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
26
|
+
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
27
|
+
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
28
|
+
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
29
|
+
########################################################################################################################
|
30
|
+
|
1
31
|
require 'erb'
|
2
32
|
module OpenStudioMeasureTester
|
3
33
|
class Dashboard
|
@@ -15,7 +45,7 @@ module OpenStudioMeasureTester
|
|
15
45
|
end
|
16
46
|
|
17
47
|
def render
|
18
|
-
rendered = ERB.new(@template, 0,
|
48
|
+
rendered = ERB.new(@template, 0, nil, '@html').result(binding)
|
19
49
|
save_dir = "#{@test_results_directory}/dashboard"
|
20
50
|
|
21
51
|
# Render the dashboard
|
@@ -24,7 +54,7 @@ module OpenStudioMeasureTester
|
|
24
54
|
# copy over all the resource files to display the website correctly.
|
25
55
|
resource_path = File.expand_path('../../dashboard', File.dirname(__FILE__))
|
26
56
|
# KAF: for some reason, not overwriting the files. delete them from destination first
|
27
|
-
FileUtils.remove_dir("#{save_dir}/css") if Dir.exist?"#{save_dir}/css"
|
57
|
+
FileUtils.remove_dir("#{save_dir}/css") if Dir.exist? "#{save_dir}/css"
|
28
58
|
FileUtils.remove_dir("#{save_dir}/js") if Dir.exist? "#{save_dir}/js"
|
29
59
|
FileUtils.cp_r("#{resource_path}/css", "#{save_dir}/css", remove_destination: true)
|
30
60
|
FileUtils.cp_r("#{resource_path}/js", "#{save_dir}/js", remove_destination: true)
|
@@ -1,5 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
########################################################################################################################
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
4
|
+
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC. All rights reserved.
|
3
5
|
#
|
4
6
|
# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
|
5
7
|
# following conditions are met:
|
@@ -65,7 +67,7 @@ module OpenStudioMeasureTester
|
|
65
67
|
json_data = JSON.parse(File.read(file), symbolize_names: true)
|
66
68
|
|
67
69
|
# Test if the measure has already been parse, if so, then continue
|
68
|
-
next if @measure_results.
|
70
|
+
next if @measure_results.key?(json_data[:measure_name])
|
69
71
|
|
70
72
|
mhash = {}
|
71
73
|
mhash[:tested_class] = json_data[:measure_name]
|
@@ -87,10 +89,10 @@ module OpenStudioMeasureTester
|
|
87
89
|
mhash[:measure_failures] = 0
|
88
90
|
mhash[:measure_skipped] = 0
|
89
91
|
mhash[:issues] = {
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
92
|
+
errors: [],
|
93
|
+
failures: [],
|
94
|
+
skipped: [],
|
95
|
+
compatibility_error: json_data[:compatible] ? 0 : 1
|
94
96
|
}
|
95
97
|
|
96
98
|
# find the report XML - if it exists
|
@@ -127,7 +129,7 @@ module OpenStudioMeasureTester
|
|
127
129
|
@total_failures += mhash[:measure_failures]
|
128
130
|
@total_skipped += mhash[:measure_skipped]
|
129
131
|
@total_compatibility_errors += mhash[:measure_compatibility_errors]
|
130
|
-
@total_loaded
|
132
|
+
@total_loaded &&= mhash[:loaded]
|
131
133
|
@total_load_errors.concat(mhash[:load_errors])
|
132
134
|
end
|
133
135
|
|
@@ -147,7 +149,7 @@ module OpenStudioMeasureTester
|
|
147
149
|
@summary[:total_loaded] = @total_loaded
|
148
150
|
@summary[:total_load_errors] = @total_load_errors
|
149
151
|
@summary[:by_measure] = @measure_results
|
150
|
-
|
152
|
+
|
151
153
|
# pp @summary
|
152
154
|
|
153
155
|
FileUtils.mkdir "#{@path_to_results}/" unless Dir.exist? "#{@path_to_results}/"
|
@@ -1,5 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
########################################################################################################################
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
4
|
+
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC. All rights reserved.
|
3
5
|
#
|
4
6
|
# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
|
5
7
|
# following conditions are met:
|
@@ -96,7 +98,7 @@ module OpenStudioMeasureTester
|
|
96
98
|
severity: :warning,
|
97
99
|
file_type: :test
|
98
100
|
}, {
|
99
|
-
regex:
|
101
|
+
regex: %r{require .openstudio/ruleset },
|
100
102
|
check_type: :if_exists,
|
101
103
|
message: "Require openstudio/ruleset/* is deprecated. Use require 'openstudio/measure/*'",
|
102
104
|
type: :syntax,
|
@@ -166,10 +168,10 @@ module OpenStudioMeasureTester
|
|
166
168
|
begin
|
167
169
|
# there seems to be a race condition with the infoExtractor method
|
168
170
|
measure_info = infoExtractor(measure, OpenStudio::Model::OptionalModel.new, OpenStudio::OptionalWorkspace.new)
|
169
|
-
rescue NameError =>
|
170
|
-
log_message("Unable to parse info from measure. Error: '#{
|
171
|
-
rescue StandardError =>
|
172
|
-
log_message("Unknown error extracting measure info. Error #{
|
171
|
+
rescue NameError => e
|
172
|
+
log_message("Unable to parse info from measure. Error: '#{e}'", :general, :error)
|
173
|
+
rescue StandardError => e
|
174
|
+
log_message("Unknown error extracting measure info. Error #{e}", :general, :error)
|
173
175
|
end
|
174
176
|
|
175
177
|
measure_hash = generate_measure_hash(measure_dir, measure, measure_info)
|
@@ -236,11 +238,11 @@ module OpenStudioMeasureTester
|
|
236
238
|
def run_regex_checks(measure_dir)
|
237
239
|
def check(data, check)
|
238
240
|
if check[:check_type] == :if_exists
|
239
|
-
if data
|
241
|
+
if data.match?(check[:regex])
|
240
242
|
log_message(check[:message], check[:type], check[:severity])
|
241
243
|
end
|
242
244
|
elsif check[:check_type] == :if_missing
|
243
|
-
if data
|
245
|
+
if !data&.match?(check[:regex])
|
244
246
|
log_message(check[:message], check[:type], check[:severity])
|
245
247
|
end
|
246
248
|
end
|
@@ -273,11 +275,11 @@ module OpenStudioMeasureTester
|
|
273
275
|
clean_name = name
|
274
276
|
|
275
277
|
# Check for parenthetical names
|
276
|
-
if clean_name
|
278
|
+
if clean_name.match?(/\(.+?\)/)
|
277
279
|
log_message("#{name_type} '#{name}' appears to have units. Set units in the setUnits method.", severity)
|
278
280
|
end
|
279
281
|
|
280
|
-
if clean_name
|
282
|
+
if clean_name.match?(/\?|\.|\#/)
|
281
283
|
log_message("#{name_type} '#{name}' cannot contain ?#.[] characters.", :syntax, severity)
|
282
284
|
end
|
283
285
|
|
@@ -1,5 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
########################################################################################################################
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
4
|
+
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC. All rights reserved.
|
3
5
|
#
|
4
6
|
# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
|
5
7
|
# following conditions are met:
|
@@ -58,7 +60,7 @@ module OpenStudioMeasureTester
|
|
58
60
|
if !logs.empty?
|
59
61
|
sha = logs.first.sha
|
60
62
|
end
|
61
|
-
rescue StandardError =>
|
63
|
+
rescue StandardError => e
|
62
64
|
puts 'Could not find .git for measure(s), will not be able to report git information'
|
63
65
|
end
|
64
66
|
|
@@ -1,5 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
########################################################################################################################
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
4
|
+
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC. All rights reserved.
|
3
5
|
#
|
4
6
|
# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
|
5
7
|
# following conditions are met:
|
@@ -69,7 +71,7 @@ module OpenStudioMeasureTester
|
|
69
71
|
desc 'Run RuboCop Auto Correct on Measures'
|
70
72
|
task :auto_correct do
|
71
73
|
# original_dir is the location where Rakefile exists, Dir.pwd is where the rake task was called.
|
72
|
-
runner = OpenStudioMeasureTester::Runner.new(Rake.application.original_dir
|
74
|
+
runner = OpenStudioMeasureTester::Runner.new(Rake.application.original_dir)
|
73
75
|
|
74
76
|
exit runner.run_rubocop(false, true)
|
75
77
|
end
|
@@ -1,5 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
########################################################################################################################
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
4
|
+
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC. All rights reserved.
|
3
5
|
#
|
4
6
|
# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
|
5
7
|
# following conditions are met:
|
@@ -65,7 +67,7 @@ module OpenStudioMeasureTester
|
|
65
67
|
end
|
66
68
|
|
67
69
|
def parse_results
|
68
|
-
Dir[File.join(@path_to_results,'rubocop-results.xml')].each do |file|
|
70
|
+
Dir[File.join(@path_to_results, 'rubocop-results.xml')].each do |file|
|
69
71
|
puts "Parsing Rubocop report #{file}"
|
70
72
|
|
71
73
|
measure_names = []
|
@@ -1,3 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
########################################################################################################################
|
4
|
+
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC. All rights reserved.
|
5
|
+
#
|
6
|
+
# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
|
7
|
+
# following conditions are met:
|
8
|
+
#
|
9
|
+
# (1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following
|
10
|
+
# disclaimer.
|
11
|
+
#
|
12
|
+
# (2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
|
13
|
+
# following disclaimer in the documentation and/or other materials provided with the distribution.
|
14
|
+
#
|
15
|
+
# (3) Neither the name of the copyright holder nor the names of any contributors may be used to endorse or promote
|
16
|
+
# products derived from this software without specific prior written permission from the respective party.
|
17
|
+
#
|
18
|
+
# (4) Other than as required in clauses (1) and (2), distributions in any form of modifications or other derivative
|
19
|
+
# works may not use the "OpenStudio" trademark, "OS", "os", or any other confusingly similar designation without
|
20
|
+
# specific prior written permission from Alliance for Sustainable Energy, LLC.
|
21
|
+
#
|
22
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
23
|
+
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
24
|
+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER, THE UNITED STATES GOVERNMENT, OR ANY CONTRIBUTORS BE LIABLE FOR
|
25
|
+
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
26
|
+
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
27
|
+
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
28
|
+
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
29
|
+
########################################################################################################################
|
30
|
+
|
1
31
|
module OpenStudioMeasureTester
|
2
32
|
# The runner is the workhorse that executes the tests. This class does not invoke Rake and can be run
|
3
33
|
# as a library method or as a CLI call
|
@@ -196,73 +226,70 @@ module OpenStudioMeasureTester
|
|
196
226
|
num_tests = 0
|
197
227
|
openstudio_version = OpenStudio::VersionString.new(OpenStudio.openStudioVersion)
|
198
228
|
Dir["#{@base_dir}/**/*_Test.rb", "#{@base_dir}/**/*_test.rb"].uniq.each do |file|
|
199
|
-
|
229
|
+
file = File.expand_path(file)
|
230
|
+
measure_dir = File.expand_path(File.join(File.dirname(file), '..'))
|
231
|
+
|
232
|
+
# check measure xml
|
233
|
+
compatible = {
|
234
|
+
compatible: true,
|
235
|
+
message: '',
|
236
|
+
openstudio_version: openstudio_version.str,
|
237
|
+
measure_min_version: 'None',
|
238
|
+
measure_max_version: 'None',
|
239
|
+
loaded: false,
|
240
|
+
load_errors: []
|
241
|
+
}
|
200
242
|
begin
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
loaded: false,
|
212
|
-
load_errors: []
|
213
|
-
}
|
214
|
-
begin
|
215
|
-
measure = OpenStudio::BCLMeasure.new(measure_dir)
|
216
|
-
compatible[:measure_name] = measure.className
|
217
|
-
measure.files.each do |f|
|
218
|
-
if f.fileName == 'measure.rb'
|
219
|
-
if !f.minCompatibleVersion.empty?
|
220
|
-
min_version = f.minCompatibleVersion.get
|
221
|
-
compatible[:measure_min_version] = min_version.str
|
222
|
-
if openstudio_version < min_version
|
223
|
-
compatible[:compatible] = false
|
224
|
-
compatible[:message] = "OpenStudio Version #{openstudio_version.str} < Min Version #{min_version.str}"
|
225
|
-
end
|
243
|
+
measure = OpenStudio::BCLMeasure.new(measure_dir)
|
244
|
+
compatible[:measure_name] = measure.className
|
245
|
+
measure.files.each do |f|
|
246
|
+
if f.fileName == 'measure.rb'
|
247
|
+
if !f.minCompatibleVersion.empty?
|
248
|
+
min_version = f.minCompatibleVersion.get
|
249
|
+
compatible[:measure_min_version] = min_version.str
|
250
|
+
if openstudio_version < min_version
|
251
|
+
compatible[:compatible] = false
|
252
|
+
compatible[:message] = "OpenStudio Version #{openstudio_version.str} < Min Version #{min_version.str}"
|
226
253
|
end
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
254
|
+
end
|
255
|
+
if !f.maxCompatibleVersion.empty?
|
256
|
+
max_version = f.maxCompatibleVersion.get
|
257
|
+
compatible[:measure_max_version] = max_version.str
|
258
|
+
if openstudio_version > max_version
|
259
|
+
compatible[:compatible] = false
|
260
|
+
compatible[:message] = "OpenStudio Version #{openstudio_version.str} > Max Version #{max_version.str}"
|
234
261
|
end
|
235
262
|
end
|
236
263
|
end
|
237
|
-
rescue StandardError => exception
|
238
|
-
compatible[:compatible] = false
|
239
|
-
compatible[:message] = exception.message
|
240
264
|
end
|
265
|
+
rescue StandardError => e
|
266
|
+
compatible[:compatible] = false
|
267
|
+
compatible[:message] = e.message
|
268
|
+
end
|
241
269
|
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
270
|
+
if !compatible[:compatible]
|
271
|
+
puts "Measure not compatible: #{measure_dir}, #{compatible[:message]}"
|
272
|
+
next
|
273
|
+
end
|
246
274
|
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
end
|
275
|
+
# load test
|
276
|
+
puts "Loading file for testing: #{file}"
|
277
|
+
begin
|
278
|
+
load file
|
279
|
+
compatible[:loaded] = true
|
280
|
+
num_tests += 1
|
281
|
+
rescue StandardError, LoadError => e
|
282
|
+
compatible[:load_errors] << e.message
|
283
|
+
end
|
284
|
+
|
285
|
+
ensure
|
286
|
+
# Write out the compatibility
|
287
|
+
# write out to a file that the measure is not applicable
|
288
|
+
os_compatible_file = "#{@base_dir}/test_results/minitest/compatibility/#{compatible[:measure_name]}.json"
|
289
|
+
puts os_compatible_file
|
290
|
+
FileUtils.mkdir_p File.dirname(os_compatible_file) unless Dir.exist? File.dirname(os_compatible_file)
|
291
|
+
File.open(os_compatible_file, 'w') do |f|
|
292
|
+
f << JSON.pretty_generate(compatible)
|
266
293
|
end
|
267
294
|
end
|
268
295
|
|
@@ -295,11 +322,11 @@ module OpenStudioMeasureTester
|
|
295
322
|
# openstudio_measure_tester.rb file, so it will not run.
|
296
323
|
begin
|
297
324
|
Minitest.run ['--verbose']
|
298
|
-
rescue StandardError =>
|
325
|
+
rescue StandardError => e
|
299
326
|
puts
|
300
327
|
puts '!!!!!!!!!!!!!!!!!!!!! Minitest Error Occurred !!!!!!!!!!!!!!!!!!!!!'
|
301
|
-
puts
|
302
|
-
puts
|
328
|
+
puts e.message
|
329
|
+
puts e.backtrace
|
303
330
|
puts '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
|
304
331
|
puts
|
305
332
|
end
|
@@ -1,5 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
########################################################################################################################
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
4
|
+
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC. All rights reserved.
|
3
5
|
#
|
4
6
|
# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
|
5
7
|
# following conditions are met:
|
@@ -27,5 +29,5 @@
|
|
27
29
|
########################################################################################################################
|
28
30
|
|
29
31
|
module OpenStudioMeasureTester
|
30
|
-
VERSION = '0.
|
32
|
+
VERSION = '0.3.0'.freeze
|
31
33
|
end
|
@@ -1,38 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
lib = File.expand_path('lib', __dir__)
|
2
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
5
|
require 'openstudio_measure_tester/version'
|
4
6
|
|
5
7
|
Gem::Specification.new do |spec|
|
6
|
-
spec.name
|
7
|
-
spec.version
|
8
|
-
spec.authors
|
9
|
-
spec.email
|
8
|
+
spec.name = 'openstudio_measure_tester'
|
9
|
+
spec.version = OpenStudioMeasureTester::VERSION
|
10
|
+
spec.authors = ['Nicholas Long', 'Katherine Fleming', 'Daniel Macumber', 'Robert Guglielmetti']
|
11
|
+
spec.email = ['nicholas.long@nrel.gov']
|
10
12
|
|
11
|
-
spec.
|
12
|
-
spec.
|
13
|
-
spec.
|
13
|
+
spec.homepage = 'https://openstudio.nrel.gov'
|
14
|
+
spec.summary = 'Testing framework for OpenStudio measures'
|
15
|
+
spec.description = 'Testing framework for OpenStudio measures'
|
16
|
+
spec.metadata = {
|
17
|
+
'bug_tracker_uri' => 'https://github.com/NREL/OpenStudio-measure-tester-gem/issues',
|
18
|
+
'changelog_uri' => 'https://github.com/NREL/OpenStudio-measure-tester-gem/blob/develop/CHANGELOG.md',
|
19
|
+
# 'documentation_uri' => 'https://www.rubydoc.info/gems/openstudio_measure_tester/#{gem.version}',
|
20
|
+
'source_code_uri' => "https://github.com/NREL/OpenStudio-measure-tester-gem/tree/v#{spec.version}"
|
21
|
+
}
|
14
22
|
|
15
|
-
spec.files
|
23
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
16
24
|
f.match(%r{^(test|spec|features)/})
|
17
25
|
end
|
18
|
-
spec.bindir
|
19
|
-
spec.executables
|
26
|
+
spec.bindir = 'exe'
|
27
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
28
|
spec.require_paths = ['lib']
|
21
29
|
|
22
|
-
spec.
|
23
|
-
spec.add_development_dependency 'rspec', '3.7.0'
|
30
|
+
spec.required_ruby_version = '~> 2.7.0'
|
24
31
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
spec.
|
34
|
-
spec.
|
35
|
-
spec.add_dependency 'rake', '12.3.1'
|
36
|
-
spec.add_dependency 'rubocop-checkstyle_formatter', '0.4'
|
37
|
-
spec.add_dependency 'simplecov', '0.16.1'
|
32
|
+
spec.add_dependency 'git', '~> 1.6.0'
|
33
|
+
spec.add_dependency 'minitest', '~> 5.14.0'
|
34
|
+
spec.add_dependency 'minitest-reporters', '~> 1.4.2'
|
35
|
+
spec.add_dependency 'rake', '~> 13.0'
|
36
|
+
spec.add_dependency 'rubocop', '~> 0.54.0'
|
37
|
+
spec.add_dependency 'rubocop-checkstyle_formatter', '~> 0.4.0'
|
38
|
+
spec.add_dependency 'simplecov', '~> 0.18.2'
|
39
|
+
|
40
|
+
spec.add_development_dependency 'bundler', '>= 2.1.0'
|
41
|
+
spec.add_development_dependency 'rspec', '~> 3.9'
|
38
42
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openstudio_measure_tester
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nicholas Long
|
@@ -11,134 +11,134 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: exe
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2021-02-15 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
|
-
name:
|
17
|
+
name: git
|
18
18
|
requirement: !ruby/object:Gem::Requirement
|
19
19
|
requirements:
|
20
20
|
- - "~>"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
23
|
-
type: :
|
22
|
+
version: 1.6.0
|
23
|
+
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - "~>"
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
29
|
+
version: 1.6.0
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
31
|
+
name: minitest
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
requirements:
|
34
|
-
- -
|
34
|
+
- - "~>"
|
35
35
|
- !ruby/object:Gem::Version
|
36
|
-
version:
|
37
|
-
type: :
|
36
|
+
version: 5.14.0
|
37
|
+
type: :runtime
|
38
38
|
prerelease: false
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
|
-
- -
|
41
|
+
- - "~>"
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version:
|
43
|
+
version: 5.14.0
|
44
44
|
- !ruby/object:Gem::Dependency
|
45
|
-
name:
|
45
|
+
name: minitest-reporters
|
46
46
|
requirement: !ruby/object:Gem::Requirement
|
47
47
|
requirements:
|
48
|
-
- -
|
48
|
+
- - "~>"
|
49
49
|
- !ruby/object:Gem::Version
|
50
|
-
version:
|
50
|
+
version: 1.4.2
|
51
51
|
type: :runtime
|
52
52
|
prerelease: false
|
53
53
|
version_requirements: !ruby/object:Gem::Requirement
|
54
54
|
requirements:
|
55
|
-
- -
|
55
|
+
- - "~>"
|
56
56
|
- !ruby/object:Gem::Version
|
57
|
-
version:
|
57
|
+
version: 1.4.2
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
|
-
name:
|
59
|
+
name: rake
|
60
60
|
requirement: !ruby/object:Gem::Requirement
|
61
61
|
requirements:
|
62
|
-
- -
|
62
|
+
- - "~>"
|
63
63
|
- !ruby/object:Gem::Version
|
64
|
-
version:
|
64
|
+
version: '13.0'
|
65
65
|
type: :runtime
|
66
66
|
prerelease: false
|
67
67
|
version_requirements: !ruby/object:Gem::Requirement
|
68
68
|
requirements:
|
69
|
-
- -
|
69
|
+
- - "~>"
|
70
70
|
- !ruby/object:Gem::Version
|
71
|
-
version:
|
71
|
+
version: '13.0'
|
72
72
|
- !ruby/object:Gem::Dependency
|
73
|
-
name:
|
73
|
+
name: rubocop
|
74
74
|
requirement: !ruby/object:Gem::Requirement
|
75
75
|
requirements:
|
76
|
-
- -
|
76
|
+
- - "~>"
|
77
77
|
- !ruby/object:Gem::Version
|
78
|
-
version:
|
78
|
+
version: 0.54.0
|
79
79
|
type: :runtime
|
80
80
|
prerelease: false
|
81
81
|
version_requirements: !ruby/object:Gem::Requirement
|
82
82
|
requirements:
|
83
|
-
- -
|
83
|
+
- - "~>"
|
84
84
|
- !ruby/object:Gem::Version
|
85
|
-
version:
|
85
|
+
version: 0.54.0
|
86
86
|
- !ruby/object:Gem::Dependency
|
87
|
-
name:
|
87
|
+
name: rubocop-checkstyle_formatter
|
88
88
|
requirement: !ruby/object:Gem::Requirement
|
89
89
|
requirements:
|
90
|
-
- -
|
90
|
+
- - "~>"
|
91
91
|
- !ruby/object:Gem::Version
|
92
|
-
version:
|
92
|
+
version: 0.4.0
|
93
93
|
type: :runtime
|
94
94
|
prerelease: false
|
95
95
|
version_requirements: !ruby/object:Gem::Requirement
|
96
96
|
requirements:
|
97
|
-
- -
|
97
|
+
- - "~>"
|
98
98
|
- !ruby/object:Gem::Version
|
99
|
-
version:
|
99
|
+
version: 0.4.0
|
100
100
|
- !ruby/object:Gem::Dependency
|
101
|
-
name:
|
101
|
+
name: simplecov
|
102
102
|
requirement: !ruby/object:Gem::Requirement
|
103
103
|
requirements:
|
104
|
-
- -
|
104
|
+
- - "~>"
|
105
105
|
- !ruby/object:Gem::Version
|
106
|
-
version:
|
106
|
+
version: 0.18.2
|
107
107
|
type: :runtime
|
108
108
|
prerelease: false
|
109
109
|
version_requirements: !ruby/object:Gem::Requirement
|
110
110
|
requirements:
|
111
|
-
- -
|
111
|
+
- - "~>"
|
112
112
|
- !ruby/object:Gem::Version
|
113
|
-
version:
|
113
|
+
version: 0.18.2
|
114
114
|
- !ruby/object:Gem::Dependency
|
115
|
-
name:
|
115
|
+
name: bundler
|
116
116
|
requirement: !ruby/object:Gem::Requirement
|
117
117
|
requirements:
|
118
|
-
- -
|
118
|
+
- - ">="
|
119
119
|
- !ruby/object:Gem::Version
|
120
|
-
version:
|
121
|
-
type: :
|
120
|
+
version: 2.1.0
|
121
|
+
type: :development
|
122
122
|
prerelease: false
|
123
123
|
version_requirements: !ruby/object:Gem::Requirement
|
124
124
|
requirements:
|
125
|
-
- -
|
125
|
+
- - ">="
|
126
126
|
- !ruby/object:Gem::Version
|
127
|
-
version:
|
127
|
+
version: 2.1.0
|
128
128
|
- !ruby/object:Gem::Dependency
|
129
|
-
name:
|
129
|
+
name: rspec
|
130
130
|
requirement: !ruby/object:Gem::Requirement
|
131
131
|
requirements:
|
132
|
-
- -
|
132
|
+
- - "~>"
|
133
133
|
- !ruby/object:Gem::Version
|
134
|
-
version:
|
135
|
-
type: :
|
134
|
+
version: '3.9'
|
135
|
+
type: :development
|
136
136
|
prerelease: false
|
137
137
|
version_requirements: !ruby/object:Gem::Requirement
|
138
138
|
requirements:
|
139
|
-
- -
|
139
|
+
- - "~>"
|
140
140
|
- !ruby/object:Gem::Version
|
141
|
-
version:
|
141
|
+
version: '3.9'
|
142
142
|
description: Testing framework for OpenStudio measures
|
143
143
|
email:
|
144
144
|
- nicholas.long@nrel.gov
|
@@ -148,11 +148,10 @@ extra_rdoc_files: []
|
|
148
148
|
files:
|
149
149
|
- ".gitignore"
|
150
150
|
- ".rspec"
|
151
|
-
- ".rubocop-http---s3-amazonaws-com-openstudio-resources-styles-rubocop-yml"
|
152
151
|
- ".rubocop.yml"
|
153
|
-
- ".travis.yml"
|
154
152
|
- CHANGELOG.md
|
155
153
|
- Gemfile
|
154
|
+
- Jenkinsfile
|
156
155
|
- LICENSE.md
|
157
156
|
- README.md
|
158
157
|
- Rakefile
|
@@ -184,24 +183,26 @@ files:
|
|
184
183
|
- openstudio_measure_tester.gemspec
|
185
184
|
homepage: https://openstudio.nrel.gov
|
186
185
|
licenses: []
|
187
|
-
metadata:
|
186
|
+
metadata:
|
187
|
+
bug_tracker_uri: https://github.com/NREL/OpenStudio-measure-tester-gem/issues
|
188
|
+
changelog_uri: https://github.com/NREL/OpenStudio-measure-tester-gem/blob/develop/CHANGELOG.md
|
189
|
+
source_code_uri: https://github.com/NREL/OpenStudio-measure-tester-gem/tree/v0.3.0
|
188
190
|
post_install_message:
|
189
191
|
rdoc_options: []
|
190
192
|
require_paths:
|
191
193
|
- lib
|
192
194
|
required_ruby_version: !ruby/object:Gem::Requirement
|
193
195
|
requirements:
|
194
|
-
- - "
|
196
|
+
- - "~>"
|
195
197
|
- !ruby/object:Gem::Version
|
196
|
-
version:
|
198
|
+
version: 2.7.0
|
197
199
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
198
200
|
requirements:
|
199
201
|
- - ">="
|
200
202
|
- !ruby/object:Gem::Version
|
201
203
|
version: '0'
|
202
204
|
requirements: []
|
203
|
-
|
204
|
-
rubygems_version: 2.4.5.1
|
205
|
+
rubygems_version: 3.1.4
|
205
206
|
signing_key:
|
206
207
|
specification_version: 4
|
207
208
|
summary: Testing framework for OpenStudio measures
|
data/.travis.yml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
sudo: true
|
2
|
-
language: ruby
|
3
|
-
rvm:
|
4
|
-
- 2.2.4
|
5
|
-
matrix:
|
6
|
-
include:
|
7
|
-
- env: OPENSTUDIO_VERSION=2.4.0 && OPENSTUDIO_SHA=f58a3e1808 && RUBYLIB=/usr/Ruby
|
8
|
-
- env: OPENSTUDIO_VERSION=2.5.1 && OPENSTUDIO_SHA=4f268e2854 && RUBYLIB=/usr/Ruby
|
9
|
-
before_install: gem install bundler -v 1.16.2
|
10
|
-
before_script:
|
11
|
-
- curl -sLO https://raw.githubusercontent.com/NREL/OpenStudio-server/develop/docker/deployment/scripts/install_openstudio.sh
|
12
|
-
- chmod +x install_openstudio.sh
|
13
|
-
- sudo ./install_openstudio.sh $OPENSTUDIO_VERSION $OPENSTUDIO_SHA
|
14
|
-
script:
|
15
|
-
- bundle exec rake
|