[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, master, updated. debian/0.24.6-1-356-g5718585

James Turnbull james at lovedthanlost.net
Fri Jan 23 14:21:39 UTC 2009


The following commit has been merged in the master branch:
commit 724a6f672308ab6f52d738caf20c5994e6225071
Author: Brice Figureau <brice-puppet at daysofwonder.com>
Date:   Sun Nov 9 12:30:06 2008 +0100

    RSpec tests for the doc system (covers AST.doc, lexer and parser)
    
    Signed-off-by: Brice Figureau <brice-puppet at daysofwonder.com>

diff --git a/spec/unit/parser/ast.rb b/spec/unit/parser/ast.rb
new file mode 100644
index 0000000..5139437
--- /dev/null
+++ b/spec/unit/parser/ast.rb
@@ -0,0 +1,37 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../spec_helper'
+
+require 'puppet/parser/ast'
+
+describe Puppet::Parser::AST do
+
+    it "should have a doc accessor" do
+        ast = Puppet::Parser::AST.new({})
+        ast.should respond_to(:doc)
+    end
+
+    it "should have a use_docs accessor to indicate it wants documentation" do
+        ast = Puppet::Parser::AST.new({})
+        ast.should respond_to(:use_docs)
+    end
+
+    [ Puppet::Parser::AST::Collection, Puppet::Parser::AST::Definition, Puppet::Parser::AST::Else,
+      Puppet::Parser::AST::Function, Puppet::Parser::AST::HostClass, Puppet::Parser::AST::IfStatement,
+      Puppet::Parser::AST::Node, Puppet::Parser::AST::Resource, Puppet::Parser::AST::ResourceDefaults,
+      Puppet::Parser::AST::ResourceOverride, Puppet::Parser::AST::VarDef
+    ].each do |k|
+        it "#{k}.use_docs should return true" do
+            ast = k.new({})
+            ast.use_docs.should be_true
+        end
+    end
+
+    describe "when initializing" do
+        it "should store the doc argument if passed" do
+            ast = Puppet::Parser::AST.new(:doc => "documentation")
+            ast.doc.should == "documentation"
+        end
+    end
+
+end
\ No newline at end of file
diff --git a/spec/unit/parser/lexer.rb b/spec/unit/parser/lexer.rb
index d62d992..389f1fe 100755
--- a/spec/unit/parser/lexer.rb
+++ b/spec/unit/parser/lexer.rb
@@ -30,7 +30,7 @@ describe Puppet::Parser::Lexer::Token do
         @token = Puppet::Parser::Lexer::Token.new(%r{something}, :NAME)
     end
 
-    [:regex, :name, :string, :skip, :incr_line, :skip_text].each do |param|
+    [:regex, :name, :string, :skip, :incr_line, :skip_text, :accumulate].each do |param|
         it "should have a #{param.to_s} reader" do
             @token.should be_respond_to(param)
         end
@@ -285,6 +285,14 @@ describe Puppet::Parser::Lexer::TOKENS[:COMMENT] do
     it "should be marked to get skipped" do
         @token.skip?.should be_true
     end
+
+    it "should be marked to accumulate" do
+        @token.accumulate?.should be_true
+    end
+
+    it "'s block should return the comment without the #" do
+        @token.convert(@lexer,"# this is a comment")[1].should == "this is a comment"
+    end
 end
 
 describe Puppet::Parser::Lexer::TOKENS[:MLCOMMENT] do
@@ -313,6 +321,16 @@ describe Puppet::Parser::Lexer::TOKENS[:MLCOMMENT] do
         match[1].should == " first "
     end
 
+    it "should be marked to accumulate" do
+        @token.accumulate?.should be_true
+    end
+
+    it "'s block should return the comment without the comment marks" do
+        @lexer.stubs(:line=).with(0)
+
+        @token.convert(@lexer,"/* this is a comment */")[1].should == "this is a comment"
+    end
+
 end
 
 describe Puppet::Parser::Lexer::TOKENS[:RETURN] do
@@ -383,6 +401,43 @@ describe Puppet::Parser::Lexer::TOKENS[:VARIABLE] do
     end
 end
 
+describe Puppet::Parser::Lexer, "when lexing comments" do
+    before { @lexer = Puppet::Parser::Lexer.new }
+
+    it "should accumulate token in munge_token" do
+        token = stub 'token', :skip => true, :accumulate? => true, :incr_line => nil, :skip_text => false
+
+        token.stubs(:convert).with(@lexer, "# this is a comment").returns([token, " this is a comment"])
+        @lexer.munge_token(token, "# this is a comment")
+        @lexer.munge_token(token, "# this is a comment")
+
+        @lexer.getcomment.should == " this is a comment\n this is a comment\n"
+    end
+
+    it "should add a new comment stack level on LBRACE" do
+        @lexer.string = "{"
+
+        @lexer.expects(:commentpush)
+
+        @lexer.fullscan
+    end
+
+    it "should return the current comments on getcomment" do
+        @lexer.string = "# comment"
+        @lexer.fullscan
+
+        @lexer.getcomment.should == "comment\n"
+    end
+
+    it "should discard the previous comments on blank line" do
+        @lexer.string = "# 1\n\n# 2"
+        @lexer.fullscan
+
+        @lexer.getcomment.should == "2\n"
+    end
+
+end
+
 # FIXME: We need to rewrite all of these tests, but I just don't want to take the time right now.
 describe "Puppet::Parser::Lexer in the old tests" do
     before { @lexer = Puppet::Parser::Lexer.new }
@@ -538,6 +593,7 @@ describe "Puppet::Parser::Lexer in the old tests" do
             @lexer.fullscan[0].should == [:CLASSREF, foo]
         end
     end
+
 end
 
 require 'puppettest/support/utils'
diff --git a/spec/unit/parser/parser.rb b/spec/unit/parser/parser.rb
index 077f93d..2a086ad 100755
--- a/spec/unit/parser/parser.rb
+++ b/spec/unit/parser/parser.rb
@@ -37,7 +37,6 @@ describe Puppet::Parser do
         it "not, it should create the correct ast objects" do
             AST::Not.expects(:new).with { |h| h[:value].is_a?(AST::Boolean) }
             @parser.parse("if ! true { $var = 1 }")
-        
         end
 
         it "boolean operation, it should create the correct ast objects" do
@@ -60,14 +59,15 @@ describe Puppet::Parser do
 
     describe Puppet::Parser, "when parsing if complex expressions" do
          it "should create a correct ast tree" do
+             ast = stub_everything 'ast'
              AST::ComparisonOperator.expects(:new).with { 
                  |h| h[:rval].is_a?(AST::Name) and h[:lval].is_a?(AST::Name) and h[:operator]==">"
-             }.returns("whatever")
+             }.returns(ast)
              AST::ComparisonOperator.expects(:new).with { 
                  |h| h[:rval].is_a?(AST::Name) and h[:lval].is_a?(AST::Name) and h[:operator]=="=="
-             }.returns("whatever")
+             }.returns(ast)
              AST::BooleanOperator.expects(:new).with {
-                 |h| h[:rval]=="whatever" and h[:lval]=="whatever" and h[:operator]=="and"                
+                 |h| h[:rval]==ast and h[:lval]==ast and h[:operator]=="and"
              }
              @parser.parse("if (1 > 2) and (1 == 2) { $var = 1 }")
          end
@@ -199,7 +199,30 @@ describe Puppet::Parser do
 
             klass1.code.children.should == [@one, at two]
         end
+    end
 
+    describe Puppet::Parser, "when parsing comments before statement" do
+        it "should associate the documentation to the statement AST node" do
+            ast = @parser.parse("""
+            # comment
+            class test {}
+            """)
+
+            ast[:classes]["test"].doc.should == "comment\n"
+        end
     end
 
+    describe Puppet::Parser, "when building ast nodes" do
+        it "should get lexer comments if ast node declares use_docs" do
+            lexer = stub 'lexer'
+            ast = mock 'ast', :nil? => false, :use_docs => true, :doc => ""
+            @parser.stubs(:lexer).returns(lexer)
+
+            Puppet::Parser::AST::Definition.expects(:new).returns(ast)
+            lexer.expects(:getcomment).returns("comment")
+            ast.expects(:doc=).with("comment")
+
+            @parser.ast(Puppet::Parser::AST::Definition)
+        end
+    end
  end

-- 
Puppet packaging for Debian



More information about the Pkg-puppet-devel mailing list