diff options
author | Naoto Ono <onoto1998@gmail.com> | 2024-03-25 13:20:04 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2024-04-02 21:55:32 +0900 |
commit | 3d1d1435c1556f8a86ed6d483b586b844e39f896 (patch) | |
tree | 0f892f6d898d4e03a88dd2e5853c4c78ca42f664 /tool/lib | |
parent | 5903fdf43eb208f9087eea4873407cc93d3f92a3 (diff) |
Launchable: Refactor the logic of JsonStreamWriter
Diffstat (limited to 'tool/lib')
-rw-r--r-- | tool/lib/test/unit.rb | 50 |
1 files changed, 15 insertions, 35 deletions
diff --git a/tool/lib/test/unit.rb b/tool/lib/test/unit.rb index 01c53e929c..a748090b26 100644 --- a/tool/lib/test/unit.rb +++ b/tool/lib/test/unit.rb @@ -1409,14 +1409,16 @@ module Test if writer && test_path && status # Occasionally, the file writing operation may be paused, especially when `--repeat-count` is specified. # In such cases, we proceed to execute the operation here. - writer.write_object do - writer.write_key_value('testPath', test_path) - writer.write_key_value('status', status) - writer.write_key_value('duration', time) - writer.write_key_value('createdAt', Time.now.to_s) - writer.write_key_value('stderr', e) - writer.write_key_value('stdout', nil) - end + writer.write_object( + { + testPath: test_path, + status: status, + duration: time, + createdAt: Time.now.to_s, + stderr: e, + stdout: nil + } + ) end end @@ -1457,7 +1459,7 @@ module Test write_new_line end - def write_object + def write_object obj if @is_first_obj @is_first_obj = false else @@ -1465,15 +1467,7 @@ module Test write_new_line end @indent_level += 1 - write_indent - @file.write("{") - write_new_line - @indent_level += 1 - yield - @indent_level -= 1 - write_new_line - write_indent - @file.write("}") + @file.write(to_json_str(obj)) @indent_level -= 1 @is_first_key_val = true # Occasionally, invalid JSON will be created as shown below, especially when `--repeat-count` is specified. @@ -1492,40 +1486,26 @@ module Test def write_array(key) @indent_level += 1 - write_indent @file.write(to_json_str(key)) write_colon @file.write(" ", "[") write_new_line end - def write_key_value(key, value) - if @is_first_key_val - @is_first_key_val = false - else - write_comma - write_new_line - end - write_indent - @file.write(to_json_str(key)) - write_colon - @file.write(" ") - @file.write(to_json_str(value)) - end - def close return if @file.closed? close_array @indent_level -= 1 write_new_line - @file.write("}") + @file.write("}", "\n") @file.flush @file.close end private def to_json_str(obj) - JSON.dump(obj) + json = JSON.pretty_generate(obj) + json.gsub(/^/, ' ' * (2 * @indent_level)) end def write_indent |