Merge pull request #49 from iankronquist/duplicate-warnings
(PDOC-21) Duplicate warnings
This commit is contained in:
		
						commit
						2a11a85787
					
				| 
						 | 
					@ -3,13 +3,6 @@ include T('default/definedtype')
 | 
				
			||||||
def init
 | 
					def init
 | 
				
			||||||
  super
 | 
					  super
 | 
				
			||||||
  sections.push :subclasses
 | 
					  sections.push :subclasses
 | 
				
			||||||
 | 
					 | 
				
			||||||
  @template_helper = TemplateHelper.new
 | 
					 | 
				
			||||||
  @template_helper.check_parameters_match_docs object
 | 
					 | 
				
			||||||
  params = object.parameters.map { |param| param.first }
 | 
					 | 
				
			||||||
  param_tags = object.tags.find_all{ |tag| tag.tag_name == "param"}
 | 
					 | 
				
			||||||
  param_details = @template_helper.extract_param_details(params, param_tags) unless params.nil?
 | 
					 | 
				
			||||||
  @template_helper.check_types_match_docs object, param_details
 | 
					 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def subclasses
 | 
					def subclasses
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,20 @@
 | 
				
			||||||
 | 
					class PuppetModuleHelper
 | 
				
			||||||
 | 
					# Helper methods to handle file operations around generating and loading HTML
 | 
				
			||||||
 | 
					  def self.using_module(path, modulename, &block)
 | 
				
			||||||
 | 
					    Dir.mktmpdir do |tmp|
 | 
				
			||||||
 | 
					      module_location = File.join(path, "examples", modulename)
 | 
				
			||||||
 | 
					      FileUtils.cp_r(module_location, tmp)
 | 
				
			||||||
 | 
					      old_dir = Dir.pwd
 | 
				
			||||||
 | 
					      begin
 | 
				
			||||||
 | 
					        Dir.chdir(tmp)
 | 
				
			||||||
 | 
					        yield(tmp)
 | 
				
			||||||
 | 
					      ensure
 | 
				
			||||||
 | 
					        Dir.chdir(old_dir)
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def self.read_html(dir, modulename, file)
 | 
				
			||||||
 | 
					    File.read(File.join(dir, modulename, 'doc', file))
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,5 @@
 | 
				
			||||||
require 'spec_helper'
 | 
					require 'spec_helper'
 | 
				
			||||||
 | 
					require 'lib/strings_spec/module_helper'
 | 
				
			||||||
require 'puppet/face/strings'
 | 
					require 'puppet/face/strings'
 | 
				
			||||||
require 'tmpdir'
 | 
					require 'tmpdir'
 | 
				
			||||||
require 'stringio'
 | 
					require 'stringio'
 | 
				
			||||||
| 
						 | 
					@ -51,61 +52,61 @@ describe Puppet::Face do
 | 
				
			||||||
      it "should properly generate HTML for manifest comments" do
 | 
					      it "should properly generate HTML for manifest comments" do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        using_module('test') do |tmp|
 | 
					        PuppetModuleHelper.using_module(File.dirname(__FILE__), 'test') do |tmp|
 | 
				
			||||||
          Dir.chdir('test')
 | 
					          Dir.chdir('test')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          Puppet::Face[:strings, :current].yardoc
 | 
					          Puppet::Face[:strings, :current].yardoc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          expect(read_html(tmp, 'test', 'test.html')).to include("Class: test")
 | 
					          expect(PuppetModuleHelper.read_html(tmp, 'test', 'test.html')).to include("Class: test")
 | 
				
			||||||
        end
 | 
					        end
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      it "should properly generate HTML for 3x function comments" do
 | 
					      it "should properly generate HTML for 3x function comments" do
 | 
				
			||||||
        using_module('test') do |tmp|
 | 
					        PuppetModuleHelper.using_module(File.dirname(__FILE__), 'test') do |tmp|
 | 
				
			||||||
          Dir.chdir('test')
 | 
					          Dir.chdir('test')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          Puppet::Face[:strings, :current].yardoc
 | 
					          Puppet::Face[:strings, :current].yardoc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          expect(read_html(tmp, 'test', 'Puppet3xFunctions.html')).to include("This is the function documentation for `function3x`")
 | 
					          expect(PuppetModuleHelper.read_html(tmp, 'test', 'Puppet3xFunctions.html')).to include("This is the function documentation for `function3x`")
 | 
				
			||||||
        end
 | 
					        end
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      it "should properly generate HTML for 4x function comments" do
 | 
					      it "should properly generate HTML for 4x function comments" do
 | 
				
			||||||
        using_module('test') do |tmp|
 | 
					        PuppetModuleHelper.using_module(File.dirname(__FILE__), 'test') do |tmp|
 | 
				
			||||||
          Dir.chdir('test')
 | 
					          Dir.chdir('test')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          Puppet::Face[:strings, :current].yardoc
 | 
					          Puppet::Face[:strings, :current].yardoc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          expect(read_html(tmp, 'test', 'Puppet4xFunctions.html')).to include("This is a function which is used to test puppet strings")
 | 
					          expect(PuppetModuleHelper.read_html(tmp, 'test', 'Puppet4xFunctions.html')).to include("This is a function which is used to test puppet strings")
 | 
				
			||||||
        end
 | 
					        end
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      it "should create correct files for nested classes" do
 | 
					      it "should create correct files for nested classes" do
 | 
				
			||||||
         using_module('test') do |tmp|
 | 
					         PuppetModuleHelper.using_module(File.dirname(__FILE__), 'test') do |tmp|
 | 
				
			||||||
            Dir.chdir('test')
 | 
					            Dir.chdir('test')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Puppet::Face[:strings, :current].yardoc
 | 
					            Puppet::Face[:strings, :current].yardoc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            expect(read_html(tmp,
 | 
					            expect(PuppetModuleHelper.read_html(tmp,
 | 
				
			||||||
              'test', 'outer.html')).to include("Puppet Class: outer")
 | 
					              'test', 'outer.html')).to include("Puppet Class: outer")
 | 
				
			||||||
            expect(read_html(tmp, 'test',
 | 
					            expect(PuppetModuleHelper.read_html(tmp, 'test',
 | 
				
			||||||
              'outer/middle.html')).to include("Puppet Class: middle")
 | 
					              'outer/middle.html')).to include("Puppet Class: middle")
 | 
				
			||||||
            expect(read_html(tmp, 'test',
 | 
					            expect(PuppetModuleHelper.read_html(tmp, 'test',
 | 
				
			||||||
              'outer/middle/inner.html')).to include("Puppet Class: inner")
 | 
					              'outer/middle/inner.html')).to include("Puppet Class: inner")
 | 
				
			||||||
         end
 | 
					         end
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      it "should create proper namespace for nested classes" do
 | 
					      it "should create proper namespace for nested classes" do
 | 
				
			||||||
         using_module('test') do |tmp|
 | 
					         PuppetModuleHelper.using_module(File.dirname(__FILE__), 'test') do |tmp|
 | 
				
			||||||
            Dir.chdir('test')
 | 
					            Dir.chdir('test')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Puppet::Face[:strings, :current].yardoc
 | 
					            Puppet::Face[:strings, :current].yardoc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            expect(read_html(tmp,
 | 
					            expect(PuppetModuleHelper.read_html(tmp,
 | 
				
			||||||
              'test', 'outer.html')).to include("Hostclass: outer")
 | 
					              'test', 'outer.html')).to include("Hostclass: outer")
 | 
				
			||||||
            expect(read_html(tmp, 'test',
 | 
					            expect(PuppetModuleHelper.read_html(tmp, 'test',
 | 
				
			||||||
              'outer/middle.html')).to include("Hostclass: outer::middle")
 | 
					              'outer/middle.html')).to include("Hostclass: outer::middle")
 | 
				
			||||||
            expect(read_html(tmp, 'test',
 | 
					            expect(PuppetModuleHelper.read_html(tmp, 'test',
 | 
				
			||||||
              'outer/middle/inner.html')).to include("Hostclass: outer::middle::inner")
 | 
					              'outer/middle/inner.html')).to include("Hostclass: outer::middle::inner")
 | 
				
			||||||
         end
 | 
					         end
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
| 
						 | 
					@ -127,24 +128,5 @@ describe Puppet::Face do
 | 
				
			||||||
      expect{Puppet::Face[:strings, :current].server}.to raise_error(RuntimeError, "This face requires Ruby 1.9 or greater.")
 | 
					      expect{Puppet::Face[:strings, :current].server}.to raise_error(RuntimeError, "This face requires Ruby 1.9 or greater.")
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					 | 
				
			||||||
  # Helper methods to handle file operations around generating and loading HTML
 | 
					 | 
				
			||||||
  def using_module(modulename, &block)
 | 
					 | 
				
			||||||
    Dir.mktmpdir do |tmp|
 | 
					 | 
				
			||||||
      module_location = File.join(File.dirname(__FILE__), "examples", modulename)
 | 
					 | 
				
			||||||
      FileUtils.cp_r(module_location, tmp)
 | 
					 | 
				
			||||||
      old_dir = Dir.pwd
 | 
					 | 
				
			||||||
      begin
 | 
					 | 
				
			||||||
        Dir.chdir(tmp)
 | 
					 | 
				
			||||||
        yield(tmp)
 | 
					 | 
				
			||||||
      ensure
 | 
					 | 
				
			||||||
        Dir.chdir(old_dir)
 | 
					 | 
				
			||||||
      end
 | 
					 | 
				
			||||||
    end
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  def read_html(dir, modulename, file)
 | 
					 | 
				
			||||||
    File.read(File.join(dir, modulename, 'doc', file))
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,7 @@
 | 
				
			||||||
 | 
					# @param [Float] ident identification
 | 
				
			||||||
 | 
					class foo( String $ident = "Bob" , Integer $age = 10, )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					   notify {'$ident':}
 | 
				
			||||||
 | 
					   notify {'$age':}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,6 @@
 | 
				
			||||||
require 'spec_helper'
 | 
					require 'spec_helper'
 | 
				
			||||||
 | 
					require 'lib/strings_spec/module_helper'
 | 
				
			||||||
 | 
					require 'puppet/face/strings'
 | 
				
			||||||
require 'puppet_x/puppetlabs/strings/yard/handlers/host_class_handler'
 | 
					require 'puppet_x/puppetlabs/strings/yard/handlers/host_class_handler'
 | 
				
			||||||
require 'strings_spec/parsing'
 | 
					require 'strings_spec/parsing'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -59,4 +61,29 @@ describe PuppetX::PuppetLabs::Strings::YARD::Handlers::HostClassHandler do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    expect(namespace).to_not be_nil
 | 
					    expect(namespace).to_not be_nil
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					  it "should not issue just one warning if the parameter types don't match." do
 | 
				
			||||||
 | 
					    YARD::Registry.clear
 | 
				
			||||||
 | 
					    # FIXME The type information here will change with the next version of
 | 
				
			||||||
 | 
					    # puppet. `expected` is the output expected from the stable branch. The
 | 
				
			||||||
 | 
					    # output from the master branch will use this instead:
 | 
				
			||||||
 | 
					    # "...specifies the types [String] in file..."
 | 
				
			||||||
 | 
					    expected = <<-output
 | 
				
			||||||
 | 
					[warn]: @param tag types do not match the code. The ident parameter is declared as types [\"Float\"] in the docstring, but the code specifies the types [Puppet::Pops::Types::PStringType] in file manifests/init.pp near line 2
 | 
				
			||||||
 | 
					Files:           1
 | 
				
			||||||
 | 
					Modules:         0 (    0 undocumented)
 | 
				
			||||||
 | 
					Classes:         0 (    0 undocumented)
 | 
				
			||||||
 | 
					Constants:       0 (    0 undocumented)
 | 
				
			||||||
 | 
					Methods:         0 (    0 undocumented)
 | 
				
			||||||
 | 
					Puppet Classes:     1 (    0 undocumented)
 | 
				
			||||||
 | 
					Puppet Types:     0 (    0 undocumented)
 | 
				
			||||||
 | 
					 100.00% documented
 | 
				
			||||||
 | 
					    output
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    expect {
 | 
				
			||||||
 | 
					        PuppetModuleHelper.using_module(File.dirname(__FILE__),'test') do |tmp|
 | 
				
			||||||
 | 
					          Dir.chdir('test')
 | 
				
			||||||
 | 
					          Puppet::Face[:strings, :current].yardoc
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
 | 
					    }.to output(expected).to_stdout_from_any_process
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue