Skip to content

Commit 6b9f24f

Browse files
committed
wip test fix against CI
1 parent 3dd5d4b commit 6b9f24f

File tree

5 files changed

+101
-101
lines changed

5 files changed

+101
-101
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ jobs:
7171
bundler-cache: true
7272
rubygems: ${{ matrix.rubygems }}
7373
- name: Run tests
74-
run: bin/test
74+
run: bin/test spec/tapioca/ruby_lsp/run_gem_rbi_check_spec.rb
7575
continue-on-error: ${{ !!matrix.experimental }}
7676

7777
buildall:

lib/ruby_lsp/tapioca/run_gem_rbi_check.rb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,12 @@ def git_repo?
5050
sig { returns(T::Boolean) }
5151
def lockfile_changed?
5252
fetch_lockfile_diff
53-
!T.must(@lockfile_diff).empty?
53+
!@lockfile_diff.empty?
5454
end
5555

5656
sig { returns(String) }
5757
def fetch_lockfile_diff
58-
@lockfile_diff = %x(git diff HEAD Gemfile.lock).strip
58+
@lockfile_diff = File.exist?("Gemfile.lock") ? %x(git diff Gemfile.lock).strip : ""
5959
end
6060

6161
sig { void }
@@ -77,7 +77,9 @@ def execute_tapioca_gem_command(gems)
7777
# Resetting BUNDLE_GEMFILE to root folder to use the project's Gemfile instead of Ruby LSP's composed Gemfile
7878
stdout, stderr, status = T.unsafe(Open3).capture3(
7979
{ "BUNDLE_GEMFILE" => "Gemfile" },
80-
"bin/tapioca",
80+
"bundle",
81+
"exec",
82+
"tapioca",
8183
"gem",
8284
"--lsp_addon",
8385
*gems,

spec/helpers/mock_gem.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class MockGem < Spoom::Context
1212

1313
# The gem's version string such as "1.0.0" or ">= 2.0.5"
1414
sig { returns(String) }
15-
attr_reader :version
15+
attr_accessor :version
1616

1717
# The dependencies to be added to the gem's gemspec
1818
sig { returns(T::Array[String]) }

spec/spec_with_project.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,13 @@ def mock_gem(name, version, dependencies: [], path: default_gem_path(name), &blo
8484
gem
8585
end
8686

87+
sig { params(gem: MockGem, version: String).returns(MockGem) }
88+
def update_gem(gem, version)
89+
gem.version = version
90+
gem.gemspec(gem.default_gemspec_contents)
91+
gem
92+
end
93+
8794
# Spec assertions
8895

8996
# Assert that the contents of `path` inside `@project` is equals to `expected`

spec/tapioca/ruby_lsp/run_gem_rbi_check_spec.rb

Lines changed: 87 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -12,140 +12,131 @@ module Foo
1212
end
1313
RUBY
1414

15-
# TODO: understand why this fails with `before(:all)`
16-
# before(:all) do
1715
before do
18-
@project.tapioca("configure")
16+
@project = mock_project
1917
end
2018

2119
after do
22-
project.write_gemfile!(project.tapioca_gemfile)
23-
@project.require_default_gems
24-
project.remove!("sorbet/rbi")
25-
project.remove!("../gems")
26-
project.remove!(".git")
27-
project.remove!("sorbet/tapioca/require.rb")
28-
project.remove!("config/application.rb")
29-
ensure
30-
@project.remove!("output")
20+
@project.destroy!
3121
end
3222

33-
def setup_git_repo
34-
@project.exec("git init")
35-
@project.exec("touch Gemfile.lock")
36-
FileUtils.mkdir_p("#{@project.absolute_path}/sorbet/rbi/gems")
37-
@project.exec("git add . && git commit -m 'Initial commit'")
38-
end
39-
40-
it "does nothing if there is no git repo" do
41-
foo = mock_gem("foo", "0.0.1") do
42-
write!("lib/foo.rb", FOO_RB)
23+
describe "without git" do
24+
before do
25+
@project.bundle_install!
26+
@project.tapioca("configure")
4327
end
44-
@project.require_mock_gem(foo)
4528

46-
@project.bundle_install!
47-
check = ::RubyLsp::Tapioca::RunGemRbiCheck.new
48-
check.run(@project.absolute_path)
49-
50-
assert check.result.stdout.include?("Not a git repository")
51-
end
29+
it "does nothing if there is no git repo" do
30+
foo = mock_gem("foo", "0.0.1") do
31+
write!("lib/foo.rb", FOO_RB)
32+
end
33+
@project.require_mock_gem(foo)
5234

53-
it "creates the RBI for a newly added gem" do
54-
setup_git_repo
35+
@project.bundle_install!
36+
check = ::RubyLsp::Tapioca::RunGemRbiCheck.new
37+
check.run(@project.absolute_path)
5538

56-
foo = mock_gem("foo", "0.0.1") do
57-
write!("lib/foo.rb", FOO_RB)
39+
assert check.result.stdout.include?("Not a git repository")
5840
end
59-
@project.require_mock_gem(foo)
60-
@project.bundle_install!
61-
62-
check = ::RubyLsp::Tapioca::RunGemRbiCheck.new
63-
check.run(@project.absolute_path)
64-
65-
assert_project_file_exist("sorbet/rbi/gems/[email protected]")
6641
end
6742

68-
it "regenerates RBI when a gem version changes" do
69-
setup_git_repo
70-
71-
foo = mock_gem("foo", "0.0.1") do
72-
write!("lib/foo.rb", FOO_RB)
43+
describe "with git" do
44+
before do
45+
@project.bundle_install!
46+
@project.tapioca("configure")
47+
@project.exec("git init")
48+
@project.exec("git config commit.gpgsign false")
49+
@project.exec("git add .")
50+
@project.exec("git commit -m 'Initial commit'")
7351
end
74-
@project.require_mock_gem(foo)
75-
@project.bundle_install!
7652

77-
check = ::RubyLsp::Tapioca::RunGemRbiCheck.new
78-
check.run(@project.absolute_path)
53+
it "creates the RBI for a newly added gem" do
54+
foo = mock_gem("foo", "0.0.1") do
55+
write!("lib/foo.rb", FOO_RB)
56+
end
57+
@project.require_mock_gem(foo)
58+
@project.bundle_install!
7959

80-
assert_project_file_exist("sorbet/rbi/gems/[email protected]")
60+
check = ::RubyLsp::Tapioca::RunGemRbiCheck.new
61+
check.run(@project.absolute_path)
8162

82-
# Modify the gem
83-
foo = mock_gem("foo", "0.0.2") do
84-
write!("lib/foo.rb", FOO_RB)
63+
assert_project_file_exist("sorbet/rbi/gems/[email protected]")
8564
end
86-
@project.require_mock_gem(foo)
87-
@project.bundle_install!
8865

89-
check.run(@project.absolute_path)
66+
it "regenerates RBI when a gem version changes" do
67+
foo = mock_gem("foo", "0.0.1") do
68+
write!("lib/foo.rb", FOO_RB)
69+
end
70+
@project.require_mock_gem(foo)
71+
@project.bundle_install!
9072

91-
assert_project_file_exist("sorbet/rbi/gems/[email protected]")
92-
end
73+
check = ::RubyLsp::Tapioca::RunGemRbiCheck.new
74+
check.run(@project.absolute_path)
9375

94-
it "removes RBI file when a gem is removed" do
95-
setup_git_repo
76+
assert_project_file_exist("sorbet/rbi/gems/[email protected]")
9677

97-
foo = mock_gem("foo", "0.0.1") do
98-
write!("lib/foo.rb", FOO_RB)
99-
end
100-
@project.require_mock_gem(foo)
101-
@project.bundle_install!
78+
# Modify the gem
79+
update_gem foo, "0.0.2"
80+
@project.bundle_install!
81+
82+
check.run(@project.absolute_path)
10283

103-
check = ::RubyLsp::Tapioca::RunGemRbiCheck.new
104-
check.run(@project.absolute_path)
84+
assert_project_file_exist("sorbet/rbi/gems/[email protected]")
85+
end
10586

106-
assert_project_file_exist("sorbet/rbi/gems/[email protected]")
87+
it "removes RBI file when a gem is removed" do
88+
foo = mock_gem("foo", "0.0.1") do
89+
write!("lib/foo.rb", FOO_RB)
90+
end
91+
@project.require_mock_gem(foo)
92+
@project.bundle_install!
10793

108-
@project.exec("git add Gemfile.lock")
109-
@project.exec("git commit -m 'Add foo gem'")
94+
check1 = ::RubyLsp::Tapioca::RunGemRbiCheck.new
95+
check1.run(@project.absolute_path)
11096

111-
@project.write_gemfile!(@project.tapioca_gemfile)
112-
@project.bundle_install!
97+
assert_project_file_exist("sorbet/rbi/gems/[email protected]")
11398

114-
check = ::RubyLsp::Tapioca::RunGemRbiCheck.new
115-
check.run(@project.absolute_path)
99+
@project.exec("git restore Gemfile Gemfile.lock")
116100

117-
refute_project_file_exist("sorbet/rbi/gems/[email protected]")
118-
end
101+
check2 = ::RubyLsp::Tapioca::RunGemRbiCheck.new
102+
check2.run(@project.absolute_path)
119103

120-
it "deletes untracked RBI files" do
121-
setup_git_repo
104+
refute_project_file_exist("sorbet/rbi/gems/[email protected]")
105+
end
122106

123-
# Create an untracked RBI file
124-
FileUtils.touch("#{@project.absolute_path}/sorbet/rbi/gems/[email protected]")
107+
it "deletes untracked RBI files" do
108+
@project.bundle_install!
109+
FileUtils.mkdir_p("#{@project.absolute_path}/sorbet/rbi/gems")
110+
# Create an untracked RBI file
111+
FileUtils.touch("#{@project.absolute_path}/sorbet/rbi/gems/[email protected]")
125112

126-
assert_project_file_exist("/sorbet/rbi/gems/[email protected]")
113+
assert_project_file_exist("/sorbet/rbi/gems/[email protected]")
127114

128-
check = ::RubyLsp::Tapioca::RunGemRbiCheck.new
129-
check.run(@project.absolute_path)
115+
check = ::RubyLsp::Tapioca::RunGemRbiCheck.new
116+
check.run(@project.absolute_path)
130117

131-
refute_project_file_exist("sorbet/rbi/gems/[email protected]")
132-
end
118+
refute_project_file_exist("sorbet/rbi/gems/[email protected]")
119+
end
133120

134-
it "restores deleted RBI files" do
135-
setup_git_repo
121+
it "restores deleted RBI files" do
122+
@project.bundle_install!
123+
FileUtils.mkdir_p("#{@project.absolute_path}/sorbet/rbi/gems")
124+
# Create and delete a tracked RBI file
125+
FileUtils.touch("#{@project.absolute_path}/sorbet/rbi/gems/[email protected]")
126+
@project.exec("git add sorbet/rbi/gems/[email protected]")
127+
@project.exec("git commit -m 'Add foo RBI'")
128+
FileUtils.rm("#{@project.absolute_path}/sorbet/rbi/gems/[email protected]")
136129

137-
# Create and delete a tracked RBI file
138-
FileUtils.touch("#{@project.absolute_path}/sorbet/rbi/gems/[email protected]")
139-
@project.exec("git add sorbet/rbi/gems/[email protected]")
140-
@project.exec("git commit -m 'Add foo RBI'")
141-
FileUtils.rm("#{@project.absolute_path}/sorbet/rbi/gems/[email protected]")
130+
refute_project_file_exist("sorbet/rbi/gems/[email protected]")
142131

143-
refute_project_file_exist("sorbet/rbi/gems/[email protected]")
132+
check = ::RubyLsp::Tapioca::RunGemRbiCheck.new
133+
check.run(@project.absolute_path)
144134

145-
check = ::RubyLsp::Tapioca::RunGemRbiCheck.new
146-
check.run(@project.absolute_path)
135+
assert_project_file_exist("sorbet/rbi/gems/[email protected]")
147136

148-
assert_project_file_exist("sorbet/rbi/gems/[email protected]")
137+
# Clean-up commit
138+
@project.exec("git reset --hard HEAD^")
139+
end
149140
end
150141
end
151142
end

0 commit comments

Comments
 (0)