[前][次][番号順一覧][スレッド一覧]

ruby-changes:74287

From: Nobuyoshi <ko1@a...>
Date: Sat, 29 Oct 2022 22:40:34 +0900 (JST)
Subject: [ruby-changes:74287] 4dac53f0a4 (master): [ruby/optparse] Add tests for `OptionParser#load`

https://git.ruby-lang.org/ruby.git/commit/?id=4dac53f0a4

From 4dac53f0a48920f80ccaa4de151631659ab1d2ba Mon Sep 17 00:00:00 2001
From: Nobuyoshi Nakada <nobu@r...>
Date: Sat, 29 Oct 2022 22:23:14 +0900
Subject: [ruby/optparse] Add tests for `OptionParser#load`

https://github.com/ruby/optparse/commit/fb34a1d3a3
---
 test/optparse/test_load.rb | 139 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 139 insertions(+)
 create mode 100644 test/optparse/test_load.rb

diff --git a/test/optparse/test_load.rb b/test/optparse/test_load.rb
new file mode 100644
index 0000000000..de24f1c380
--- /dev/null
+++ b/test/optparse/test_load.rb
@@ -0,0 +1,139 @@ https://github.com/ruby/ruby/blob/trunk/test/optparse/test_load.rb#L1
+# frozen_string_literal: false
+require 'test/unit'
+require 'optparse'
+require 'tmpdir'
+
+class TestOptionParserLoad < Test::Unit::TestCase
+  def setup
+    @tmpdir = Dir.mktmpdir("optparse_test-")
+    @basename = File.basename($0, '.*')
+    @envs = %w[HOME XDG_CONFIG_HOME XDG_CONFIG_DIRS].each_with_object({}) do |v, h|
+      h[v] = ENV.delete(v)
+    end
+  end
+
+  def teardown
+    ENV.update(@envs)
+    FileUtils.rm_rf(@tmpdir)
+  end
+
+  def new_parser
+    @result = nil
+    OptionParser.new do |opt|
+      opt.on("--test=arg") {|v| @result = v}
+    end
+  end
+
+  def assert_load(result)
+    assert new_parser.load
+    assert_equal(result, @result)
+  end
+
+  def setup_options(env, dir, suffix = nil)
+    optdir = File.join(@tmpdir, dir)
+    FileUtils.mkdir_p(optdir)
+    file = File.join(optdir, [@basename, suffix].join(""))
+    File.write(file, "--test=#{dir}")
+    ENV.update(env)
+    if block_given?
+      begin
+        yield dir, optdir
+      ensure
+        File.unlink(file)
+        Dir.rmdir(optdir) rescue nil
+      end
+    else
+      return dir, optdir
+    end
+  end
+
+  def setup_options_home(&block)
+    setup_options({'HOME'=>@tmpdir}, ".options", &block)
+  end
+
+  def setup_options_xdg_config_home(&block)
+    setup_options({'XDG_CONFIG_HOME'=>@tmpdir+"/xdg"}, "xdg", ".options", &block)
+  end
+
+  def setup_options_home_config(&block)
+    setup_options({'HOME'=>@tmpdir}, ".config", ".options", &block)
+  end
+
+  def setup_options_xdg_config_dirs(&block)
+    setup_options({'XDG_CONFIG_DIRS'=>@tmpdir+"/xdgconf"}, "xdgconf", ".options", &block)
+  end
+
+  def setup_options_home_config_settings(&block)
+    setup_options({'HOME'=>@tmpdir}, "config/settings", ".options", &block)
+  end
+
+  def test_load_home_options
+    result, = setup_options_home
+    assert_load(result)
+
+    setup_options_xdg_config_home do
+      assert_load(result)
+    end
+
+    setup_options_home_config do
+      assert_load(result)
+    end
+
+    setup_options_xdg_config_dirs do
+      assert_load(result)
+    end
+
+    setup_options_home_config_settings do
+      assert_load(result)
+    end
+  end
+
+  def test_load_xdg_config_home
+    result, = setup_options_xdg_config_home
+    assert_load(result)
+
+    setup_options_home_config do
+      assert_load(result)
+    end
+
+    setup_options_xdg_config_dirs do
+      assert_load(result)
+    end
+
+    setup_options_home_config_settings do
+      assert_load(result)
+    end
+  end
+
+  def test_load_home_config
+    result, = setup_options_home_config
+    assert_load(result)
+
+    setup_options_xdg_config_dirs do
+      assert_load(result)
+    end
+
+    setup_options_home_config_settings do
+      assert_load(result)
+    end
+  end
+
+  def test_load_xdg_config_dirs
+    result, = setup_options_xdg_config_dirs
+    assert_load(result)
+
+    setup_options_home_config_settings do
+      assert_load(result)
+    end
+  end
+
+  def test_load_home_config_settings
+    result, = setup_options_home_config_settings
+    assert_load(result)
+  end
+
+  def test_load_nothing
+    assert !new_parser.load
+    assert_nil @result
+  end
+end
-- 
cgit v1.2.3


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]