[ruby/psych] issue #443: quote Y and N when dumping

https://github.com/ruby/psych/commit/93c8fb443a
This commit is contained in:
Colin Kelley 2023-07-19 12:32:12 -07:00 committed by git
parent cf8fb94295
commit 8ae24e6b08
2 changed files with 10 additions and 1 deletions

View File

@ -267,7 +267,7 @@ module Psych
tag = 'tag:yaml.org,2002:str'
plain = false
quote = false
elsif o == 'y' || o == 'n'
elsif o == 'y' || o == 'Y' || o == 'n' || o == 'N'
style = Nodes::Scalar::DOUBLE_QUOTED
elsif @line_width && o.length > @line_width
style = Nodes::Scalar::FOLDED

View File

@ -24,10 +24,19 @@ module Psych
# "ambiguity" in the emitted document
def test_y_is_quoted
assert_match(/"y"/, Psych.dump("y"))
assert_match(/"Y"/, Psych.dump("Y"))
end
def test_n_is_quoted
assert_match(/"n"/, Psych.dump("n"))
assert_match(/"N"/, Psych.dump("N"))
end
def test_all_yaml_1_1_booleans_are_quoted
yaml_1_1_booleans = %w[y Y yes Yes YES n N no No NO true True TRUE false False FALSE on On ON off Off OFF] # from https://yaml.org/type/bool.html
yaml_1_1_booleans.each do |boolean|
assert_match(/"#{boolean}"|'#{boolean}'/, Psych.dump(boolean))
end
end
def test_string_with_newline