Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Add tests for OptionParser#load
  • Loading branch information
nobu committed Oct 29, 2022
commit e1d64b15dff2f64ba4861e2b63154952a61682ce
139 changes: 139 additions & 0 deletions test/optparse/test_load.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
# 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