Nil tag with implicit: false raises error on SnakeYAML
还没有人认领这个 Issue。
评估
调研方向
从 lib/psych/visitors/yaml_tree.rb 大约第 520 行开始,跟踪 nil 标签和隐式值进入 emitter 的过程,包括 org/jruby/ext/psych/PsychEmitter.java。复现 #475 中的测试或 JRuby PR #6680 中剩余的失败,然后验证转储受影响的 mapping 不再触发 SnakeYAML 的标签错误。
由索引模型根据 Issue 内容生成。
描述
The following line, when reached by the tests from #475, triggers SnakeYAML to raise an error:
The error:
RuntimeError: org.yaml.snakeyaml.emitter.EmitterException: tag is not specified
scalar at org/jruby/ext/psych/PsychEmitter.java:206
visit_Psych_Nodes_Scalar at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/emitter.rb:32
visit at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/visitor.rb:30
accept at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/visitor.rb:6
visit_Psych_Nodes_Mapping at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/emitter.rb:43
each at org/jruby/RubyArray.java:1864
visit_Psych_Nodes_Mapping at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/emitter.rb:43
visit at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/visitor.rb:30
accept at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/visitor.rb:6
visit_Psych_Nodes_Document at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/emitter.rb:27
each at org/jruby/RubyArray.java:1864
visit_Psych_Nodes_Document at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/emitter.rb:27
visit at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/visitor.rb:30
accept at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/visitor.rb:6
visit_Psych_Nodes_Stream at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/emitter.rb:21
each at org/jruby/RubyArray.java:1864
visit_Psych_Nodes_Stream at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/emitter.rb:21
visit at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/visitor.rb:30
accept at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/visitor.rb:6
yaml at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/nodes/node.rb:61
dump at /Users/headius/projects/jruby/lib/ruby/stdlib/psych.rb:515
<main> at blah.rb:13
As far as I can tell, the issue is that the tag is nil and implicit is false, which is prohibited in SnakeYAML for a mapping.
This is somewhat outside my understanding of YAML and I am not sure whether this constitutes an improper behavioral difference in SnakeYAML or not.
The implicit value comes from the default @implicit of Coder, and is never set to true in the logic hit by the tests mentioned above. As it stands I do not know how to reconcile the values being passed in with the SnakeYAML hard error.
This leads to the remaining failures in https://github.com/jruby/jruby/pull/6680, which I will exclude to proceed with the Psych update.
- 主要语言
- Ruby
- 星标
- 597
- 派生
- 223
- 平均合并
- 6 小时 8 分钟
- 30 天内合并 PR
- 2
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
ruby/psych 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 78/100
-
Documentation
难度 1/5 1 小时以内 新手友好度 72/100
-
Psych.dump raises Encoding::CompatibilityError for UTF-16/UTF-32 strings可能已有人在做 @Halvanhelv 于 27 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 55/100
-
难度 4/5 3-5 天 新手友好度 68/100
-
难度 4/5 3-5 天 新手友好度 52/100
相似的 Issue
-
bug
难度 2/5 1-3 小时 新手友好度 62/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 65/100
slovensko-digital/autogram-portal#392 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 65/100
voxpupuli/puppet-quadlets#122 · 5 条评论 ·
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 82/100
TheOdinProject/curriculum#31452 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 70/100