Skip to content

Commit 115b4c6

Browse files
hsbtmsuliq
andcommitted
Add NEWS.md entry for ENV.fetch_values and that tests
From ruby/rubygems#8501 Co-authored-by: Suleyman Musayev <96992680+msuliq@users.noreply.github.com>
1 parent 3f57ba8 commit 115b4c6

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

NEWS.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@ Note that each entry is kept to a minimum, see links for details.
1111

1212
Note: We're only listing outstanding class updates.
1313

14+
* ENV
15+
16+
* `ENV.fetch_values` is added. It returns an array of values for the
17+
given names, raising `KeyError` for missing names unless a block is
18+
given. [[Feature #21781]]
19+
1420
* Kernel
1521

1622
* `Kernel#autoload_relative` and `Module#autoload_relative` are added.

test/ruby/test_env.rb

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,26 @@ def test_values_at
281281
assert_equal(["foo", "foo"], ENV.values_at("test", "test"))
282282
end
283283

284+
def test_fetch_values
285+
ENV["test"] = "foo"
286+
ENV["test2"] = "bar"
287+
assert_equal(["foo", "bar"], ENV.fetch_values("test", "test2"))
288+
assert_equal(["foo", "foo"], ENV.fetch_values("test", "test"))
289+
assert_equal([], ENV.fetch_values)
290+
291+
ENV.delete("test2")
292+
assert_raise(KeyError) { ENV.fetch_values("test", "test2") }
293+
294+
assert_equal(["foo", "default"], ENV.fetch_values("test", "test2") { "default" })
295+
assert_equal(["foo", "TEST2"], ENV.fetch_values("test", "test2") { |k| k.upcase })
296+
297+
e = assert_raise(KeyError) { ENV.fetch_values("test2") }
298+
assert_same(ENV, e.receiver)
299+
assert_equal("test2", e.key)
300+
301+
assert_invalid_env {|v| ENV.fetch_values(v)}
302+
end
303+
284304
def test_select
285305
ENV["test"] = "foo"
286306
h = ENV.select {|k| IGNORE_CASE ? k.upcase == "TEST" : k == "test" }

0 commit comments

Comments
 (0)