Skip to content

Commit 90ab4d1

Browse files
committed
Add existing RBS interface tests from ruby/rbs repo
1 parent 0421be4 commit 90ab4d1

7 files changed

Lines changed: 699 additions & 0 deletions

File tree

.github/workflows/push_gem.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ jobs:
3434
with:
3535
bundler-cache: true
3636
ruby-version: ruby
37+
env:
38+
BUNDLE_WITHOUT: sig
3739

3840
- name: Publish to RubyGems
3941
uses: rubygems/release-gem@1c162a739e8b4cb21a676e97b087e8268d8fc40b # v1.1.2

.github/workflows/sig.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
name: sig
2+
3+
on: [push, pull_request]
4+
5+
jobs:
6+
sig:
7+
runs-on: ubuntu-latest
8+
env:
9+
BUNDLE_WITH: sig
10+
steps:
11+
- uses: actions/checkout@v6
12+
- name: Set up Ruby
13+
uses: ruby/setup-ruby@v1
14+
with:
15+
ruby-version: ruby
16+
bundler-cache: true
17+
- name: Run RBS test
18+
run: bundle exec rake rbs:test

.github/workflows/test.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ jobs:
2626
ruby-version: ${{ matrix.ruby }}
2727
- name: Install dependencies
2828
run: bundle install
29+
env:
30+
BUNDLE_WITHOUT: sig
2931
- name: Run test
3032
run: rake test
3133
- name: Build

Gemfile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,8 @@ gemspec
55
gem "rake"
66
gem "test-unit"
77
gem "test-unit-ruby-core"
8+
9+
group :sig do
10+
gem "rbs"
11+
gem "rdoc"
12+
end

Rakefile

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,28 @@
11
require "bundler/gem_tasks"
22
require "rake/testtask"
3+
require "tmpdir"
34

45
Rake::TestTask.new(:test) do |t|
56
t.libs << "test/lib"
67
t.ruby_opts << "-rhelper"
78
t.test_files = FileList["test/**/test_*.rb"]
89
end
910

11+
namespace :rbs do
12+
Rake::TestTask.new(:test) do |t|
13+
t.libs << "test_sig"
14+
t.ruby_opts << "-rtest_helper"
15+
t.test_files = FileList["test_sig/test_*.rb"]
16+
end
17+
18+
desc "Update public RBS comments from local RDoc"
19+
task :annotate do
20+
Dir.mktmpdir do |tmpdir|
21+
sh "rdoc", "--ri", "--output", "#{tmpdir}/doc", "--root=.", "lib", "doc"
22+
sh "rbs", "annotate", "--no-system", "--no-gems", "--no-site", "--no-home",
23+
"-d", "#{tmpdir}/doc", "sig/net-http.rbs"
24+
end
25+
end
26+
end
27+
1028
task :default => :test

test_sig/test_helper.rb

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
require "pathname"
2+
require "test/unit"
3+
require "rbs"
4+
require "rbs/test"
5+
require "rbs/unit_test"
6+
7+
module NetHTTPTestSigHelper
8+
extend self
9+
10+
LOCAL_SIG_DIR = Pathname(__dir__).join("..", "sig").expand_path
11+
SUPPORT_LIBRARIES = %w[
12+
cgi
13+
net-protocol
14+
open-uri
15+
openssl
16+
resolv
17+
securerandom
18+
socket
19+
strscan
20+
tempfile
21+
timeout
22+
uri
23+
zlib
24+
].freeze
25+
26+
def env
27+
@env ||= begin
28+
loader = RBS::EnvironmentLoader.new
29+
loader.add(path: LOCAL_SIG_DIR)
30+
SUPPORT_LIBRARIES.each do |library|
31+
loader.add(library: library, version: nil)
32+
end
33+
RBS::Environment.from_loader(loader).resolve_type_names
34+
end
35+
end
36+
end
37+
38+
class NetHTTPRBSTestCase < Test::Unit::TestCase
39+
include RBS::UnitTest::TypeAssertions
40+
41+
def self.env
42+
NetHTTPTestSigHelper.env
43+
end
44+
45+
def self.builder
46+
@builder ||= RBS::DefinitionBuilder.new(env: env)
47+
end
48+
end

0 commit comments

Comments
 (0)