[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