From 4a8c6ba6c4bd65a96949b994f4e10f2ac3342262 Mon Sep 17 00:00:00 2001
From: SHIBATA Hiroshi <hsbt@ruby-lang.org>
Date: Fri, 5 Jan 2018 16:10:12 +0900
Subject: [PATCH] Use `File.open` instead of `Kernel#open`.

  We should use safety method.
---
 lib/rdoc/encoding.rb            |  2 +-
 lib/rdoc/erbio.rb               |  2 +-
 lib/rdoc/options.rb             |  2 +-
 lib/rdoc/parser.rb              |  2 +-
 lib/rdoc/rdoc.rb                |  4 ++--
 lib/rdoc/ri/driver.rb           |  2 +-
 lib/rdoc/store.rb               |  8 ++++----
 test/rdoc/test_rdoc_parser.rb   | 18 +++++++++---------
 test/rdoc/test_rdoc_rdoc.rb     | 18 +++++++++---------
 test/rdoc/test_rdoc_ri_paths.rb |  2 +-
 test/rdoc/test_rdoc_servlet.rb  |  2 +-
 test/rdoc/test_rdoc_store.rb    | 12 ++++++------
 12 files changed, 37 insertions(+), 37 deletions(-)

diff --git a/lib/rdoc/encoding.rb b/lib/rdoc/encoding.rb
index 54ecd89..c277efb 100644
--- a/lib/rdoc/encoding.rb
+++ b/lib/rdoc/encoding.rb
@@ -18,7 +18,7 @@ module RDoc::Encoding
   # unknown character in the target encoding will be replaced with '?'
 
   def self.read_file filename, encoding, force_transcode = false
-    content = open filename, "rb" do |f| f.read end
+    content = File.open filename, "rb" do |f| f.read end
     content.gsub!("\r\n", "\n") if RUBY_PLATFORM =~ /mswin|mingw/
 
     utf8 = content.sub!(/\A\xef\xbb\xbf/, '')
diff --git a/lib/rdoc/erbio.rb b/lib/rdoc/erbio.rb
index 42ce895..29a9db5 100644
--- a/lib/rdoc/erbio.rb
+++ b/lib/rdoc/erbio.rb
@@ -9,7 +9,7 @@ require 'erb'
 #
 #   erbio = RDoc::ERBIO.new '<%= "hello world" %>', nil, nil
 #
-#   open 'hello.txt', 'w' do |io|
+#   File.open 'hello.txt', 'w' do |io|
 #     erbio.result binding
 #   end
 #
diff --git a/lib/rdoc/options.rb b/lib/rdoc/options.rb
index 17bbca8..99d7aaa 100644
--- a/lib/rdoc/options.rb
+++ b/lib/rdoc/options.rb
@@ -1217,7 +1217,7 @@ Usage: #{opt.program_name} [options] [names...]
   def write_options
     RDoc.load_yaml
 
-    open '.rdoc_options', 'w' do |io|
+    File.open '.rdoc_options', 'w' do |io|
       io.set_encoding Encoding::UTF_8
 
       YAML.dump self, io
diff --git a/lib/rdoc/parser.rb b/lib/rdoc/parser.rb
index 2b826d9..597bcd6 100644
--- a/lib/rdoc/parser.rb
+++ b/lib/rdoc/parser.rb
@@ -139,7 +139,7 @@ class RDoc::Parser
   # Returns the file type from the modeline in +file_name+
 
   def self.check_modeline file_name
-    line = open file_name do |io|
+    line = File.open file_name do |io|
       io.gets
     end
 
diff --git a/lib/rdoc/rdoc.rb b/lib/rdoc/rdoc.rb
index e0a45b8..0089fe9 100644
--- a/lib/rdoc/rdoc.rb
+++ b/lib/rdoc/rdoc.rb
@@ -189,7 +189,7 @@ class RDoc::RDoc
       error "#{dir} exists and is not a directory" unless File.directory? dir
 
       begin
-        open flag_file do |io|
+        File.open flag_file do |io|
           unless force then
             Time.parse io.gets
 
@@ -234,7 +234,7 @@ option)
   def update_output_dir(op_dir, time, last = {})
     return if @options.dry_run or not @options.update_output_dir
 
-    open output_flag_file(op_dir), "w" do |f|
+    File.open output_flag_file(op_dir), "w" do |f|
       f.puts time.rfc2822
       last.each do |n, t|
         f.puts "#{n}\t#{t.rfc2822}"
diff --git a/lib/rdoc/ri/driver.rb b/lib/rdoc/ri/driver.rb
index fa0e040..6b44384 100644
--- a/lib/rdoc/ri/driver.rb
+++ b/lib/rdoc/ri/driver.rb
@@ -110,7 +110,7 @@ class RDoc::RI::Driver
   def self.dump data_path
     require 'pp'
 
-    open data_path, 'rb' do |io|
+    File.open data_path, 'rb' do |io|
       pp Marshal.load(io.read)
     end
   end
diff --git a/lib/rdoc/store.rb b/lib/rdoc/store.rb
index 07d03e9..f892df3 100644
--- a/lib/rdoc/store.rb
+++ b/lib/rdoc/store.rb
@@ -768,7 +768,7 @@ class RDoc::Store
 
     marshal = Marshal.dump @cache
 
-    open cache_path, 'wb' do |io|
+    File.open cache_path, 'wb' do |io|
       io.write marshal
     end
   end
@@ -844,7 +844,7 @@ class RDoc::Store
 
     marshal = Marshal.dump klass
 
-    open path, 'wb' do |io|
+    File.open path, 'wb' do |io|
       io.write marshal
     end
   end
@@ -869,7 +869,7 @@ class RDoc::Store
 
     marshal = Marshal.dump method
 
-    open method_file(full_name, method.full_name), 'wb' do |io|
+    File.open method_file(full_name, method.full_name), 'wb' do |io|
       io.write marshal
     end
   end
@@ -891,7 +891,7 @@ class RDoc::Store
 
     marshal = Marshal.dump page
 
-    open path, 'wb' do |io|
+    File.open path, 'wb' do |io|
       io.write marshal
     end
   end
diff --git a/test/rdoc/test_rdoc_parser.rb b/test/rdoc/test_rdoc_parser.rb
index 5d4da7e..2cd0394 100644
--- a/test/rdoc/test_rdoc_parser.rb
+++ b/test/rdoc/test_rdoc_parser.rb
@@ -19,7 +19,7 @@ class TestRDocParser < RDoc::TestCase
   def test_class_binary_eh_ISO_2022_JP
     iso_2022_jp = File.join Dir.tmpdir, "test_rdoc_parser_#{$$}.rd"
 
-    open iso_2022_jp, 'wb' do |io|
+    File.open iso_2022_jp, 'wb' do |io|
       io.write "# coding: ISO-2022-JP\n"
       io.write ":\e$B%3%^%s%I\e(B:\n"
     end
@@ -31,7 +31,7 @@ class TestRDocParser < RDoc::TestCase
 
   def test_class_binary_eh_marshal
     marshal = File.join Dir.tmpdir, "test_rdoc_parser_#{$$}.marshal"
-    open marshal, 'wb' do |io|
+    File.open marshal, 'wb' do |io|
       io.write Marshal.dump('')
       io.write 'lots of text ' * 500
     end
@@ -92,7 +92,7 @@ class TestRDocParser < RDoc::TestCase
   def test_class_for_executable
     temp_dir do
       content = "#!/usr/bin/env ruby -w\n"
-      open 'app', 'w' do |io| io.write content end
+      File.open 'app', 'w' do |io| io.write content end
       app = @store.add_file 'app'
 
       parser = @RP.for app, 'app', content, @options, :stats
@@ -126,7 +126,7 @@ class TestRDocParser < RDoc::TestCase
     temp_dir do
       content = "# -*- rdoc -*-\n= NEWS\n"
 
-      open 'NEWS', 'w' do |io| io.write content end
+      File.open 'NEWS', 'w' do |io| io.write content end
       app = @store.add_file 'NEWS'
 
       parser = @RP.for app, 'NEWS', content, @options, :stats
@@ -140,7 +140,7 @@ class TestRDocParser < RDoc::TestCase
   def test_can_parse_modeline
     readme_ext = File.join Dir.tmpdir, "README.EXT.#{$$}"
 
-    open readme_ext, 'w' do |io|
+    File.open readme_ext, 'w' do |io|
       io.puts "# README.EXT -  -*- rdoc -*- created at: Mon Aug 7 16:45:54 JST 1995"
       io.puts
       io.puts "This document explains how to make extension libraries for Ruby."
@@ -162,7 +162,7 @@ class TestRDocParser < RDoc::TestCase
   def test_check_modeline
     readme_ext = File.join Dir.tmpdir, "README.EXT.#{$$}"
 
-    open readme_ext, 'w' do |io|
+    File.open readme_ext, 'w' do |io|
       io.puts "# README.EXT -  -*- RDoc -*- created at: Mon Aug 7 16:45:54 JST 1995"
       io.puts
       io.puts "This document explains how to make extension libraries for Ruby."
@@ -176,7 +176,7 @@ class TestRDocParser < RDoc::TestCase
   def test_check_modeline_coding
     readme_ext = File.join Dir.tmpdir, "README.EXT.#{$$}"
 
-    open readme_ext, 'w' do |io|
+    File.open readme_ext, 'w' do |io|
       io.puts "# -*- coding: utf-8 -*-"
     end
 
@@ -188,7 +188,7 @@ class TestRDocParser < RDoc::TestCase
   def test_check_modeline_with_other
     readme_ext = File.join Dir.tmpdir, "README.EXT.#{$$}"
 
-    open readme_ext, 'w' do |io|
+    File.open readme_ext, 'w' do |io|
       io.puts "# README.EXT -  -*- mode: RDoc; indent-tabs-mode: nil -*-"
       io.puts
       io.puts "This document explains how to make extension libraries for Ruby."
@@ -202,7 +202,7 @@ class TestRDocParser < RDoc::TestCase
   def test_check_modeline_no_modeline
     readme_ext = File.join Dir.tmpdir, "README.EXT.#{$$}"
 
-    open readme_ext, 'w' do |io|
+    File.open readme_ext, 'w' do |io|
       io.puts "This document explains how to make extension libraries for Ruby."
     end
 
diff --git a/test/rdoc/test_rdoc_rdoc.rb b/test/rdoc/test_rdoc_rdoc.rb
index 07541df..c9b55fa 100644
--- a/test/rdoc/test_rdoc_rdoc.rb
+++ b/test/rdoc/test_rdoc_rdoc.rb
@@ -115,7 +115,7 @@ class TestRDocRDoc < RDoc::TestCase
 
   def test_load_options_invalid
     temp_dir do
-      open '.rdoc_options', 'w' do |io|
+      File.open '.rdoc_options', 'w' do |io|
         io.write "a: !ruby.yaml.org,2002:str |\nfoo"
       end
 
@@ -187,7 +187,7 @@ class TestRDocRDoc < RDoc::TestCase
     temp_dir do |dir|
       @rdoc.options.root = Pathname(Dir.pwd)
 
-      open 'test.txt', 'w' do |io|
+      File.open 'test.txt', 'w' do |io|
         io.puts 'hi'
       end
 
@@ -223,7 +223,7 @@ class TestRDocRDoc < RDoc::TestCase
     temp_dir do |dir|
       @rdoc.options.parse %W[--root #{test_path}]
 
-      open 'include.txt', 'w' do |io|
+      File.open 'include.txt', 'w' do |io|
         io.puts ':include: test.txt'
       end
 
@@ -244,7 +244,7 @@ class TestRDocRDoc < RDoc::TestCase
       @rdoc.options.page_dir = Pathname('pages')
       @rdoc.options.root = Pathname(Dir.pwd)
 
-      open 'pages/test.txt', 'w' do |io|
+      File.open 'pages/test.txt', 'w' do |io|
         io.puts 'hi'
       end
 
@@ -263,7 +263,7 @@ class TestRDocRDoc < RDoc::TestCase
     temp_dir do |dir|
       @rdoc.options.root = Pathname(dir)
 
-      open 'test.txt', 'w' do |io|
+      File.open 'test.txt', 'w' do |io|
         io.puts 'hi'
       end
 
@@ -340,7 +340,7 @@ class TestRDocRDoc < RDoc::TestCase
 
   def test_remove_unparseable_tags_emacs
     temp_dir do
-      open 'TAGS', 'wb' do |io| # emacs
+      File.open 'TAGS', 'wb' do |io| # emacs
         io.write "\f\nlib/foo.rb,43\n"
       end
 
@@ -354,7 +354,7 @@ class TestRDocRDoc < RDoc::TestCase
 
   def test_remove_unparseable_tags_vim
     temp_dir do
-      open 'TAGS', 'w' do |io| # emacs
+      File.open 'TAGS', 'w' do |io| # emacs
         io.write "!_TAG_"
       end
 
@@ -405,7 +405,7 @@ class TestRDocRDoc < RDoc::TestCase
 
   def test_setup_output_dir_exists
     Dir.mktmpdir {|path|
-      open @rdoc.output_flag_file(path), 'w' do |io|
+      File.open @rdoc.output_flag_file(path), 'w' do |io|
         io.puts Time.at 0
         io.puts "./lib/rdoc.rb\t#{Time.at 86400}"
       end
@@ -419,7 +419,7 @@ class TestRDocRDoc < RDoc::TestCase
 
   def test_setup_output_dir_exists_empty_created_rid
     Dir.mktmpdir {|path|
-      open @rdoc.output_flag_file(path), 'w' do end
+      File.open @rdoc.output_flag_file(path), 'w' do end
 
       e = assert_raises RDoc::Error do
         @rdoc.setup_output_dir path, false
diff --git a/test/rdoc/test_rdoc_ri_paths.rb b/test/rdoc/test_rdoc_ri_paths.rb
index b0f3683..0e00fd4 100644
--- a/test/rdoc/test_rdoc_ri_paths.rb
+++ b/test/rdoc/test_rdoc_ri_paths.rb
@@ -22,7 +22,7 @@ class TestRDocRIPaths < RDoc::TestCase
     specs.each do |spec|
       spec.loaded_from = spec.spec_file
 
-      open spec.spec_file, 'w' do |file|
+      File.open spec.spec_file, 'w' do |file|
         file.write spec.to_ruby_for_cache
       end
 
diff --git a/test/rdoc/test_rdoc_servlet.rb b/test/rdoc/test_rdoc_servlet.rb
index 4dd1f08..414f3e9 100644
--- a/test/rdoc/test_rdoc_servlet.rb
+++ b/test/rdoc/test_rdoc_servlet.rb
@@ -69,7 +69,7 @@ class TestRDocServlet < RDoc::TestCase
       FileUtils.mkdir 'css'
 
       now = Time.now
-      open 'css/rdoc.css', 'w' do |io| io.write 'h1 { color: red }' end
+      File.open 'css/rdoc.css', 'w' do |io| io.write 'h1 { color: red }' end
       File.utime now, now, 'css/rdoc.css'
 
       @s.asset_dirs[:darkfish] = '.'
diff --git a/test/rdoc/test_rdoc_store.rb b/test/rdoc/test_rdoc_store.rb
index 4a4cf3a..0e5bcf6 100644
--- a/test/rdoc/test_rdoc_store.rb
+++ b/test/rdoc/test_rdoc_store.rb
@@ -407,7 +407,7 @@ class TestRDocStore < XrefTestCase
 
     Dir.mkdir @tmpdir
 
-    open File.join(@tmpdir, 'cache.ri'), 'wb' do |io|
+    File.open File.join(@tmpdir, 'cache.ri'), 'wb' do |io|
       Marshal.dump cache, io
     end
 
@@ -441,7 +441,7 @@ class TestRDocStore < XrefTestCase
 
     Dir.mkdir @tmpdir
 
-    open File.join(@tmpdir, 'cache.ri'), 'wb' do |io|
+    File.open File.join(@tmpdir, 'cache.ri'), 'wb' do |io|
       Marshal.dump cache, io
     end
 
@@ -490,7 +490,7 @@ class TestRDocStore < XrefTestCase
 
     Dir.mkdir @tmpdir
 
-    open File.join(@tmpdir, 'cache.ri'), 'wb' do |io|
+    File.open File.join(@tmpdir, 'cache.ri'), 'wb' do |io|
       Marshal.dump cache, io
     end
 
@@ -538,7 +538,7 @@ class TestRDocStore < XrefTestCase
 
     file = @s.method_file @klass.full_name, @meth.full_name
 
-    open file, 'wb' do |io|
+    File.open file, 'wb' do |io|
       io.write "\x04\bU:\x14RDoc::AnyMethod[\x0Fi\x00I" +
                "\"\vmethod\x06:\x06EF\"\x11Klass#method0:\vpublic" +
                "o:\eRDoc::Markup::Document\x06:\v@parts[\x06" +
@@ -633,7 +633,7 @@ class TestRDocStore < XrefTestCase
 
     expected[:ancestors]['Object'] = %w[BasicObject]
 
-    open File.join(@tmpdir, 'cache.ri'), 'rb' do |io|
+    File.open File.join(@tmpdir, 'cache.ri'), 'rb' do |io|
       cache = Marshal.load io.read
 
       assert_equal expected, cache
@@ -701,7 +701,7 @@ class TestRDocStore < XrefTestCase
 
     expected[:ancestors]['Object'] = %w[BasicObject]
 
-    open File.join(@tmpdir, 'cache.ri'), 'rb' do |io|
+    File.open File.join(@tmpdir, 'cache.ri'), 'rb' do |io|
       cache = Marshal.load io.read
 
       assert_equal expected, cache
-- 
2.27.0

