@@ -93,6 +93,12 @@ def setup
93
93
Dir . chdir ( @testdir )
94
94
[ "src" , @target ] . each do |dir |
95
95
system ( *%W" git init -q #{ dir } " , exception : true )
96
+ if dir == "src"
97
+ Dir . mkdir ( "#{ dir } /lib" )
98
+ File . write ( "#{ dir } /lib/fine.rb" , "return\n " )
99
+ system ( *%W" git add lib/fine.rb " , exception : true , chdir : dir )
100
+ system ( *%W" git commit -q -m " , "Looks fine" , exception : true , chdir : dir )
101
+ end
96
102
Dir . mkdir ( "#{ dir } /tool" )
97
103
File . write ( "#{ dir } /tool/ok" , "#!/bin/sh\n " "echo ok\n " )
98
104
system ( *%W" git add tool/ok " , exception : true , chdir : dir )
@@ -147,5 +153,36 @@ def test_skip_tool
147
153
end
148
154
assert_equal ( @sha [ "src" ] , IO . popen ( %W[ git log --format=%H -1 ] , chdir : "src" , &:read ) . chomp , out )
149
155
end
156
+
157
+ def test_skip_toplevel
158
+ Dir . mkdir ( "#@target /docs" )
159
+ File . write ( "#@target /docs/NEWS.md" , "= NEWS!!!\n " )
160
+ system ( *%W" git add -- " , "docs/NEWS.md" , exception : true , chdir : @target )
161
+ system ( *%W" git commit -q -m " , "It's a news" , exception : true , chdir : @target )
162
+ out = capture_process_output_to ( [ STDOUT , STDERR ] ) do
163
+ Dir . chdir ( "src" ) do
164
+ SyncDefaultGems . sync_default_gems_with_commits ( @target , true )
165
+ end
166
+ end
167
+ assert_equal ( @sha [ "src" ] , IO . popen ( %W[ git log --format=%H -1 ] , chdir : "src" , &:read ) . chomp , out )
168
+ end
169
+
170
+ def test_adding_toplevel
171
+ Dir . mkdir ( "#@target /docs" )
172
+ File . write ( "#@target /docs/NEWS.md" , "= New library\n " )
173
+ Dir . mkdir ( "#@target /lib" )
174
+ File . write ( "#@target /lib/news.rb" , "return\n " )
175
+ system ( *%W" git add -- " , "docs/NEWS.md" , "lib/news.rb" , exception : true , chdir : @target )
176
+ system ( *%W" git commit -q -m " , "New lib" , exception : true , chdir : @target )
177
+ out = capture_process_output_to ( [ STDOUT , STDERR ] ) do
178
+ Dir . chdir ( "src" ) do
179
+ SyncDefaultGems . sync_default_gems_with_commits ( @target , true )
180
+ end
181
+ end
182
+ assert_not_equal ( @sha [ "src" ] , IO . popen ( %W[ git log --format=%H -1 ] , chdir : "src" , &:read ) . chomp , out )
183
+ assert_equal "return\n " , File . read ( "src/lib/news.rb" )
184
+ assert_include IO . popen ( %W[ git log -1 --oneline ] , chdir : "src" , &:read ) , "[ruby/#{ @target } ] New lib"
185
+ assert_not_operator File , :exist? , "src/docs"
186
+ end
150
187
end
151
188
end
0 commit comments