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.
- checksums.yaml +5 -13
- data/CHANGELOG +9 -0
- data/Rakefile +56 -56
- data/lib/rim/command/sync.rb +89 -89
- data/lib/rim/command_helper.rb +143 -143
- data/lib/rim/git.rb +2 -1
- data/lib/rim/manifest/helper.rb +82 -82
- data/lib/rim/manifest/json_reader.rb +41 -41
- data/lib/rim/manifest/manifest.json +7 -7
- data/lib/rim/module_helper.rb +57 -57
- data/lib/rim/module_info.rb +43 -43
- data/lib/rim/processor.rb +152 -152
- data/lib/rim/rim.rb +94 -94
- data/lib/rim/sync_helper.rb +150 -150
- data/lib/rim/sync_module_helper.rb +107 -107
- data/lib/rim/upload_helper.rb +69 -69
- data/lib/rim/upload_module_helper.rb +163 -162
- data/lib/rim/version.rb +1 -1
- data/test/command_helper_test.rb +83 -83
- data/test/file_helper_test.rb +132 -132
- data/test/manifest_helper_test.rb +29 -29
- data/test/manifest_test_dir/manifest.rim +9 -9
- data/test/processor_test.rb +32 -32
- data/test/sync_helper_test.rb +296 -296
- data/test/sync_module_helper_test.rb +126 -126
- data/test/upload_helper_test.rb +403 -403
- data/test/upload_module_helper_test.rb +92 -92
- metadata +9 -15
- data/test/dirty_check/dir1/file2 +0 -1
- data/test/dirty_check/file1 +0 -1
- data/test/dirty_check/ign_file1 +0 -1
- data/test/rim_info/mod1/dir1/file2 +0 -1
- data/test/rim_info/mod1/file1 +0 -1
- data/test/rim_info/unrelated_file +0 -1
@@ -1,126 +1,126 @@
|
|
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/dirty_check'
|
7
|
-
require 'rim/module_info'
|
8
|
-
require 'rim/sync_module_helper'
|
9
|
-
require 'test_helper'
|
10
|
-
require 'fileutils'
|
11
|
-
|
12
|
-
class SyncModuleHelperTest < Minitest::Test
|
13
|
-
include FileUtils
|
14
|
-
include TestHelper
|
15
|
-
|
16
|
-
def setup
|
17
|
-
@logger = Logger.new($stdout)
|
18
|
-
@logger.level = Logger::ERROR unless ARGV.include? "debug"
|
19
|
-
RIM::GitSession.logger = @logger
|
20
|
-
test_dir = empty_test_dir("module_sync_helper_test")
|
21
|
-
@remote_git_dir = File.join(test_dir, "remote_git")
|
22
|
-
@remote_git_dir_url = "file://" + @remote_git_dir
|
23
|
-
FileUtils.mkdir(@remote_git_dir)
|
24
|
-
RIM::git_session(@remote_git_dir) do |s|
|
25
|
-
s.execute("git init")
|
26
|
-
s.execute("git checkout -B testbr")
|
27
|
-
write_file(@remote_git_dir, "readme.txt")
|
28
|
-
s.execute("git add .")
|
29
|
-
s.execute("git commit -m \"Initial commit\"")
|
30
|
-
end
|
31
|
-
@ws_dir = File.join(test_dir, "ws")
|
32
|
-
FileUtils.mkdir(@ws_dir)
|
33
|
-
RIM::git_session(@ws_dir) do |s|
|
34
|
-
s.execute("git clone #{@remote_git_dir_url} .")
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def teardown
|
39
|
-
remove_test_dirs
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_files_are_copied_to_working_dir
|
43
|
-
info = RIM::ModuleInfo.new(@remote_git_dir_url, "test", "testbr")
|
44
|
-
cut = RIM::SyncModuleHelper.new(@ws_dir, @ws_dir, info, @logger)
|
45
|
-
cut.sync
|
46
|
-
assert File.exists?(File.join(@ws_dir, "test/readme.txt"))
|
47
|
-
assert File.exists?(File.join(@ws_dir, "test/.riminfo"))
|
48
|
-
end
|
49
|
-
|
50
|
-
def test_files_ignored_by_gitignore_of_workspace_are_copied_to_working_dir
|
51
|
-
RIM::git_session(@remote_git_dir) do |s|
|
52
|
-
write_file(@remote_git_dir, 'ignored_file.txt')
|
53
|
-
s.execute("git add .")
|
54
|
-
s.execute("git commit -m \"Add a single file\"")
|
55
|
-
end
|
56
|
-
RIM::git_session(@ws_dir) do |s|
|
57
|
-
write_file(@ws_dir, '.gitignore', 'ignored*\n')
|
58
|
-
s.execute("git add .")
|
59
|
-
s.execute("git commit -m \"Ignore a single file\"")
|
60
|
-
end
|
61
|
-
info = RIM::ModuleInfo.new(@remote_git_dir_url, "test", "testbr")
|
62
|
-
cut = RIM::SyncModuleHelper.new(@ws_dir, @ws_dir, info, @logger)
|
63
|
-
cut.sync
|
64
|
-
assert File.exists?(File.join(@ws_dir, "test/readme.txt"))
|
65
|
-
assert File.exists?(File.join(@ws_dir, "test/.riminfo"))
|
66
|
-
assert File.exists?(File.join(@ws_dir, "test/ignored_file.txt"))
|
67
|
-
# Add a single ignored file afterwards and sync again
|
68
|
-
RIM::git_session(@remote_git_dir) do |s|
|
69
|
-
write_file(@remote_git_dir, 'ignored_file_2.txt')
|
70
|
-
s.execute("git add .")
|
71
|
-
s.execute("git commit -m \"Add a second ignored file\"")
|
72
|
-
end
|
73
|
-
cut.sync
|
74
|
-
assert File.exists?(File.join(@ws_dir, "test/readme.txt"))
|
75
|
-
assert File.exists?(File.join(@ws_dir, "test/.riminfo"))
|
76
|
-
assert File.exists?(File.join(@ws_dir, "test/ignored_file.txt"))
|
77
|
-
assert File.exists?(File.join(@ws_dir, "test/ignored_file_2.txt"))
|
78
|
-
end
|
79
|
-
|
80
|
-
def test_files_of_ignore_list_are_not_removed_when_copying
|
81
|
-
test_folder = File.join(@ws_dir, "test")
|
82
|
-
write_file(test_folder, "file1")
|
83
|
-
write_file(test_folder, "file2")
|
84
|
-
write_file(File.join(test_folder, "folder"), "file1")
|
85
|
-
write_file(File.join(test_folder, "folder"), "file2")
|
86
|
-
write_file(File.join(test_folder, "folder2"), "file1")
|
87
|
-
info = RIM::ModuleInfo.new(@remote_git_dir_url, "test", "testbr", "**/file2")
|
88
|
-
cut = RIM::SyncModuleHelper.new(@ws_dir, @ws_dir, info, @logger)
|
89
|
-
cut.sync
|
90
|
-
assert File.exists?(File.join(test_folder, "readme.txt"))
|
91
|
-
assert File.exists?(File.join(test_folder, ".riminfo"))
|
92
|
-
assert !File.exists?(File.join(test_folder, "file1"))
|
93
|
-
assert File.exists?(File.join(test_folder, "file2"))
|
94
|
-
assert !File.exists?(File.join(test_folder, "folder/file1"))
|
95
|
-
assert File.exists?(File.join(test_folder, "folder/file2"))
|
96
|
-
assert File.exists?(File.join(test_folder, "folder/file2"))
|
97
|
-
end
|
98
|
-
|
99
|
-
def test_commit_message_is_set_by_default
|
100
|
-
info = RIM::ModuleInfo.new(@remote_git_dir_url, "test", "testbr")
|
101
|
-
cut = RIM::SyncModuleHelper.new(@ws_dir, @ws_dir, info, @logger)
|
102
|
-
cut.sync
|
103
|
-
RIM::git_session(@ws_dir) do |s|
|
104
|
-
out = s.execute("git log HEAD~1..HEAD")
|
105
|
-
assert out.include?("rim sync: module")
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
def test_commit_message_can_be_changed
|
110
|
-
info = RIM::ModuleInfo.new(@remote_git_dir_url, "test", "testbr")
|
111
|
-
cut = RIM::SyncModuleHelper.new(@ws_dir, @ws_dir, info, @logger)
|
112
|
-
cut.sync("This is the commit header.")
|
113
|
-
RIM::git_session(@ws_dir) do |s|
|
114
|
-
out = s.execute("git log HEAD~1..HEAD")
|
115
|
-
assert out.include?("This is the commit header.\n")
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
def write_file(dir, name, content = nil)
|
120
|
-
FileUtils.mkdir_p(dir)
|
121
|
-
File.open(File.join(dir, name), "w") do |f|
|
122
|
-
f.write(content || "Content of #{name}\n")
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
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/dirty_check'
|
7
|
+
require 'rim/module_info'
|
8
|
+
require 'rim/sync_module_helper'
|
9
|
+
require 'test_helper'
|
10
|
+
require 'fileutils'
|
11
|
+
|
12
|
+
class SyncModuleHelperTest < Minitest::Test
|
13
|
+
include FileUtils
|
14
|
+
include TestHelper
|
15
|
+
|
16
|
+
def setup
|
17
|
+
@logger = Logger.new($stdout)
|
18
|
+
@logger.level = Logger::ERROR unless ARGV.include? "debug"
|
19
|
+
RIM::GitSession.logger = @logger
|
20
|
+
test_dir = empty_test_dir("module_sync_helper_test")
|
21
|
+
@remote_git_dir = File.join(test_dir, "remote_git")
|
22
|
+
@remote_git_dir_url = "file://" + @remote_git_dir
|
23
|
+
FileUtils.mkdir(@remote_git_dir)
|
24
|
+
RIM::git_session(@remote_git_dir) do |s|
|
25
|
+
s.execute("git init")
|
26
|
+
s.execute("git checkout -B testbr")
|
27
|
+
write_file(@remote_git_dir, "readme.txt")
|
28
|
+
s.execute("git add .")
|
29
|
+
s.execute("git commit -m \"Initial commit\"")
|
30
|
+
end
|
31
|
+
@ws_dir = File.join(test_dir, "ws")
|
32
|
+
FileUtils.mkdir(@ws_dir)
|
33
|
+
RIM::git_session(@ws_dir) do |s|
|
34
|
+
s.execute("git clone #{@remote_git_dir_url} .")
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def teardown
|
39
|
+
remove_test_dirs
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_files_are_copied_to_working_dir
|
43
|
+
info = RIM::ModuleInfo.new(@remote_git_dir_url, "test", "testbr")
|
44
|
+
cut = RIM::SyncModuleHelper.new(@ws_dir, @ws_dir, info, @logger)
|
45
|
+
cut.sync
|
46
|
+
assert File.exists?(File.join(@ws_dir, "test/readme.txt"))
|
47
|
+
assert File.exists?(File.join(@ws_dir, "test/.riminfo"))
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_files_ignored_by_gitignore_of_workspace_are_copied_to_working_dir
|
51
|
+
RIM::git_session(@remote_git_dir) do |s|
|
52
|
+
write_file(@remote_git_dir, 'ignored_file.txt')
|
53
|
+
s.execute("git add .")
|
54
|
+
s.execute("git commit -m \"Add a single file\"")
|
55
|
+
end
|
56
|
+
RIM::git_session(@ws_dir) do |s|
|
57
|
+
write_file(@ws_dir, '.gitignore', 'ignored*\n')
|
58
|
+
s.execute("git add .")
|
59
|
+
s.execute("git commit -m \"Ignore a single file\"")
|
60
|
+
end
|
61
|
+
info = RIM::ModuleInfo.new(@remote_git_dir_url, "test", "testbr")
|
62
|
+
cut = RIM::SyncModuleHelper.new(@ws_dir, @ws_dir, info, @logger)
|
63
|
+
cut.sync
|
64
|
+
assert File.exists?(File.join(@ws_dir, "test/readme.txt"))
|
65
|
+
assert File.exists?(File.join(@ws_dir, "test/.riminfo"))
|
66
|
+
assert File.exists?(File.join(@ws_dir, "test/ignored_file.txt"))
|
67
|
+
# Add a single ignored file afterwards and sync again
|
68
|
+
RIM::git_session(@remote_git_dir) do |s|
|
69
|
+
write_file(@remote_git_dir, 'ignored_file_2.txt')
|
70
|
+
s.execute("git add .")
|
71
|
+
s.execute("git commit -m \"Add a second ignored file\"")
|
72
|
+
end
|
73
|
+
cut.sync
|
74
|
+
assert File.exists?(File.join(@ws_dir, "test/readme.txt"))
|
75
|
+
assert File.exists?(File.join(@ws_dir, "test/.riminfo"))
|
76
|
+
assert File.exists?(File.join(@ws_dir, "test/ignored_file.txt"))
|
77
|
+
assert File.exists?(File.join(@ws_dir, "test/ignored_file_2.txt"))
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_files_of_ignore_list_are_not_removed_when_copying
|
81
|
+
test_folder = File.join(@ws_dir, "test")
|
82
|
+
write_file(test_folder, "file1")
|
83
|
+
write_file(test_folder, "file2")
|
84
|
+
write_file(File.join(test_folder, "folder"), "file1")
|
85
|
+
write_file(File.join(test_folder, "folder"), "file2")
|
86
|
+
write_file(File.join(test_folder, "folder2"), "file1")
|
87
|
+
info = RIM::ModuleInfo.new(@remote_git_dir_url, "test", "testbr", "**/file2")
|
88
|
+
cut = RIM::SyncModuleHelper.new(@ws_dir, @ws_dir, info, @logger)
|
89
|
+
cut.sync
|
90
|
+
assert File.exists?(File.join(test_folder, "readme.txt"))
|
91
|
+
assert File.exists?(File.join(test_folder, ".riminfo"))
|
92
|
+
assert !File.exists?(File.join(test_folder, "file1"))
|
93
|
+
assert File.exists?(File.join(test_folder, "file2"))
|
94
|
+
assert !File.exists?(File.join(test_folder, "folder/file1"))
|
95
|
+
assert File.exists?(File.join(test_folder, "folder/file2"))
|
96
|
+
assert File.exists?(File.join(test_folder, "folder/file2"))
|
97
|
+
end
|
98
|
+
|
99
|
+
def test_commit_message_is_set_by_default
|
100
|
+
info = RIM::ModuleInfo.new(@remote_git_dir_url, "test", "testbr")
|
101
|
+
cut = RIM::SyncModuleHelper.new(@ws_dir, @ws_dir, info, @logger)
|
102
|
+
cut.sync
|
103
|
+
RIM::git_session(@ws_dir) do |s|
|
104
|
+
out = s.execute("git log HEAD~1..HEAD")
|
105
|
+
assert out.include?("rim sync: module")
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_commit_message_can_be_changed
|
110
|
+
info = RIM::ModuleInfo.new(@remote_git_dir_url, "test", "testbr")
|
111
|
+
cut = RIM::SyncModuleHelper.new(@ws_dir, @ws_dir, info, @logger)
|
112
|
+
cut.sync("This is the commit header.")
|
113
|
+
RIM::git_session(@ws_dir) do |s|
|
114
|
+
out = s.execute("git log HEAD~1..HEAD")
|
115
|
+
assert out.include?("This is the commit header.\n")
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
def write_file(dir, name, content = nil)
|
120
|
+
FileUtils.mkdir_p(dir)
|
121
|
+
File.open(File.join(dir, name), "w") do |f|
|
122
|
+
f.write(content || "Content of #{name}\n")
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
end
|
data/test/upload_helper_test.rb
CHANGED
@@ -1,403 +1,403 @@
|
|
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/rim_info'
|
8
|
-
require 'rim/status_builder'
|
9
|
-
require 'rim/sync_helper'
|
10
|
-
require 'rim/upload_helper'
|
11
|
-
require 'test_helper'
|
12
|
-
require 'fileutils'
|
13
|
-
|
14
|
-
class UploadHelperTest < Minitest::Test
|
15
|
-
include FileUtils
|
16
|
-
include TestHelper
|
17
|
-
|
18
|
-
def setup
|
19
|
-
test_dir = empty_test_dir("upload_helper_test")
|
20
|
-
@remote_git_dir = File.join(test_dir, "remote_git")
|
21
|
-
@ws_remote_dir = File.join(test_dir, "remote_ws")
|
22
|
-
@ws_dir = File.join(test_dir, "ws")
|
23
|
-
@logger = Logger.new($stdout)
|
24
|
-
@logger.level = Logger::ERROR unless ARGV.include? "debug"
|
25
|
-
RIM::GitSession.logger = @logger
|
26
|
-
end
|
27
|
-
|
28
|
-
def teardown
|
29
|
-
remove_test_dirs
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_no_files_are_uploaded_if_not_dirty
|
33
|
-
mod1_info = create_module_git("mod1")
|
34
|
-
sha1 = nil
|
35
|
-
module_session(mod1_info) do |s|
|
36
|
-
sha1 = s.rev_sha1("HEAD")
|
37
|
-
end
|
38
|
-
mod2_info = create_module_git("mod2")
|
39
|
-
create_ws_git("testbr")
|
40
|
-
sync_helper = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info, mod2_info])
|
41
|
-
sync_helper.sync
|
42
|
-
RIM::git_session(@ws_dir) do |s|
|
43
|
-
s.execute("git rebase rim/testbr")
|
44
|
-
end
|
45
|
-
cut = RIM::UploadHelper.new(@ws_dir, true, @logger, [mod1_info, mod2_info])
|
46
|
-
cut.upload
|
47
|
-
module_session(mod1_info) do |s|
|
48
|
-
assert s.rev_sha1("master") == sha1
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
def test_files_of_new_commits_are_uploaded
|
53
|
-
mod1_info = create_module_git("mod1")
|
54
|
-
create_ws_git("testbr")
|
55
|
-
sync_helper = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info])
|
56
|
-
sync_helper.sync
|
57
|
-
RIM::git_session(@ws_dir) do |s|
|
58
|
-
s.execute("git rebase rim/testbr")
|
59
|
-
end
|
60
|
-
shas = []
|
61
|
-
# make two changes to module
|
62
|
-
RIM::git_session(@ws_dir) do |s|
|
63
|
-
`echo ' appended' >> #{File.join(@ws_dir, "mod1/readme.txt")}`
|
64
|
-
s.execute("git commit . -m \"First change\"")
|
65
|
-
shas.push(s.rev_sha1("HEAD"))
|
66
|
-
`echo 'Test' > #{File.join(@ws_dir, "mod1/new_file.txt")}`
|
67
|
-
s.execute("git add .")
|
68
|
-
s.execute("git commit . -m \"Second change\"")
|
69
|
-
shas.push(s.rev_sha1("HEAD"))
|
70
|
-
end
|
71
|
-
cut = RIM::UploadHelper.new(@ws_dir, true, @logger, [mod1_info])
|
72
|
-
cut.upload
|
73
|
-
module_session(mod1_info) do |s|
|
74
|
-
s.execute("git checkout master")
|
75
|
-
assert File.exist?(File.join(@remote_git_dir, "mod1/readme.txt"))
|
76
|
-
assert File.exist?(File.join(@remote_git_dir, "mod1/new_file.txt"))
|
77
|
-
assert s.execute("git show -s --format=%B HEAD").start_with?("Second change")
|
78
|
-
assert s.execute("git show -s --format=%B HEAD~1").start_with?("First change")
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
def test_files_of_new_commits_are_uploaded_subdir
|
83
|
-
mod_git_dir = create_all_module_git("mod_all")
|
84
|
-
mod_a_info = RIM::ModuleInfo.new("file://" + mod_git_dir, "modules/a", "master", nil, nil, "mod_a")
|
85
|
-
create_ws_git("testbr")
|
86
|
-
sync_helper = RIM::SyncHelper.new(@ws_dir, @logger, [mod_a_info])
|
87
|
-
sync_helper.sync
|
88
|
-
RIM::git_session(@ws_dir) do |s|
|
89
|
-
s.execute("git rebase rim/testbr")
|
90
|
-
end
|
91
|
-
shas = []
|
92
|
-
# make two changes to module
|
93
|
-
RIM::git_session(@ws_dir) do |s|
|
94
|
-
`echo ' appended' >> #{File.join(@ws_dir, "modules/a/file_a.c")}`
|
95
|
-
s.execute("git commit . -m \"First change\"")
|
96
|
-
shas.push(s.rev_sha1("HEAD"))
|
97
|
-
`echo 'Test' > #{File.join(@ws_dir, "modules/a/new_file.txt")}`
|
98
|
-
s.execute("git add .")
|
99
|
-
s.execute("git commit . -m \"Second change\"")
|
100
|
-
shas.push(s.rev_sha1("HEAD"))
|
101
|
-
end
|
102
|
-
cut = RIM::UploadHelper.new(@ws_dir, true, @logger, [mod_a_info])
|
103
|
-
|
104
|
-
module_session(mod_a_info) do |s|
|
105
|
-
s.execute("git checkout --detach master")
|
106
|
-
assert File.exist?(File.join(mod_git_dir, "mod_a", "file_a.c"))
|
107
|
-
assert !File.exist?(File.join(mod_git_dir, "mod_a", "new_file.txt"))
|
108
|
-
assert File.exist?(File.join(mod_git_dir, "mod_b", "src", "file_b.c"))
|
109
|
-
end
|
110
|
-
|
111
|
-
cut.upload
|
112
|
-
|
113
|
-
module_session(mod_a_info) do |s|
|
114
|
-
s.execute("git checkout --detach master")
|
115
|
-
assert File.exist?(File.join(mod_git_dir, "mod_a", "file_a.c"))
|
116
|
-
assert File.exist?(File.join(mod_git_dir, "mod_a", "new_file.txt"))
|
117
|
-
assert File.exist?(File.join(mod_git_dir, "mod_b", "src", "file_b.c"))
|
118
|
-
assert s.execute("git show -s --format=%B HEAD").start_with?("Second change")
|
119
|
-
assert s.execute("git show -s --format=%B HEAD~1").start_with?("First change")
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
|
-
def test_files_of_new_commits_are_uploaded_to_push_branch
|
124
|
-
mod1_info = create_module_git("mod1", "master", "for/%s")
|
125
|
-
create_ws_git("testbr")
|
126
|
-
sync_helper = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info])
|
127
|
-
sync_helper.sync
|
128
|
-
RIM::git_session(@ws_dir) do |s|
|
129
|
-
s.execute("git rebase rim/testbr")
|
130
|
-
end
|
131
|
-
shas = []
|
132
|
-
# make two changes to module
|
133
|
-
RIM::git_session(@ws_dir) do |s|
|
134
|
-
`echo ' appended' >> #{File.join(@ws_dir, "mod1/readme.txt")}`
|
135
|
-
s.execute("git commit . -m \"First change\"")
|
136
|
-
shas.push(s.rev_sha1("HEAD"))
|
137
|
-
`echo 'Test' > #{File.join(@ws_dir, "mod1/new_file.txt")}`
|
138
|
-
s.execute("git add .")
|
139
|
-
s.execute("git commit . -m \"Second change\"")
|
140
|
-
shas.push(s.rev_sha1("HEAD"))
|
141
|
-
end
|
142
|
-
cut = RIM::UploadHelper.new(@ws_dir, true, @logger, [mod1_info])
|
143
|
-
cut.upload
|
144
|
-
module_session(mod1_info) do |s|
|
145
|
-
s.execute("git checkout for/master")
|
146
|
-
assert File.exist?(File.join(@remote_git_dir, "mod1/readme.txt"))
|
147
|
-
assert File.exist?(File.join(@remote_git_dir, "mod1/new_file.txt"))
|
148
|
-
assert s.execute("git show -s --format=%B HEAD").start_with?("Second change")
|
149
|
-
assert s.execute("git show -s --format=%B HEAD~1").start_with?("First change")
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
def test_files_of_new_commits_are_uploaded_to_direct_branch
|
154
|
-
mod1_info = create_module_git("mod1", "master", "for/%s")
|
155
|
-
create_ws_git("testbr")
|
156
|
-
sync_helper = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info])
|
157
|
-
sync_helper.sync
|
158
|
-
RIM::git_session(@ws_dir) do |s|
|
159
|
-
s.execute("git rebase rim/testbr")
|
160
|
-
end
|
161
|
-
shas = []
|
162
|
-
# make two changes to module
|
163
|
-
RIM::git_session(@ws_dir) do |s|
|
164
|
-
`echo ' appended' >> #{File.join(@ws_dir, "mod1/readme.txt")}`
|
165
|
-
s.execute("git commit . -m \"First change\"")
|
166
|
-
shas.push(s.rev_sha1("HEAD"))
|
167
|
-
`echo 'Test' > #{File.join(@ws_dir, "mod1/new_file.txt")}`
|
168
|
-
s.execute("git add .")
|
169
|
-
s.execute("git commit . -m \"Second change\"")
|
170
|
-
shas.push(s.rev_sha1("HEAD"))
|
171
|
-
end
|
172
|
-
cut = RIM::UploadHelper.new(@ws_dir, false, @logger, [mod1_info])
|
173
|
-
cut.upload
|
174
|
-
module_session(mod1_info) do |s|
|
175
|
-
s.execute("git checkout master")
|
176
|
-
assert File.exist?(File.join(@remote_git_dir, "mod1/readme.txt"))
|
177
|
-
assert File.exist?(File.join(@remote_git_dir, "mod1/new_file.txt"))
|
178
|
-
assert s.execute("git show -s --format=%B HEAD").start_with?("Second change")
|
179
|
-
assert s.execute("git show -s --format=%B HEAD~1").start_with?("First change")
|
180
|
-
end
|
181
|
-
end
|
182
|
-
|
183
|
-
def test_files_of_new_commits_are_uploaded_without_ignores
|
184
|
-
mod1_info = create_module_git("mod1")
|
185
|
-
create_ws_git("testbr")
|
186
|
-
sync_helper = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info])
|
187
|
-
sync_helper.sync
|
188
|
-
RIM::git_session(@ws_dir) do |s|
|
189
|
-
s.execute("git rebase rim/testbr")
|
190
|
-
end
|
191
|
-
shas = []
|
192
|
-
# make two changes to module
|
193
|
-
RIM::git_session(@ws_dir) do |s|
|
194
|
-
`echo ' appended' >> #{File.join(@ws_dir, "mod1/readme.txt")}`
|
195
|
-
s.execute("git commit . -m \"First change\"")
|
196
|
-
shas.push(s.rev_sha1("HEAD"))
|
197
|
-
`echo 'Test' > #{File.join(@ws_dir, "mod1/new_file.txt")}`
|
198
|
-
# Adjust rim_info to contain the file as ignored file
|
199
|
-
rim_info = RIM::RimInfo.from_dir(File.join(@ws_dir, "mod1"))
|
200
|
-
rim_info.ignores = "new_file.txt"
|
201
|
-
rim_info.to_dir(File.join(@ws_dir, "mod1"))
|
202
|
-
`echo 'Test' > #{File.join(@ws_dir, "mod1/new_file2.txt")}`
|
203
|
-
s.execute("git add .")
|
204
|
-
s.execute("git commit . -m \"Second change\"")
|
205
|
-
shas.push(s.rev_sha1("HEAD"))
|
206
|
-
end
|
207
|
-
cut = RIM::UploadHelper.new(@ws_dir, true, @logger, [mod1_info])
|
208
|
-
cut.upload
|
209
|
-
module_session(mod1_info) do |s|
|
210
|
-
s.execute("git checkout master")
|
211
|
-
assert File.exist?(File.join(@remote_git_dir, "mod1/readme.txt"))
|
212
|
-
assert !File.exist?(File.join(@remote_git_dir, "mod1/new_file.txt"))
|
213
|
-
assert File.exist?(File.join(@remote_git_dir, "mod1/new_file2.txt"))
|
214
|
-
assert s.execute("git show -s --format=%B HEAD").start_with?("Second change")
|
215
|
-
assert s.execute("git show -s --format=%B HEAD~1").start_with?("First change")
|
216
|
-
end
|
217
|
-
end
|
218
|
-
|
219
|
-
def test_files_of_amended_commits_are_uploaded
|
220
|
-
mod1_info = create_module_git("mod1")
|
221
|
-
create_ws_git("testbr")
|
222
|
-
sync_helper = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info])
|
223
|
-
sync_helper.sync
|
224
|
-
RIM::git_session(@ws_dir) do |s|
|
225
|
-
s.execute("git rebase rim/testbr")
|
226
|
-
end
|
227
|
-
shas = []
|
228
|
-
# make two changes to module
|
229
|
-
RIM::git_session(@ws_dir) do |s|
|
230
|
-
`echo ' appended' >> #{File.join(@ws_dir, "mod1/readme.txt")}`
|
231
|
-
s.execute("git commit . -m \"First change\"")
|
232
|
-
shas.push(s.rev_sha1("HEAD"))
|
233
|
-
`echo 'Test' > #{File.join(@ws_dir, "mod1/new_file.txt")}`
|
234
|
-
`echo 'Test' > #{File.join(@ws_dir, "mod1/new_file2.txt")}`
|
235
|
-
s.execute("git add .")
|
236
|
-
s.execute("git commit . -m \"Second change\"")
|
237
|
-
shas.push(s.rev_sha1("HEAD"))
|
238
|
-
end
|
239
|
-
cut = RIM::UploadHelper.new(@ws_dir, true, @logger, [mod1_info])
|
240
|
-
cut.upload
|
241
|
-
module_session(mod1_info) do |s|
|
242
|
-
s.execute("git checkout master")
|
243
|
-
assert File.exist?(File.join(@remote_git_dir, "mod1/readme.txt"))
|
244
|
-
assert File.exist?(File.join(@remote_git_dir, "mod1/new_file.txt"))
|
245
|
-
assert File.exist?(File.join(@remote_git_dir, "mod1/new_file2.txt"))
|
246
|
-
assert s.execute("git show -s --format=%B HEAD").start_with?("Second change")
|
247
|
-
assert s.execute("git show -s --format=%B HEAD~1").start_with?("First change")
|
248
|
-
s.execute("git checkout --detach master")
|
249
|
-
s.execute("git branch -D master")
|
250
|
-
end
|
251
|
-
# reset testbr now on previous commit and commit new change
|
252
|
-
RIM::git_session(@ws_dir) do |s|
|
253
|
-
s.execute("git checkout -B testbr HEAD~1")
|
254
|
-
`echo 'Test' > #{File.join(@ws_dir, "mod1/test_file.txt")}`
|
255
|
-
s.execute("git add .")
|
256
|
-
s.execute("git commit . -m \"Third change\"")
|
257
|
-
end
|
258
|
-
cut.upload
|
259
|
-
module_session(mod1_info) do |s|
|
260
|
-
s.execute("git checkout master")
|
261
|
-
assert File.exist?(File.join(@remote_git_dir, "mod1/readme.txt"))
|
262
|
-
assert File.exist?(File.join(@remote_git_dir, "mod1/test_file.txt"))
|
263
|
-
assert !File.exist?(File.join(@remote_git_dir, "mod1/new_file.txt"))
|
264
|
-
assert !File.exist?(File.join(@remote_git_dir, "mod1/new_file2.txt"))
|
265
|
-
assert s.execute("git show -s --format=%B HEAD").start_with?("Third change")
|
266
|
-
assert s.execute("git show -s --format=%B HEAD~1").start_with?("First change")
|
267
|
-
end
|
268
|
-
end
|
269
|
-
|
270
|
-
def test_files_of_merged_commits_are_uploaded
|
271
|
-
mod1_info = create_module_git("mod1")
|
272
|
-
create_ws_git("testbr")
|
273
|
-
sync_helper = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info])
|
274
|
-
sync_helper.sync
|
275
|
-
RIM::git_session(@ws_dir) do |s|
|
276
|
-
s.execute("git rebase rim/testbr")
|
277
|
-
end
|
278
|
-
shas = []
|
279
|
-
# make two changes to module
|
280
|
-
RIM::git_session(@ws_dir) do |s|
|
281
|
-
`echo ' appended' >> #{File.join(@ws_dir, "mod1/readme.txt")}`
|
282
|
-
s.execute("git commit . -m \"First change\"")
|
283
|
-
#shas.push(s.rev_sha1("HEAD"))
|
284
|
-
`echo 'Test' > #{File.join(@ws_dir, "mod1/new_file.txt")}`
|
285
|
-
`echo 'Test' > #{File.join(@ws_dir, "mod1/new_file2.txt")}`
|
286
|
-
s.execute("git add .")
|
287
|
-
s.execute("git commit . -m \"Second change\"")
|
288
|
-
shas.push(s.rev_sha1("HEAD"))
|
289
|
-
end
|
290
|
-
cut = RIM::UploadHelper.new(@ws_dir, true, @logger, [mod1_info])
|
291
|
-
cut.upload
|
292
|
-
module_session(mod1_info) do |s|
|
293
|
-
s.execute("git checkout --detach master")
|
294
|
-
s.execute("git branch -D master")
|
295
|
-
end
|
296
|
-
# reset testbr now on previous commit and commit new change
|
297
|
-
RIM::git_session(@ws_dir) do |s|
|
298
|
-
s.execute("git checkout -B testbr HEAD~2")
|
299
|
-
`echo 'Test' > #{File.join(@ws_dir, "mod1/test_file.txt")}`
|
300
|
-
s.execute("git add .")
|
301
|
-
s.execute("git commit . -m \"Third change\"")
|
302
|
-
end
|
303
|
-
cut.upload
|
304
|
-
module_session(mod1_info) do |s|
|
305
|
-
s.execute("git checkout --detach master")
|
306
|
-
s.execute("git branch -D master")
|
307
|
-
end
|
308
|
-
# now merge the commits
|
309
|
-
RIM::git_session(@ws_dir) do |s|
|
310
|
-
s.execute("git merge #{shas[0]} --commit")
|
311
|
-
end
|
312
|
-
cut.upload
|
313
|
-
module_session(mod1_info) do |s|
|
314
|
-
s.execute("git checkout master")
|
315
|
-
assert File.exist?(File.join(@remote_git_dir, "mod1/readme.txt"))
|
316
|
-
assert File.exist?(File.join(@remote_git_dir, "mod1/new_file.txt"))
|
317
|
-
assert File.exist?(File.join(@remote_git_dir, "mod1/new_file2.txt"))
|
318
|
-
assert File.exist?(File.join(@remote_git_dir, "mod1/test_file.txt"))
|
319
|
-
assert s.execute("git show -s --format=%B HEAD").start_with?("Merge commit")
|
320
|
-
assert s.execute("git show -s --format=%B HEAD~1").start_with?("Third change")
|
321
|
-
end
|
322
|
-
end
|
323
|
-
|
324
|
-
private
|
325
|
-
def create_ws_git(branch = "master")
|
326
|
-
FileUtils.mkdir_p(@ws_remote_dir)
|
327
|
-
RIM::git_session(@ws_remote_dir) do |s|
|
328
|
-
s.execute("git init")
|
329
|
-
s.execute("git checkout -B #{branch}")
|
330
|
-
File.open(File.join(@ws_remote_dir, ".gitignore"), "w") do |f|
|
331
|
-
f.write(".rim")
|
332
|
-
end
|
333
|
-
File.open(File.join(@ws_remote_dir, "readme"), "w") do |f|
|
334
|
-
f.write("Content")
|
335
|
-
end
|
336
|
-
s.execute("git add .")
|
337
|
-
s.execute("git commit -m \"Initial commit\"")
|
338
|
-
s.execute("git checkout --detach #{branch}")
|
339
|
-
end
|
340
|
-
FileUtils.mkdir_p(@ws_dir)
|
341
|
-
RIM::git_session(@ws_dir) do |s|
|
342
|
-
s.execute("git clone #{@ws_remote_dir} #{@ws_dir}")
|
343
|
-
end
|
344
|
-
end
|
345
|
-
|
346
|
-
def create_module_git(name, branch = "master", remote_branch_format = nil)
|
347
|
-
git_dir = File.join(@remote_git_dir, name)
|
348
|
-
FileUtils.mkdir_p(git_dir)
|
349
|
-
RIM::git_session(git_dir) do |s|
|
350
|
-
s.execute("git init")
|
351
|
-
s.execute("git checkout -B #{branch}")
|
352
|
-
File.open(File.join(git_dir, "readme.txt"), "w") do |f|
|
353
|
-
f.write("Content.")
|
354
|
-
end
|
355
|
-
s.execute("git add .")
|
356
|
-
s.execute("git commit -m \"Initial commit\"")
|
357
|
-
s.execute("git checkout --detach #{branch}")
|
358
|
-
end
|
359
|
-
return RIM::ModuleInfo.new("file://" + git_dir, name, branch, nil, remote_branch_format)
|
360
|
-
end
|
361
|
-
|
362
|
-
def create_all_module_git(name, branch = "master")
|
363
|
-
git_dir = File.join(@remote_git_dir, name)
|
364
|
-
FileUtils.mkdir_p(File.join(git_dir,"mod_a"))
|
365
|
-
FileUtils.mkdir_p(File.join(git_dir,"mod_b","src"))
|
366
|
-
RIM::git_session(git_dir) do |s|
|
367
|
-
s.execute("git init")
|
368
|
-
s.execute("git checkout -B #{branch}")
|
369
|
-
File.open(File.join(git_dir, "readme.txt"), "w") do |f|
|
370
|
-
f.write("Content.")
|
371
|
-
end
|
372
|
-
File.open(File.join(git_dir, "mod_a", "file_a.c"), "w") do |f|
|
373
|
-
f.write("Content.")
|
374
|
-
end
|
375
|
-
File.open(File.join(git_dir, "mod_b", "src", "file_b.c"), "w") do |f|
|
376
|
-
f.write("Content.")
|
377
|
-
end
|
378
|
-
s.execute("git add .")
|
379
|
-
s.execute("git commit -m \"Initial commit\"")
|
380
|
-
s.execute("git checkout --detach #{branch}")
|
381
|
-
end
|
382
|
-
return git_dir
|
383
|
-
end
|
384
|
-
|
385
|
-
|
386
|
-
def module_session(module_info)
|
387
|
-
RIM::git_session(module_info.remote_url.gsub(/^file:\/\//, "")) do |s|
|
388
|
-
yield s
|
389
|
-
end
|
390
|
-
end
|
391
|
-
|
392
|
-
def check_not_dirty(session)
|
393
|
-
status = RIM::StatusBuilder.new.rev_status(session, "HEAD")
|
394
|
-
status.modules.each do |m|
|
395
|
-
assert !m.dirty?
|
396
|
-
end
|
397
|
-
end
|
398
|
-
|
399
|
-
def has_ancestor?(session, rev, ancestor)
|
400
|
-
rev = session.execute("git rev-list #{rev}").include?(session.rev_sha1(ancestor))
|
401
|
-
end
|
402
|
-
|
403
|
-
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/rim_info'
|
8
|
+
require 'rim/status_builder'
|
9
|
+
require 'rim/sync_helper'
|
10
|
+
require 'rim/upload_helper'
|
11
|
+
require 'test_helper'
|
12
|
+
require 'fileutils'
|
13
|
+
|
14
|
+
class UploadHelperTest < Minitest::Test
|
15
|
+
include FileUtils
|
16
|
+
include TestHelper
|
17
|
+
|
18
|
+
def setup
|
19
|
+
test_dir = empty_test_dir("upload_helper_test")
|
20
|
+
@remote_git_dir = File.join(test_dir, "remote_git")
|
21
|
+
@ws_remote_dir = File.join(test_dir, "remote_ws")
|
22
|
+
@ws_dir = File.join(test_dir, "ws")
|
23
|
+
@logger = Logger.new($stdout)
|
24
|
+
@logger.level = Logger::ERROR unless ARGV.include? "debug"
|
25
|
+
RIM::GitSession.logger = @logger
|
26
|
+
end
|
27
|
+
|
28
|
+
def teardown
|
29
|
+
remove_test_dirs
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_no_files_are_uploaded_if_not_dirty
|
33
|
+
mod1_info = create_module_git("mod1")
|
34
|
+
sha1 = nil
|
35
|
+
module_session(mod1_info) do |s|
|
36
|
+
sha1 = s.rev_sha1("HEAD")
|
37
|
+
end
|
38
|
+
mod2_info = create_module_git("mod2")
|
39
|
+
create_ws_git("testbr")
|
40
|
+
sync_helper = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info, mod2_info])
|
41
|
+
sync_helper.sync
|
42
|
+
RIM::git_session(@ws_dir) do |s|
|
43
|
+
s.execute("git rebase rim/testbr")
|
44
|
+
end
|
45
|
+
cut = RIM::UploadHelper.new(@ws_dir, true, @logger, [mod1_info, mod2_info])
|
46
|
+
cut.upload
|
47
|
+
module_session(mod1_info) do |s|
|
48
|
+
assert s.rev_sha1("master") == sha1
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_files_of_new_commits_are_uploaded
|
53
|
+
mod1_info = create_module_git("mod1")
|
54
|
+
create_ws_git("testbr")
|
55
|
+
sync_helper = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info])
|
56
|
+
sync_helper.sync
|
57
|
+
RIM::git_session(@ws_dir) do |s|
|
58
|
+
s.execute("git rebase rim/testbr")
|
59
|
+
end
|
60
|
+
shas = []
|
61
|
+
# make two changes to module
|
62
|
+
RIM::git_session(@ws_dir) do |s|
|
63
|
+
`echo ' appended' >> #{File.join(@ws_dir, "mod1/readme.txt")}`
|
64
|
+
s.execute("git commit . -m \"First change\"")
|
65
|
+
shas.push(s.rev_sha1("HEAD"))
|
66
|
+
`echo 'Test' > #{File.join(@ws_dir, "mod1/new_file.txt")}`
|
67
|
+
s.execute("git add .")
|
68
|
+
s.execute("git commit . -m \"Second change\"")
|
69
|
+
shas.push(s.rev_sha1("HEAD"))
|
70
|
+
end
|
71
|
+
cut = RIM::UploadHelper.new(@ws_dir, true, @logger, [mod1_info])
|
72
|
+
cut.upload
|
73
|
+
module_session(mod1_info) do |s|
|
74
|
+
s.execute("git checkout master")
|
75
|
+
assert File.exist?(File.join(@remote_git_dir, "mod1/readme.txt"))
|
76
|
+
assert File.exist?(File.join(@remote_git_dir, "mod1/new_file.txt"))
|
77
|
+
assert s.execute("git show -s --format=%B HEAD").start_with?("Second change")
|
78
|
+
assert s.execute("git show -s --format=%B HEAD~1").start_with?("First change")
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_files_of_new_commits_are_uploaded_subdir
|
83
|
+
mod_git_dir = create_all_module_git("mod_all")
|
84
|
+
mod_a_info = RIM::ModuleInfo.new("file://" + mod_git_dir, "modules/a", "master", nil, nil, "mod_a")
|
85
|
+
create_ws_git("testbr")
|
86
|
+
sync_helper = RIM::SyncHelper.new(@ws_dir, @logger, [mod_a_info])
|
87
|
+
sync_helper.sync
|
88
|
+
RIM::git_session(@ws_dir) do |s|
|
89
|
+
s.execute("git rebase rim/testbr")
|
90
|
+
end
|
91
|
+
shas = []
|
92
|
+
# make two changes to module
|
93
|
+
RIM::git_session(@ws_dir) do |s|
|
94
|
+
`echo ' appended' >> #{File.join(@ws_dir, "modules/a/file_a.c")}`
|
95
|
+
s.execute("git commit . -m \"First change\"")
|
96
|
+
shas.push(s.rev_sha1("HEAD"))
|
97
|
+
`echo 'Test' > #{File.join(@ws_dir, "modules/a/new_file.txt")}`
|
98
|
+
s.execute("git add .")
|
99
|
+
s.execute("git commit . -m \"Second change\"")
|
100
|
+
shas.push(s.rev_sha1("HEAD"))
|
101
|
+
end
|
102
|
+
cut = RIM::UploadHelper.new(@ws_dir, true, @logger, [mod_a_info])
|
103
|
+
|
104
|
+
module_session(mod_a_info) do |s|
|
105
|
+
s.execute("git checkout --detach master")
|
106
|
+
assert File.exist?(File.join(mod_git_dir, "mod_a", "file_a.c"))
|
107
|
+
assert !File.exist?(File.join(mod_git_dir, "mod_a", "new_file.txt"))
|
108
|
+
assert File.exist?(File.join(mod_git_dir, "mod_b", "src", "file_b.c"))
|
109
|
+
end
|
110
|
+
|
111
|
+
cut.upload
|
112
|
+
|
113
|
+
module_session(mod_a_info) do |s|
|
114
|
+
s.execute("git checkout --detach master")
|
115
|
+
assert File.exist?(File.join(mod_git_dir, "mod_a", "file_a.c"))
|
116
|
+
assert File.exist?(File.join(mod_git_dir, "mod_a", "new_file.txt"))
|
117
|
+
assert File.exist?(File.join(mod_git_dir, "mod_b", "src", "file_b.c"))
|
118
|
+
assert s.execute("git show -s --format=%B HEAD").start_with?("Second change")
|
119
|
+
assert s.execute("git show -s --format=%B HEAD~1").start_with?("First change")
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def test_files_of_new_commits_are_uploaded_to_push_branch
|
124
|
+
mod1_info = create_module_git("mod1", "master", "for/%s")
|
125
|
+
create_ws_git("testbr")
|
126
|
+
sync_helper = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info])
|
127
|
+
sync_helper.sync
|
128
|
+
RIM::git_session(@ws_dir) do |s|
|
129
|
+
s.execute("git rebase rim/testbr")
|
130
|
+
end
|
131
|
+
shas = []
|
132
|
+
# make two changes to module
|
133
|
+
RIM::git_session(@ws_dir) do |s|
|
134
|
+
`echo ' appended' >> #{File.join(@ws_dir, "mod1/readme.txt")}`
|
135
|
+
s.execute("git commit . -m \"First change\"")
|
136
|
+
shas.push(s.rev_sha1("HEAD"))
|
137
|
+
`echo 'Test' > #{File.join(@ws_dir, "mod1/new_file.txt")}`
|
138
|
+
s.execute("git add .")
|
139
|
+
s.execute("git commit . -m \"Second change\"")
|
140
|
+
shas.push(s.rev_sha1("HEAD"))
|
141
|
+
end
|
142
|
+
cut = RIM::UploadHelper.new(@ws_dir, true, @logger, [mod1_info])
|
143
|
+
cut.upload
|
144
|
+
module_session(mod1_info) do |s|
|
145
|
+
s.execute("git checkout for/master")
|
146
|
+
assert File.exist?(File.join(@remote_git_dir, "mod1/readme.txt"))
|
147
|
+
assert File.exist?(File.join(@remote_git_dir, "mod1/new_file.txt"))
|
148
|
+
assert s.execute("git show -s --format=%B HEAD").start_with?("Second change")
|
149
|
+
assert s.execute("git show -s --format=%B HEAD~1").start_with?("First change")
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
def test_files_of_new_commits_are_uploaded_to_direct_branch
|
154
|
+
mod1_info = create_module_git("mod1", "master", "for/%s")
|
155
|
+
create_ws_git("testbr")
|
156
|
+
sync_helper = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info])
|
157
|
+
sync_helper.sync
|
158
|
+
RIM::git_session(@ws_dir) do |s|
|
159
|
+
s.execute("git rebase rim/testbr")
|
160
|
+
end
|
161
|
+
shas = []
|
162
|
+
# make two changes to module
|
163
|
+
RIM::git_session(@ws_dir) do |s|
|
164
|
+
`echo ' appended' >> #{File.join(@ws_dir, "mod1/readme.txt")}`
|
165
|
+
s.execute("git commit . -m \"First change\"")
|
166
|
+
shas.push(s.rev_sha1("HEAD"))
|
167
|
+
`echo 'Test' > #{File.join(@ws_dir, "mod1/new_file.txt")}`
|
168
|
+
s.execute("git add .")
|
169
|
+
s.execute("git commit . -m \"Second change\"")
|
170
|
+
shas.push(s.rev_sha1("HEAD"))
|
171
|
+
end
|
172
|
+
cut = RIM::UploadHelper.new(@ws_dir, false, @logger, [mod1_info])
|
173
|
+
cut.upload
|
174
|
+
module_session(mod1_info) do |s|
|
175
|
+
s.execute("git checkout master")
|
176
|
+
assert File.exist?(File.join(@remote_git_dir, "mod1/readme.txt"))
|
177
|
+
assert File.exist?(File.join(@remote_git_dir, "mod1/new_file.txt"))
|
178
|
+
assert s.execute("git show -s --format=%B HEAD").start_with?("Second change")
|
179
|
+
assert s.execute("git show -s --format=%B HEAD~1").start_with?("First change")
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
def test_files_of_new_commits_are_uploaded_without_ignores
|
184
|
+
mod1_info = create_module_git("mod1")
|
185
|
+
create_ws_git("testbr")
|
186
|
+
sync_helper = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info])
|
187
|
+
sync_helper.sync
|
188
|
+
RIM::git_session(@ws_dir) do |s|
|
189
|
+
s.execute("git rebase rim/testbr")
|
190
|
+
end
|
191
|
+
shas = []
|
192
|
+
# make two changes to module
|
193
|
+
RIM::git_session(@ws_dir) do |s|
|
194
|
+
`echo ' appended' >> #{File.join(@ws_dir, "mod1/readme.txt")}`
|
195
|
+
s.execute("git commit . -m \"First change\"")
|
196
|
+
shas.push(s.rev_sha1("HEAD"))
|
197
|
+
`echo 'Test' > #{File.join(@ws_dir, "mod1/new_file.txt")}`
|
198
|
+
# Adjust rim_info to contain the file as ignored file
|
199
|
+
rim_info = RIM::RimInfo.from_dir(File.join(@ws_dir, "mod1"))
|
200
|
+
rim_info.ignores = "new_file.txt"
|
201
|
+
rim_info.to_dir(File.join(@ws_dir, "mod1"))
|
202
|
+
`echo 'Test' > #{File.join(@ws_dir, "mod1/new_file2.txt")}`
|
203
|
+
s.execute("git add .")
|
204
|
+
s.execute("git commit . -m \"Second change\"")
|
205
|
+
shas.push(s.rev_sha1("HEAD"))
|
206
|
+
end
|
207
|
+
cut = RIM::UploadHelper.new(@ws_dir, true, @logger, [mod1_info])
|
208
|
+
cut.upload
|
209
|
+
module_session(mod1_info) do |s|
|
210
|
+
s.execute("git checkout master")
|
211
|
+
assert File.exist?(File.join(@remote_git_dir, "mod1/readme.txt"))
|
212
|
+
assert !File.exist?(File.join(@remote_git_dir, "mod1/new_file.txt"))
|
213
|
+
assert File.exist?(File.join(@remote_git_dir, "mod1/new_file2.txt"))
|
214
|
+
assert s.execute("git show -s --format=%B HEAD").start_with?("Second change")
|
215
|
+
assert s.execute("git show -s --format=%B HEAD~1").start_with?("First change")
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
def test_files_of_amended_commits_are_uploaded
|
220
|
+
mod1_info = create_module_git("mod1")
|
221
|
+
create_ws_git("testbr")
|
222
|
+
sync_helper = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info])
|
223
|
+
sync_helper.sync
|
224
|
+
RIM::git_session(@ws_dir) do |s|
|
225
|
+
s.execute("git rebase rim/testbr")
|
226
|
+
end
|
227
|
+
shas = []
|
228
|
+
# make two changes to module
|
229
|
+
RIM::git_session(@ws_dir) do |s|
|
230
|
+
`echo ' appended' >> #{File.join(@ws_dir, "mod1/readme.txt")}`
|
231
|
+
s.execute("git commit . -m \"First change\"")
|
232
|
+
shas.push(s.rev_sha1("HEAD"))
|
233
|
+
`echo 'Test' > #{File.join(@ws_dir, "mod1/new_file.txt")}`
|
234
|
+
`echo 'Test' > #{File.join(@ws_dir, "mod1/new_file2.txt")}`
|
235
|
+
s.execute("git add .")
|
236
|
+
s.execute("git commit . -m \"Second change\"")
|
237
|
+
shas.push(s.rev_sha1("HEAD"))
|
238
|
+
end
|
239
|
+
cut = RIM::UploadHelper.new(@ws_dir, true, @logger, [mod1_info])
|
240
|
+
cut.upload
|
241
|
+
module_session(mod1_info) do |s|
|
242
|
+
s.execute("git checkout master")
|
243
|
+
assert File.exist?(File.join(@remote_git_dir, "mod1/readme.txt"))
|
244
|
+
assert File.exist?(File.join(@remote_git_dir, "mod1/new_file.txt"))
|
245
|
+
assert File.exist?(File.join(@remote_git_dir, "mod1/new_file2.txt"))
|
246
|
+
assert s.execute("git show -s --format=%B HEAD").start_with?("Second change")
|
247
|
+
assert s.execute("git show -s --format=%B HEAD~1").start_with?("First change")
|
248
|
+
s.execute("git checkout --detach master")
|
249
|
+
s.execute("git branch -D master")
|
250
|
+
end
|
251
|
+
# reset testbr now on previous commit and commit new change
|
252
|
+
RIM::git_session(@ws_dir) do |s|
|
253
|
+
s.execute("git checkout -B testbr HEAD~1")
|
254
|
+
`echo 'Test' > #{File.join(@ws_dir, "mod1/test_file.txt")}`
|
255
|
+
s.execute("git add .")
|
256
|
+
s.execute("git commit . -m \"Third change\"")
|
257
|
+
end
|
258
|
+
cut.upload
|
259
|
+
module_session(mod1_info) do |s|
|
260
|
+
s.execute("git checkout master")
|
261
|
+
assert File.exist?(File.join(@remote_git_dir, "mod1/readme.txt"))
|
262
|
+
assert File.exist?(File.join(@remote_git_dir, "mod1/test_file.txt"))
|
263
|
+
assert !File.exist?(File.join(@remote_git_dir, "mod1/new_file.txt"))
|
264
|
+
assert !File.exist?(File.join(@remote_git_dir, "mod1/new_file2.txt"))
|
265
|
+
assert s.execute("git show -s --format=%B HEAD").start_with?("Third change")
|
266
|
+
assert s.execute("git show -s --format=%B HEAD~1").start_with?("First change")
|
267
|
+
end
|
268
|
+
end
|
269
|
+
|
270
|
+
def test_files_of_merged_commits_are_uploaded
|
271
|
+
mod1_info = create_module_git("mod1")
|
272
|
+
create_ws_git("testbr")
|
273
|
+
sync_helper = RIM::SyncHelper.new(@ws_dir, @logger, [mod1_info])
|
274
|
+
sync_helper.sync
|
275
|
+
RIM::git_session(@ws_dir) do |s|
|
276
|
+
s.execute("git rebase rim/testbr")
|
277
|
+
end
|
278
|
+
shas = []
|
279
|
+
# make two changes to module
|
280
|
+
RIM::git_session(@ws_dir) do |s|
|
281
|
+
`echo ' appended' >> #{File.join(@ws_dir, "mod1/readme.txt")}`
|
282
|
+
s.execute("git commit . -m \"First change\"")
|
283
|
+
#shas.push(s.rev_sha1("HEAD"))
|
284
|
+
`echo 'Test' > #{File.join(@ws_dir, "mod1/new_file.txt")}`
|
285
|
+
`echo 'Test' > #{File.join(@ws_dir, "mod1/new_file2.txt")}`
|
286
|
+
s.execute("git add .")
|
287
|
+
s.execute("git commit . -m \"Second change\"")
|
288
|
+
shas.push(s.rev_sha1("HEAD"))
|
289
|
+
end
|
290
|
+
cut = RIM::UploadHelper.new(@ws_dir, true, @logger, [mod1_info])
|
291
|
+
cut.upload
|
292
|
+
module_session(mod1_info) do |s|
|
293
|
+
s.execute("git checkout --detach master")
|
294
|
+
s.execute("git branch -D master")
|
295
|
+
end
|
296
|
+
# reset testbr now on previous commit and commit new change
|
297
|
+
RIM::git_session(@ws_dir) do |s|
|
298
|
+
s.execute("git checkout -B testbr HEAD~2")
|
299
|
+
`echo 'Test' > #{File.join(@ws_dir, "mod1/test_file.txt")}`
|
300
|
+
s.execute("git add .")
|
301
|
+
s.execute("git commit . -m \"Third change\"")
|
302
|
+
end
|
303
|
+
cut.upload
|
304
|
+
module_session(mod1_info) do |s|
|
305
|
+
s.execute("git checkout --detach master")
|
306
|
+
s.execute("git branch -D master")
|
307
|
+
end
|
308
|
+
# now merge the commits
|
309
|
+
RIM::git_session(@ws_dir) do |s|
|
310
|
+
s.execute("git merge #{shas[0]} --commit")
|
311
|
+
end
|
312
|
+
cut.upload
|
313
|
+
module_session(mod1_info) do |s|
|
314
|
+
s.execute("git checkout master")
|
315
|
+
assert File.exist?(File.join(@remote_git_dir, "mod1/readme.txt"))
|
316
|
+
assert File.exist?(File.join(@remote_git_dir, "mod1/new_file.txt"))
|
317
|
+
assert File.exist?(File.join(@remote_git_dir, "mod1/new_file2.txt"))
|
318
|
+
assert File.exist?(File.join(@remote_git_dir, "mod1/test_file.txt"))
|
319
|
+
assert s.execute("git show -s --format=%B HEAD").start_with?("Merge commit")
|
320
|
+
assert s.execute("git show -s --format=%B HEAD~1").start_with?("Third change")
|
321
|
+
end
|
322
|
+
end
|
323
|
+
|
324
|
+
private
|
325
|
+
def create_ws_git(branch = "master")
|
326
|
+
FileUtils.mkdir_p(@ws_remote_dir)
|
327
|
+
RIM::git_session(@ws_remote_dir) do |s|
|
328
|
+
s.execute("git init")
|
329
|
+
s.execute("git checkout -B #{branch}")
|
330
|
+
File.open(File.join(@ws_remote_dir, ".gitignore"), "w") do |f|
|
331
|
+
f.write(".rim")
|
332
|
+
end
|
333
|
+
File.open(File.join(@ws_remote_dir, "readme"), "w") do |f|
|
334
|
+
f.write("Content")
|
335
|
+
end
|
336
|
+
s.execute("git add .")
|
337
|
+
s.execute("git commit -m \"Initial commit\"")
|
338
|
+
s.execute("git checkout --detach #{branch}")
|
339
|
+
end
|
340
|
+
FileUtils.mkdir_p(@ws_dir)
|
341
|
+
RIM::git_session(@ws_dir) do |s|
|
342
|
+
s.execute("git clone #{@ws_remote_dir} #{@ws_dir}")
|
343
|
+
end
|
344
|
+
end
|
345
|
+
|
346
|
+
def create_module_git(name, branch = "master", remote_branch_format = nil)
|
347
|
+
git_dir = File.join(@remote_git_dir, name)
|
348
|
+
FileUtils.mkdir_p(git_dir)
|
349
|
+
RIM::git_session(git_dir) do |s|
|
350
|
+
s.execute("git init")
|
351
|
+
s.execute("git checkout -B #{branch}")
|
352
|
+
File.open(File.join(git_dir, "readme.txt"), "w") do |f|
|
353
|
+
f.write("Content.")
|
354
|
+
end
|
355
|
+
s.execute("git add .")
|
356
|
+
s.execute("git commit -m \"Initial commit\"")
|
357
|
+
s.execute("git checkout --detach #{branch}")
|
358
|
+
end
|
359
|
+
return RIM::ModuleInfo.new("file://" + git_dir, name, branch, nil, remote_branch_format)
|
360
|
+
end
|
361
|
+
|
362
|
+
def create_all_module_git(name, branch = "master")
|
363
|
+
git_dir = File.join(@remote_git_dir, name)
|
364
|
+
FileUtils.mkdir_p(File.join(git_dir,"mod_a"))
|
365
|
+
FileUtils.mkdir_p(File.join(git_dir,"mod_b","src"))
|
366
|
+
RIM::git_session(git_dir) do |s|
|
367
|
+
s.execute("git init")
|
368
|
+
s.execute("git checkout -B #{branch}")
|
369
|
+
File.open(File.join(git_dir, "readme.txt"), "w") do |f|
|
370
|
+
f.write("Content.")
|
371
|
+
end
|
372
|
+
File.open(File.join(git_dir, "mod_a", "file_a.c"), "w") do |f|
|
373
|
+
f.write("Content.")
|
374
|
+
end
|
375
|
+
File.open(File.join(git_dir, "mod_b", "src", "file_b.c"), "w") do |f|
|
376
|
+
f.write("Content.")
|
377
|
+
end
|
378
|
+
s.execute("git add .")
|
379
|
+
s.execute("git commit -m \"Initial commit\"")
|
380
|
+
s.execute("git checkout --detach #{branch}")
|
381
|
+
end
|
382
|
+
return git_dir
|
383
|
+
end
|
384
|
+
|
385
|
+
|
386
|
+
def module_session(module_info)
|
387
|
+
RIM::git_session(module_info.remote_url.gsub(/^file:\/\//, "")) do |s|
|
388
|
+
yield s
|
389
|
+
end
|
390
|
+
end
|
391
|
+
|
392
|
+
def check_not_dirty(session)
|
393
|
+
status = RIM::StatusBuilder.new.rev_status(session, "HEAD")
|
394
|
+
status.modules.each do |m|
|
395
|
+
assert !m.dirty?
|
396
|
+
end
|
397
|
+
end
|
398
|
+
|
399
|
+
def has_ancestor?(session, rev, ancestor)
|
400
|
+
rev = session.execute("git rev-list #{rev}").include?(session.rev_sha1(ancestor))
|
401
|
+
end
|
402
|
+
|
403
|
+
end
|