summaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
authorJesse Wolfe <jes5199@gmail.com>2010-07-14 18:26:30 -0700
committerMarkus Roberts <Markus@reality.com>2010-07-18 19:44:22 -0700
commitcf597d72dca288011cfa3e57451b8eba56ea51da (patch)
tree4160b208bccafb1ecc1258bf1d35b80131fa0dd0 /spec
parentd6cbb2198e06bb6b8f0172b1a48c9717c7ce6e17 (diff)
downloadpuppet-cf597d72dca288011cfa3e57451b8eba56ea51da.tar.gz
puppet-cf597d72dca288011cfa3e57451b8eba56ea51da.tar.xz
puppet-cf597d72dca288011cfa3e57451b8eba56ea51da.zip
[#4233] Ruby regexps are not multiline by default, but Resource titles can be multiline
Puppet allows resource titles to contain newlines. We recently introduced several regexps that were failing on resources with multiline titles.
Diffstat (limited to 'spec')
-rwxr-xr-xspec/unit/resource/catalog_spec.rb9
-rwxr-xr-xspec/unit/type/file_spec.rb14
-rwxr-xr-xspec/unit/type_spec.rb21
3 files changed, 44 insertions, 0 deletions
diff --git a/spec/unit/resource/catalog_spec.rb b/spec/unit/resource/catalog_spec.rb
index b6f96f094..10cff91a3 100755
--- a/spec/unit/resource/catalog_spec.rb
+++ b/spec/unit/resource/catalog_spec.rb
@@ -1066,4 +1066,13 @@ describe Puppet::Resource::Catalog, "when converting from pson" do
lambda { PSON.parse @pson.to_pson }.should raise_error(ArgumentError)
end
+
+ describe "#title_key_for_ref" do
+ it "should parse a resource ref string into a pair" do
+ @catalog.title_key_for_ref("Title[name]").should == ["Title", "name"]
+ end
+ it "should parse a resource ref string into a pair, even if there's a newline inside the name" do
+ @catalog.title_key_for_ref("Title[na\nme]").should == ["Title", "na\nme"]
+ end
+ end
end
diff --git a/spec/unit/type/file_spec.rb b/spec/unit/type/file_spec.rb
index 845bf3d8b..7d93dfd64 100755
--- a/spec/unit/type/file_spec.rb
+++ b/spec/unit/type/file_spec.rb
@@ -1053,4 +1053,18 @@ describe Puppet::Type.type(:file) do
file.retrieve
end
end
+
+ describe ".title_patterns" do
+ before do
+ @type_class = Puppet::Type.type(:file)
+ end
+
+ it "should have a regexp that captures the entire string, except for a terminating slash" do
+ patterns = @type_class.title_patterns
+ string = "abc/\n\tdef/"
+ patterns[0][0] =~ string
+ $1.should == "abc/\n\tdef"
+ end
+ end
+
end
diff --git a/spec/unit/type_spec.rb b/spec/unit/type_spec.rb
index 683529d8a..71d415dc6 100755
--- a/spec/unit/type_spec.rb
+++ b/spec/unit/type_spec.rb
@@ -406,6 +406,27 @@ describe Puppet::Type do
end
end
+ describe ".title_patterns" do
+ describe "when there's one namevar" do
+ before do
+ @type_class = Puppet::Type.type(:notify)
+ @type_class.stubs(:key_attributes).returns([:one])
+ end
+
+ it "should have a default pattern for when there's one namevar" do
+ patterns = @type_class.title_patterns
+ patterns.length.should == 1
+ patterns[0].length.should == 2
+ end
+
+ it "should have a regexp that captures the entire string" do
+ patterns = @type_class.title_patterns
+ string = "abc\n\tdef"
+ patterns[0][0] =~ string
+ $1.should == "abc\n\tdef"
+ end
+ end
+ end
describe "when in a catalog" do
before do