ghi 0.3.1 → 0.9.0.dev
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.
- data/bin/ghi +2 -4
- data/lib/ghi.rb +112 -42
- data/lib/ghi/authorization.rb +71 -0
- data/lib/ghi/client.rb +126 -0
- data/lib/ghi/commands.rb +20 -0
- data/lib/ghi/commands/assign.rb +53 -0
- data/lib/ghi/commands/close.rb +45 -0
- data/lib/ghi/commands/command.rb +114 -0
- data/lib/ghi/commands/comment.rb +104 -0
- data/lib/ghi/commands/config.rb +35 -0
- data/lib/ghi/commands/edit.rb +49 -0
- data/lib/ghi/commands/help.rb +62 -0
- data/lib/ghi/commands/label.rb +153 -0
- data/lib/ghi/commands/list.rb +133 -0
- data/lib/ghi/commands/milestone.rb +150 -0
- data/lib/ghi/commands/open.rb +69 -0
- data/lib/ghi/commands/show.rb +21 -0
- data/lib/ghi/commands/version.rb +16 -0
- data/lib/ghi/formatting.rb +301 -0
- data/lib/ghi/formatting/colors.rb +295 -0
- data/lib/ghi/json.rb +1304 -0
- metadata +71 -49
- data/README.rdoc +0 -126
- data/lib/ghi/api.rb +0 -145
- data/lib/ghi/cli.rb +0 -657
- data/lib/ghi/issue.rb +0 -30
- data/spec/ghi/api_spec.rb +0 -218
- data/spec/ghi/cli_spec.rb +0 -267
- data/spec/ghi/issue_spec.rb +0 -26
- data/spec/ghi_spec.rb +0 -62
data/lib/ghi/issue.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
class GHI::Issue
|
2
|
-
attr_reader :number, :title, :body, :votes, :state, :user, :created_at,
|
3
|
-
:updated_at, :labels
|
4
|
-
|
5
|
-
def initialize(options = {})
|
6
|
-
@number = options["number"]
|
7
|
-
@title = options["title"]
|
8
|
-
@body = options["body"]
|
9
|
-
@votes = options["votes"]
|
10
|
-
@state = options["state"]
|
11
|
-
@user = options["user"]
|
12
|
-
@created_at = options["created_at"]
|
13
|
-
@updated_at = options["updated_at"]
|
14
|
-
@labels = options["labels"]
|
15
|
-
end
|
16
|
-
|
17
|
-
#-
|
18
|
-
# REFACTOR: This code is duplicated from cli.rb:gets_from_editor.
|
19
|
-
#+
|
20
|
-
def ==(other_issue)
|
21
|
-
case other_issue
|
22
|
-
when Array
|
23
|
-
other_title = other_issue.first.strip
|
24
|
-
other_body = other_issue[1..-1].join.sub(/\b\n\b/, " ").strip
|
25
|
-
title == other_title && body == other_body
|
26
|
-
else
|
27
|
-
super other_issue
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
data/spec/ghi/api_spec.rb
DELETED
@@ -1,218 +0,0 @@
|
|
1
|
-
$: << File.expand_path(File.dirname(__FILE__) + "/../lib")
|
2
|
-
require "ghi"
|
3
|
-
require "ghi/api"
|
4
|
-
require "ghi/issue"
|
5
|
-
include GHI
|
6
|
-
|
7
|
-
ISSUES_YAML = <<-YAML
|
8
|
-
---
|
9
|
-
issues:
|
10
|
-
- number: 1
|
11
|
-
votes: 0
|
12
|
-
created_at: 2009-04-17 14:55:33 -07:00
|
13
|
-
body: my sweet, sweet issue
|
14
|
-
title: new issue
|
15
|
-
updated_at: 2009-04-17 14:55:33 -07:00
|
16
|
-
user: schacon
|
17
|
-
state: open
|
18
|
-
- number: 2
|
19
|
-
votes: 0
|
20
|
-
created_at: 2009-04-17 15:16:47 -07:00
|
21
|
-
body: the body of a second issue
|
22
|
-
title: another issue
|
23
|
-
updated_at: 2009-04-17 15:16:47 -07:00
|
24
|
-
user: schacon
|
25
|
-
state: open
|
26
|
-
YAML
|
27
|
-
|
28
|
-
ISSUE_YAML = <<-YAML
|
29
|
-
---
|
30
|
-
issue:
|
31
|
-
number: 1
|
32
|
-
votes: 0
|
33
|
-
created_at: 2009-04-17 14:55:33 -07:00
|
34
|
-
body: my sweet, sweet issue
|
35
|
-
title: new issue
|
36
|
-
updated_at: 2009-04-17 14:55:33 -07:00
|
37
|
-
user: schacon
|
38
|
-
state: open
|
39
|
-
YAML
|
40
|
-
|
41
|
-
LABELS_YAML = <<-YAML
|
42
|
-
---
|
43
|
-
labels:
|
44
|
-
- testing
|
45
|
-
- test_label
|
46
|
-
YAML
|
47
|
-
|
48
|
-
COMMENT_YAML = <<-YAML
|
49
|
-
---
|
50
|
-
comment:
|
51
|
-
comment: this is amazing
|
52
|
-
status: saved
|
53
|
-
YAML
|
54
|
-
|
55
|
-
describe GHI::API do
|
56
|
-
it "should require user and repo" do
|
57
|
-
proc { API.new(nil, nil) }.should raise_error(API::InvalidConnection)
|
58
|
-
proc { API.new("u", nil) }.should raise_error(API::InvalidConnection)
|
59
|
-
proc { API.new(nil, "r") }.should raise_error(API::InvalidConnection)
|
60
|
-
proc { API.new("u", "r") }.should_not raise_error(API::InvalidConnection)
|
61
|
-
end
|
62
|
-
|
63
|
-
describe "requests" do
|
64
|
-
before :each do
|
65
|
-
@api = API.new "stephencelis", "ghi"
|
66
|
-
GHI.stub!(:login).and_return "stephencelis"
|
67
|
-
GHI.stub!(:token).and_return "token"
|
68
|
-
|
69
|
-
@http = mock(Net::HTTP)
|
70
|
-
@http.stub(:start) { |l| l.call }
|
71
|
-
end
|
72
|
-
|
73
|
-
it "should substitute url tokens" do
|
74
|
-
@api.send(:path, :open).should ==
|
75
|
-
"/api/v2/yaml/issues/open/stephencelis/ghi"
|
76
|
-
@api.send(:path, :show, 1).should ==
|
77
|
-
"/api/v2/yaml/issues/show/stephencelis/ghi/1"
|
78
|
-
@api.send(:path, :search, :open, "me").should ==
|
79
|
-
"/api/v2/yaml/issues/search/stephencelis/ghi/open/me"
|
80
|
-
@api.send(:path, "label/add", "me").should ==
|
81
|
-
"/api/v2/yaml/issues/label/add/stephencelis/ghi/me"
|
82
|
-
end
|
83
|
-
|
84
|
-
it "should process gets" do
|
85
|
-
path = "/api/v2/yaml/issues/open/stephencelis/ghi"
|
86
|
-
query = "?login=stephencelis&token=token"
|
87
|
-
@api.stub!(:path).and_return path
|
88
|
-
req = mock(Net::HTTPRequest)
|
89
|
-
res = mock(Net::HTTPResponse)
|
90
|
-
Net::HTTP.should_receive(:new).once.and_return @http
|
91
|
-
Net::HTTP::Get.should_receive(:new).once.with(path + query).
|
92
|
-
and_return req
|
93
|
-
@http.should_receive(:request).once.with(req).and_return res
|
94
|
-
res.should_receive(:body).once.and_return ISSUES_YAML
|
95
|
-
@api.list
|
96
|
-
end
|
97
|
-
|
98
|
-
it "should process posts" do
|
99
|
-
path = "/api/v2/yaml/issues/open/stephencelis/ghi"
|
100
|
-
query = { "login" => "stephencelis",
|
101
|
-
"token" => "token",
|
102
|
-
"title" => "Title",
|
103
|
-
"body" => "Body" }
|
104
|
-
@api.stub!(:path).and_return path
|
105
|
-
req = mock(Net::HTTPRequest)
|
106
|
-
res = mock(Net::HTTPResponse)
|
107
|
-
Net::HTTP.should_receive(:new).once.and_return @http
|
108
|
-
Net::HTTP::Post.should_receive(:new).once.with(path).and_return req
|
109
|
-
req.should_receive(:set_form_data).once
|
110
|
-
@http.should_receive(:request).once.with(req).and_return res
|
111
|
-
res.should_receive(:body).once.and_return ISSUE_YAML
|
112
|
-
@api.open "Title", "Body"
|
113
|
-
end
|
114
|
-
|
115
|
-
def expect_get_response(body)
|
116
|
-
req = mock(Net::HTTPRequest)
|
117
|
-
res = mock(Net::HTTPResponse)
|
118
|
-
Net::HTTP.should_receive(:new).once.and_return @http
|
119
|
-
Net::HTTP::Get.should_receive(:new).once.and_return req
|
120
|
-
@http.should_receive(:request).once.with(req).and_return res
|
121
|
-
res.should_receive(:body).once.and_return body
|
122
|
-
end
|
123
|
-
|
124
|
-
def expect_post_response(body)
|
125
|
-
req = mock(Net::HTTPRequest)
|
126
|
-
res = mock(Net::HTTPResponse)
|
127
|
-
Net::HTTP.should_receive(:new).once.and_return @http
|
128
|
-
Net::HTTP::Post.should_receive(:new).once.and_return req
|
129
|
-
req.should_receive(:set_form_data).once
|
130
|
-
@http.should_receive(:request).once.with(req).and_return res
|
131
|
-
res.should_receive(:body).once.and_return body
|
132
|
-
end
|
133
|
-
|
134
|
-
it "should search open by default" do
|
135
|
-
@api.should_receive(:path).with(:search, :open, "me").and_return "u"
|
136
|
-
expect_get_response ISSUES_YAML
|
137
|
-
issues = @api.search "me"
|
138
|
-
issues.should be_an_instance_of(Array)
|
139
|
-
issues.each { |issue| issue.should be_an_instance_of(Issue) }
|
140
|
-
end
|
141
|
-
|
142
|
-
it "should search closed" do
|
143
|
-
@api.should_receive(:path).with(:search, :closed, "me").and_return "u"
|
144
|
-
expect_get_response ISSUES_YAML
|
145
|
-
@api.search "me", :closed
|
146
|
-
end
|
147
|
-
|
148
|
-
it "should list open by default" do
|
149
|
-
@api.should_receive(:path).with(:list, :open).and_return "u"
|
150
|
-
expect_get_response ISSUES_YAML
|
151
|
-
issues = @api.list
|
152
|
-
issues.should be_an_instance_of(Array)
|
153
|
-
issues.each { |issue| issue.should be_an_instance_of(Issue) }
|
154
|
-
end
|
155
|
-
|
156
|
-
it "should list closed" do
|
157
|
-
@api.should_receive(:path).with(:list, :closed).and_return "u"
|
158
|
-
expect_get_response ISSUES_YAML
|
159
|
-
@api.list :closed
|
160
|
-
end
|
161
|
-
|
162
|
-
it "should show" do
|
163
|
-
@api.should_receive(:path).with(:show, 1).and_return "u"
|
164
|
-
expect_get_response ISSUE_YAML
|
165
|
-
@api.show(1).should be_an_instance_of(Issue)
|
166
|
-
end
|
167
|
-
|
168
|
-
it "should open" do
|
169
|
-
@api.should_receive(:path).with(:open).and_return "u"
|
170
|
-
expect_post_response ISSUE_YAML
|
171
|
-
@api.open("Title", "Body").should be_an_instance_of(Issue)
|
172
|
-
end
|
173
|
-
|
174
|
-
it "should edit" do
|
175
|
-
@api.should_receive(:path).with(:edit, 1).and_return "u"
|
176
|
-
expect_post_response ISSUE_YAML
|
177
|
-
@api.edit(1, "Title", "Body").should be_an_instance_of(Issue)
|
178
|
-
end
|
179
|
-
|
180
|
-
it "should close" do
|
181
|
-
@api.should_receive(:path).with(:close, 1).and_return "u"
|
182
|
-
expect_post_response ISSUE_YAML
|
183
|
-
@api.close(1).should be_an_instance_of(Issue)
|
184
|
-
end
|
185
|
-
|
186
|
-
it "should reopen" do
|
187
|
-
@api.should_receive(:path).with(:reopen, 1).and_return "u"
|
188
|
-
expect_post_response ISSUE_YAML
|
189
|
-
@api.reopen(1).should be_an_instance_of(Issue)
|
190
|
-
end
|
191
|
-
|
192
|
-
it "should add labels" do
|
193
|
-
@api.should_receive(:path).with("label/add", 1, "l").and_return "u"
|
194
|
-
expect_post_response LABELS_YAML
|
195
|
-
@api.add_label(1, "l").should be_an_instance_of(Array)
|
196
|
-
end
|
197
|
-
|
198
|
-
it "should remove labels" do
|
199
|
-
@api.should_receive(:path).with("label/remove", 1, "l").and_return "u"
|
200
|
-
expect_post_response LABELS_YAML
|
201
|
-
@api.remove_label(1, "l").should be_an_instance_of(Array)
|
202
|
-
end
|
203
|
-
|
204
|
-
it "should comment, and escape values" do
|
205
|
-
@api.should_receive(:path).with(:comment, 1).and_return "u"
|
206
|
-
|
207
|
-
req = mock(Net::HTTPRequest)
|
208
|
-
res = mock(Net::HTTPResponse)
|
209
|
-
Net::HTTP.should_receive(:new).once.and_return @http
|
210
|
-
Net::HTTP::Post.should_receive(:new).once.and_return req
|
211
|
-
req.should_receive(:set_form_data).once
|
212
|
-
@http.should_receive(:request).once.with(req).and_return res
|
213
|
-
res.should_receive(:body).once.and_return COMMENT_YAML
|
214
|
-
|
215
|
-
@api.comment(1, "Comment&so").should be_an_instance_of(Hash)
|
216
|
-
end
|
217
|
-
end
|
218
|
-
end
|
data/spec/ghi/cli_spec.rb
DELETED
@@ -1,267 +0,0 @@
|
|
1
|
-
require "ghi"
|
2
|
-
require "ghi/api"
|
3
|
-
require "ghi/cli"
|
4
|
-
|
5
|
-
describe GHI::CLI::Executable do
|
6
|
-
before :each do
|
7
|
-
@cli = GHI::CLI::Executable.new
|
8
|
-
@cli.stub!(:api).and_return(mock(GHI::API))
|
9
|
-
$stdout.stub! :close_write
|
10
|
-
IO.stub!(:popen).and_return $stdout
|
11
|
-
end
|
12
|
-
|
13
|
-
describe "parsing" do
|
14
|
-
describe "with well-formed arguments" do
|
15
|
-
before :each do
|
16
|
-
@user, @repo = "local_user_host", "ghi"
|
17
|
-
@action = @state = @number = @term =
|
18
|
-
@title = @body = @tag = @comment = nil
|
19
|
-
end
|
20
|
-
|
21
|
-
after :each do
|
22
|
-
@cli.should_receive(@action)
|
23
|
-
@cli.parse! Array(@args)
|
24
|
-
@cli.action.should == @action
|
25
|
-
@cli.state.should == (@state || :open)
|
26
|
-
@cli.number.should == @number
|
27
|
-
@cli.search_term.should == @term
|
28
|
-
@cli.title.should == @title
|
29
|
-
@cli.body.should == @body
|
30
|
-
@cli.user.should == @user
|
31
|
-
@cli.repo.should == @repo
|
32
|
-
@cli.tag.should == @tag
|
33
|
-
if @commenting
|
34
|
-
@cli.should be_commenting
|
35
|
-
else
|
36
|
-
@cli.should_not be_commenting
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
it "should always parse -r" do
|
41
|
-
@args = ["-rremoteuser/remoterepo", "-l"]
|
42
|
-
@action, @state, @user, @repo = :list, :open, "remoteuser", "remoterepo"
|
43
|
-
end
|
44
|
-
|
45
|
-
describe "inside a repository" do
|
46
|
-
after :each do
|
47
|
-
@cli.stub!(:`).and_return "stub@github.com:#@user/#@repo.git"
|
48
|
-
end
|
49
|
-
|
50
|
-
it "should parse empty as list open" do
|
51
|
-
@action, @state = :list, :open
|
52
|
-
end
|
53
|
-
|
54
|
-
it "should parse -l as list open" do
|
55
|
-
@args = ["-l"]
|
56
|
-
@action, @state = :list, :open
|
57
|
-
end
|
58
|
-
|
59
|
-
it "should parse -l as list open" do
|
60
|
-
@args = ["-l"]
|
61
|
-
@action, @state = :list, :open
|
62
|
-
end
|
63
|
-
|
64
|
-
it "should parse -lo as list open" do
|
65
|
-
@args = ["-lo"]
|
66
|
-
@action, @state = :list, :open
|
67
|
-
end
|
68
|
-
|
69
|
-
it "should parse -lc as list closed" do
|
70
|
-
@args = ["-lc"]
|
71
|
-
@action, @state = :list, :closed
|
72
|
-
end
|
73
|
-
|
74
|
-
it "should parse -l2 as show issue 2" do
|
75
|
-
@args = ["-l2"]
|
76
|
-
@action, @number = :show, 2
|
77
|
-
end
|
78
|
-
|
79
|
-
it "should parse -l 'term' as search open for 'term'" do
|
80
|
-
@args = ["-l", "term"]
|
81
|
-
@action, @state, @term = :search, :open, "term"
|
82
|
-
end
|
83
|
-
|
84
|
-
it "should parse -o as open new issue" do
|
85
|
-
@args = ["-o"]
|
86
|
-
@action = :open
|
87
|
-
end
|
88
|
-
|
89
|
-
it "should parse -o 'New Issue' as open issue with title 'New Issue'" do
|
90
|
-
@args = ["-o", "New Issue"]
|
91
|
-
@action, @title = :open, "New Issue"
|
92
|
-
end
|
93
|
-
|
94
|
-
it "should parse -om 'New Issue' as open issue with'New Issue'" do
|
95
|
-
@args = ["-om", "New Issue"]
|
96
|
-
@action, @title = :open, "New Issue"
|
97
|
-
end
|
98
|
-
|
99
|
-
it "should parse -o 'New Issue' -m as open 'New Issue' in $EDITOR" do
|
100
|
-
@args = ["-o", "New Issue", "-m"]
|
101
|
-
@action, @title, @commenting = :open, "New Issue", true
|
102
|
-
end
|
103
|
-
|
104
|
-
it "should parse -o 'Issue' -m 'Body' as open 'Issue' with 'Body'" do
|
105
|
-
@args = ["-o", "Issue", "-m", "Body"]
|
106
|
-
@action, @title, @body = :open, "Issue", "Body"
|
107
|
-
end
|
108
|
-
|
109
|
-
it "should parse -o2 as reopen issue 2" do
|
110
|
-
@args = ["-o2"]
|
111
|
-
@action, @number = :reopen, 2
|
112
|
-
end
|
113
|
-
|
114
|
-
it "should parse -o2 -m as reopen issue 2 with a comment" do
|
115
|
-
@args = ["-o2", "-m"]
|
116
|
-
@action, @number, @commenting = :reopen, 2, true
|
117
|
-
end
|
118
|
-
|
119
|
-
it "should parse -o2 -m 'Comment' as reopen issue 2" do
|
120
|
-
@args = ["-o2", "-m", "Comment"]
|
121
|
-
@action, @number, @body = :reopen, 2, "Comment"
|
122
|
-
end
|
123
|
-
|
124
|
-
it "should parse -ol as list open" do
|
125
|
-
@args = ["-ol"]
|
126
|
-
@action, @state = :list, :open
|
127
|
-
end
|
128
|
-
|
129
|
-
it "should parse -ou as return open issues url" do
|
130
|
-
@args = ["-ou"]
|
131
|
-
@action = :url # Should state be :open?
|
132
|
-
end
|
133
|
-
|
134
|
-
it "should parse -cl as list closed" do
|
135
|
-
@args = ["-cl"]
|
136
|
-
@action, @state = :list, :closed
|
137
|
-
end
|
138
|
-
|
139
|
-
it "should parse -c2 as close issue 2" do
|
140
|
-
@args = ["-c2"]
|
141
|
-
@action, @number = :close, 2
|
142
|
-
end
|
143
|
-
|
144
|
-
it "should parse -c2 -m as close issue 2 with a comment" do
|
145
|
-
@args = ["-c2", "-m"]
|
146
|
-
@action, @number, @commenting = :close, 2, true
|
147
|
-
end
|
148
|
-
|
149
|
-
it "should parse -c2 -m 'Fixed' as close issue 2 with 'Fixed'" do
|
150
|
-
@args = ["-c2", "-m", "Fixed"]
|
151
|
-
@action, @number, @body = :close, 2, "Fixed"
|
152
|
-
end
|
153
|
-
|
154
|
-
it "should parse -m2 -c as close issue 2 with a comment" do
|
155
|
-
@args = ["-m2", "-c"]
|
156
|
-
@action, @number, @commenting = :close, 2, true
|
157
|
-
end
|
158
|
-
|
159
|
-
it "should parse -cu as return closed issues url" do
|
160
|
-
@args = ["-cu"]
|
161
|
-
@action, @state = :url, :closed
|
162
|
-
end
|
163
|
-
|
164
|
-
it "should parse -e2 as edit issue 2" do
|
165
|
-
@args = ["-e2"]
|
166
|
-
@action, @number = :edit, 2
|
167
|
-
end
|
168
|
-
|
169
|
-
it "should parse -rlocalrepo as localuser/localrepo" do
|
170
|
-
GHI.stub!(:login).and_return "localuser"
|
171
|
-
@args = ["-rlocalrepo", "-l"]
|
172
|
-
@action, @state, @user, @repo = :list, :open, "localuser", "localrepo"
|
173
|
-
end
|
174
|
-
|
175
|
-
it "should parse -rremoteuser/remoterepo as remoteuser/remoterepo" do
|
176
|
-
@args = ["-rremoteuser/remoterepo", "-l"]
|
177
|
-
@action, @state, @user, @repo = :list, :open, "remoteuser", "remoterepo"
|
178
|
-
end
|
179
|
-
|
180
|
-
it "should parse -rremoteuser/remoterepo as a later argument" do
|
181
|
-
@args = ["-1", "-rremoteuser/remoterepo"]
|
182
|
-
@action, @number, @user, @repo = :show, 1, "remoteuser", "remoterepo"
|
183
|
-
end
|
184
|
-
|
185
|
-
it "should parse -t2 'tag' as label issue 2 with 'tag'" do
|
186
|
-
@args = ["-t2", "tag"]
|
187
|
-
@action, @number, @tag = :label, 2, "tag"
|
188
|
-
end
|
189
|
-
|
190
|
-
it "should parse -d2 'tag' as remove label 'tag' from issue 2" do
|
191
|
-
@args = ["-d2", "tag"]
|
192
|
-
@action, @number, @tag = :unlabel, 2, "tag"
|
193
|
-
end
|
194
|
-
|
195
|
-
it "should parse -m2 as comment on issue 2" do
|
196
|
-
@args = ["-m2"]
|
197
|
-
@action, @number, @commenting = :comment, 2, true
|
198
|
-
end
|
199
|
-
|
200
|
-
it "should parse -m2 'Comment' as comment 'Comment' on issue 2" do
|
201
|
-
@args = ["-m2", "Comment"]
|
202
|
-
@action, @number, @body = :comment, 2, "Comment"
|
203
|
-
end
|
204
|
-
|
205
|
-
it "should parse -u as return open issues url" do
|
206
|
-
@args = ["-u"]
|
207
|
-
@action = :url # Should state be :open?
|
208
|
-
end
|
209
|
-
|
210
|
-
it "should parse -uo as return open issues url" do
|
211
|
-
@args = ["-uo"]
|
212
|
-
@action = :url # Should state be :open?
|
213
|
-
end
|
214
|
-
|
215
|
-
it "should parse -uc as return open issues url" do
|
216
|
-
@args = ["-uc"]
|
217
|
-
@action, @state = :url, :closed
|
218
|
-
end
|
219
|
-
|
220
|
-
it "should parse -u2 as return issue 2 url" do
|
221
|
-
@args = ["-u2"]
|
222
|
-
@action, @number = :url, 2
|
223
|
-
end
|
224
|
-
|
225
|
-
it "should parse -uu as return unread issues url" do
|
226
|
-
@args = ["-uu"]
|
227
|
-
@action, @state = :url, :unread
|
228
|
-
end
|
229
|
-
end
|
230
|
-
end
|
231
|
-
|
232
|
-
describe "with malformed arguments" do
|
233
|
-
before :each do
|
234
|
-
@cli.should_receive :warn
|
235
|
-
@cli.should_receive(:exit).with 1
|
236
|
-
end
|
237
|
-
|
238
|
-
it "should exit with -e" do
|
239
|
-
@cli.should_receive :puts
|
240
|
-
@cli.parse! ["-e"]
|
241
|
-
end
|
242
|
-
|
243
|
-
it "should exit with -e 'invalid'" do
|
244
|
-
@cli.should_receive :puts
|
245
|
-
@cli.parse! ["-e", "invalid"]
|
246
|
-
end
|
247
|
-
|
248
|
-
it "should exit with -c as list closed" do
|
249
|
-
@cli.parse! ["-c"]
|
250
|
-
end
|
251
|
-
|
252
|
-
it "should exit with -r" do
|
253
|
-
@cli.should_receive :puts
|
254
|
-
@cli.parse! ["-r"]
|
255
|
-
end
|
256
|
-
|
257
|
-
it "should exit with -t" do
|
258
|
-
@cli.should_receive :puts
|
259
|
-
@cli.parse! ["-t"]
|
260
|
-
end
|
261
|
-
|
262
|
-
it "should exit with -t2" do
|
263
|
-
@cli.parse! ["-t2"]
|
264
|
-
end
|
265
|
-
end
|
266
|
-
end
|
267
|
-
end
|