esr-rim 1.4.0 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,9 @@
1
- {
2
- "url" : "ssh://gerrit",
3
- "dependencies" : [
4
- {
5
- "unit":"nvStorage", "version": "1.1", "destination": "./bsw/nvStorage",
6
- "unit":"eepromManager", "version": "2.3", "destination": "./bsw/eeprom"
7
- }
8
- ]
9
- }
1
+ {
2
+ "url" : "ssh://gerrit",
3
+ "dependencies" : [
4
+ {
5
+ "unit":"nvStorage", "version": "1.1", "destination": "./bsw/nvStorage",
6
+ "unit":"eepromManager", "version": "2.3", "destination": "./bsw/eeprom"
7
+ }
8
+ ]
9
+ }
@@ -1,32 +1,32 @@
1
- $:.unshift File.join(File.dirname(__FILE__),"..","lib")
2
- $:.unshift File.join(File.dirname(__FILE__))
3
-
4
- require 'minitest/autorun'
5
- require 'rim/processor'
6
- require 'test_helper'
7
- require 'fileutils'
8
-
9
- class ProcessorTest < Minitest::Test
10
- include FileUtils
11
- include TestHelper
12
-
13
- def setup
14
- test_dir = empty_test_dir("command_helper_test")
15
- end
16
-
17
- def teardown
18
- remove_test_dirs
19
- end
20
-
21
- def test_get_absolute_remote_url
22
- cut = RIM::Processor.new(".", nil)
23
- assert File.expand_path(".") == cut.get_absolute_remote_url("file://.")
24
- assert File.expand_path("abcd", ".") == cut.get_absolute_remote_url("file://abcd")
25
- assert File.expand_path("abc", ".") == cut.get_absolute_remote_url("file://./abc")
26
- assert "C:/abcdef" == cut.get_absolute_remote_url("file:///C|/abcdef")
27
- assert "/abcdef/defghi" == cut.get_absolute_remote_url("file:///abcdef/defghi")
28
- assert "ssh://gerrit/abcde" == cut.get_absolute_remote_url("abcde")
29
- assert "ssh://gerrit2/abcde" == cut.get_absolute_remote_url("ssh://gerrit2/abcde")
30
- end
31
-
32
- end
1
+ $:.unshift File.join(File.dirname(__FILE__),"..","lib")
2
+ $:.unshift File.join(File.dirname(__FILE__))
3
+
4
+ require 'minitest/autorun'
5
+ require 'rim/processor'
6
+ require 'test_helper'
7
+ require 'fileutils'
8
+
9
+ class ProcessorTest < Minitest::Test
10
+ include FileUtils
11
+ include TestHelper
12
+
13
+ def setup
14
+ test_dir = empty_test_dir("command_helper_test")
15
+ end
16
+
17
+ def teardown
18
+ remove_test_dirs
19
+ end
20
+
21
+ def test_get_absolute_remote_url
22
+ cut = RIM::Processor.new(".", nil)
23
+ assert File.expand_path(".") == cut.get_absolute_remote_url("file://.")
24
+ assert File.expand_path("abcd", ".") == cut.get_absolute_remote_url("file://abcd")
25
+ assert File.expand_path("abc", ".") == cut.get_absolute_remote_url("file://./abc")
26
+ assert "C:/abcdef" == cut.get_absolute_remote_url("file:///C|/abcdef")
27
+ assert "/abcdef/defghi" == cut.get_absolute_remote_url("file:///abcdef/defghi")
28
+ assert "ssh://gerrit/abcde" == cut.get_absolute_remote_url("abcde")
29
+ assert "ssh://gerrit2/abcde" == cut.get_absolute_remote_url("ssh://gerrit2/abcde")
30
+ end
31
+
32
+ end
@@ -1,296 +1,296 @@
1
- $:.unshift File.join(File.dirname(__FILE__),"..","lib")
2
- $:.unshift File.join(File.dirname(__FILE__))
3
-
4
- require 'minitest/autorun'
5
- require 'rim/git'
6
- require 'rim/module_info'
7
- require 'rim/status_builder'
8
- require 'rim/sync_helper'
9
- require 'test_helper'
10
- require 'fileutils'
11
-
12
- class SyncHelperTest < Minitest::Test
13
- include FileUtils
14
- include TestHelper
15
-
16
- def setup
17
- test_dir = empty_test_dir("sync_helper_test")
18
- @remote_git_dir = File.join(test_dir, "remote_git")
19
- @ws_remote_dir = File.join(test_dir, "remote_ws")
20
- @ws_dir = File.join(test_dir, "ws")
21
- @logger = Logger.new($stdout)
22
- @logger.level = Logger::ERROR unless ARGV.include? "debug"
23
- RIM::GitSession.logger = @logger
24
- end
25
-
26
- def teardown
27
- remove_test_dirs
28
- end
29
-
30
- def test_files_are_synchronized
31
- mod1_info = create_module_git("mod1")
32
- mod2_info = create_module_git("mod2")
33
- create_ws_git("testbr")
34
- cut = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info, mod2_info])
35
- cut.sync
36
- RIM::git_session(@ws_dir) do |s|
37
- assert !File.exist?(File.join(@ws_dir, "mod1"))
38
- assert !File.exist?(File.join(@ws_dir, "mod2"))
39
- s.execute("git checkout rim/testbr")
40
- check_not_dirty(s)
41
- log = s.execute("git log | grep \" module \"").split("\n").sort
42
- assert log.size == 2
43
- assert log[0].include?("mod1")
44
- assert log[1].include?("mod2")
45
- assert File.exist?(File.join(@ws_dir, "mod1"))
46
- assert File.exist?(File.join(@ws_dir, "mod2"))
47
- assert File.exist?(File.join(@ws_dir, "mod1", "readme.txt"))
48
- assert File.exist?(File.join(@ws_dir, "mod2", "readme.txt"))
49
- end
50
- end
51
-
52
- def test_files_are_synchronized_subtree
53
- mod_git_dir = create_all_module_git("mod_all")
54
- mod_a_info = RIM::ModuleInfo.new("file://" + mod_git_dir, "modules/a", "master", nil, nil, "mod_a")
55
- create_ws_git("testbr")
56
- cut = RIM::SyncHelper.new(@ws_dir, @logger, [mod_a_info])
57
- cut.sync
58
- RIM::git_session(@ws_dir) do |s|
59
- assert !File.exist?(File.join(@ws_dir, "modules", "a"))
60
- s.execute("git checkout rim/testbr")
61
- check_not_dirty(s)
62
- log = s.execute("git log | grep \" module \"").split("\n").sort
63
- assert log.size == 1
64
- assert log[0].include?("modules/a")
65
- assert !File.exist?(File.join(@ws_dir, "modules", "b"))
66
- assert File.exist?(File.join(@ws_dir, "modules", "a"))
67
- assert File.exist?(File.join(@ws_dir, "modules", "a", "file_a.c"))
68
- end
69
- end
70
-
71
- def test_files_are_synchronized_subtree_deep
72
- mod_git_dir = create_all_module_git("mod_all")
73
- mod_a_info = RIM::ModuleInfo.new("file://" + mod_git_dir, "modules/b_src", "master", nil, nil, "mod_b/src")
74
- create_ws_git("testbr")
75
- cut = RIM::SyncHelper.new(@ws_dir, @logger, [mod_a_info])
76
- cut.sync
77
- RIM::git_session(@ws_dir) do |s|
78
- assert !File.exist?(File.join(@ws_dir, "modules", "b_src"))
79
- s.execute("git checkout rim/testbr")
80
- check_not_dirty(s)
81
- log = s.execute("git log | grep \" module \"").split("\n").sort
82
- assert log.size == 1
83
- assert log[0].include?("modules/b_src")
84
- assert File.exist?(File.join(@ws_dir, "modules", "b_src", "file_b.c"))
85
- end
86
- end
87
-
88
-
89
- def test_files_are_synchronized_on_existing_branch
90
- mod1_info = create_module_git("mod1")
91
- mod2_info = create_module_git("mod2")
92
- create_ws_git("testbr")
93
- cut = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info, mod2_info])
94
- cut.sync
95
- `echo ' changed' >> #{File.join(@ws_dir, "readme")}`
96
- RIM::git_session(@ws_dir) do |s|
97
- s.execute("git commit . -m \"Changed ws file\"")
98
- end
99
- remote_path = path_from_module_info(mod1_info)
100
- `echo ' changed' >> #{File.join(remote_path, "readme.txt")}`
101
- RIM::git_session(remote_path) do |f|
102
- f.execute("git commit . -m \"Changed mod1 file\"")
103
- end
104
- cut.sync
105
- RIM::git_session(@ws_dir) do |s|
106
- s.execute("git checkout rim/testbr")
107
- check_not_dirty(s)
108
- log = s.execute("git log | grep \" module \"").split("\n").sort
109
- assert log.size == 3
110
- assert log[0].include?("mod1")
111
- assert log[1].include?("mod1")
112
- assert log[2].include?("mod2")
113
- assert File.exist?(File.join(@ws_dir, "mod1"))
114
- `cat #{File.join(@ws_dir, "mod1/readme.txt")}`.start_with?("Content. changed")
115
- assert File.exist?(File.join(@ws_dir, "mod2"))
116
- end
117
- end
118
-
119
- def test_files_are_synchronized_on_new_branch_if_behind_last_remote_commit
120
- mod1_info = create_module_git("mod1")
121
- mod2_info = create_module_git("mod2")
122
- create_ws_git("testbr")
123
- cut = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info, mod2_info])
124
- cut.sync
125
- `echo ' changed' >> #{File.join(@ws_remote_dir, "readme")}`
126
- RIM::git_session(@ws_remote_dir) do |s|
127
- s.execute("git commit . -m \"Changed ws file\"")
128
- end
129
- RIM::git_session(@ws_dir) do |s|
130
- s.execute("git pull")
131
- assert !has_ancestor?(s, "rim/testbr", "testbr")
132
- end
133
- cut.sync
134
- RIM::git_session(@ws_dir) do |s|
135
- assert has_ancestor?(s, "rim/testbr", "testbr")
136
- end
137
- end
138
-
139
- def test_existing_non_ignored_files_are_removed_during_sync
140
- mod1_info = create_module_git("mod1")
141
- create_ws_git("testbr") do |s|
142
- FileUtils.mkdir_p(File.join(@ws_remote_dir, "mod1"))
143
- File.open(File.join(@ws_remote_dir, "mod1", "existing.txt"), "w") do |f|
144
- f.write("Content")
145
- end
146
- s.execute("git add --all mod1")
147
- s.execute("git commit -m \"Create existing file within mod1\"")
148
- end
149
- cut = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info])
150
- cut.sync
151
- RIM::git_session(@ws_dir) do |s|
152
- s.execute("git rebase rim/testbr")
153
- assert !File.exists?(File.join(@ws_dir, "mod1", "existing.txt"))
154
- end
155
- end
156
-
157
- def test_case_change_in_filename_is_synced_correctly
158
- mod1_info = create_module_git("mod1")
159
- create_ws_git("testbr")
160
- cut = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info])
161
- cut.sync
162
- remote_path = path_from_module_info(mod1_info)
163
- RIM::git_session(remote_path) do |s|
164
- FileUtils.mv(File.join(remote_path, "readme.txt"), File.join(remote_path, "readme.tx_"))
165
- s.execute("git add --all .")
166
- s.execute("git commit -m \"Temporary change of filename within mod1\"")
167
- FileUtils.mv(File.join(remote_path, "readme.tx_"), File.join(remote_path, "Readme.txt"))
168
- s.execute("git add --all .")
169
- s.execute("git commit -m \"Changed case in filename within mod1\"")
170
- end
171
- cut.sync
172
- RIM::git_session(@ws_dir) do |s|
173
- s.execute("git rebase rim/testbr")
174
- out = s.execute("git show --name-only")
175
- assert out.include?("readme.txt")
176
- assert out.include?("Readme.txt")
177
- end
178
- end
179
-
180
- def test_sync_on_different_branches
181
- mod1_info = create_module_git("mod1")
182
- create_ws_git("testbr")
183
- cut = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info])
184
- cut.sync
185
- remote_path = path_from_module_info(mod1_info)
186
- RIM::git_session(remote_path) do |s|
187
- FileUtils.mv(File.join(remote_path, "readme.txt"), File.join(remote_path, "readme.tx_"))
188
- s.execute("git add --all .")
189
- s.execute("git commit -m \"Temporary change of filename within mod1\"")
190
- FileUtils.mv(File.join(remote_path, "readme.tx_"), File.join(remote_path, "Readme.txt"))
191
- s.execute("git add --all .")
192
- s.execute("git commit -m \"Changed case in filename within mod1\"")
193
- end
194
- RIM::git_session(@ws_dir) do |s|
195
- s.execute("git checkout -b branch2")
196
- end
197
- cut.sync
198
- RIM::git_session(@ws_dir) do |s|
199
- s.execute("git rebase rim/branch2")
200
- out = s.execute("git show --name-only")
201
- assert out.include?("Readme.txt")
202
- end
203
- RIM::git_session(remote_path) do |s|
204
- `echo ' changed' >> #{File.join(remote_path, "Readme.txt")}`
205
- s.execute("git commit . -m \"Changed module file\"")
206
- end
207
- cut.sync
208
- RIM::git_session(@ws_dir) do |s|
209
- s.execute("git rebase rim/branch2")
210
- s.execute("git checkout testbr")
211
- s.execute("git reset --hard branch2~1")
212
- s.execute("git push origin branch2:branch2")
213
- end
214
- cut.sync
215
- RIM::git_session(@ws_dir) do |s|
216
- s.execute("git reset --hard rim/testbr")
217
- out = s.execute("git show --name-only")
218
- assert out.include?("Readme.txt")
219
- end
220
- end
221
-
222
- private
223
- def create_ws_git(branch = "master")
224
- FileUtils.mkdir_p(@ws_remote_dir)
225
- RIM::git_session(@ws_remote_dir) do |s|
226
- s.execute("git init")
227
- s.execute("git checkout -B #{branch}")
228
- File.open(File.join(@ws_remote_dir, ".gitignore"), "w") do |f|
229
- f.write(".rim")
230
- end
231
- File.open(File.join(@ws_remote_dir, "readme"), "w") do |f|
232
- f.write("Content")
233
- end
234
- s.execute("git add .")
235
- s.execute("git commit -m \"Initial commit\"")
236
- yield s if block_given?
237
- end
238
- FileUtils.mkdir_p(@ws_dir)
239
- RIM::git_session(@ws_dir) do |s|
240
- s.execute("git clone #{@ws_remote_dir} #{@ws_dir}")
241
- end
242
- end
243
-
244
- def create_module_git(name, branch = "master")
245
- git_dir = File.join(@remote_git_dir, name)
246
- FileUtils.mkdir_p(git_dir)
247
- RIM::git_session(git_dir) do |s|
248
- s.execute("git init")
249
- s.execute("git checkout -B #{branch}")
250
- File.open(File.join(git_dir, "readme.txt"), "w") do |f|
251
- f.write("Content.")
252
- end
253
- s.execute("git add .")
254
- s.execute("git commit -m \"Initial commit\"")
255
- end
256
- return RIM::ModuleInfo.new("file://" + git_dir, name, branch)
257
- end
258
-
259
- def create_all_module_git(name, branch = "master")
260
- git_dir = File.join(@remote_git_dir, name)
261
- FileUtils.mkdir_p(File.join(git_dir,"mod_a"))
262
- FileUtils.mkdir_p(File.join(git_dir,"mod_b","src"))
263
- RIM::git_session(git_dir) do |s|
264
- s.execute("git init")
265
- s.execute("git checkout -B #{branch}")
266
- File.open(File.join(git_dir, "readme.txt"), "w") do |f|
267
- f.write("Content.")
268
- end
269
- File.open(File.join(git_dir, "mod_a", "file_a.c"), "w") do |f|
270
- f.write("Content.")
271
- end
272
- File.open(File.join(git_dir, "mod_b", "src", "file_b.c"), "w") do |f|
273
- f.write("Content.")
274
- end
275
- s.execute("git add .")
276
- s.execute("git commit -m \"Initial commit\"")
277
- end
278
- return git_dir
279
- end
280
-
281
- def path_from_module_info(module_info)
282
- module_info.remote_url.gsub(/^file:\/\//, "")
283
- end
284
-
285
- def check_not_dirty(session)
286
- status = RIM::StatusBuilder.new.rev_status(session, "HEAD")
287
- status.modules.each do |m|
288
- assert !m.dirty?
289
- end
290
- end
291
-
292
- def has_ancestor?(session, rev, ancestor)
293
- rev = session.execute("git rev-list #{rev}").include?(session.rev_sha1(ancestor))
294
- end
295
-
296
- end
1
+ $:.unshift File.join(File.dirname(__FILE__),"..","lib")
2
+ $:.unshift File.join(File.dirname(__FILE__))
3
+
4
+ require 'minitest/autorun'
5
+ require 'rim/git'
6
+ require 'rim/module_info'
7
+ require 'rim/status_builder'
8
+ require 'rim/sync_helper'
9
+ require 'test_helper'
10
+ require 'fileutils'
11
+
12
+ class SyncHelperTest < Minitest::Test
13
+ include FileUtils
14
+ include TestHelper
15
+
16
+ def setup
17
+ test_dir = empty_test_dir("sync_helper_test")
18
+ @remote_git_dir = File.join(test_dir, "remote_git")
19
+ @ws_remote_dir = File.join(test_dir, "remote_ws")
20
+ @ws_dir = File.join(test_dir, "ws")
21
+ @logger = Logger.new($stdout)
22
+ @logger.level = Logger::ERROR unless ARGV.include? "debug"
23
+ RIM::GitSession.logger = @logger
24
+ end
25
+
26
+ def teardown
27
+ remove_test_dirs
28
+ end
29
+
30
+ def test_files_are_synchronized
31
+ mod1_info = create_module_git("mod1")
32
+ mod2_info = create_module_git("mod2")
33
+ create_ws_git("testbr")
34
+ cut = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info, mod2_info])
35
+ cut.sync
36
+ RIM::git_session(@ws_dir) do |s|
37
+ assert !File.exist?(File.join(@ws_dir, "mod1"))
38
+ assert !File.exist?(File.join(@ws_dir, "mod2"))
39
+ s.execute("git checkout rim/testbr")
40
+ check_not_dirty(s)
41
+ log = s.execute("git log | grep \" module \"").split("\n").sort
42
+ assert log.size == 2
43
+ assert log[0].include?("mod1")
44
+ assert log[1].include?("mod2")
45
+ assert File.exist?(File.join(@ws_dir, "mod1"))
46
+ assert File.exist?(File.join(@ws_dir, "mod2"))
47
+ assert File.exist?(File.join(@ws_dir, "mod1", "readme.txt"))
48
+ assert File.exist?(File.join(@ws_dir, "mod2", "readme.txt"))
49
+ end
50
+ end
51
+
52
+ def test_files_are_synchronized_subtree
53
+ mod_git_dir = create_all_module_git("mod_all")
54
+ mod_a_info = RIM::ModuleInfo.new("file://" + mod_git_dir, "modules/a", "master", nil, nil, "mod_a")
55
+ create_ws_git("testbr")
56
+ cut = RIM::SyncHelper.new(@ws_dir, @logger, [mod_a_info])
57
+ cut.sync
58
+ RIM::git_session(@ws_dir) do |s|
59
+ assert !File.exist?(File.join(@ws_dir, "modules", "a"))
60
+ s.execute("git checkout rim/testbr")
61
+ check_not_dirty(s)
62
+ log = s.execute("git log | grep \" module \"").split("\n").sort
63
+ assert log.size == 1
64
+ assert log[0].include?("modules/a")
65
+ assert !File.exist?(File.join(@ws_dir, "modules", "b"))
66
+ assert File.exist?(File.join(@ws_dir, "modules", "a"))
67
+ assert File.exist?(File.join(@ws_dir, "modules", "a", "file_a.c"))
68
+ end
69
+ end
70
+
71
+ def test_files_are_synchronized_subtree_deep
72
+ mod_git_dir = create_all_module_git("mod_all")
73
+ mod_a_info = RIM::ModuleInfo.new("file://" + mod_git_dir, "modules/b_src", "master", nil, nil, "mod_b/src")
74
+ create_ws_git("testbr")
75
+ cut = RIM::SyncHelper.new(@ws_dir, @logger, [mod_a_info])
76
+ cut.sync
77
+ RIM::git_session(@ws_dir) do |s|
78
+ assert !File.exist?(File.join(@ws_dir, "modules", "b_src"))
79
+ s.execute("git checkout rim/testbr")
80
+ check_not_dirty(s)
81
+ log = s.execute("git log | grep \" module \"").split("\n").sort
82
+ assert log.size == 1
83
+ assert log[0].include?("modules/b_src")
84
+ assert File.exist?(File.join(@ws_dir, "modules", "b_src", "file_b.c"))
85
+ end
86
+ end
87
+
88
+
89
+ def test_files_are_synchronized_on_existing_branch
90
+ mod1_info = create_module_git("mod1")
91
+ mod2_info = create_module_git("mod2")
92
+ create_ws_git("testbr")
93
+ cut = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info, mod2_info])
94
+ cut.sync
95
+ `echo ' changed' >> #{File.join(@ws_dir, "readme")}`
96
+ RIM::git_session(@ws_dir) do |s|
97
+ s.execute("git commit . -m \"Changed ws file\"")
98
+ end
99
+ remote_path = path_from_module_info(mod1_info)
100
+ `echo ' changed' >> #{File.join(remote_path, "readme.txt")}`
101
+ RIM::git_session(remote_path) do |f|
102
+ f.execute("git commit . -m \"Changed mod1 file\"")
103
+ end
104
+ cut.sync
105
+ RIM::git_session(@ws_dir) do |s|
106
+ s.execute("git checkout rim/testbr")
107
+ check_not_dirty(s)
108
+ log = s.execute("git log | grep \" module \"").split("\n").sort
109
+ assert log.size == 3
110
+ assert log[0].include?("mod1")
111
+ assert log[1].include?("mod1")
112
+ assert log[2].include?("mod2")
113
+ assert File.exist?(File.join(@ws_dir, "mod1"))
114
+ `cat #{File.join(@ws_dir, "mod1/readme.txt")}`.start_with?("Content. changed")
115
+ assert File.exist?(File.join(@ws_dir, "mod2"))
116
+ end
117
+ end
118
+
119
+ def test_files_are_synchronized_on_new_branch_if_behind_last_remote_commit
120
+ mod1_info = create_module_git("mod1")
121
+ mod2_info = create_module_git("mod2")
122
+ create_ws_git("testbr")
123
+ cut = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info, mod2_info])
124
+ cut.sync
125
+ `echo ' changed' >> #{File.join(@ws_remote_dir, "readme")}`
126
+ RIM::git_session(@ws_remote_dir) do |s|
127
+ s.execute("git commit . -m \"Changed ws file\"")
128
+ end
129
+ RIM::git_session(@ws_dir) do |s|
130
+ s.execute("git pull")
131
+ assert !has_ancestor?(s, "rim/testbr", "testbr")
132
+ end
133
+ cut.sync
134
+ RIM::git_session(@ws_dir) do |s|
135
+ assert has_ancestor?(s, "rim/testbr", "testbr")
136
+ end
137
+ end
138
+
139
+ def test_existing_non_ignored_files_are_removed_during_sync
140
+ mod1_info = create_module_git("mod1")
141
+ create_ws_git("testbr") do |s|
142
+ FileUtils.mkdir_p(File.join(@ws_remote_dir, "mod1"))
143
+ File.open(File.join(@ws_remote_dir, "mod1", "existing.txt"), "w") do |f|
144
+ f.write("Content")
145
+ end
146
+ s.execute("git add --all mod1")
147
+ s.execute("git commit -m \"Create existing file within mod1\"")
148
+ end
149
+ cut = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info])
150
+ cut.sync
151
+ RIM::git_session(@ws_dir) do |s|
152
+ s.execute("git rebase rim/testbr")
153
+ assert !File.exists?(File.join(@ws_dir, "mod1", "existing.txt"))
154
+ end
155
+ end
156
+
157
+ def test_case_change_in_filename_is_synced_correctly
158
+ mod1_info = create_module_git("mod1")
159
+ create_ws_git("testbr")
160
+ cut = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info])
161
+ cut.sync
162
+ remote_path = path_from_module_info(mod1_info)
163
+ RIM::git_session(remote_path) do |s|
164
+ FileUtils.mv(File.join(remote_path, "readme.txt"), File.join(remote_path, "readme.tx_"))
165
+ s.execute("git add --all .")
166
+ s.execute("git commit -m \"Temporary change of filename within mod1\"")
167
+ FileUtils.mv(File.join(remote_path, "readme.tx_"), File.join(remote_path, "Readme.txt"))
168
+ s.execute("git add --all .")
169
+ s.execute("git commit -m \"Changed case in filename within mod1\"")
170
+ end
171
+ cut.sync
172
+ RIM::git_session(@ws_dir) do |s|
173
+ s.execute("git rebase rim/testbr")
174
+ out = s.execute("git show --name-only")
175
+ assert out.include?("readme.txt")
176
+ assert out.include?("Readme.txt")
177
+ end
178
+ end
179
+
180
+ def test_sync_on_different_branches
181
+ mod1_info = create_module_git("mod1")
182
+ create_ws_git("testbr")
183
+ cut = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info])
184
+ cut.sync
185
+ remote_path = path_from_module_info(mod1_info)
186
+ RIM::git_session(remote_path) do |s|
187
+ FileUtils.mv(File.join(remote_path, "readme.txt"), File.join(remote_path, "readme.tx_"))
188
+ s.execute("git add --all .")
189
+ s.execute("git commit -m \"Temporary change of filename within mod1\"")
190
+ FileUtils.mv(File.join(remote_path, "readme.tx_"), File.join(remote_path, "Readme.txt"))
191
+ s.execute("git add --all .")
192
+ s.execute("git commit -m \"Changed case in filename within mod1\"")
193
+ end
194
+ RIM::git_session(@ws_dir) do |s|
195
+ s.execute("git checkout -b branch2")
196
+ end
197
+ cut.sync
198
+ RIM::git_session(@ws_dir) do |s|
199
+ s.execute("git rebase rim/branch2")
200
+ out = s.execute("git show --name-only")
201
+ assert out.include?("Readme.txt")
202
+ end
203
+ RIM::git_session(remote_path) do |s|
204
+ `echo ' changed' >> #{File.join(remote_path, "Readme.txt")}`
205
+ s.execute("git commit . -m \"Changed module file\"")
206
+ end
207
+ cut.sync
208
+ RIM::git_session(@ws_dir) do |s|
209
+ s.execute("git rebase rim/branch2")
210
+ s.execute("git checkout testbr")
211
+ s.execute("git reset --hard branch2~1")
212
+ s.execute("git push origin branch2:branch2")
213
+ end
214
+ cut.sync
215
+ RIM::git_session(@ws_dir) do |s|
216
+ s.execute("git reset --hard rim/testbr")
217
+ out = s.execute("git show --name-only")
218
+ assert out.include?("Readme.txt")
219
+ end
220
+ end
221
+
222
+ private
223
+ def create_ws_git(branch = "master")
224
+ FileUtils.mkdir_p(@ws_remote_dir)
225
+ RIM::git_session(@ws_remote_dir) do |s|
226
+ s.execute("git init")
227
+ s.execute("git checkout -B #{branch}")
228
+ File.open(File.join(@ws_remote_dir, ".gitignore"), "w") do |f|
229
+ f.write(".rim")
230
+ end
231
+ File.open(File.join(@ws_remote_dir, "readme"), "w") do |f|
232
+ f.write("Content")
233
+ end
234
+ s.execute("git add .")
235
+ s.execute("git commit -m \"Initial commit\"")
236
+ yield s if block_given?
237
+ end
238
+ FileUtils.mkdir_p(@ws_dir)
239
+ RIM::git_session(@ws_dir) do |s|
240
+ s.execute("git clone #{@ws_remote_dir} #{@ws_dir}")
241
+ end
242
+ end
243
+
244
+ def create_module_git(name, branch = "master")
245
+ git_dir = File.join(@remote_git_dir, name)
246
+ FileUtils.mkdir_p(git_dir)
247
+ RIM::git_session(git_dir) do |s|
248
+ s.execute("git init")
249
+ s.execute("git checkout -B #{branch}")
250
+ File.open(File.join(git_dir, "readme.txt"), "w") do |f|
251
+ f.write("Content.")
252
+ end
253
+ s.execute("git add .")
254
+ s.execute("git commit -m \"Initial commit\"")
255
+ end
256
+ return RIM::ModuleInfo.new("file://" + git_dir, name, branch)
257
+ end
258
+
259
+ def create_all_module_git(name, branch = "master")
260
+ git_dir = File.join(@remote_git_dir, name)
261
+ FileUtils.mkdir_p(File.join(git_dir,"mod_a"))
262
+ FileUtils.mkdir_p(File.join(git_dir,"mod_b","src"))
263
+ RIM::git_session(git_dir) do |s|
264
+ s.execute("git init")
265
+ s.execute("git checkout -B #{branch}")
266
+ File.open(File.join(git_dir, "readme.txt"), "w") do |f|
267
+ f.write("Content.")
268
+ end
269
+ File.open(File.join(git_dir, "mod_a", "file_a.c"), "w") do |f|
270
+ f.write("Content.")
271
+ end
272
+ File.open(File.join(git_dir, "mod_b", "src", "file_b.c"), "w") do |f|
273
+ f.write("Content.")
274
+ end
275
+ s.execute("git add .")
276
+ s.execute("git commit -m \"Initial commit\"")
277
+ end
278
+ return git_dir
279
+ end
280
+
281
+ def path_from_module_info(module_info)
282
+ module_info.remote_url.gsub(/^file:\/\//, "")
283
+ end
284
+
285
+ def check_not_dirty(session)
286
+ status = RIM::StatusBuilder.new.rev_status(session, "HEAD")
287
+ status.modules.each do |m|
288
+ assert !m.dirty?
289
+ end
290
+ end
291
+
292
+ def has_ancestor?(session, rev, ancestor)
293
+ rev = session.execute("git rev-list #{rev}").include?(session.rev_sha1(ancestor))
294
+ end
295
+
296
+ end