diff --git a/.rubocop.yml b/.rubocop.yml index 316ff44..c0a32d6 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,5 +1,5 @@ AllCops: - TargetRubyVersion: 2.1.5 + TargetRubyVersion: 2.3.3 inherit_from: .rubocop_todo.yml diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 855039c..466013f 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -24,12 +24,6 @@ Metrics/BlockLength: # Offense count: 5 # Cop supports --auto-correct. # Configuration parameters: AutoCorrect. -Performance/HashEachMethods: - Exclude: - - 'lib/jenkins_pipeline_builder/cli/list.rb' - - 'lib/jenkins_pipeline_builder/compiler.rb' - - 'lib/jenkins_pipeline_builder/extensions.rb' - - 'lib/jenkins_pipeline_builder/utils.rb' # Offense count: 1 # Configuration parameters: MinBodyLength. diff --git a/jenkins_pipeline_builder.gemspec b/jenkins_pipeline_builder.gemspec index 1c1624e..348d355 100644 --- a/jenkins_pipeline_builder.gemspec +++ b/jenkins_pipeline_builder.gemspec @@ -1,5 +1,4 @@ - -lib = File.expand_path('../lib', __FILE__) +lib = File.expand_path('lib', __dir__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) require 'jenkins_pipeline_builder/version' diff --git a/lib/jenkins_pipeline_builder.rb b/lib/jenkins_pipeline_builder.rb index 7937750..f9cf49f 100644 --- a/lib/jenkins_pipeline_builder.rb +++ b/lib/jenkins_pipeline_builder.rb @@ -41,7 +41,7 @@ class << self attr_reader :client, :credentials, :debug, :file_mode attr_writer :logger def generator - @_generator ||= Generator.new + @generator ||= Generator.new end def file_mode! diff --git a/lib/jenkins_pipeline_builder/cli/helper.rb b/lib/jenkins_pipeline_builder/cli/helper.rb index d7e532a..4dbe619 100644 --- a/lib/jenkins_pipeline_builder/cli/helper.rb +++ b/lib/jenkins_pipeline_builder/cli/helper.rb @@ -80,6 +80,7 @@ def self.valid_cli_creds?(options) def self.process_creds_file(file) return load File.expand_path(file) if file.end_with? 'rb' return self.jenkins_api_creds = JSON.parse(IO.read(File.expand_path(file))) if file.end_with? 'json' + self.jenkins_api_creds = YAML.load_file(File.expand_path(file)) end @@ -97,14 +98,13 @@ def self.process_cli_creds(options) end end - private_class_method - def self.find_default_file default_file_name = "#{ENV['HOME']}/.jenkins_api_client/login" found_suffix = nil DEFAULT_FILE_FORMATS.each do |suffix| next unless File.exist?("#{default_file_name}.#{suffix}") + if !found_suffix found_suffix = suffix else @@ -118,6 +118,7 @@ def self.find_default_file def self.logger JenkinsPipelineBuilder.logger end + private_class_method :find_default_file, :logger end end end diff --git a/lib/jenkins_pipeline_builder/cli/list.rb b/lib/jenkins_pipeline_builder/cli/list.rb index bf75e4f..5a7f71e 100644 --- a/lib/jenkins_pipeline_builder/cli/list.rb +++ b/lib/jenkins_pipeline_builder/cli/list.rb @@ -39,6 +39,7 @@ def job_attributes entries = JenkinsPipelineBuilder.registry.registry[:job] entries.each do |name, set| next unless set.is_a? ExtensionSet + ext = set.extensions.first display_module(name, ext) end diff --git a/lib/jenkins_pipeline_builder/compiler.rb b/lib/jenkins_pipeline_builder/compiler.rb index f6bd495..26777f1 100644 --- a/lib/jenkins_pipeline_builder/compiler.rb +++ b/lib/jenkins_pipeline_builder/compiler.rb @@ -33,11 +33,14 @@ def get_settings_bag(item_bag, settings_bag = {}) item = item_bag[:value] bag = {} return unless item.is_a?(Hash) + item.keys.each do |k| val = item[k] next unless val.is_a? String + new_value = resolve_value(val, settings_bag) return nil if new_value.nil? + bag[k] = new_value end my_settings_bag = settings_bag.clone @@ -48,7 +51,7 @@ def compile_job(item, settings = {}) new_item = compile(item, settings) [true, new_item] rescue StandardError => e - return [false, [e.message]] + [false, [e.message]] end def compile(item, settings = {}) @@ -67,10 +70,12 @@ def compile(item, settings = {}) def handle_enable(item, settings) return item unless item.is_a? Hash + if enable_block_present? item enabled_switch = resolve_value(item[:enabled], settings) return {} if enabled_switch == 'false' raise "Invalid value for #{item[:enabled]}: #{enabled_switch}" if enabled_switch != 'true' + if item[:parameters].is_a? Hash item = item.merge item[:parameters] item.delete :parameters @@ -105,8 +110,10 @@ def compile_array(array, settings) def compile_array_item(item, settings, array) raise "Found a nil value when processing following array:\n #{array.inspect}" if item.nil? + payload = compile(item, settings) raise "Failed to resolve:\n===>item #{item}\n\n===>of list: #{array.inspect}" if payload.nil? + payload end @@ -114,8 +121,10 @@ def compile_item(key, value, settings) if value.nil? raise "key: #{key} has a nil value, this is often a yaml syntax error. Skipping children and siblings" end + payload = compile(value, settings) raise "Failed to resolve:\n===>key: #{key}\n\n===>value: #{value} payload" if payload.nil? + payload end @@ -135,6 +144,7 @@ def resolve_value(value, settings) pull_job = value.to_s.match(/{{pull@(.*)}}/) if pull_job return pull_job[1] unless settings[:pull_request_number] + value = pull_job[1] end @@ -151,16 +161,19 @@ def resolve_value(value, settings) vars.select! do |var| var_val = settings[var] raise "Could not find defined substitution variable: #{var}" if var_val.nil? + value_s.gsub!("{{#{var}}}", var_val.to_s) var_val.nil? end return nil if vars.count != 0 + value_s end def correct_job_names!(value) vars = value.scan(/{{job@(.*)}}/).flatten return unless vars.count > 0 + vars.select! do |var| var_val = job_collection[var.to_s] value.gsub!("{{job@#{var}}}", var_val[:value][:name]) unless var_val.nil? diff --git a/lib/jenkins_pipeline_builder/extension_set.rb b/lib/jenkins_pipeline_builder/extension_set.rb index 5761f74..0dcc77c 100644 --- a/lib/jenkins_pipeline_builder/extension_set.rb +++ b/lib/jenkins_pipeline_builder/extension_set.rb @@ -12,6 +12,7 @@ class ExtensionSet SET_METHODS.each do |method_name| define_method method_name do |value = nil| return settings[method_name] if value.nil? + settings[method_name] = value end end @@ -53,9 +54,11 @@ def add_extension(type, version, settings, path = nil) def installed_version return @version if @version + reg = JenkinsPipelineBuilder.registry version = reg.versions[settings[:plugin_id]] raise "Plugin #{settings[:name]} is not installed (plugin_id: #{settings[:plugin_id]})" if version.nil? + self.installed_version = version @version end @@ -103,6 +106,7 @@ def xml(path: false, version: '0', &block) end unless block raise "no block found for version #{version}" unless blocks.key version + return blocks[version][:block] end store_xml version, block, path @@ -122,6 +126,7 @@ def version(ver, &block) end return instance_variable_get(method_name) unless block + blocks[version] = {} unless blocks[version] blocks[version][method_name] = block end diff --git a/lib/jenkins_pipeline_builder/extensions.rb b/lib/jenkins_pipeline_builder/extensions.rb index 1dd7bbe..d3ade0e 100644 --- a/lib/jenkins_pipeline_builder/extensions.rb +++ b/lib/jenkins_pipeline_builder/extensions.rb @@ -40,6 +40,7 @@ class Extension EXT_METHODS.keys.each do |method_name| define_method method_name do |value = nil| return instance_variable_get("@#{method_name}") if value.nil? + instance_variable_set("@#{method_name}", value) end end @@ -59,6 +60,7 @@ def valid? def execute(value, n_xml) errors = check_parameters value raise ArgumentError, errors.join("\n") if errors.any? + unless path raise ArgumentError, %(Extension #{name} has no valid path Check ModuleRegistry#entries and the definition of the extension @@ -74,11 +76,13 @@ def execute(value, n_xml) end def check_parameters(value) - return [] if parameters && parameters.empty? + return [] if parameters&.empty? return [] unless value.is_a? Hash + errors = [] value.each_key do |key| - next if parameters && parameters.include?(key) + next if parameters&.include?(key) + errors << "Extension #{name} does not support parameter #{key}" end errors diff --git a/lib/jenkins_pipeline_builder/extensions/helpers/publishers/cobertura_report_helper.rb b/lib/jenkins_pipeline_builder/extensions/helpers/publishers/cobertura_report_helper.rb index 98f13d1..ebeffa8 100644 --- a/lib/jenkins_pipeline_builder/extensions/helpers/publishers/cobertura_report_helper.rb +++ b/lib/jenkins_pipeline_builder/extensions/helpers/publishers/cobertura_report_helper.rb @@ -2,6 +2,7 @@ class CoberturaReportHelper < ExtensionHelper def thresholds @thresholds ||= params[:metric_targets] return @thresholds if @thresholds + @thresholds = { failing: [ { type: 'type', value: 0 }, diff --git a/lib/jenkins_pipeline_builder/extensions/job_attributes.rb b/lib/jenkins_pipeline_builder/extensions/job_attributes.rb index 50ef76e..5d30872 100644 --- a/lib/jenkins_pipeline_builder/extensions/job_attributes.rb +++ b/lib/jenkins_pipeline_builder/extensions/job_attributes.rb @@ -227,6 +227,7 @@ if params[:changelog_to_branch] opts = params[:changelog_to_branch] raise 'remote and branch are required for changelog_to_branch' unless opts[:remote] && opts[:branch] + send('hudson.plugins.git.extensions.impl.ChangelogToBranch') do options do compareRemote opts[:remote] diff --git a/lib/jenkins_pipeline_builder/extensions/publishers.rb b/lib/jenkins_pipeline_builder/extensions/publishers.rb index 6cd9c47..cabc374 100644 --- a/lib/jenkins_pipeline_builder/extensions/publishers.rb +++ b/lib/jenkins_pipeline_builder/extensions/publishers.rb @@ -294,7 +294,7 @@ groovyScript params[:groovy_script] behavior params[:behavior] || '0' runFormMatrixParent 'false' - params[:additional_classpaths] && params[:additional_classpaths].each do |path| + params[:additional_classpaths]&.each do |path| send('org.jvnet.hudson.plugins.groovypostbuild.GroovyScriptPath') do path path[:path] || '/' end @@ -541,7 +541,7 @@ xml do |params| send('htmlpublisher.HtmlPublisher', 'plugin' => 'htmlpublisher') do send('reportTargets') do - params[:report_targets] && params[:report_targets].each do |target| + params[:report_targets]&.each do |target| send('htmlpublisher.HtmlPublisherTarget') do reportName target[:report_title] || 'HTML Report' reportDir target[:report_dir] || '' @@ -588,7 +588,7 @@ xml do |params| send('xunit', 'plugin' => 'xunit') do send('types') do - params[:types] && params[:types].each do |type| + params[:types]&.each do |type| send(type[:type]) do pattern type[:pattern] skipNoTestFiles type[:skip_no_test_files] || false diff --git a/lib/jenkins_pipeline_builder/extensions/wrappers.rb b/lib/jenkins_pipeline_builder/extensions/wrappers.rb index 9bae294..9170661 100644 --- a/lib/jenkins_pipeline_builder/extensions/wrappers.rb +++ b/lib/jenkins_pipeline_builder/extensions/wrappers.rb @@ -98,6 +98,7 @@ passwords = wrapper end break unless passwords + passwordEntries do passwords.each do |password| EnvInjectPasswordEntry do diff --git a/lib/jenkins_pipeline_builder/generator.rb b/lib/jenkins_pipeline_builder/generator.rb index c0226a0..73dce40 100644 --- a/lib/jenkins_pipeline_builder/generator.rb +++ b/lib/jenkins_pipeline_builder/generator.rb @@ -66,6 +66,7 @@ def pull_request(path, project_name, base_branch_only = false) errors = [] pr_generator.open_prs.each do |pr| next if base_branch_only && defaults[:git_branch] != pr[:base] + pr_generator.convert! job_collection, pr[:number] error = publish(project_name) errors << error unless error.empty? @@ -105,6 +106,7 @@ def resolve_project(project) def resolve_job_by_name(name, settings = {}) job = job_collection.get_item(name) raise "Failed to locate job by name '#{name}'" if job.nil? + job_value = job[:value] logger.debug "Compiling job #{name}" compiler = JenkinsPipelineBuilder::Compiler.new self @@ -214,6 +216,7 @@ def publish_promotions(promotions, jobs) # A hash of promoted_builds names => associated job names promotion_job_pairs = jobs.each_with_object({}) do |j, acc| next unless j[:result][:promoted_builds] + j[:result][:promoted_builds].each do |promotion_name| acc[promotion_name] = j[:result][:name] end @@ -238,6 +241,7 @@ def publish_jobs(jobs, errors = {}) logger.info "Processing #{i}" job = i[:result] raise "Result is empty for #{i}" if job.nil? + job = Job.new job success, payload = job.create_or_update errors[job.name] = payload unless success diff --git a/lib/jenkins_pipeline_builder/job.rb b/lib/jenkins_pipeline_builder/job.rb index a720ab8..b8e6e51 100644 --- a/lib/jenkins_pipeline_builder/job.rb +++ b/lib/jenkins_pipeline_builder/job.rb @@ -17,6 +17,7 @@ def logger def create_or_update success, payload = to_xml return success, payload unless success + xml = payload return local_output(xml) if JenkinsPipelineBuilder.debug || JenkinsPipelineBuilder.file_mode @@ -31,6 +32,7 @@ def to_xml job[:job_type] = 'free_style' unless job[:job_type] type = job[:job_type] return false, "Job type: #{type} is not one of #{job_methods.join(', ')}" unless known_type? type + @xml = setup_freestyle_base(job) payload = send("update_#{type}") @@ -109,6 +111,7 @@ def setup_freestyle_base(params) if params.key?(:template) template_name = params[:template] raise "Job template '#{template_name}' can't be resolved." unless @job_templates.key?(template_name) + params.delete(:template) template = @job_templates[template_name] params = template.deep_merge(params) diff --git a/lib/jenkins_pipeline_builder/job_collection.rb b/lib/jenkins_pipeline_builder/job_collection.rb index 715e1ee..90b8647 100644 --- a/lib/jenkins_pipeline_builder/job_collection.rb +++ b/lib/jenkins_pipeline_builder/job_collection.rb @@ -108,6 +108,7 @@ def process_collection!(name, key, value, remote) # skip if the existing item is local and the new item is remote return if remote && !existing_remote raise "Duplicate item with name '#{name}' was detected." unless existing_remote && !remote + # override if the existing item is remote and the new is local logger.info "Duplicate item with name '#{name}' was detected from the remote folder." end @@ -118,6 +119,7 @@ def load_extensions(path) path = "#{path}/extensions" path = File.expand_path(path, Dir.getwd) return unless File.directory?(path) + logger.info "Loading extensions from folder #{path}" logger.info Dir.glob("#{path}/*.rb").inspect Dir.glob("#{path}/**/*.rb").each do |file| diff --git a/lib/jenkins_pipeline_builder/module_registry.rb b/lib/jenkins_pipeline_builder/module_registry.rb index 91638fa..c4dbe87 100644 --- a/lib/jenkins_pipeline_builder/module_registry.rb +++ b/lib/jenkins_pipeline_builder/module_registry.rb @@ -29,6 +29,7 @@ def initialize def versions # Return a hash with a default of 1000 so that we'll get the newest in debug return Hash.new { |_| '1000.0' } if JenkinsPipelineBuilder.debug + @versions ||= JenkinsPipelineBuilder.client.plugin.list_installed end @@ -77,6 +78,7 @@ def get(path) def get_by_path_collection(path, registry) item = registry[path.shift.to_sym] return item if path.count == 0 + get_by_path_collection(path, item) end @@ -88,8 +90,10 @@ def traverse_registry_path(path, params, n_xml) def traverse_registry(registry, params, n_xml, strict = false) params.each do |key, value| next unless registry.is_a? Hash + unless registry.key? key raise TypeError, "!!!! could not find key #{key} !!!!" if strict + next end reg_value = registry[key] diff --git a/lib/jenkins_pipeline_builder/promotion.rb b/lib/jenkins_pipeline_builder/promotion.rb index ab42c1a..67a7ab6 100644 --- a/lib/jenkins_pipeline_builder/promotion.rb +++ b/lib/jenkins_pipeline_builder/promotion.rb @@ -31,6 +31,7 @@ def initialize(generator) def create(params, job_name) success, payload = prom_to_xml(params) return success, payload unless success + xml = payload return local_output(xml) if JenkinsPipelineBuilder.debug || JenkinsPipelineBuilder.file_mode diff --git a/lib/jenkins_pipeline_builder/pull_request_generator.rb b/lib/jenkins_pipeline_builder/pull_request_generator.rb index aad1174..1a152ee 100644 --- a/lib/jenkins_pipeline_builder/pull_request_generator.rb +++ b/lib/jenkins_pipeline_builder/pull_request_generator.rb @@ -37,6 +37,7 @@ def convert!(job_collection, pr_number) def delete_closed_prs return if JenkinsPipelineBuilder.debug + jobs_to_delete = JenkinsPipelineBuilder.client.job.list "^#{application_name}-PR(\\d+)-(.*)$" open_prs.each do |pr| jobs_to_delete.reject! { |j| j.start_with? "#{application_name}-PR#{pr[:number]}" } diff --git a/lib/jenkins_pipeline_builder/remote_dependencies.rb b/lib/jenkins_pipeline_builder/remote_dependencies.rb index 5d824f0..d6b19fd 100644 --- a/lib/jenkins_pipeline_builder/remote_dependencies.rb +++ b/lib/jenkins_pipeline_builder/remote_dependencies.rb @@ -88,8 +88,8 @@ def template_path(path, template) def download_yaml(url, file, remote_opts = {}) entries[url] = file logger.info "Downloading #{url} to #{file}.tar" - open("#{file}.tar", 'w') do |local_file| - open(url, remote_opts) do |remote_file| + File.open("#{file}.tar", 'w') do |local_file| + File.open(url, remote_opts) do |remote_file| local_file.write(Zlib::GzipReader.new(remote_file).read) end end diff --git a/lib/jenkins_pipeline_builder/utils.rb b/lib/jenkins_pipeline_builder/utils.rb index c743a6a..27ad29c 100644 --- a/lib/jenkins_pipeline_builder/utils.rb +++ b/lib/jenkins_pipeline_builder/utils.rb @@ -30,13 +30,14 @@ def deep_merge(second) module JenkinsPipelineBuilder class Utils # Code was duplicated from jeknins_api_client - def self.symbolize_keys_deep!(h) - return unless h.is_a?(Hash) - h.keys.each do |k| - ks = k.respond_to?(:to_sym) ? k.to_sym : k - h[ks] = h.delete k # Preserve order even when k == ks - symbolize_keys_deep! h[ks] if h[ks].is_a? Hash - h[ks].each { |item| symbolize_keys_deep!(item) } if h[ks].is_a?(Array) + def self.symbolize_keys_deep!(to_symbolize) + return unless to_symbolize.is_a?(Hash) + + to_symbolize.keys.each do |k| + ks = k.respond_to?(:to_sym) ? k.to_sym : k + to_symbolize[ks] = to_symbolize.delete k # Preserve order even when k == ks + symbolize_keys_deep! to_symbolize[ks] if to_symbolize[ks].is_a? Hash + to_symbolize[ks].each { |item| symbolize_keys_deep!(item) } if to_symbolize[ks].is_a?(Array) end end diff --git a/lib/jenkins_pipeline_builder/view.rb b/lib/jenkins_pipeline_builder/view.rb index 8c31508..77a543c 100644 --- a/lib/jenkins_pipeline_builder/view.rb +++ b/lib/jenkins_pipeline_builder/view.rb @@ -67,6 +67,7 @@ def generate(path) def create(params) # Name is a required parameter. Raise an error if not specified raise ArgumentError, 'Name is required for creating view' unless params.is_a?(Hash) && params[:name] + clean_up_views(params) unless JenkinsPipelineBuilder.debug params[:type] ||= 'listview' create_base_view(params[:name], params[:type], params[:parent_view]) @@ -133,7 +134,8 @@ def get_mode(type) 'dashboardView' => 'hudson.plugins.view.dashboard.Dashboard', 'multijobView' => 'com.tikal.jenkins.plugins.multijob.views.MultiJobView' } - raise "Type #{type} is not supported by Jenkins." unless types.keys.include? type + raise "Type #{type} is not supported by Jenkins." unless types.key?(type) + types[type] end diff --git a/spec/lib/jenkins_pipeline_builder/cli/helper_spec.rb b/spec/lib/jenkins_pipeline_builder/cli/helper_spec.rb index 3e033ca..52cc2f0 100644 --- a/spec/lib/jenkins_pipeline_builder/cli/helper_spec.rb +++ b/spec/lib/jenkins_pipeline_builder/cli/helper_spec.rb @@ -1,4 +1,4 @@ -require File.expand_path('../../spec_helper', __FILE__) +require File.expand_path('../spec_helper', __dir__) describe JenkinsPipelineBuilder::CLI::Helper do file_suffixes = JenkinsPipelineBuilder::CLI::Helper::DEFAULT_FILE_FORMATS diff --git a/spec/lib/jenkins_pipeline_builder/compiler_spec.rb b/spec/lib/jenkins_pipeline_builder/compiler_spec.rb index 9f8d498..abcd0d3 100644 --- a/spec/lib/jenkins_pipeline_builder/compiler_spec.rb +++ b/spec/lib/jenkins_pipeline_builder/compiler_spec.rb @@ -1,4 +1,4 @@ -require File.expand_path('../spec_helper', __FILE__) +require File.expand_path('spec_helper', __dir__) describe JenkinsPipelineBuilder::Compiler do before :all do JenkinsPipelineBuilder.credentials = { diff --git a/spec/lib/jenkins_pipeline_builder/extension_dsl_spec.rb b/spec/lib/jenkins_pipeline_builder/extension_dsl_spec.rb index efb6918..bcebe4a 100644 --- a/spec/lib/jenkins_pipeline_builder/extension_dsl_spec.rb +++ b/spec/lib/jenkins_pipeline_builder/extension_dsl_spec.rb @@ -1,4 +1,4 @@ -require File.expand_path('../spec_helper', __FILE__) +require File.expand_path('spec_helper', __dir__) describe 'extension dsl' do before :all do diff --git a/spec/lib/jenkins_pipeline_builder/extension_set_spec.rb b/spec/lib/jenkins_pipeline_builder/extension_set_spec.rb index 3a2889a..1caa533 100644 --- a/spec/lib/jenkins_pipeline_builder/extension_set_spec.rb +++ b/spec/lib/jenkins_pipeline_builder/extension_set_spec.rb @@ -1,4 +1,4 @@ -require File.expand_path('../spec_helper', __FILE__) +require File.expand_path('spec_helper', __dir__) describe JenkinsPipelineBuilder::ExtensionSet do subject(:set) { JenkinsPipelineBuilder::ExtensionSet.new('foo') {} } diff --git a/spec/lib/jenkins_pipeline_builder/extensions/build_steps_spec.rb b/spec/lib/jenkins_pipeline_builder/extensions/build_steps_spec.rb index 84b2705..2f58b66 100644 --- a/spec/lib/jenkins_pipeline_builder/extensions/build_steps_spec.rb +++ b/spec/lib/jenkins_pipeline_builder/extensions/build_steps_spec.rb @@ -1,4 +1,4 @@ -require File.expand_path('../../spec_helper', __FILE__) +require File.expand_path('../spec_helper', __dir__) describe 'build_steps' do after :each do diff --git a/spec/lib/jenkins_pipeline_builder/extensions/builders_spec.rb b/spec/lib/jenkins_pipeline_builder/extensions/builders_spec.rb index f80c5b4..b4a90ad 100644 --- a/spec/lib/jenkins_pipeline_builder/extensions/builders_spec.rb +++ b/spec/lib/jenkins_pipeline_builder/extensions/builders_spec.rb @@ -1,4 +1,4 @@ -require File.expand_path('../../spec_helper', __FILE__) +require File.expand_path('../spec_helper', __dir__) describe 'builders' do after :each do diff --git a/spec/lib/jenkins_pipeline_builder/extensions/job_attributes_spec.rb b/spec/lib/jenkins_pipeline_builder/extensions/job_attributes_spec.rb index a7295f4..5ced83d 100644 --- a/spec/lib/jenkins_pipeline_builder/extensions/job_attributes_spec.rb +++ b/spec/lib/jenkins_pipeline_builder/extensions/job_attributes_spec.rb @@ -1,4 +1,4 @@ -require File.expand_path('../../spec_helper', __FILE__) +require File.expand_path('../spec_helper', __dir__) describe 'job_attributes' do after :each do diff --git a/spec/lib/jenkins_pipeline_builder/extensions/promotion_conditions_spec.rb b/spec/lib/jenkins_pipeline_builder/extensions/promotion_conditions_spec.rb index 8f183ea..13767de 100644 --- a/spec/lib/jenkins_pipeline_builder/extensions/promotion_conditions_spec.rb +++ b/spec/lib/jenkins_pipeline_builder/extensions/promotion_conditions_spec.rb @@ -1,4 +1,4 @@ -require File.expand_path('../../spec_helper', __FILE__) +require File.expand_path('../spec_helper', __dir__) describe 'promotion_conditions' do after :each do diff --git a/spec/lib/jenkins_pipeline_builder/extensions/publishers_spec.rb b/spec/lib/jenkins_pipeline_builder/extensions/publishers_spec.rb index 45b25d3..00dc61c 100644 --- a/spec/lib/jenkins_pipeline_builder/extensions/publishers_spec.rb +++ b/spec/lib/jenkins_pipeline_builder/extensions/publishers_spec.rb @@ -1,4 +1,4 @@ -require File.expand_path('../../spec_helper', __FILE__) +require File.expand_path('../spec_helper', __dir__) describe 'publishers' do after :each do diff --git a/spec/lib/jenkins_pipeline_builder/extensions/registered_spec.rb b/spec/lib/jenkins_pipeline_builder/extensions/registered_spec.rb index ee34083..1a84896 100644 --- a/spec/lib/jenkins_pipeline_builder/extensions/registered_spec.rb +++ b/spec/lib/jenkins_pipeline_builder/extensions/registered_spec.rb @@ -1,4 +1,4 @@ -require File.expand_path('../../spec_helper', __FILE__) +require File.expand_path('../spec_helper', __dir__) WRAPPERS = { ansicolor: ['0'], artifactory: ['0'], diff --git a/spec/lib/jenkins_pipeline_builder/extensions/triggers_spec.rb b/spec/lib/jenkins_pipeline_builder/extensions/triggers_spec.rb index 73d6e75..149f314 100644 --- a/spec/lib/jenkins_pipeline_builder/extensions/triggers_spec.rb +++ b/spec/lib/jenkins_pipeline_builder/extensions/triggers_spec.rb @@ -1,4 +1,4 @@ -require File.expand_path('../../spec_helper', __FILE__) +require File.expand_path('../spec_helper', __dir__) describe 'triggers' do after :each do diff --git a/spec/lib/jenkins_pipeline_builder/extensions/wrappers_spec.rb b/spec/lib/jenkins_pipeline_builder/extensions/wrappers_spec.rb index 2f5867a..04ad035 100644 --- a/spec/lib/jenkins_pipeline_builder/extensions/wrappers_spec.rb +++ b/spec/lib/jenkins_pipeline_builder/extensions/wrappers_spec.rb @@ -1,4 +1,4 @@ -require File.expand_path('../../spec_helper', __FILE__) +require File.expand_path('../spec_helper', __dir__) describe 'wrappers' do after :each do diff --git a/spec/lib/jenkins_pipeline_builder/extensions_spec.rb b/spec/lib/jenkins_pipeline_builder/extensions_spec.rb index ccedb03..fc358a6 100644 --- a/spec/lib/jenkins_pipeline_builder/extensions_spec.rb +++ b/spec/lib/jenkins_pipeline_builder/extensions_spec.rb @@ -1,4 +1,4 @@ -require File.expand_path('../spec_helper', __FILE__) +require File.expand_path('spec_helper', __dir__) describe JenkinsPipelineBuilder::Extension do subject(:extension) { JenkinsPipelineBuilder::Extension.new } diff --git a/spec/lib/jenkins_pipeline_builder/generator_spec.rb b/spec/lib/jenkins_pipeline_builder/generator_spec.rb index eb3d162..dcc90a6 100644 --- a/spec/lib/jenkins_pipeline_builder/generator_spec.rb +++ b/spec/lib/jenkins_pipeline_builder/generator_spec.rb @@ -1,4 +1,4 @@ -require File.expand_path('../spec_helper', __FILE__) +require File.expand_path('spec_helper', __dir__) describe JenkinsPipelineBuilder::Generator do before :all do @@ -136,7 +136,7 @@ def fixture_path(fixture) let(:pr_master) { { number: 1, base: 'master' } } let(:pr_not_master) { { number: 2, base: 'not-master' } } let(:open_prs) { [pr_master, pr_not_master] } - let(:path) { File.expand_path('../fixtures/generator_tests/pullrequest_pipeline', __FILE__) } + let(:path) { File.expand_path('fixtures/generator_tests/pullrequest_pipeline', __dir__) } it 'produces no errors while creating pipeline PullRequest' do job_name = 'PullRequest' pr_generator = double('pr_generator') @@ -195,7 +195,7 @@ def fixture_path(fixture) github_site: 'https://github.com', git_org: 'testorg', git_repo_name: 'generator_tests' - )).and_return(pr_generator) + )).and_return(pr_generator) expect(pr_generator).to receive(:open_prs).and_return open_prs expect(pr_generator).to receive(:delete_closed_prs) @@ -227,26 +227,26 @@ def fixture_path(fixture) end it 'loads a yaml collection from a path' do - path = File.expand_path('../fixtures/generator_tests/test_yaml_files', __FILE__) + path = File.expand_path('fixtures/generator_tests/test_yaml_files', __dir__) @generator.job_collection.load_from_path path end it 'loads a json collection from a path' do - path = File.expand_path('../fixtures/generator_tests/test_json_files', __FILE__) + path = File.expand_path('fixtures/generator_tests/test_json_files', __dir__) @generator.job_collection.load_from_path path end it 'loads both yaml and json files from a path' do - path = File.expand_path('../fixtures/generator_tests/test_combo_files', __FILE__) + path = File.expand_path('fixtures/generator_tests/test_combo_files', __dir__) @generator.job_collection.load_from_path path end it 'errors when reading a bad yaml file' do - path = File.expand_path('../fixtures/generator_tests/test_bad_yaml_files', __FILE__) + path = File.expand_path('fixtures/generator_tests/test_bad_yaml_files', __dir__) expect { @generator.job_collection.load_from_path path }.to raise_error( CustomErrors::ParseError, /There was an error while parsing a file/ ) end it 'errors when reading a bad json file' do - path = File.expand_path('../fixtures/generator_tests/test_bad_json_files', __FILE__) + path = File.expand_path('fixtures/generator_tests/test_bad_json_files', __dir__) expect { @generator.job_collection.load_from_path path }.to raise_error( CustomErrors::ParseError, /There was an error while parsing a file/ ) @@ -258,7 +258,7 @@ def fixture_path(fixture) allow(JenkinsPipelineBuilder).to receive(:debug).and_return true job_name = 'test_job' body = '' - test_path = File.expand_path('../fixtures/generator_tests', __FILE__) + test_path = File.expand_path('fixtures/generator_tests', __dir__) File.open("#{test_path}/#{job_name}.xml", 'r') do |f| f.each_line do |line| body << line @@ -274,7 +274,7 @@ def fixture_path(fixture) describe '#projects' do it 'returns a list of projects' do - path = File.expand_path('../fixtures/generator_tests/multi_project', __FILE__) + path = File.expand_path('fixtures/generator_tests/multi_project', __dir__) expect(@generator.projects(path)).to eq %w[SamplePipeline1 SamplePipeline2 SamplePipeline3] end end @@ -294,7 +294,7 @@ def fixture_path(fixture) end it 'generates xml and saves to disk without sending jobs to the server' do job_name = 'TemplatePipeline' - path = File.expand_path('../fixtures/generator_tests/template_pipeline', __FILE__) + path = File.expand_path('fixtures/generator_tests/template_pipeline', __dir__) errors = @generator.file(path, job_name) expect(errors).to be_empty expect(File.exist?("out/xml/#{job_name}-10.xml")).to be true diff --git a/spec/lib/jenkins_pipeline_builder/job_collection_spec.rb b/spec/lib/jenkins_pipeline_builder/job_collection_spec.rb index 6159dd7..fd2a5a9 100644 --- a/spec/lib/jenkins_pipeline_builder/job_collection_spec.rb +++ b/spec/lib/jenkins_pipeline_builder/job_collection_spec.rb @@ -1,4 +1,4 @@ -require File.expand_path('../spec_helper', __FILE__) +require File.expand_path('spec_helper', __dir__) describe JenkinsPipelineBuilder::JobCollection do before :all do @@ -21,7 +21,7 @@ context '#load_from_path' do before :all do - path = File.expand_path('../fixtures/job_collection/', __FILE__) + path = File.expand_path('fixtures/job_collection', __dir__) described_class.new.load_from_path path end diff --git a/spec/lib/jenkins_pipeline_builder/job_spec.rb b/spec/lib/jenkins_pipeline_builder/job_spec.rb index fd035cb..f03f392 100644 --- a/spec/lib/jenkins_pipeline_builder/job_spec.rb +++ b/spec/lib/jenkins_pipeline_builder/job_spec.rb @@ -1,4 +1,4 @@ -require File.expand_path('../spec_helper', __FILE__) +require File.expand_path('spec_helper', __dir__) describe JenkinsPipelineBuilder::Job do before :all do diff --git a/spec/lib/jenkins_pipeline_builder/module_registry_spec.rb b/spec/lib/jenkins_pipeline_builder/module_registry_spec.rb index aa88068..754f319 100644 --- a/spec/lib/jenkins_pipeline_builder/module_registry_spec.rb +++ b/spec/lib/jenkins_pipeline_builder/module_registry_spec.rb @@ -1,4 +1,4 @@ -require File.expand_path('../spec_helper', __FILE__) +require File.expand_path('spec_helper', __dir__) describe JenkinsPipelineBuilder::ModuleRegistry do after :each do diff --git a/spec/lib/jenkins_pipeline_builder/promotion_spec.rb b/spec/lib/jenkins_pipeline_builder/promotion_spec.rb index 92c57aa..2d05422 100644 --- a/spec/lib/jenkins_pipeline_builder/promotion_spec.rb +++ b/spec/lib/jenkins_pipeline_builder/promotion_spec.rb @@ -1,4 +1,4 @@ -require File.expand_path('../spec_helper', __FILE__) +require File.expand_path('spec_helper', __dir__) describe JenkinsPipelineBuilder::Promotion do before :all do diff --git a/spec/lib/jenkins_pipeline_builder/pull_request_generator_spec.rb b/spec/lib/jenkins_pipeline_builder/pull_request_generator_spec.rb index ed58e02..75280b2 100644 --- a/spec/lib/jenkins_pipeline_builder/pull_request_generator_spec.rb +++ b/spec/lib/jenkins_pipeline_builder/pull_request_generator_spec.rb @@ -1,4 +1,4 @@ -require File.expand_path('../spec_helper', __FILE__) +require File.expand_path('spec_helper', __dir__) require 'json' describe JenkinsPipelineBuilder::PullRequestGenerator do diff --git a/spec/lib/jenkins_pipeline_builder/spec_helper.rb b/spec/lib/jenkins_pipeline_builder/spec_helper.rb index 3f90812..d29fe8a 100644 --- a/spec/lib/jenkins_pipeline_builder/spec_helper.rb +++ b/spec/lib/jenkins_pipeline_builder/spec_helper.rb @@ -6,7 +6,7 @@ require 'webmock/rspec' require 'equivalent-xml' -require File.expand_path('../../../../lib/jenkins_pipeline_builder', __FILE__) +require File.expand_path('../../../lib/jenkins_pipeline_builder', __dir__) RSpec::Matchers.define :have_min_version do |version| match do |base| diff --git a/spec/lib/jenkins_pipeline_builder/utils_spec.rb b/spec/lib/jenkins_pipeline_builder/utils_spec.rb index c4b1151..cf21f1b 100644 --- a/spec/lib/jenkins_pipeline_builder/utils_spec.rb +++ b/spec/lib/jenkins_pipeline_builder/utils_spec.rb @@ -1,4 +1,4 @@ -require File.expand_path('../spec_helper', __FILE__) +require File.expand_path('spec_helper', __dir__) describe JenkinsPipelineBuilder::Utils do let(:utils) { JenkinsPipelineBuilder::Utils } diff --git a/spec/lib/jenkins_pipeline_builder/view_spec.rb b/spec/lib/jenkins_pipeline_builder/view_spec.rb index 98a210c..c5904ea 100644 --- a/spec/lib/jenkins_pipeline_builder/view_spec.rb +++ b/spec/lib/jenkins_pipeline_builder/view_spec.rb @@ -1,4 +1,4 @@ -require File.expand_path('../spec_helper', __FILE__) +require File.expand_path('spec_helper', __dir__) describe JenkinsPipelineBuilder::View do before(:all) do @@ -12,7 +12,7 @@ generator = JenkinsPipelineBuilder.generator @view = JenkinsPipelineBuilder::View.new(generator) end - let(:path) { File.expand_path('../fixtures/view_test/', __FILE__) } + let(:path) { File.expand_path('fixtures/view_test', __dir__) } let(:view) { { name: 'view', parent_view: 'ParentView', type: 'categorizedView', description: 'ViewTest', regex: 'ViewTest.*', groupingRules: [{ groupRegex: 'ViewTest-1.*', namingRule: '1. Commit Stage' }] } } describe '#generate' do diff --git a/spec/requests/pipeline_spec.rb b/spec/requests/pipeline_spec.rb index e3f11f8..ee0cede 100644 --- a/spec/requests/pipeline_spec.rb +++ b/spec/requests/pipeline_spec.rb @@ -1,4 +1,4 @@ -require File.expand_path('../../lib/jenkins_pipeline_builder/spec_helper', __FILE__) +require File.expand_path('../lib/jenkins_pipeline_builder/spec_helper', __dir__) describe 'Pipeline' do before :all do