require File.dirname(__FILE__) + '/../spec_helper' require 'stringio' describe YARD::CLI::Stats do before do Registry.clear YARD.parse_string <<-eof class A CONST = 1 def foo; end # Documented def bar; end end module B; end eof @main_stats = "Files: 1\n" + "Modules: 1 ( 1 undocumented)\n" + "Classes: 1 ( 1 undocumented)\n" + "Constants: 1 ( 1 undocumented)\n" + "Methods: 2 ( 1 undocumented)\n" + " 20.00% documented\n" @output = StringIO.new @stats = CLI::Stats.new(false) @stats.stub!(:support_rdoc_document_file!).and_return([]) @stats.stub!(:yardopts).and_return([]) log.stub!(:puts) {|*args| @output << args.join("\n") << "\n" } end it "should list undocumented objects with --list-undoc" do @stats.run('--list-undoc') @output.string.should == <<-eof #{@main_stats} Undocumented Objects: (in file: (stdin)) B A A::CONST A#foo eof end it "should list no undocumented objects with --list-undoc when objects are undocumented" do Registry.clear YARD.parse_string <<-eof # documentation def foo; end eof @stats.run('--list-undoc') @output.string.should == "Files: 1\n" + "Modules: 0 ( 0 undocumented)\n" + "Classes: 0 ( 0 undocumented)\n" + "Constants: 0 ( 0 undocumented)\n" + "Methods: 1 ( 0 undocumented)\n" + " 100.00% documented\n" end it "should list undocumented objects in compact mode with --list-undoc --compact" do @stats.run('--list-undoc', '--compact') @output.string.should == <<-eof #{@main_stats} Undocumented Objects: B ((stdin):9) A ((stdin):1) A::CONST ((stdin):2) A#foo ((stdin):4) eof end it "should still list stats with --quiet" do @stats.run('--quiet') @output.string.should == @main_stats end it "should ignore everything with --no-public" do @stats.run('--no-public') @output.string.should == "Files: 0\n" + "Modules: 0 ( 0 undocumented)\n" + "Classes: 0 ( 0 undocumented)\n" + "Constants: 0 ( 0 undocumented)\n" + "Methods: 0 ( 0 undocumented)\n" + " 0.00% documented\n" end end