ra10ke 1.2.0 → 3.0.0
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 +4 -4
- data/.github/dependabot.yml +14 -8
- data/.github/workflows/release.yml +1 -1
- data/.github/workflows/test.yml +31 -9
- data/.rubocop.yml +5 -0
- data/.rubocop_todo.yml +262 -0
- data/CHANGELOG.md +49 -0
- data/Gemfile +4 -4
- data/README.md +9 -0
- data/Rakefile +12 -6
- data/lib/ra10ke/dependencies.rb +168 -62
- data/lib/ra10ke/duplicates.rb +1 -1
- data/lib/ra10ke/git_repo.rb +25 -14
- data/lib/ra10ke/install.rb +10 -10
- data/lib/ra10ke/monkey_patches.rb +1 -1
- data/lib/ra10ke/puppetfile_parser.rb +73 -73
- data/lib/ra10ke/solve.rb +27 -26
- data/lib/ra10ke/syntax.rb +6 -8
- data/lib/ra10ke/validate.rb +1 -2
- data/lib/ra10ke/version.rb +1 -1
- data/lib/ra10ke.rb +3 -1
- data/ra10ke.gemspec +19 -19
- data/spec/fixtures/Puppetfile_deprecation_issue +78 -0
- data/spec/fixtures/Puppetfile_git_conversion +28 -0
- data/spec/ra10ke/dependencies_spec.rb +54 -19
- data/spec/ra10ke/deprecation_spec.rb +18 -4
- data/spec/ra10ke/git_repo_spec.rb +12 -8
- data/spec/ra10ke/puppetfile_parser_spec.rb +89 -100
- data/spec/ra10ke/validate_spec.rb +8 -6
- data/spec/ra10ke_spec.rb +3 -3
- data/spec/spec_helper.rb +1 -1
- metadata +79 -32
- data/.ruby-version +0 -1
    
        data/lib/ra10ke/syntax.rb
    CHANGED
    
    | @@ -1,18 +1,16 @@ | |
| 1 1 | 
             
            module Ra10ke::Syntax
         | 
| 2 2 | 
             
              def define_task_syntax(*_args)
         | 
| 3 | 
            -
                desc  | 
| 3 | 
            +
                desc 'Syntax check Puppetfile'
         | 
| 4 4 | 
             
                task :syntax do
         | 
| 5 5 | 
             
                  require 'r10k/action/puppetfile/check'
         | 
| 6 6 |  | 
| 7 7 | 
             
                  puppetfile = R10K::Action::Puppetfile::Check.new({
         | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 8 | 
            +
                                                                     root: @basedir,
         | 
| 9 | 
            +
                                                                     moduledir: @moduledir,
         | 
| 10 | 
            +
                                                                     puppetfile: @puppetfile_path,
         | 
| 11 | 
            +
                                                                   }, '')
         | 
| 12 12 |  | 
| 13 | 
            -
                  unless puppetfile.call
         | 
| 14 | 
            -
                    abort("Puppetfile syntax check failed")
         | 
| 15 | 
            -
                  end
         | 
| 13 | 
            +
                  abort('Puppetfile syntax check failed') unless puppetfile.call
         | 
| 16 14 | 
             
                end
         | 
| 17 15 | 
             
              end
         | 
| 18 16 | 
             
            end
         | 
    
        data/lib/ra10ke/validate.rb
    CHANGED
    
    | @@ -8,7 +8,6 @@ require 'ra10ke/git_repo' | |
| 8 8 |  | 
| 9 9 | 
             
            module Ra10ke
         | 
| 10 10 | 
             
              module Validate
         | 
| 11 | 
            -
             | 
| 12 11 | 
             
                GOOD_EMOJI = ENV['GOOD_EMOJI'] || '👍'
         | 
| 13 12 | 
             
                BAD_EMOJI = ENV['BAD_EMOJI'] || '😨'
         | 
| 14 13 |  | 
| @@ -64,7 +63,7 @@ module Ra10ke | |
| 64 63 | 
             
                          ref: ref,
         | 
| 65 64 | 
             
                          valid_url?: repo.valid_url?,
         | 
| 66 65 | 
             
                          valid_ref?: valid_ref,
         | 
| 67 | 
            -
                          status: valid_ref ? Ra10ke::Validate::GOOD_EMOJI : Ra10ke::Validate::BAD_EMOJI
         | 
| 66 | 
            +
                          status: valid_ref ? Ra10ke::Validate::GOOD_EMOJI : Ra10ke::Validate::BAD_EMOJI,
         | 
| 68 67 | 
             
                        }
         | 
| 69 68 | 
             
                      end
         | 
| 70 69 | 
             
                    end
         | 
    
        data/lib/ra10ke/version.rb
    CHANGED
    
    
    
        data/lib/ra10ke.rb
    CHANGED
    
    | @@ -41,13 +41,15 @@ module Ra10ke | |
| 41 41 | 
             
                    define_task_duplicates(*args)
         | 
| 42 42 | 
             
                    define_task_install(*args)
         | 
| 43 43 | 
             
                    define_task_validate(*args)
         | 
| 44 | 
            +
                    define_task_print_git_conversion(*args)
         | 
| 44 45 | 
             
                  end
         | 
| 45 46 | 
             
                end
         | 
| 46 47 |  | 
| 47 48 | 
             
                def get_puppetfile
         | 
| 48 49 | 
             
                  R10K::Puppetfile.new(@basedir, @moduledir, @puppetfile_path, @puppetfile_name, @force)
         | 
| 49 50 | 
             
                rescue ArgumentError # R10k < 2.6.0
         | 
| 50 | 
            -
                  R10K::Puppetfile.new(@basedir, @moduledir, | 
| 51 | 
            +
                  R10K::Puppetfile.new(@basedir, @moduledir,
         | 
| 52 | 
            +
                                       @puppetfile_path || File.join(@basedir, @puppetfile_name || 'Puppetfile'))
         | 
| 51 53 | 
             
                end
         | 
| 52 54 | 
             
              end
         | 
| 53 55 | 
             
            end
         | 
    
        data/ra10ke.gemspec
    CHANGED
    
    | @@ -1,30 +1,30 @@ | |
| 1 | 
            -
            lib = File.expand_path(' | 
| 1 | 
            +
            lib = File.expand_path('lib', __dir__)
         | 
| 2 2 | 
             
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         | 
| 3 3 | 
             
            require 'ra10ke/version'
         | 
| 4 4 |  | 
| 5 5 | 
             
            Gem::Specification.new do |spec|
         | 
| 6 | 
            -
              spec.name          =  | 
| 6 | 
            +
              spec.name          = 'ra10ke'
         | 
| 7 7 | 
             
              spec.version       = Ra10ke::VERSION
         | 
| 8 | 
            -
              spec.authors       = [ | 
| 9 | 
            -
              spec.email         = [ | 
| 10 | 
            -
              spec.description   =  | 
| 11 | 
            -
              spec.summary       =  | 
| 12 | 
            -
              spec.homepage      =  | 
| 13 | 
            -
              spec.license       =  | 
| 8 | 
            +
              spec.authors       = ['Theo Chatzimichos', 'Vox Pupuli']
         | 
| 9 | 
            +
              spec.email         = ['voxpupuli@groups.io']
         | 
| 10 | 
            +
              spec.description   = 'R10K and Puppetfile rake tasks'
         | 
| 11 | 
            +
              spec.summary       = 'Syntax check for the Puppetfile, check for outdated installed puppet modules'
         | 
| 12 | 
            +
              spec.homepage      = 'https://github.com/voxpupuli/ra10ke'
         | 
| 13 | 
            +
              spec.license       = 'MIT'
         | 
| 14 14 |  | 
| 15 15 | 
             
              spec.files         = `git ls-files`.split($/)
         | 
| 16 | 
            -
              spec.require_paths = [ | 
| 17 | 
            -
              spec.required_ruby_version = '>= 2. | 
| 16 | 
            +
              spec.require_paths = ['lib']
         | 
| 17 | 
            +
              spec.required_ruby_version = '>= 2.7.0'
         | 
| 18 18 |  | 
| 19 | 
            -
              spec.add_dependency  | 
| 20 | 
            -
              spec.add_dependency  | 
| 21 | 
            -
              spec.add_dependency  | 
| 22 | 
            -
              spec.add_dependency  | 
| 23 | 
            -
              spec.add_dependency  | 
| 24 | 
            -
              spec.add_dependency ' | 
| 19 | 
            +
              spec.add_dependency 'git', '~> 1.18'
         | 
| 20 | 
            +
              spec.add_dependency 'puppet_forge', '~> 5.0', '>= 5.0.1'
         | 
| 21 | 
            +
              spec.add_dependency 'r10k', '>= 2.6.5', '< 5'
         | 
| 22 | 
            +
              spec.add_dependency 'rake', '~> 13.0', '>= 13.0.6'
         | 
| 23 | 
            +
              spec.add_dependency 'semverse', '>= 2.0', '< 4'
         | 
| 24 | 
            +
              spec.add_dependency 'solve', '~> 4.0', '>= 4.0.4'
         | 
| 25 25 | 
             
              spec.add_dependency 'table_print', '~> 1.5.6'
         | 
| 26 | 
            +
              spec.add_development_dependency 'pry', '~> 0.14.2'
         | 
| 26 27 | 
             
              spec.add_development_dependency 'rspec', '~> 3.6'
         | 
| 27 | 
            -
              spec.add_development_dependency ' | 
| 28 | 
            -
              spec.add_development_dependency ' | 
| 28 | 
            +
              spec.add_development_dependency 'simplecov', '~> 0.22.0'
         | 
| 29 | 
            +
              spec.add_development_dependency 'voxpupuli-rubocop', '~> 2.0.0'
         | 
| 29 30 | 
             
            end
         | 
| 30 | 
            -
             | 
| @@ -0,0 +1,78 @@ | |
| 1 | 
            +
            # used in profiles
         | 
| 2 | 
            +
            mod 'puppet/systemd', :latest
         | 
| 3 | 
            +
            mod 'puppet/lldpd', :latest
         | 
| 4 | 
            +
            mod 'puppet/ferm', :latest
         | 
| 5 | 
            +
            mod 'puppet/borg', :latest
         | 
| 6 | 
            +
            mod 'puppet/wireguard', :latest
         | 
| 7 | 
            +
            mod 'puppet/bird', :latest
         | 
| 8 | 
            +
            mod 'puppet/augeasproviders_pam', :latest
         | 
| 9 | 
            +
            mod 'puppet/augeasproviders_shellvar', :latest
         | 
| 10 | 
            +
            mod 'puppetlabs/vcsrepo', :latest
         | 
| 11 | 
            +
            mod 'saz/ssh', :latest
         | 
| 12 | 
            +
            mod 'puppet/r10k', :latest
         | 
| 13 | 
            +
            mod 'puppet/dbbackup', :latest
         | 
| 14 | 
            +
            mod 'puppet/mosquitto', :latest
         | 
| 15 | 
            +
            mod 'puppet/grafana', :latest
         | 
| 16 | 
            +
            mod 'puppet/nginx', :latest
         | 
| 17 | 
            +
            mod 'puppet/ssh_keygen', :latest
         | 
| 18 | 
            +
            mod 'puppet/unbound', :latest
         | 
| 19 | 
            +
            mod 'puppetlabs/inifile', :latest
         | 
| 20 | 
            +
            mod 'puppet/prometheus', :latest
         | 
| 21 | 
            +
            mod 'theforeman/foreman', :latest
         | 
| 22 | 
            +
            mod 'theforeman/puppet', :latest
         | 
| 23 | 
            +
            mod 'theforeman/foreman_proxy', :latest
         | 
| 24 | 
            +
            mod 'puppet/nftables', :latest
         | 
| 25 | 
            +
            mod 'puppet/augeasproviders_sysctl', :latest
         | 
| 26 | 
            +
            mod 'puppet/catalog_diff', :latest
         | 
| 27 | 
            +
            mod 'puppet/unattended_upgrades', :latest
         | 
| 28 | 
            +
            mod 'puppet/selinux', :latest
         | 
| 29 | 
            +
            mod 'choria/choria', :latest
         | 
| 30 | 
            +
            mod 'puppet/archive', :latest
         | 
| 31 | 
            +
            mod 'puppet/elasticsearch', :latest
         | 
| 32 | 
            +
            mod 'jsok/vault',
         | 
| 33 | 
            +
              git: 'https://github.com/bastelfreak/puppet-vault',
         | 
| 34 | 
            +
              ref: 'test'
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            # dependencies
         | 
| 37 | 
            +
            mod 'puppet/augeasproviders_core', :latest
         | 
| 38 | 
            +
            mod 'puppetlabs/stdlib', :latest
         | 
| 39 | 
            +
            mod 'choria/mcollective', :latest
         | 
| 40 | 
            +
            mod 'puppetlabs/concat', :latest
         | 
| 41 | 
            +
            mod 'puppetlabs/apt', :latest
         | 
| 42 | 
            +
            mod 'puppetlabs/apache', :latest
         | 
| 43 | 
            +
            mod 'puppetlabs/postgresql', :latest
         | 
| 44 | 
            +
            mod 'puppet/extlib', :latest
         | 
| 45 | 
            +
            mod 'puppet/redis', :latest
         | 
| 46 | 
            +
            mod 'puppet/epel', :latest
         | 
| 47 | 
            +
            mod 'theforeman/puppetserver_foreman', :latest
         | 
| 48 | 
            +
            mod 'richardc/datacat', :latest
         | 
| 49 | 
            +
            mod 'theforeman/dns', :latest
         | 
| 50 | 
            +
            mod 'theforeman/dhcp', :latest
         | 
| 51 | 
            +
            mod 'theforeman/tftp', :latest
         | 
| 52 | 
            +
            mod 'puppetlabs/xinetd', :latest
         | 
| 53 | 
            +
            mod 'choria-mcollective_choria', :latest
         | 
| 54 | 
            +
            mod 'choria/mcollective_agent_puppet', :latest
         | 
| 55 | 
            +
            mod 'choria/mcollective_agent_package', :latest
         | 
| 56 | 
            +
            mod 'choria/mcollective_agent_service', :latest
         | 
| 57 | 
            +
            mod 'choria/mcollective_agent_filemgr', :latest
         | 
| 58 | 
            +
            mod 'choria/mcollective_agent_shell', :latest
         | 
| 59 | 
            +
            mod 'choria/mcollective_agent_nettest', :latest
         | 
| 60 | 
            +
            mod 'choria/mcollective_agent_puppetca', :latest
         | 
| 61 | 
            +
            mod 'choria/mcollective_agent_bolt_tasks', :latest
         | 
| 62 | 
            +
            mod 'choria/mcollective_agent_iptables', :latest
         | 
| 63 | 
            +
            mod 'choria/mcollective_agent_process', :latest
         | 
| 64 | 
            +
            mod 'choria/mcollective_util_actionpolicy', :latest
         | 
| 65 | 
            +
            mod 'optiz0r/mcollective_agent_puppet_env', :latest
         | 
| 66 | 
            +
            mod 'jay7x/mcollective_agent_query', :latest
         | 
| 67 | 
            +
            mod 'choria/mcollective_data_sysctl', :latest
         | 
| 68 | 
            +
            mod 'puppet/yum', :latest
         | 
| 69 | 
            +
            mod 'puppetlabs/java', :latest
         | 
| 70 | 
            +
            mod 'puppet/elastic_stack', :latest
         | 
| 71 | 
            +
            mod 'puppet/hashi_stack', :latest
         | 
| 72 | 
            +
             | 
| 73 | 
            +
            # core modules are not vendored on Gentoo
         | 
| 74 | 
            +
            mod 'puppetlabs-sshkeys_core', :latest
         | 
| 75 | 
            +
            mod 'puppetlabs-mount_core', :latest
         | 
| 76 | 
            +
            mod 'puppetlabs-augeas_core', :latest
         | 
| 77 | 
            +
            mod 'puppetlabs-selinux_core', :latest
         | 
| 78 | 
            +
            mod 'puppetlabs-yumrepo_core', :latest
         | 
| @@ -0,0 +1,28 @@ | |
| 1 | 
            +
            mod 'choria',
         | 
| 2 | 
            +
              :git => 'https://github.com/choria-io/puppet-choria',
         | 
| 3 | 
            +
              :ref => '0.26.2'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            mod 'inifile',
         | 
| 6 | 
            +
              :git => 'https://github.com/puppetlabs/puppetlabs-inifile',
         | 
| 7 | 
            +
              :ref => '2.2.0'
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            mod 'ruby',
         | 
| 10 | 
            +
              :git => 'https://github.com/puppetlabs/puppetlabs-ruby.git',
         | 
| 11 | 
            +
              :ref => 'v1.0.1'
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            mod 'stdlib',
         | 
| 14 | 
            +
              :git => 'https://github.com/puppetlabs/puppetlabs-stdlib',
         | 
| 15 | 
            +
              :ref => '4.24.0'
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            mod 'concat',
         | 
| 18 | 
            +
              :git => 'https://github.com/puppetlabs/puppetlabs-concat',
         | 
| 19 | 
            +
              :ref => '4.0.0'
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            mod 'ntp',
         | 
| 22 | 
            +
              :git => 'https://github.com/puppetlabs/puppetlabs-ntp',
         | 
| 23 | 
            +
              :ref => '6.4.1'
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            mod 'archive',
         | 
| 26 | 
            +
              :git => 'https://github.com/voxpupuli/puppet-archive',
         | 
| 27 | 
            +
              :ref => 'v3.1.1'
         | 
| 28 | 
            +
             | 
| @@ -1,50 +1,74 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 | 
            +
            require 'r10k/puppetfile'
         | 
| 3 4 | 
             
            require 'spec_helper'
         | 
| 4 5 | 
             
            require 'ra10ke/dependencies'
         | 
| 6 | 
            +
            require 'ra10ke'
         | 
| 7 | 
            +
             | 
| 5 8 | 
             
            RSpec::Mocks.configuration.allow_message_expectations_on_nil = true
         | 
| 6 9 |  | 
| 7 10 | 
             
            RSpec.describe 'Ra10ke::Dependencies::Verification' do
         | 
| 8 | 
            -
               | 
| 9 | 
            -
                 | 
| 10 | 
            -
                 | 
| 11 | 
            -
             | 
| 11 | 
            +
              let(:instance) do
         | 
| 12 | 
            +
                pfile = R10K::Puppetfile.new(File.basename(puppetfile), nil, puppetfile, nil, false)
         | 
| 13 | 
            +
                Ra10ke::Dependencies::Verification.new(pfile)
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              let(:puppetfile) do
         | 
| 17 | 
            +
                File.join(fixtures_dir, 'Puppetfile')
         | 
| 12 18 | 
             
              end
         | 
| 13 19 |  | 
| 14 20 | 
             
              context 'register_version_format' do
         | 
| 15 21 | 
             
                it 'default contains semver' do
         | 
| 16 | 
            -
                  expect(Ra10ke::Dependencies. | 
| 22 | 
            +
                  expect(Ra10ke::Dependencies::Verification.version_formats).to have_key(:semver)
         | 
| 17 23 | 
             
                end
         | 
| 24 | 
            +
             | 
| 18 25 | 
             
                it 'add new version format' do
         | 
| 19 | 
            -
                  Ra10ke::Dependencies.register_version_format(:test) do | | 
| 26 | 
            +
                  Ra10ke::Dependencies::Verification.register_version_format(:test) do |_tags|
         | 
| 20 27 | 
             
                    nil
         | 
| 21 28 | 
             
                  end
         | 
| 22 | 
            -
                  expect(Ra10ke::Dependencies. | 
| 29 | 
            +
                  expect(Ra10ke::Dependencies::Verification.version_formats).to have_key(:test)
         | 
| 23 30 | 
             
                end
         | 
| 24 31 | 
             
              end
         | 
| 25 32 |  | 
| 26 | 
            -
              context ' | 
| 33 | 
            +
              context 'show output in table format' do
         | 
| 27 34 | 
             
                let(:instance) do
         | 
| 28 | 
            -
                   | 
| 29 | 
            -
             | 
| 30 | 
            -
                  end.new
         | 
| 35 | 
            +
                  pfile = R10K::Puppetfile.new(File.basename(puppetfile), nil, puppetfile, nil, false)
         | 
| 36 | 
            +
                  Ra10ke::Dependencies::Verification.new(pfile)
         | 
| 31 37 | 
             
                end
         | 
| 32 38 |  | 
| 39 | 
            +
                let(:puppetfile) do
         | 
| 40 | 
            +
                  File.join(fixtures_dir, 'Puppetfile')
         | 
| 41 | 
            +
                end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                let(:processed_modules) do
         | 
| 44 | 
            +
                  instance.outdated
         | 
| 45 | 
            +
                end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                it 'have dependencies array' do
         | 
| 48 | 
            +
                  expect(processed_modules).to be_a Array
         | 
| 49 | 
            +
                end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                it 'show dependencies as table' do
         | 
| 52 | 
            +
                  instance.print_table(processed_modules)
         | 
| 53 | 
            +
                end
         | 
| 54 | 
            +
              end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
              context 'get_latest_ref' do
         | 
| 33 57 | 
             
                context 'find latest semver tag' do
         | 
| 34 58 | 
             
                  let(:latest_tag) do
         | 
| 35 | 
            -
             | 
| 59 | 
            +
                    'v1.1.0'
         | 
| 36 60 | 
             
                  end
         | 
| 37 61 | 
             
                  let(:test_tags) do
         | 
| 38 62 | 
             
                    {
         | 
| 39 | 
            -
                      'v1.0.0' | 
| 63 | 
            +
                      'v1.0.0' => nil,
         | 
| 40 64 | 
             
                      latest_tag => nil,
         | 
| 41 65 | 
             
                    }
         | 
| 42 66 | 
             
                  end
         | 
| 43 67 |  | 
| 44 68 | 
             
                  it do
         | 
| 45 69 | 
             
                    expect(instance.get_latest_ref({
         | 
| 46 | 
            -
             | 
| 47 | 
            -
             | 
| 70 | 
            +
                                                     'tags' => test_tags,
         | 
| 71 | 
            +
                                                   })).to eq(latest_tag)
         | 
| 48 72 | 
             
                  end
         | 
| 49 73 | 
             
                end
         | 
| 50 74 |  | 
| @@ -54,18 +78,29 @@ RSpec.describe 'Ra10ke::Dependencies::Verification' do | |
| 54 78 | 
             
                  end
         | 
| 55 79 | 
             
                  let(:test_tags) do
         | 
| 56 80 | 
             
                    {
         | 
| 57 | 
            -
                      'dev' | 
| 81 | 
            +
                      'dev' => nil,
         | 
| 58 82 | 
             
                      latest_tag => nil,
         | 
| 59 83 | 
             
                    }
         | 
| 60 84 | 
             
                  end
         | 
| 61 85 |  | 
| 62 86 | 
             
                  it do
         | 
| 63 | 
            -
                    Ra10ke::Dependencies.register_version_format(:number) do |tags|
         | 
| 87 | 
            +
                    Ra10ke::Dependencies::Verification.register_version_format(:number) do |tags|
         | 
| 64 88 | 
             
                      tags.detect { |tag| tag == latest_tag }
         | 
| 65 89 | 
             
                    end
         | 
| 66 90 | 
             
                    expect(instance.get_latest_ref({
         | 
| 67 | 
            -
             | 
| 68 | 
            -
             | 
| 91 | 
            +
                                                     'tags' => test_tags,
         | 
| 92 | 
            +
                                                   })).to eq(latest_tag)
         | 
| 93 | 
            +
                  end
         | 
| 94 | 
            +
                end
         | 
| 95 | 
            +
             | 
| 96 | 
            +
                context 'convert to ref' do
         | 
| 97 | 
            +
                  it 'run rake task' do
         | 
| 98 | 
            +
                    output_conversion = File.read(File.join(fixtures_dir, 'Puppetfile_git_conversion'))
         | 
| 99 | 
            +
                    require 'ra10ke'
         | 
| 100 | 
            +
                    Ra10ke::RakeTask.new do |t|
         | 
| 101 | 
            +
                      t.basedir = fixtures_dir
         | 
| 102 | 
            +
                    end
         | 
| 103 | 
            +
                    expect { Rake::Task['r10k:print_git_conversion'].invoke }.to output(output_conversion).to_stdout
         | 
| 69 104 | 
             
                  end
         | 
| 70 105 | 
             
                end
         | 
| 71 106 | 
             
              end
         | 
| @@ -14,24 +14,38 @@ RSpec.describe 'Ra10ke::Deprecation::Validation' do | |
| 14 14 | 
             
              end
         | 
| 15 15 |  | 
| 16 16 | 
             
              it 'only checks forge modules' do
         | 
| 17 | 
            -
                expect(PuppetForge::Module). | 
| 17 | 
            +
                expect(PuppetForge::Module).not_to receive(:find).with('puppet')
         | 
| 18 18 | 
             
                allow(PuppetForge::Module).to receive(:find).and_raise(Faraday::ResourceNotFound.new(nil))
         | 
| 19 19 | 
             
                expect(instance.deprecated_modules.count).to eq(0)
         | 
| 20 20 | 
             
              end
         | 
| 21 21 |  | 
| 22 22 | 
             
              it 'handles deprecated modules' do
         | 
| 23 | 
            -
                expect(PuppetForge::Module).to receive(:find).with('puppetlabs-ruby').and_return(double(slug: 'puppetlabs-ruby', | 
| 23 | 
            +
                expect(PuppetForge::Module).to receive(:find).with('puppetlabs-ruby').and_return(double(slug: 'puppetlabs-ruby',
         | 
| 24 | 
            +
                                                                                                        deprecated_at: '2021-04-22 10:29:42 -0700'))
         | 
| 24 25 | 
             
                allow(PuppetForge::Module).to receive(:find).and_return(double(slug: 'module-module', deprecated_at: nil))
         | 
| 25 26 |  | 
| 26 27 | 
             
                expect(instance.bad_mods?).to eq(true)
         | 
| 27 | 
            -
                expect(instance.deprecated_modules.first).to eq(name: 'puppetlabs-ruby', | 
| 28 | 
            +
                expect(instance.deprecated_modules.first).to eq(name: 'puppetlabs-ruby',
         | 
| 29 | 
            +
                                                                deprecated_at: Time.parse('2021-04-22 10:29:42 -0700'))
         | 
| 28 30 | 
             
              end
         | 
| 29 31 |  | 
| 30 32 | 
             
              it 'handles missing modules' do
         | 
| 31 | 
            -
                expect(PuppetForge::Module).to receive(:find).with('choria-choria').and_return(double(slug: 'choria-choria', | 
| 33 | 
            +
                expect(PuppetForge::Module).to receive(:find).with('choria-choria').and_return(double(slug: 'choria-choria',
         | 
| 34 | 
            +
                                                                                                      deprecated_at: nil))
         | 
| 32 35 | 
             
                expect(PuppetForge::Module).to receive(:find).with('puppetlabs-ruby').and_raise(Faraday::ResourceNotFound.new(nil))
         | 
| 33 36 | 
             
                allow(PuppetForge::Module).to receive(:find).and_return(double(slug: 'module-module', deprecated_at: nil))
         | 
| 34 37 |  | 
| 35 38 | 
             
                expect(instance.bad_mods?).to eq(false)
         | 
| 36 39 | 
             
              end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
              describe 'handles large puppetfile' do
         | 
| 42 | 
            +
                let(:puppetfile) do
         | 
| 43 | 
            +
                  File.join(fixtures_dir, 'Puppetfile_deprecation_issue')
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                it 'deprecated modules' do
         | 
| 47 | 
            +
                  expect(instance.bad_mods?).to eq(false)
         | 
| 48 | 
            +
                  expect(instance.deprecated_modules.count).to eq(0)
         | 
| 49 | 
            +
                end
         | 
| 50 | 
            +
              end
         | 
| 37 51 | 
             
            end
         | 
| @@ -10,7 +10,7 @@ RSpec.describe 'Ra10ke::GitRepo' do | |
| 10 10 | 
             
                expect(Ra10ke::GitRepo.new(url)).to be_a Ra10ke::GitRepo
         | 
| 11 11 | 
             
              end
         | 
| 12 12 |  | 
| 13 | 
            -
              it ' | 
| 13 | 
            +
              it 'does not run_command more than once' do
         | 
| 14 14 | 
             
                i = Ra10ke::GitRepo.new(url)
         | 
| 15 15 | 
             
                expect(i).to receive(:run_command).with("git ls-remote --symref #{url}").once
         | 
| 16 16 | 
             
                i.valid_url?
         | 
| @@ -26,7 +26,7 @@ RSpec.describe 'Ra10ke::GitRepo' do | |
| 26 26 |  | 
| 27 27 | 
             
                let(:reflist) { File.read(File.join(fixtures_dir, 'refs', 'gitlab.txt')) }
         | 
| 28 28 |  | 
| 29 | 
            -
                before | 
| 29 | 
            +
                before do
         | 
| 30 30 | 
             
                  allow(instance).to receive(:run_command).with("git ls-remote --symref #{url}").and_return([reflist, true])
         | 
| 31 31 | 
             
                end
         | 
| 32 32 |  | 
| @@ -38,6 +38,10 @@ RSpec.describe 'Ra10ke::GitRepo' do | |
| 38 38 | 
             
                  expect(instance.remote_refs.first).to eq("1b3322d525e96bf7d0565b08703e2a44c90e7b4a\tHEAD\n")
         | 
| 39 39 | 
             
                end
         | 
| 40 40 |  | 
| 41 | 
            +
                it '#get_ref_like' do
         | 
| 42 | 
            +
                  expect(instance.get_ref_like('8.0.0'))
         | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
             | 
| 41 45 | 
             
                it '#valid_ref?' do
         | 
| 42 46 | 
             
                  expect(instance.valid_ref?('master')).to be true
         | 
| 43 47 | 
             
                end
         | 
| @@ -64,22 +68,22 @@ RSpec.describe 'Ra10ke::GitRepo' do | |
| 64 68 | 
             
                  refs = instance.all_refs
         | 
| 65 69 | 
             
                  expect(refs).to be_a Array
         | 
| 66 70 | 
             
                  expect(refs.last).to eq(
         | 
| 67 | 
            -
                    { name: 'v5.0.0^{}', ref: 'refs/tags/v5.0.0^{}', sha: '1febd15f90d32e6b3d6c242a70db386b2ef1942c', subtype: nil, | 
| 71 | 
            +
                    { name: 'v5.0.0^{}', ref: 'refs/tags/v5.0.0^{}', sha: '1febd15f90d32e6b3d6c242a70db386b2ef1942c', subtype: nil,
         | 
| 72 | 
            +
                      type: :tag, },
         | 
| 68 73 | 
             
                  )
         | 
| 69 74 | 
             
                end
         | 
| 70 75 | 
             
              end
         | 
| 71 76 |  | 
| 72 77 | 
             
              describe 'bad url' do
         | 
| 73 78 | 
             
                let(:url) { 'https://github.com/nwops/typo' }
         | 
| 74 | 
            -
             | 
| 75 | 
            -
                before(:each) do
         | 
| 76 | 
            -
                  allow(instance).to receive(:run_command).with("git ls-remote --symref #{url}").and_return(['', false])
         | 
| 77 | 
            -
                end
         | 
| 78 | 
            -
             | 
| 79 79 | 
             
                let(:instance) do
         | 
| 80 80 | 
             
                  Ra10ke::GitRepo.new(url)
         | 
| 81 81 | 
             
                end
         | 
| 82 82 |  | 
| 83 | 
            +
                before do
         | 
| 84 | 
            +
                  allow(instance).to receive(:run_command).with("git ls-remote --symref #{url}").and_return(['', false])
         | 
| 85 | 
            +
                end
         | 
| 86 | 
            +
             | 
| 83 87 | 
             
                it '#all_refs' do
         | 
| 84 88 | 
             
                  expect(instance.all_refs).to be_a Array
         | 
| 85 89 | 
             
                  expect(instance.all_refs).to eq []
         | 
| @@ -2,110 +2,99 @@ require 'spec_helper' | |
| 2 2 | 
             
            require 'ra10ke/puppetfile_parser'
         | 
| 3 3 |  | 
| 4 4 | 
             
            RSpec.describe 'Ra10ke::PuppetfileParser' do
         | 
| 5 | 
            -
             | 
| 5 | 
            +
              include Ra10ke::PuppetfileParser
         | 
| 6 6 |  | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 7 | 
            +
              let(:puppetfile) do
         | 
| 8 | 
            +
                File.join(fixtures_dir, 'Puppetfile')
         | 
| 9 | 
            +
              end
         | 
| 10 10 |  | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
                            | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 29 | 
            -
             | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
             | 
| 44 | 
            -
             | 
| 45 | 
            -
             | 
| 46 | 
            -
             | 
| 47 | 
            -
             | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 50 | 
            -
                          :namespace=>nil},
         | 
| 51 | 
            -
                         {:args=>{:branch=>"master", :git=>"https://github.com/voxpupuli/puppet-module.git"},
         | 
| 52 | 
            -
                          :name=>"puppet",
         | 
| 53 | 
            -
                          :namespace=>nil}]
         | 
| 54 | 
            -
                end
         | 
| 11 | 
            +
              let(:puppetfile_modules) do
         | 
| 12 | 
            +
                [{ args: { version: '0.26.2' }, name: 'choria', namespace: nil },
         | 
| 13 | 
            +
                 { args: { version: '2.2.0' }, name: 'inifile', namespace: 'puppetlabs' },
         | 
| 14 | 
            +
                 { args: { version: '1.0.1' }, name: 'ruby', namespace: 'puppetlabs' },
         | 
| 15 | 
            +
                 { args: { version: '4.24.0' }, name: 'stdlib', namespace: 'puppetlabs' },
         | 
| 16 | 
            +
                 { args: { version: '4.0.0' }, name: 'concat', namespace: 'puppetlabs' },
         | 
| 17 | 
            +
                 { args: { version: '6.4.1' }, name: 'ntp', namespace: 'puppetlabs' },
         | 
| 18 | 
            +
                 { args: { version: '3.1.1' }, name: 'archive', namespace: 'puppet' },
         | 
| 19 | 
            +
                 { args: { git: 'https://github.com/vshn/puppet-gitlab',
         | 
| 20 | 
            +
                           ref: '00397b86dfb3487d9df768cbd3698d362132b5bf', },
         | 
| 21 | 
            +
                   name: 'gitlab',
         | 
| 22 | 
            +
                   namespace: nil, },
         | 
| 23 | 
            +
                 { args: { git: 'https://github.com/acidprime/r10k', tag: 'v3.1.1' },
         | 
| 24 | 
            +
                   name: 'r10k',
         | 
| 25 | 
            +
                   namespace: nil, },
         | 
| 26 | 
            +
                 { args: { branch: 'gitlab_disable_ssl_verify_support',
         | 
| 27 | 
            +
                           git: 'https://github.com/npwalker/abrader-gms', },
         | 
| 28 | 
            +
                   name: 'gms',
         | 
| 29 | 
            +
                   namespace: nil, },
         | 
| 30 | 
            +
                 { args: { git: 'https://github.com/puppetlabs/pltraining-rbac',
         | 
| 31 | 
            +
                           ref: '2f60e1789a721ce83f8df061e13f8bf81cd4e4ce', },
         | 
| 32 | 
            +
                   name: 'rbac',
         | 
| 33 | 
            +
                   namespace: 'pltraining', },
         | 
| 34 | 
            +
                 { args: { branch: 'master', git: 'https://github.com/dobbymoodge/puppet-acl.git' },
         | 
| 35 | 
            +
                   name: 'acl',
         | 
| 36 | 
            +
                   namespace: 'puppet', },
         | 
| 37 | 
            +
                 { args: { branch: 'master', git: 'https://github.com/cudgel/deploy.git' },
         | 
| 38 | 
            +
                   name: 'deploy',
         | 
| 39 | 
            +
                   namespace: nil, },
         | 
| 40 | 
            +
                 { args: { branch: 'master', git: 'https://github.com/cudgel/puppet-dotfiles.git' },
         | 
| 41 | 
            +
                   name: 'dotfiles',
         | 
| 42 | 
            +
                   namespace: nil, },
         | 
| 43 | 
            +
                 { args: { branch: 'dev', git: 'https://github.com/cudgel/splunk.git' },
         | 
| 44 | 
            +
                   name: 'splunk',
         | 
| 45 | 
            +
                   namespace: nil, },
         | 
| 46 | 
            +
                 { args: { branch: 'master', git: 'https://github.com/voxpupuli/puppet-module.git' },
         | 
| 47 | 
            +
                   name: 'puppet',
         | 
| 48 | 
            +
                   namespace: nil, },]
         | 
| 49 | 
            +
              end
         | 
| 55 50 |  | 
| 51 | 
            +
              it '#modules' do
         | 
| 52 | 
            +
                expect(modules(puppetfile)).to eq(puppetfile_modules)
         | 
| 53 | 
            +
              end
         | 
| 56 54 |  | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 59 | 
            -
             | 
| 55 | 
            +
              it '#git_modules' do
         | 
| 56 | 
            +
                expected = [{ args: { git: 'https://github.com/vshn/puppet-gitlab',
         | 
| 57 | 
            +
                                      ref: '00397b86dfb3487d9df768cbd3698d362132b5bf', },
         | 
| 58 | 
            +
                              name: 'gitlab',
         | 
| 59 | 
            +
                              namespace: nil, },
         | 
| 60 | 
            +
                            { args: { git: 'https://github.com/acidprime/r10k', tag: 'v3.1.1' },
         | 
| 61 | 
            +
                              name: 'r10k',
         | 
| 62 | 
            +
                              namespace: nil, },
         | 
| 63 | 
            +
                            { args: { branch: 'gitlab_disable_ssl_verify_support',
         | 
| 64 | 
            +
                                      git: 'https://github.com/npwalker/abrader-gms', },
         | 
| 65 | 
            +
                              name: 'gms',
         | 
| 66 | 
            +
                              namespace: nil, },
         | 
| 67 | 
            +
                            { args: { git: 'https://github.com/puppetlabs/pltraining-rbac',
         | 
| 68 | 
            +
                                      ref: '2f60e1789a721ce83f8df061e13f8bf81cd4e4ce', },
         | 
| 69 | 
            +
                              name: 'rbac',
         | 
| 70 | 
            +
                              namespace: 'pltraining', },
         | 
| 71 | 
            +
                            { args: { branch: 'master', git: 'https://github.com/dobbymoodge/puppet-acl.git' },
         | 
| 72 | 
            +
                              name: 'acl',
         | 
| 73 | 
            +
                              namespace: 'puppet', },
         | 
| 74 | 
            +
                            { args: { branch: 'master', git: 'https://github.com/cudgel/deploy.git' },
         | 
| 75 | 
            +
                              name: 'deploy',
         | 
| 76 | 
            +
                              namespace: nil, },
         | 
| 77 | 
            +
                            { args: { branch: 'master', git: 'https://github.com/cudgel/puppet-dotfiles.git' },
         | 
| 78 | 
            +
                              name: 'dotfiles',
         | 
| 79 | 
            +
                              namespace: nil, },
         | 
| 80 | 
            +
                            { args: { branch: 'dev', git: 'https://github.com/cudgel/splunk.git' },
         | 
| 81 | 
            +
                              name: 'splunk',
         | 
| 82 | 
            +
                              namespace: nil, },
         | 
| 83 | 
            +
                            { args: { branch: 'master', git: 'https://github.com/voxpupuli/puppet-module.git' },
         | 
| 84 | 
            +
                              name: 'puppet',
         | 
| 85 | 
            +
                              namespace: nil, },]
         | 
| 86 | 
            +
                expect(git_modules(puppetfile)).to eq(expected)
         | 
| 87 | 
            +
              end
         | 
| 60 88 |  | 
| 61 | 
            -
             | 
| 62 | 
            -
             | 
| 63 | 
            -
             | 
| 64 | 
            -
             | 
| 65 | 
            -
             | 
| 66 | 
            -
             | 
| 67 | 
            -
                      {:args=>{:git=>"https://github.com/acidprime/r10k", :tag=>"v3.1.1"},
         | 
| 68 | 
            -
                       :name=>"r10k",
         | 
| 69 | 
            -
                       :namespace=>nil},
         | 
| 70 | 
            -
                      {:args=>
         | 
| 71 | 
            -
                        {:branch=>"gitlab_disable_ssl_verify_support",
         | 
| 72 | 
            -
                         :git=>"https://github.com/npwalker/abrader-gms"},
         | 
| 73 | 
            -
                       :name=>"gms",
         | 
| 74 | 
            -
                       :namespace=>nil},
         | 
| 75 | 
            -
                      {:args=>
         | 
| 76 | 
            -
                        {:git=>"https://github.com/puppetlabs/pltraining-rbac",
         | 
| 77 | 
            -
                         :ref=>"2f60e1789a721ce83f8df061e13f8bf81cd4e4ce"},
         | 
| 78 | 
            -
                       :name=>"rbac",
         | 
| 79 | 
            -
                       :namespace=>"pltraining"},
         | 
| 80 | 
            -
                      {:args=>
         | 
| 81 | 
            -
                        {:branch=>"master", :git=>"https://github.com/dobbymoodge/puppet-acl.git"},
         | 
| 82 | 
            -
                       :name=>"acl",
         | 
| 83 | 
            -
                       :namespace=>"puppet"},
         | 
| 84 | 
            -
                      {:args=>{:branch=>"master", :git=>"https://github.com/cudgel/deploy.git"},
         | 
| 85 | 
            -
                       :name=>"deploy",
         | 
| 86 | 
            -
                       :namespace=>nil},
         | 
| 87 | 
            -
                      {:args=>
         | 
| 88 | 
            -
                        {:branch=>"master", :git=>"https://github.com/cudgel/puppet-dotfiles.git"},
         | 
| 89 | 
            -
                       :name=>"dotfiles",
         | 
| 90 | 
            -
                       :namespace=>nil},
         | 
| 91 | 
            -
                      {:args=>{:branch=>"dev", :git=>"https://github.com/cudgel/splunk.git"},
         | 
| 92 | 
            -
                       :name=>"splunk",
         | 
| 93 | 
            -
                       :namespace=>nil},
         | 
| 94 | 
            -
                      {:args=>{:branch=>"master", :git=>"https://github.com/voxpupuli/puppet-module.git"},
         | 
| 95 | 
            -
                       :name=>"puppet",
         | 
| 96 | 
            -
                       :namespace=>nil}]
         | 
| 97 | 
            -
                    expect(git_modules(puppetfile)).to eq(expected)
         | 
| 98 | 
            -
                end
         | 
| 89 | 
            +
              it '#parse_modules_args' do
         | 
| 90 | 
            +
                data = " 'puppet-acl',  :git => 'https://github.com/dobbymoodge/puppet-acl.git',  :branch => 'master'"
         | 
| 91 | 
            +
                expect(parse_module_args(data)).to eq({ args: { branch: 'master',
         | 
| 92 | 
            +
                                                                git: 'https://github.com/dobbymoodge/puppet-acl.git', },
         | 
| 93 | 
            +
                                                        name: 'acl', namespace: 'puppet', })
         | 
| 94 | 
            +
              end
         | 
| 99 95 |  | 
| 100 | 
            -
             | 
| 101 | 
            -
             | 
| 102 | 
            -
             | 
| 103 | 
            -
             | 
| 104 | 
            -
                          :name=>"acl", :namespace=>"puppet"})
         | 
| 105 | 
            -
                end
         | 
| 106 | 
            -
             | 
| 107 | 
            -
                it '#parse_modules_args when empty' do
         | 
| 108 | 
            -
                    data = ""
         | 
| 109 | 
            -
                    expect(parse_module_args(data)).to eq({})
         | 
| 110 | 
            -
                end
         | 
| 96 | 
            +
              it '#parse_modules_args when empty' do
         | 
| 97 | 
            +
                data = ''
         | 
| 98 | 
            +
                expect(parse_module_args(data)).to eq({})
         | 
| 99 | 
            +
              end
         | 
| 111 100 | 
             
            end
         |