summaryrefslogtreecommitdiff
path: root/tool/lib
diff options
context:
space:
mode:
authorNaoto Ono <onoto1998@gmail.com>2024-03-25 13:20:04 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2024-04-02 21:55:32 +0900
commit3d1d1435c1556f8a86ed6d483b586b844e39f896 (patch)
tree0f892f6d898d4e03a88dd2e5853c4c78ca42f664 /tool/lib
parent5903fdf43eb208f9087eea4873407cc93d3f92a3 (diff)
Launchable: Refactor the logic of JsonStreamWriter
Diffstat (limited to 'tool/lib')
-rw-r--r--tool/lib/test/unit.rb50
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