1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
# 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)
assert new_parser.load(into: into = {})
assert_equal({test: result}, into)
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
|