spec/unit/util/zaml_spec.rb in puppet-2.6.4 vs spec/unit/util/zaml_spec.rb in puppet-2.6.5
- old
+ new
@@ -33,7 +33,58 @@
end
it "should produce yaml for the #{o.class} #{o.inspect} that can be reconstituted" do
lambda { YAML.load(o.to_yaml) }.should_not raise_error
end
}
+
+ def set_of_lines(l)
+ l.split("\n").sort
+ end
+
+ it "should handle references to Array in Hash values correctly" do
+ list = [1]
+ data = { "one" => list, "two" => list }
+ data.to_yaml.should == "--- \n two: &id001 \n - 1\n one: *id001"
+ expect { YAML.load(data.to_yaml).should == data }.should_not raise_error
+ end
+
+ it "should handle references to Hash in Hash values correctly" do
+ hash = { 1 => 1 }
+ data = { "one" => hash, "two" => hash }
+ # This could still someday fail because the order change would also change which one got the back ref
+ set_of_lines(data.to_yaml).should == set_of_lines("--- \n two: &id001 \n 1: 1\n one: *id001")
+ expect { YAML.load(data.to_yaml).should == data }.should_not raise_error
+ end
+
+ it "should handle references to Scalar in Hash" do
+ str = "hello"
+ data = { "one" => str, "two" => str }
+ set_of_lines(data.to_yaml).should == set_of_lines("--- \n two: hello\n one: hello")
+ expect { YAML.load(data.to_yaml).should == data }.should_not raise_error
+ end
+
+ class Zaml_test_class_A
+ attr_reader :false,:true
+ def initialize
+ @false = @true = 7
+ end
+ end
+ it "should not blow up when magic strings are used as field names" do
+ data = Zaml_test_class_A.new
+ data.to_yaml.should == %Q{--- !ruby/object:Zaml_test_class_A\n \"false\": 7\n \"true\": 7}
+ expect {
+ r = YAML.load(data.to_yaml)
+ r.class.should == data.class
+ r.true.should == data.true
+ r.false.should == data.false
+ }.should_not raise_error
+ end
+
+ it "should not blow up on back references inside arrays" do
+ s = [1,2]
+ data = [s,s]
+ data.to_yaml.should == %Q{--- \n - &id001 \n - 1\n - 2\n - *id001}
+ expect { YAML.load(data.to_yaml).should == data }.should_not raise_error
+ end
+
end