git-contest 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +8 -8
  2. data/.travis.yml +21 -3
  3. data/README.md +5 -0
  4. data/Rakefile +8 -0
  5. data/appveyor.yml +21 -0
  6. data/bin/git-contest +4 -33
  7. data/bin/git-contest-config +4 -241
  8. data/bin/git-contest-finish +4 -151
  9. data/bin/git-contest-init +4 -65
  10. data/bin/git-contest-list +4 -64
  11. data/bin/git-contest-rebase +4 -64
  12. data/bin/git-contest-start +4 -57
  13. data/bin/git-contest-submit +4 -183
  14. data/git-contest.gemspec +2 -1
  15. data/lib/contest/driver/base.rb +7 -4
  16. data/lib/git/contest/command_line.rb +10 -0
  17. data/lib/git/contest/command_line/command.rb +117 -0
  18. data/lib/git/contest/command_line/main_command.rb +56 -0
  19. data/lib/git/contest/command_line/sub_commands.rb +35 -0
  20. data/lib/git/contest/command_line/sub_commands/config_command.rb +258 -0
  21. data/lib/git/contest/command_line/sub_commands/finish_command.rb +161 -0
  22. data/lib/git/contest/command_line/sub_commands/init_command.rb +79 -0
  23. data/lib/git/contest/command_line/sub_commands/list_command.rb +89 -0
  24. data/lib/git/contest/command_line/sub_commands/rebase_command.rb +87 -0
  25. data/lib/git/contest/command_line/sub_commands/start_command.rb +77 -0
  26. data/lib/git/contest/command_line/sub_commands/submit_command.rb +220 -0
  27. data/lib/git/contest/common.rb +6 -6
  28. data/lib/git/contest/git.rb +160 -156
  29. data/lib/git/contest/version.rb +1 -1
  30. data/spec/command/t004_git_contest_submit_spec.rb +254 -0
  31. data/spec/command/t005_git_contest_branching_spec.rb +90 -0
  32. data/spec/command/t007_git_contest_start_spec.rb +95 -0
  33. data/spec/command/t008_git_contest_finish_spec.rb +171 -0
  34. data/spec/command/t009_git_contest_init_spec.rb +85 -0
  35. data/spec/command/t012_git_contest_list_spec.rb +123 -0
  36. data/spec/command/t013_git_contest_config_spec.rb +186 -0
  37. data/spec/{lib/contest/driver → contest_driver}/t001_aizu_online_judge_spec.rb +1 -1
  38. data/spec/{lib/contest/driver → contest_driver}/t002_codeforces_spec.rb +1 -1
  39. data/spec/{lib/contest/driver → contest_driver}/t003_uva_online_judge_spec.rb +1 -1
  40. data/spec/{lib/contest/driver → contest_driver}/t010_kattis_spec.rb +1 -1
  41. data/spec/{lib/contest/driver → contest_driver}/t011_utils_spec.rb +0 -0
  42. data/spec/spec_helper.rb +18 -12
  43. data/spec/t006_config_spec.rb +37 -31
  44. metadata +57 -33
  45. data/spec/bin/t004_git_contest_submit_spec.rb +0 -223
  46. data/spec/bin/t005_git_contest_branching_spec.rb +0 -70
  47. data/spec/bin/t007_git_contest_start_spec.rb +0 -88
  48. data/spec/bin/t008_git_contest_finish_spec.rb +0 -162
  49. data/spec/bin/t009_git_contest_init_spec.rb +0 -55
  50. data/spec/bin/t012_git_contest_list_spec.rb +0 -99
  51. data/spec/bin/t013_git_contest_config_spec.rb +0 -149
  52. data/spec/spec_list.txt +0 -1
@@ -0,0 +1,171 @@
1
+ require "spec_helper"
2
+
3
+ # Do not forget --no-edit option
4
+
5
+ describe "T008: git-contest-finish" do
6
+
7
+ def call_main(args)
8
+ cli = CommandLine::MainCommand.new(args)
9
+ cli.init
10
+ cli
11
+ end
12
+
13
+ context "A001: --keep" do
14
+ it "001: init -> start -> empty-commits -> finish" do
15
+ expect { call_main(["init", "--defaults"]).run }.to output(/.*/).to_stdout
16
+ expect { call_main(["start", "branch1"]).run }.to output(/.*/).to_stdout
17
+ Git.do "commit --allow-empty -m \"this is commit\""
18
+ expect { call_main(["finish", "--no-edit"]).run }.to output(/.*/).to_stdout
19
+ ret1 = Git.do "branch"
20
+ ret_log1 = Git.do "log --oneline master"
21
+ expect(ret1.split(/\s+/)).not_to include /branch1/
22
+ expect(ret_log1).to match /this is commit/
23
+ end
24
+
25
+ it "002: init -> start -> empty-commits -> finish --keep" do
26
+ expect { call_main(["init", "--defaults"]).run }.to output(/.*/).to_stdout
27
+ expect { call_main(["start", "branch1"]).run }.to output(/.*/).to_stdout
28
+ Git.do "commit --allow-empty -m \"this is commit\""
29
+ expect { call_main(["finish", "--no-edit", "--keep"]).run }.to output(/.*/).to_stdout
30
+ ret1 = Git.do "branch"
31
+ ret_log1 = Git.do "log --oneline master"
32
+ expect(ret1.split(/\s+/)).to include /branch1/
33
+ expect(ret_log1).to match /this is commit/
34
+ end
35
+
36
+ it "003: init -> start -> empty-commits -> finish -k" do
37
+ expect { call_main(["init", "--defaults"]).run }.to output(/.*/).to_stdout
38
+ expect { call_main(["start", "branch1"]).run }.to output(/.*/).to_stdout
39
+ Git.do "commit --allow-empty -m \"this is commit\""
40
+ expect { call_main(["finish", "--no-edit", "-k"]).run }.to output(/.*/).to_stdout
41
+ ret1 = Git.do "branch"
42
+ ret_log1 = Git.do "log --oneline master"
43
+ expect(ret1.split(/\s+/)).to include /branch1/
44
+ expect(ret_log1).to match /this is commit/
45
+ end
46
+
47
+ end
48
+
49
+ context "A002: --rebase" do
50
+ it "001: init -> start -> empty-commits -> finish --rebase" do
51
+ # create branches: branch1(normal) -> branch2(rebase) -> branch3(normal)
52
+ expect { call_main(["init", "--defaults"]).run }.to output(/.*/).to_stdout
53
+ expect { call_main(["start", "branch1"]).run }.to output(/.*/).to_stdout
54
+ 3.times {|x|
55
+ name = "test-1.#{x}"
56
+ FileUtils.touch name
57
+ Git.do "add #{name}"
58
+ Git.do "commit -m \"Add #{name}\""
59
+ }
60
+ expect { call_main(["start", "branch2"]).run }.to output(/.*/).to_stdout
61
+ 3.times {|x|
62
+ name = "test-2.#{x}"
63
+ FileUtils.touch name
64
+ Git.do "add #{name}"
65
+ Git.do "commit -m \"Add #{name}\""
66
+ }
67
+ expect { call_main(["start", "branch3"]).run }.to output(/.*/).to_stdout
68
+ 3.times {|x|
69
+ name = "test-3.#{x}"
70
+ FileUtils.touch name
71
+ Git.do "add #{name}"
72
+ Git.do "commit -m \"Add #{name}\""
73
+ }
74
+ # finish branches
75
+ ret_branch_1 = Git.do "branch"
76
+ expect { call_main(["finish", "--no-edit", "branch1"]).run }.to output(/.*/).to_stdout
77
+ expect { call_main(["finish", "--no-edit", "--rebase", "branch2"]).run }.to output(/.*/).to_stdout
78
+ expect { call_main(["finish", "--no-edit", "branch3"]).run }.to output(/.*/).to_stdout
79
+ ret_branch_2 = Git.do "branch"
80
+ ret_log = Git.do "log --oneline"
81
+ expect(ret_branch_1.split(/\s+/)).to include /branch1/
82
+ expect(ret_branch_1.split(/\s+/)).to include /branch2/
83
+ expect(ret_branch_1.split(/\s+/)).to include /branch3/
84
+ expect(ret_branch_2.split(/\s+/)).not_to include /branch1/
85
+ expect(ret_branch_2.split(/\s+/)).not_to include /branch2/
86
+ expect(ret_branch_2.split(/\s+/)).not_to include /branch3/
87
+ expect(ret_log).to match /test-1/m
88
+ expect(ret_log).to match /test-2/m
89
+ expect(ret_log).to match /test-3/m
90
+ end
91
+
92
+ end
93
+
94
+ context "A003: --force-delete" do
95
+ # TODO: recheck
96
+ it "001: init -> start -> trigger merge error -> finish --force-delete" do
97
+ # make conflict
98
+ expect { call_main(["init", "--defaults"]).run }.to output(/.*/).to_stdout
99
+ FileUtils.touch "test.txt"
100
+ Git.do "add test.txt"
101
+ Git.do "commit -m \"Add test.txt\""
102
+ expect { call_main(["start", "branch1"]).run }.to output(/.*/).to_stdout
103
+ expect { call_main(["start", "branch2"]).run }.to output(/.*/).to_stdout
104
+ Git.do "checkout contest/branch1"
105
+ File.open "test.txt", "w" do |file|
106
+ file.write "test1"
107
+ end
108
+ # Git.do "add test.txt"
109
+ # Git.do "commit -m \"Edit test.txt @ branch1\""
110
+ Git.do "checkout contest/branch2"
111
+ File.open "test.txt", "w" do |file|
112
+ file.write "test2"
113
+ end
114
+ Git.do "add test.txt"
115
+ Git.do "commit -m \"Edit test.txt @ branch2\""
116
+ # finish
117
+ expect { call_main(["finish", "--no-edit", "branch1"]).run }.to output(/.*/).to_stdout
118
+ expect { call_main(["finish", "--no-edit", "--force-delete", "branch2"]).run }.to output(/.*/).to_stdout
119
+ ret_branch = Git.do "branch"
120
+ expect(ret_branch.split(/\s+/)).not_to include /contest\/branch1/
121
+ expect(ret_branch.split(/\s+/)).not_to include /contest\/branch2/
122
+ end
123
+ end
124
+
125
+ context "A004: --squash" do
126
+ it "001: init -> start -> empty-commits -> finish --squash" do
127
+ expect { call_main(["init", "--defaults"]).run }.to output(/.*/).to_stdout
128
+ expect { call_main(["start", "branch1"]).run }.to output(/.*/).to_stdout
129
+ 3.times do |x|
130
+ filename = "test#{x}.txt"
131
+ FileUtils.touch filename
132
+ Git.do "add #{filename}"
133
+ Git.do "commit -m \"this is commit #{x}\""
134
+ end
135
+ expect { call_main(["finish", "--no-edit", "--squash", "branch1"]).run }.to output(/.*/).to_stdout
136
+ ret_log1 = Git.do "log --oneline"
137
+ ret_branch1 = Git.do "branch"
138
+ expect(ret_branch1.split(/\s+/)).not_to include /branch1/
139
+ expect(ret_log1).to match /this is commit/
140
+ expect(ret_log1).to match /Squashed commit/
141
+ end
142
+ end
143
+
144
+ context "A005: --fetch" do
145
+ before do
146
+ Dir.mkdir "src"
147
+ Dir.chdir "src"
148
+ expect { call_main(["init", "--defaults"]).run }.to output(/.*/).to_stdout
149
+ expect { call_main(["start", "branch1"]).run }.to output(/.*/).to_stdout
150
+ 3.times {|x| Git.do "commit --allow-empty -m \"this is commit #{x}\"" }
151
+ Dir.chdir ".."
152
+ Git.do "clone --single-branch -b master src dest"
153
+ Dir.chdir "dest"
154
+ end
155
+
156
+ it "001: init -> start -> clone -> checkout@dest -> empty-commits@dest -> finish@dest" do
157
+ Git.do "checkout -b master origin/master"
158
+ expect { call_main(["init", "--defaults"]).run }.to output(/.*/).to_stdout
159
+ expect { call_main(["start", "--fetch", "branch1"]).run }.to output(/.*/).to_stdout
160
+ expect { call_main(["finish", "--no-edit", "--fetch", "branch1"]).run }.to output(/.*/).to_stdout
161
+ ret_branch2 = Git.do "branch"
162
+ Dir.chdir ".."
163
+ Dir.chdir "src"
164
+ ret_branch1 = Git.do "branch"
165
+ Git.do "checkout master"
166
+ expect(ret_branch1.split(/\s+/)).to include /branch1/
167
+ expect(ret_branch2.split(/\s+/)).to_not include /branch1/
168
+ end
169
+ end
170
+ end
171
+
@@ -0,0 +1,85 @@
1
+ require "spec_helper"
2
+
3
+ # Don't forget --defaults option
4
+
5
+ describe "T009: git-contest-init" do
6
+
7
+ def call_main(args)
8
+ cli = CommandLine::MainCommand.new(args)
9
+ cli.init
10
+ cli
11
+ end
12
+
13
+ describe "--force option" do
14
+
15
+ context "$ git contest init" do
16
+
17
+ before do
18
+ expect { call_main(["init", "--defaults"]).run }.to output("").to_stdout
19
+ end
20
+
21
+ context "config --get" do
22
+ it { expect(Git.do "config --get git.contest.branch.master").to eq "master" }
23
+
24
+ context "$ git contest init" do
25
+ subject { lambda { call_main(["init", "--defaults"]).run } }
26
+ it { should output(/Already initialized/).to_stdout.and raise_error SystemExit }
27
+ it { should output(/init -f/).to_stdout.and raise_error SystemExit }
28
+ end
29
+
30
+ context "$ git contest init -f" do
31
+ before do
32
+ expect { call_main(["init", "--defaults", "-f"]).run }.to output("").to_stdout
33
+ end
34
+
35
+ context "$ git contest init --force" do
36
+ before do
37
+ expect { call_main(["init", "--defaults", "--force"]).run }.to output("").to_stdout
38
+ end
39
+ context "config --get" do
40
+ it { expect(Git.do "config --get git.contest.branch.master").to eq "master" }
41
+ end
42
+ end
43
+ end
44
+
45
+ end
46
+
47
+ end # git contest init
48
+
49
+ context "$ git contest init -f" do
50
+
51
+ before do
52
+ expect { call_main(["init", "--defaults", "-f"]).run }.to output("").to_stdout
53
+ end
54
+
55
+ context "config --get" do
56
+ it { expect(Git.do "config --get git.contest.branch.master").to eq "master" }
57
+
58
+ context "$ git contest init" do
59
+ subject { lambda { call_main(["init", "--defaults"]).run } }
60
+ it { should output(/Already initialized/).to_stdout.and raise_error SystemExit }
61
+ it { should output(/init -f/).to_stdout.and raise_error SystemExit }
62
+ end
63
+
64
+ context "$ git contest init -f" do
65
+ before do
66
+ expect { call_main(["init", "--defaults", "-f"]).run }.to output("").to_stdout
67
+ end
68
+
69
+ context "$ git contest init --force" do
70
+ before do
71
+ expect { call_main(["init", "--defaults", "--force"]).run }.to output("").to_stdout
72
+ end
73
+ context "config --get" do
74
+ it { expect(Git.do "config --get git.contest.branch.master").to eq "master" }
75
+ end
76
+ end
77
+ end
78
+
79
+ end
80
+
81
+ end # git contest init -f
82
+
83
+ end # --force option
84
+ end # git-contest-init
85
+
@@ -0,0 +1,123 @@
1
+ require 'spec_helper'
2
+
3
+ describe "T012: git-contest-list" do
4
+
5
+ def call_main(args)
6
+ cli = CommandLine::MainCommand.new(args)
7
+ cli.init
8
+ cli
9
+ end
10
+
11
+ before do
12
+ ENV['GIT_CONTEST_CONFIG'] = "#{@temp_dir}/config.yml"
13
+ ENV['GIT_CONTEST_HOME'] = @temp_dir
14
+ end
15
+
16
+ context "git-contest-list sites" do
17
+ before do
18
+ # create config
19
+ File.open "#{@temp_dir}/config.yml", 'w' do |file|
20
+ file.write <<EOF
21
+ sites:
22
+ test_site1:
23
+ driver: test_driver1
24
+ user: test_user1
25
+ password: test_password1
26
+ test_site2:
27
+ driver: test_driver2
28
+ user: test_user2
29
+ password: test_password2
30
+ test_site3:
31
+ driver: test_driver3
32
+ user: test_user3
33
+ password: test_password3
34
+ EOF
35
+ end
36
+ end
37
+
38
+ context "git-contest list sites" do
39
+ subject { lambda { call_main(["list", "sites"]).run } }
40
+ describe "site" do
41
+ it { should output(/test_site1/).to_stdout }
42
+ it { should output(/test_site2/).to_stdout }
43
+ it { should output(/test_site3/).to_stdout }
44
+ end
45
+
46
+ describe "user" do
47
+ it { should output(/test_user1/).to_stdout }
48
+ it { should output(/test_user2/).to_stdout }
49
+ it { should output(/test_user3/).to_stdout }
50
+ end
51
+
52
+ describe "driver" do
53
+ it { should output(/test_driver1/).to_stdout }
54
+ it { should output(/test_driver2/).to_stdout }
55
+ it { should output(/test_driver3/).to_stdout }
56
+ end
57
+
58
+ describe "password (hidden)" do
59
+ it { should_not output(/test_password1/).to_stdout }
60
+ it { should_not output(/test_password2/).to_stdout }
61
+ it { should_not output(/test_password3/).to_stdout }
62
+ end
63
+ end
64
+
65
+ end
66
+
67
+ context "git-contest-list drivers" do
68
+ before do
69
+ # prepare drivers
70
+ FileUtils.mkdir "#{@temp_dir}/plugins"
71
+ File.open "#{@temp_dir}/plugins/test01_driver.rb", "w" do |f|
72
+ f.write <<EOF
73
+ module Contest
74
+ module Driver
75
+ class Test01Driver < DriverBase
76
+ def get_site_name
77
+ "test01_site_name"
78
+ end
79
+ def get_desc
80
+ "test01_desc"
81
+ end
82
+ end
83
+ end
84
+ end
85
+ EOF
86
+ end
87
+ File.open "#{@temp_dir}/plugins/test02_driver.rb", "w" do |f|
88
+ f.write <<EOF
89
+ module Contest
90
+ module Driver
91
+ class Test02Driver < DriverBase
92
+ def get_site_name
93
+ "test02_site_name"
94
+ end
95
+ def get_desc
96
+ "test02_desc"
97
+ end
98
+ end
99
+ end
100
+ end
101
+ EOF
102
+ end
103
+ end
104
+
105
+ context "$ git contest list drivers" do
106
+
107
+ subject { lambda { call_main(["list", "drivers"]).run } }
108
+
109
+ context "class" do
110
+ it { should output(/Test01Driver/).to_stdout }
111
+ it { should output(/Test02Driver/).to_stdout }
112
+ end
113
+
114
+ context "desc" do
115
+ it { should output(/test01_desc/).to_stdout }
116
+ it { should output(/test02_desc/).to_stdout }
117
+ end
118
+
119
+ end
120
+
121
+ end
122
+
123
+ end
@@ -0,0 +1,186 @@
1
+ require 'spec_helper'
2
+ require 'yaml'
3
+
4
+ describe "T013: git-contest-config" do
5
+
6
+ let(:config_file) { File.join @temp_dir, "config.yml" }
7
+
8
+ def call_main(args, new_stdin = STDIN)
9
+ cli = CommandLine::MainCommand.new(args, new_stdin)
10
+ cli.init
11
+ cli
12
+ end
13
+
14
+ before do
15
+ ENV['GIT_CONTEST_CONFIG'] = config_file
16
+ end
17
+
18
+ context "git contest config set" do
19
+
20
+ before(:each) do
21
+ # create config file
22
+ File.open config_file, 'w' do |file|
23
+ file.write <<EOF
24
+ key1: value1
25
+ sites:
26
+ test_site1:
27
+ driver: test_driver1
28
+ user: test_user1
29
+ password: test_password1
30
+ EOF
31
+ end
32
+ end
33
+
34
+ context "git contest config set key value1" do
35
+
36
+ let(:fake_input) { ::StringIO.new("value2" + $/) }
37
+
38
+ before { expect { call_main(["config", "set", "key1"], fake_input).run }.to output(/input value/).to_stdout }
39
+
40
+ context "load config" do
41
+ let(:conf) { YAML.load_file config_file }
42
+
43
+ it { expect(conf["key1"]).to eq "value2" }
44
+ end
45
+ end
46
+
47
+ it "git contest config set sites.test_site1.driver test_driver2" do
48
+ expect { call_main(["config", "set", "sites.test_site1.driver", "test_driver2"]).run }.to output(/.*/).to_stdout
49
+
50
+ ret1 = YAML.load_file(config_file)
51
+ expect(ret1["sites"]["test_site1"]["driver"]).to eq "test_driver2"
52
+ end
53
+ end
54
+
55
+ context "git contest config get" do
56
+ before(:each) do
57
+ # create config file
58
+ File.open config_file, 'w' do |file|
59
+ file.write <<EOF
60
+ key1: value1
61
+ sites:
62
+ test_site1:
63
+ driver: test_driver1
64
+ user: test_user1
65
+ password: test_password1
66
+ EOF
67
+ end
68
+ end
69
+
70
+ it "git contest config get key1" do
71
+ expect { call_main(["config", "get", "key1"]).run }.to output(/value1/).to_stdout
72
+ end
73
+
74
+ it "git contest config get sites.test_site1.user" do
75
+ expect { call_main(["config", "get", "sites.test_site1.user"]).run }.to output(/test_user1/).to_stdout
76
+ end
77
+
78
+ context "config get sites.test_site1" do
79
+ subject { lambda { call_main(["config", "get", "sites.test_site1"]).run } }
80
+ it { should output(/driver/).to_stdout }
81
+ it { should output(/user/).to_stdout }
82
+ it { should output(/password/).to_stdout }
83
+ it { should_not output(/test_driver1/).to_stdout }
84
+ it { should_not output(/test_user1/).to_stdout }
85
+ it { should_not output(/test_password1/).to_stdout }
86
+ end
87
+
88
+ it "raise error: not found" do
89
+ expect { call_main(["config", "get", "foo.bar"]).run }.to output(/ERROR/).to_stderr.and raise_error SystemExit
90
+ end
91
+ end
92
+
93
+ context "git contest config site add" do
94
+
95
+ before(:each) do
96
+ # create config
97
+ File.open config_file, "w" do |file|
98
+ file.write <<EOF
99
+ sites:
100
+ test_site1:
101
+ driver: test_driver1
102
+ user: test_user1
103
+ password: test_password1
104
+ EOF
105
+ end
106
+ end
107
+
108
+ context "$ git contest config site add test_site2" do
109
+
110
+ let(:fake_input) do
111
+ ::StringIO.new([
112
+ "test_driver2",
113
+ "test_user2",
114
+ "test_password2",
115
+ ].join($/) + $/)
116
+ end
117
+
118
+ before { expect { call_main(["config", "site", "add", "test_site2"], fake_input).run }.to output(/.*/).to_stdout }
119
+
120
+ context "load config" do
121
+ let(:conf) { YAML.load_file config_file }
122
+ it { expect(conf["sites"]["test_site1"]["driver"]).to eq "test_driver1" }
123
+ it { expect(conf["sites"]["test_site1"]["user"]).to eq "test_user1" }
124
+ it { expect(conf["sites"]["test_site1"]["password"]).to eq "test_password1" }
125
+ it { expect(conf["sites"]["test_site2"]["driver"]).to eq "test_driver2" }
126
+ it { expect(conf["sites"]["test_site2"]["user"]).to eq "test_user2" }
127
+ it { expect(conf["sites"]["test_site2"]["password"]).to eq "test_password2" }
128
+ end
129
+
130
+ end # git contest config site add test_site2
131
+
132
+ end
133
+
134
+ context "git contest config site rm" do
135
+ before(:each) do
136
+ # create config
137
+ File.open config_file, "w" do |file|
138
+ file.write <<EOF
139
+ sites:
140
+ test_site1:
141
+ driver: test_driver1
142
+ user: test_user1
143
+ password: test_password1
144
+ test_site2:
145
+ driver: test_driver2
146
+ user: test_user2
147
+ password: test_password2
148
+ EOF
149
+ end
150
+ end
151
+
152
+ context "git contest config site rm test_site1 (input = yes)" do
153
+
154
+ let(:fake_input) { ::StringIO.new("yes" + $/) }
155
+ before { expect { call_main(["config", "site", "rm", "test_site1"], fake_input).run }.to output(/.*/).to_stdout }
156
+
157
+ context "load config" do
158
+ let(:conf) { YAML.load_file config_file }
159
+ it { expect(conf["sites"]["test_site1"]).to be_nil }
160
+ it { expect(conf["sites"]["test_site2"]["driver"]).to eq "test_driver2" }
161
+ it { expect(conf["sites"]["test_site2"]["user"]).to eq "test_user2" }
162
+ it { expect(conf["sites"]["test_site2"]["password"]).to eq "test_password2" }
163
+ end
164
+
165
+ end # git contest config site rm
166
+
167
+ context "git contest config site rm test_site1 (input no)" do
168
+
169
+ let(:fake_input) { ::StringIO.new("no" + $/) }
170
+ before { expect { call_main(["config", "site", "rm", "test_site1"], fake_input).run }.to output(/.*/).to_stdout }
171
+
172
+ context "load config" do
173
+ let(:conf) { YAML.load_file config_file }
174
+ it { expect(conf["sites"]["test_site1"]["driver"]).to eq "test_driver1" }
175
+ it { expect(conf["sites"]["test_site1"]["user"]).to eq "test_user1" }
176
+ it { expect(conf["sites"]["test_site1"]["password"]).to eq "test_password1" }
177
+ it { expect(conf["sites"]["test_site2"]["driver"]).to eq "test_driver2" }
178
+ it { expect(conf["sites"]["test_site2"]["user"]).to eq "test_user2" }
179
+ it { expect(conf["sites"]["test_site2"]["password"]).to eq "test_password2" }
180
+ end
181
+
182
+ end # git contest config site rm
183
+
184
+ end
185
+
186
+ end