rodjek / puppet-lint

Check that your Puppet manifests conform to the style guide
MIT License
820 stars 205 forks source link

Breaks after 2.4.0 upgrade #885

Closed baurmatt closed 5 years ago

baurmatt commented 5 years ago

Whoops! It looks like puppet-lint has encountered an error that it doesn't know how to handle. Please open an issue at https://github.com/rodjek/puppet-lint and paste the following output into the issue description.

puppet-lint version: 2.4.0 ruby version: 2.5.3-p105 platform: x86_64-darwin18 file path: site/gentoo/manifests/portage.pp file contents:

# Class gentoo:portage
#
class gentoo::portage () {

  file { '/usr/local/portage':
    ensure => 'absent',
    force  => true,
  }

  # puppetfree repo, haha
  file {
    [
      '/usr/local/portage_puppetfree',
      '/usr/local/portage_puppetfree/metadata/',
      '/usr/local/portage_puppetfree/profiles',
    ]:
      ensure  => 'directory',
  }

  file { '/usr/local/portage_puppetfree/metadata/layout.conf':
    ensure  => 'file',
    content => 'masters = gentoo',
    require => File['/usr/local/portage_puppetfree/metadata/'],
  }

  file { '/usr/local/portage_puppetfree/profiles/repo_name':
    ensure  => 'file',
    content => $::fqdn,
    require => File['/usr/local/portage_puppetfree/profiles/'],
  }

  gentoo::makeconf { 'PORTDIR_OVERLAY':
    value => '/usr/local/portage_puppetfree',
  }

  package { 'app-portage/gentoolkit':
    ensure => installed,
  }
  # Cleanup deprecated SYNC lines from /etc/make.conf
  augeas { 'make_conf_sync_cleanup':
    incl    => '/etc/make.conf',
    changes => 'rm SYNC',
    lens    => 'makeconf.lns',
  }

  # on hardware nodes, only do 1/3 of CPU power, use all CPUs on VEs
  if $::virtual == 'physical' {
    sys11lib::ensure_key_value { 'portage/bashrc':
      file      => '/etc/portage/bashrc',
      key       => 'export MAKEOPTS',
      value     => "\"\${MAKEOPTS:-\"-j\$((\$(grep -c proc /proc/cpuinfo)/3))\"}\"",
      delimiter => '=',
    }
  } else {
    sys11lib::ensure_key_value { 'portage/bashrc':
      file      => '/etc/portage/bashrc',
      key       => 'export MAKEOPTS',
      value     => "\"\${MAKEOPTS:-\"-j\$(grep -c proc /proc/cpuinfo)\"}\"",
      delimiter => '=',
    }
  }

  file { '/etc/portage/repos.conf/gentoo.conf':
    source => "puppet:///modules/${module_name}/gentoo.conf",
  }

  File['/etc/portage/repos.conf/gentoo.conf'] -> Exec['clean portagetree'] -> Exec['sync portagetree'] -> Package <| |>
  Exec['eix-update'] -> Package <| |>
}

error:

ArgumentError: wrong number of arguments (given 4, expected 0..3)
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/puppet-lint-2.4.0/lib/puppet-lint/lexer.rb:244:in `raise'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/puppet-lint-2.4.0/lib/puppet-lint/lexer.rb:244:in `rescue in tokenise'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/puppet-lint-2.4.0/lib/puppet-lint/lexer.rb:239:in `tokenise'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/puppet-lint-2.4.0/lib/puppet-lint/lexer.rb:409:in `block in process_string_segments'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/puppet-lint-2.4.0/lib/puppet-lint/lexer.rb:405:in `each'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/puppet-lint-2.4.0/lib/puppet-lint/lexer.rb:405:in `process_string_segments'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/puppet-lint-2.4.0/lib/puppet-lint/lexer.rb:241:in `tokenise'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/puppet-lint-2.4.0/lib/puppet-lint/checks.rb:25:in `load_data'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/puppet-lint-2.4.0/lib/puppet-lint/checks.rb:55:in `run'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/puppet-lint-2.4.0/lib/puppet-lint.rb:205:in `run'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/puppet-lint-2.4.0/lib/puppet-lint/tasks/puppet-lint.rb:83:in `block (3 levels) in define'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/puppet-lint-2.4.0/lib/puppet-lint/tasks/puppet-lint.rb:81:in `each'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/puppet-lint-2.4.0/lib/puppet-lint/tasks/puppet-lint.rb:81:in `block (2 levels) in define'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/rake-13.0.0/lib/rake/file_utils_ext.rb:58:in `verbose'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/puppet-lint-2.4.0/lib/puppet-lint/tasks/puppet-lint.rb:75:in `block in define'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/rake-13.0.0/lib/rake/task.rb:280:in `block in execute'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/rake-13.0.0/lib/rake/task.rb:280:in `each'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/rake-13.0.0/lib/rake/task.rb:280:in `execute'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/rake-13.0.0/lib/rake/task.rb:218:in `block in invoke_with_call_chain'
/Users/mbaur/.rvm/rubies/ruby-2.5.3/lib/ruby/2.5.0/monitor.rb:226:in `mon_synchronize'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/rake-13.0.0/lib/rake/task.rb:198:in `invoke_with_call_chain'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/rake-13.0.0/lib/rake/task.rb:187:in `invoke'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/rake-13.0.0/lib/rake/application.rb:160:in `invoke_task'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/rake-13.0.0/lib/rake/application.rb:116:in `block (2 levels) in top_level'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/rake-13.0.0/lib/rake/application.rb:116:in `each'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/rake-13.0.0/lib/rake/application.rb:116:in `block in top_level'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/rake-13.0.0/lib/rake/application.rb:125:in `run_with_threads'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/rake-13.0.0/lib/rake/application.rb:110:in `top_level'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/rake-13.0.0/lib/rake/application.rb:83:in `block in run'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/rake-13.0.0/lib/rake/application.rb:186:in `standard_exception_handling'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/rake-13.0.0/lib/rake/application.rb:80:in `run'
/Users/mbaur/.rvm/gems/ruby-2.5.3/gems/rake-13.0.0/exe/rake:27:in `<top (required)>'
/Users/mbaur/.rvm/gems/ruby-2.5.3/bin/rake:23:in `load'
/Users/mbaur/.rvm/gems/ruby-2.5.3/bin/rake:23:in `<main>'
/Users/mbaur/.rvm/gems/ruby-2.5.3/bin/ruby_executable_hooks:24:in `eval'
/Users/mbaur/.rvm/gems/ruby-2.5.3/bin/ruby_executable_hooks:24:in `<main>'
usev6 commented 5 years ago

If I'm not mistaken this can be golfed to something like this:

# gh issue 885
class gh::issue885 {
  $foo = "\"\${\"string\"}\""
}