Skip to content

Commit 0ade8b0

Browse files
committed
Skip set and pathname from manifest.yaml
1 parent f50c270 commit 0ade8b0

File tree

2 files changed

+87
-0
lines changed

2 files changed

+87
-0
lines changed

lib/rbs/collection/config/lockfile_generator.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,13 @@ def generate
184184
lockfile.gems[name] = { name: name, version: "0", source: source }
185185
end
186186
return
187+
when 'set', 'pathname'
188+
# set and pathname is migrated to core from stdlib.
189+
RBS.logger.info {
190+
from = from_gem || "rbs_collection.yaml"
191+
"`#{name}` is a part of the Ruby core library. The dependency to the library can be safely deleted from #{from}."
192+
}
193+
return
187194
when *ALUMNI_STDLIBS.keys
188195
version = ALUMNI_STDLIBS.fetch(name)
189196
if from_gem

test/rbs/cli_test.rb

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1543,6 +1543,86 @@ def test_collection_install__mutex_m__rbs_dependency_and__gem_dependency
15431543
end
15441544
end
15451545

1546+
def test_collection_install__pathname_set
1547+
Dir.mktmpdir do |dir|
1548+
Dir.chdir(dir) do
1549+
dir = Pathname(dir)
1550+
dir.join(RBS::Collection::Config::PATH).write(<<~YAML)
1551+
sources:
1552+
- name: ruby/gem_rbs_collection
1553+
remote: https://github.com/ruby/gem_rbs_collection.git
1554+
revision: b4d3b346d9657543099a35a1fd20347e75b8c523
1555+
repo_dir: gems
1556+
1557+
path: #{dir.join('gem_rbs_collection')}
1558+
1559+
gems:
1560+
- name: pathname
1561+
- name: set
1562+
- name: ast
1563+
- name: cgi-escape
1564+
YAML
1565+
1566+
bundle_install('ast', 'logger')
1567+
_stdout, stderr = run_rbs_collection("install", bundler: true)
1568+
1569+
assert_include stderr, 'Cannot find `pathname` gem.'
1570+
assert_include stderr, 'Cannot find `set` gem.'
1571+
1572+
lockfile = RBS::Collection::Config::Lockfile.from_lockfile(
1573+
lockfile_path: dir + "rbs_collection.lock.yaml",
1574+
data: YAML.safe_load((dir + "rbs_collection.lock.yaml").read)
1575+
)
1576+
1577+
assert_nil lockfile.gems["set"]
1578+
assert_nil lockfile.gems["pathname"]
1579+
assert_instance_of RBS::Collection::Sources::Stdlib, lockfile.gems["cgi-escape"][:source]
1580+
assert_instance_of RBS::Collection::Sources::Git, lockfile.gems["ast"][:source]
1581+
end
1582+
end
1583+
end
1584+
1585+
def test_collection_install__set_pathname__manifest
1586+
Dir.mktmpdir do |dir|
1587+
Dir.chdir(dir) do
1588+
dir = Pathname(dir)
1589+
1590+
(dir + RBS::Collection::Config::PATH).write(<<~YAML)
1591+
sources:
1592+
- type: local
1593+
path: repo
1594+
1595+
path: #{dir.join('gem_rbs_collection')}
1596+
YAML
1597+
1598+
(dir/"repo/true_string/0").mkpath
1599+
(dir/"repo/true_string/0/manifest.yaml").write(<<~YAML)
1600+
dependencies:
1601+
- name: set
1602+
- name: pathname
1603+
- name: cgi-escape
1604+
YAML
1605+
1606+
bundle_install("logger", "true_string") # true_string is a soutaro's gem that doesn't have sig directory
1607+
1608+
_stdout, stderr = run_rbs_collection("install", bundler: true)
1609+
1610+
assert_include stderr, '`set` is a part of the Ruby core library.'
1611+
assert_include stderr, '`pathname` is a part of the Ruby core library.'
1612+
1613+
lockfile = RBS::Collection::Config::Lockfile.from_lockfile(
1614+
lockfile_path: dir + "rbs_collection.lock.yaml",
1615+
data: YAML.safe_load((dir + "rbs_collection.lock.yaml").read)
1616+
)
1617+
1618+
assert_nil lockfile.gems["set"]
1619+
assert_nil lockfile.gems["pathname"]
1620+
assert_instance_of RBS::Collection::Sources::Stdlib, lockfile.gems["cgi-escape"][:source]
1621+
assert_instance_of RBS::Collection::Sources::Local, lockfile.gems["true_string"][:source]
1622+
end
1623+
end
1624+
end
1625+
15461626
def test_subtract
15471627
Dir.mktmpdir do |dir|
15481628
dir = Pathname(dir)

0 commit comments

Comments
 (0)