@@ -12,140 +12,134 @@ module Foo
12
12
end
13
13
RUBY
14
14
15
- # TODO: understand why this fails with `before(:all)`
16
- # before(:all) do
17
15
before do
18
- @project . tapioca ( "configure" )
16
+ @project = mock_project
19
17
end
20
18
21
19
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!
31
21
end
32
22
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" )
43
27
end
44
- @project . require_mock_gem ( foo )
45
28
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 )
52
34
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 )
55
38
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" )
58
40
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] " )
66
41
end
67
42
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'" )
73
51
end
74
- @project . require_mock_gem ( foo )
75
- @project . bundle_install!
76
52
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!
79
59
80
- assert_project_file_exist ( "sorbet/rbi/gems/[email protected] " )
60
+ check = ::RubyLsp ::Tapioca ::RunGemRbiCheck . new
61
+ check . run ( @project . absolute_path )
81
62
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] " )
85
64
end
86
- @project . require_mock_gem ( foo )
87
- @project . bundle_install!
88
65
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!
90
72
91
- assert_project_file_exist ( "sorbet/rbi/gems/[email protected] " )
92
- end
73
+ check = :: RubyLsp :: Tapioca :: RunGemRbiCheck . new
74
+ check . run ( @project . absolute_path )
93
75
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] " )
96
77
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 )
102
83
103
- check = :: RubyLsp :: Tapioca :: RunGemRbiCheck . new
104
- check . run ( @project . absolute_path )
84
+ assert_project_file_exist ( "sorbet/rbi/gems/[email protected] " )
85
+ end
105
86
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!
107
93
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 )
110
96
111
- @project . write_gemfile! ( @project . tapioca_gemfile )
112
- @project . bundle_install!
97
+ assert_project_file_exist ( "sorbet/rbi/gems/[email protected] " )
113
98
114
- check = ::RubyLsp ::Tapioca ::RunGemRbiCheck . new
115
- check . run ( @project . absolute_path )
99
+ @project . exec ( "git restore Gemfile Gemfile.lock" )
116
100
117
- refute_project_file_exist ( "sorbet/rbi/gems/[email protected] " )
118
- end
101
+ check2 = :: RubyLsp :: Tapioca :: RunGemRbiCheck . new
102
+ check2 . run ( @project . absolute_path )
119
103
120
- it "deletes untracked RBI files" do
121
- setup_git_repo
104
+ refute_project_file_exist ( "sorbet/rbi/gems/[email protected] " )
105
+ end
122
106
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
+ $stdout. puts @project . exec ( "git log --oneline" )
109
+ @project . bundle_install!
110
+ FileUtils . mkdir_p ( "#{ @project . absolute_path } /sorbet/rbi/gems" )
111
+ # Create an untracked RBI file
112
+ FileUtils . touch ( "#{ @project . absolute_path } /sorbet/rbi/gems/[email protected] " )
125
113
126
- assert_project_file_exist ( "/sorbet/rbi/gems/[email protected] " )
114
+ assert_project_file_exist ( "/sorbet/rbi/gems/[email protected] " )
127
115
128
- check = ::RubyLsp ::Tapioca ::RunGemRbiCheck . new
129
- check . run ( @project . absolute_path )
116
+ check = ::RubyLsp ::Tapioca ::RunGemRbiCheck . new
117
+ check . run ( @project . absolute_path )
130
118
131
- refute_project_file_exist ( "sorbet/rbi/gems/[email protected] " )
132
- end
119
+ refute_project_file_exist ( "sorbet/rbi/gems/[email protected] " )
120
+ end
133
121
134
- it "restores deleted RBI files" do
135
- setup_git_repo
122
+ it "restores deleted RBI files" do
123
+ @project . bundle_install!
124
+ FileUtils . mkdir_p ( "#{ @project . absolute_path } /sorbet/rbi/gems" )
125
+ # Create and delete a tracked RBI file
126
+ FileUtils . touch ( "#{ @project . absolute_path } /sorbet/rbi/gems/[email protected] " )
127
+ @project . exec ( "git add sorbet/rbi/gems/[email protected] " )
128
+ @project . exec ( "git commit -m 'Add foo RBI'" )
129
+ FileUtils . rm ( "#{ @project . absolute_path } /sorbet/rbi/gems/[email protected] " )
130
+ $stdout. puts @project . exec ( "git log --oneline" )
136
131
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] " )
132
+ refute_project_file_exist ( "sorbet/rbi/gems/[email protected] " )
142
133
143
- refute_project_file_exist ( "sorbet/rbi/gems/[email protected] " )
134
+ check = ::RubyLsp ::Tapioca ::RunGemRbiCheck . new
135
+ check . run ( @project . absolute_path )
144
136
145
- check = ::RubyLsp ::Tapioca ::RunGemRbiCheck . new
146
- check . run ( @project . absolute_path )
137
+ assert_project_file_exist ( "sorbet/rbi/gems/[email protected] " )
147
138
148
- assert_project_file_exist ( "sorbet/rbi/gems/[email protected] " )
139
+ # Clean-up commit
140
+ @project . exec ( "git reset --hard HEAD^" )
141
+ $stdout. puts @project . exec ( "git log --oneline" )
142
+ end
149
143
end
150
144
end
151
145
end
0 commit comments