gitlab 3.4.0 → 3.5.0
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 +4 -4
- data/CHANGELOG.md +30 -2
- data/README.md +22 -0
- data/bin/console +10 -0
- data/bin/setup +6 -0
- data/{bin → exe}/gitlab +0 -0
- data/gitlab.gemspec +4 -1
- data/lib/gitlab.rb +1 -1
- data/lib/gitlab/cli.rb +20 -2
- data/lib/gitlab/cli_helpers.rb +74 -15
- data/lib/gitlab/client.rb +2 -0
- data/lib/gitlab/client/commits.rb +121 -0
- data/lib/gitlab/client/groups.rb +25 -2
- data/lib/gitlab/client/issues.rb +7 -0
- data/lib/gitlab/client/milestones.rb +6 -0
- data/lib/gitlab/client/namespaces.rb +19 -0
- data/lib/gitlab/client/notes.rb +12 -0
- data/lib/gitlab/client/projects.rb +30 -0
- data/lib/gitlab/client/repositories.rb +0 -75
- data/lib/gitlab/client/repository_files.rb +16 -0
- data/lib/gitlab/client/snippets.rb +15 -0
- data/lib/gitlab/client/users.rb +54 -5
- data/lib/gitlab/configuration.rb +14 -0
- data/lib/gitlab/error.rb +3 -0
- data/lib/gitlab/request.rb +13 -2
- data/lib/gitlab/shell.rb +1 -2
- data/lib/gitlab/version.rb +1 -1
- data/spec/fixtures/branch_delete.json +0 -0
- data/spec/fixtures/get_repository_file.json +1 -0
- data/spec/fixtures/group_create_with_description.json +1 -0
- data/spec/fixtures/group_search.json +2 -0
- data/spec/fixtures/namespaces.json +1 -0
- data/spec/fixtures/project_commit_status.json +42 -0
- data/spec/fixtures/project_edit.json +21 -0
- data/spec/fixtures/project_fork.json +50 -0
- data/spec/fixtures/project_forked_for_user.json +50 -0
- data/spec/fixtures/project_update_commit_status.json +20 -0
- data/spec/fixtures/snippet_content.json +3 -0
- data/spec/fixtures/user.json +1 -1
- data/spec/fixtures/user_block_unblock.json +1 -0
- data/spec/fixtures/users.json +1 -1
- data/spec/gitlab/cli_helpers_spec.rb +6 -6
- data/spec/gitlab/cli_spec.rb +16 -0
- data/spec/gitlab/client/commits_spec.rb +137 -0
- data/spec/gitlab/client/groups_spec.rb +51 -13
- data/spec/gitlab/client/namespaces_spec.rb +22 -0
- data/spec/gitlab/client/projects_spec.rb +51 -0
- data/spec/gitlab/client/repositories_spec.rb +0 -88
- data/spec/gitlab/client/repository_files_spec.rb +17 -0
- data/spec/gitlab/client/snippets_spec.rb +15 -0
- data/spec/gitlab/client/users_spec.rb +73 -0
- data/spec/gitlab/help_spec.rb +1 -1
- data/spec/gitlab/request_spec.rb +16 -3
- data/spec/gitlab/shell_spec.rb +2 -2
- metadata +51 -6
@@ -21,19 +21,40 @@ describe Gitlab::Client do
|
|
21
21
|
end
|
22
22
|
|
23
23
|
describe ".create_group" do
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
24
|
+
context "without description" do
|
25
|
+
before do
|
26
|
+
stub_post("/groups", "group_create")
|
27
|
+
@group = Gitlab.create_group('GitLab-Group', 'gitlab-path')
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should get the correct resource" do
|
31
|
+
expect(a_post("/groups").
|
32
|
+
with(:body => {:path => 'gitlab-path', :name => 'GitLab-Group'})).to have_been_made
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should return information about a created group" do
|
36
|
+
expect(@group.name).to eq("Gitlab-Group")
|
37
|
+
expect(@group.path).to eq("gitlab-group")
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context "with description" do
|
42
|
+
before do
|
43
|
+
stub_post("/groups", "group_create_with_description")
|
44
|
+
@group = Gitlab.create_group('GitLab-Group', 'gitlab-path', :description => 'gitlab group description')
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should get the correct resource" do
|
48
|
+
expect(a_post("/groups").
|
49
|
+
with(:body => {:path => 'gitlab-path', :name => 'GitLab-Group',
|
50
|
+
:description => 'gitlab group description'})).to have_been_made
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should return information about a created group" do
|
54
|
+
expect(@group.name).to eq("Gitlab-Group")
|
55
|
+
expect(@group.path).to eq("gitlab-group")
|
56
|
+
expect(@group.description).to eq("gitlab group description")
|
57
|
+
end
|
37
58
|
end
|
38
59
|
end
|
39
60
|
|
@@ -108,4 +129,21 @@ describe Gitlab::Client do
|
|
108
129
|
end
|
109
130
|
|
110
131
|
|
132
|
+
describe ".group_search" do
|
133
|
+
before do
|
134
|
+
stub_get("/groups?search=Group", "group_search")
|
135
|
+
@groups = Gitlab.group_search('Group')
|
136
|
+
end
|
137
|
+
|
138
|
+
it "should get the correct resource" do
|
139
|
+
expect(a_get("/groups?search=Group")).to have_been_made
|
140
|
+
end
|
141
|
+
|
142
|
+
it "should return an array of groups found" do
|
143
|
+
expect(@groups.first.id).to eq(5)
|
144
|
+
expect(@groups.last.id).to eq(8)
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
|
111
149
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Gitlab::Client do
|
4
|
+
it { should respond_to :namespaces }
|
5
|
+
|
6
|
+
describe ".namespaces" do
|
7
|
+
before do
|
8
|
+
stub_get("/namespaces", "namespaces")
|
9
|
+
@namespaces = Gitlab.namespaces
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should get the correct resource" do
|
13
|
+
expect(a_get("/namespaces")).to have_been_made
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should return an array of namespaces" do
|
17
|
+
expect(@namespaces).to be_an Array
|
18
|
+
expect(@namespaces.first.path).to eq("john")
|
19
|
+
expect(@namespaces.first.kind).to eq("user")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -118,6 +118,42 @@ describe Gitlab::Client do
|
|
118
118
|
end
|
119
119
|
end
|
120
120
|
|
121
|
+
describe ".create_fork" do
|
122
|
+
context "without sudo option" do
|
123
|
+
before do
|
124
|
+
stub_post("/projects/fork/3", "project_fork")
|
125
|
+
@project = Gitlab.create_fork(3)
|
126
|
+
end
|
127
|
+
|
128
|
+
it "should post to the correct resource" do
|
129
|
+
expect(a_post("/projects/fork/3")).to have_been_made
|
130
|
+
end
|
131
|
+
|
132
|
+
it "should return information about the forked project" do
|
133
|
+
expect(@project.forked_from_project.id).to eq(3)
|
134
|
+
expect(@project.id).to eq(20)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
context "with the sudo option" do
|
139
|
+
before do
|
140
|
+
stub_post("/projects/fork/3", "project_forked_for_user")
|
141
|
+
@sudoed_username = 'jack.smith'
|
142
|
+
@project = Gitlab.create_fork(3, {sudo: @sudoed_username})
|
143
|
+
end
|
144
|
+
|
145
|
+
it "should post to the correct resource" do
|
146
|
+
expect(a_post("/projects/fork/3")).to have_been_made
|
147
|
+
end
|
148
|
+
|
149
|
+
it "should return information about the forked project" do
|
150
|
+
expect(@project.forked_from_project.id).to eq(3)
|
151
|
+
expect(@project.id).to eq(20)
|
152
|
+
expect(@project.owner.username).to eq(@sudoed_username)
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
121
157
|
describe ".team_members" do
|
122
158
|
before do
|
123
159
|
stub_get("/projects/3/members", "team_members")
|
@@ -277,6 +313,21 @@ describe Gitlab::Client do
|
|
277
313
|
end
|
278
314
|
end
|
279
315
|
|
316
|
+
describe ".edit_project" do
|
317
|
+
before do
|
318
|
+
stub_put("/projects/3", "project_edit").with(:query => { :name => "Gitlab-edit" })
|
319
|
+
@edited_project = Gitlab.edit_project(3, :name => "Gitlab-edit")
|
320
|
+
end
|
321
|
+
|
322
|
+
it "should get the correct resource" do
|
323
|
+
expect(a_put("/projects/3").with(:query => { :name => "Gitlab-edit" })).to have_been_made
|
324
|
+
end
|
325
|
+
|
326
|
+
it "should return information about an edited project" do
|
327
|
+
expect(@edited_project.name).to eq("Gitlab-edit")
|
328
|
+
end
|
329
|
+
end
|
330
|
+
|
280
331
|
describe ".delete_project_hook" do
|
281
332
|
context "when empty response" do
|
282
333
|
before do
|
@@ -5,11 +5,6 @@ describe Gitlab::Client do
|
|
5
5
|
it { should respond_to :repo_create_tag }
|
6
6
|
it { should respond_to :repo_branches }
|
7
7
|
it { should respond_to :repo_branch }
|
8
|
-
it { should respond_to :repo_commits }
|
9
|
-
it { should respond_to :repo_commit }
|
10
|
-
it { should respond_to :repo_commit_diff }
|
11
|
-
it { should respond_to :repo_commit_comments }
|
12
|
-
it { should respond_to :repo_create_commit_comment }
|
13
8
|
it { should respond_to :repo_tree }
|
14
9
|
it { should respond_to :repo_compare}
|
15
10
|
|
@@ -94,89 +89,6 @@ describe Gitlab::Client do
|
|
94
89
|
end
|
95
90
|
end
|
96
91
|
|
97
|
-
describe ".commits" do
|
98
|
-
before do
|
99
|
-
stub_get("/projects/3/repository/commits", "project_commits").
|
100
|
-
with(:query => {:ref_name => "api"})
|
101
|
-
@commits = Gitlab.commits(3, :ref_name => "api")
|
102
|
-
end
|
103
|
-
|
104
|
-
it "should get the correct resource" do
|
105
|
-
expect(a_get("/projects/3/repository/commits").
|
106
|
-
with(:query => {:ref_name => "api"})).to have_been_made
|
107
|
-
end
|
108
|
-
|
109
|
-
it "should return an array of repository commits" do
|
110
|
-
expect(@commits).to be_an Array
|
111
|
-
expect(@commits.first.id).to eq("f7dd067490fe57505f7226c3b54d3127d2f7fd46")
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
describe ".commit" do
|
116
|
-
before do
|
117
|
-
stub_get("/projects/3/repository/commits/6104942438c14ec7bd21c6cd5bd995272b3faff6", "project_commit")
|
118
|
-
@commit = Gitlab.commit(3, '6104942438c14ec7bd21c6cd5bd995272b3faff6')
|
119
|
-
end
|
120
|
-
|
121
|
-
it "should get the correct resource" do
|
122
|
-
expect(a_get("/projects/3/repository/commits/6104942438c14ec7bd21c6cd5bd995272b3faff6"))
|
123
|
-
.to have_been_made
|
124
|
-
end
|
125
|
-
|
126
|
-
it "should return a repository commit" do
|
127
|
-
expect(@commit.id).to eq("6104942438c14ec7bd21c6cd5bd995272b3faff6")
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
describe ".commit_diff" do
|
132
|
-
before do
|
133
|
-
stub_get("/projects/3/repository/commits/6104942438c14ec7bd21c6cd5bd995272b3faff6/diff", "project_commit_diff")
|
134
|
-
@diff = Gitlab.commit_diff(3, '6104942438c14ec7bd21c6cd5bd995272b3faff6')
|
135
|
-
end
|
136
|
-
|
137
|
-
it "should get the correct resource" do
|
138
|
-
expect(a_get("/projects/3/repository/commits/6104942438c14ec7bd21c6cd5bd995272b3faff6/diff"))
|
139
|
-
.to have_been_made
|
140
|
-
end
|
141
|
-
|
142
|
-
it "should return a diff of a commit" do
|
143
|
-
expect(@diff.new_path).to eq("doc/update/5.4-to-6.0.md")
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
|
-
describe ".commit_comments" do
|
148
|
-
before do
|
149
|
-
stub_get("/projects/3/repository/commits/6104942438c14ec7bd21c6cd5bd995272b3faff6/comments", "project_commit_comments")
|
150
|
-
@commit_comments = Gitlab.commit_comments(3, '6104942438c14ec7bd21c6cd5bd995272b3faff6')
|
151
|
-
end
|
152
|
-
|
153
|
-
it "should get the correct resource" do
|
154
|
-
expect(a_get("/projects/3/repository/commits/6104942438c14ec7bd21c6cd5bd995272b3faff6/comments"))
|
155
|
-
.to have_been_made
|
156
|
-
end
|
157
|
-
|
158
|
-
it "should return commit's comments" do
|
159
|
-
expect(@commit_comments).to be_an Array
|
160
|
-
expect(@commit_comments.length).to eq(2)
|
161
|
-
expect(@commit_comments[0].note).to eq("this is the 1st comment on commit 6104942438c14ec7bd21c6cd5bd995272b3faff6")
|
162
|
-
expect(@commit_comments[0].author.id).to eq(11)
|
163
|
-
expect(@commit_comments[1].note).to eq("another discussion point on commit 6104942438c14ec7bd21c6cd5bd995272b3faff6")
|
164
|
-
expect(@commit_comments[1].author.id).to eq(12)
|
165
|
-
end
|
166
|
-
end
|
167
|
-
|
168
|
-
describe ".create_commit_comment" do
|
169
|
-
before do
|
170
|
-
stub_post("/projects/3/repository/commits/6104942438c14ec7bd21c6cd5bd995272b3faff6/comments", "project_commit_comment")
|
171
|
-
@merge_request = Gitlab.create_commit_comment(3, '6104942438c14ec7bd21c6cd5bd995272b3faff6', 'Nice code!')
|
172
|
-
end
|
173
|
-
|
174
|
-
it "should return information about the newly created comment" do
|
175
|
-
expect(@merge_request.note).to eq('Nice code!')
|
176
|
-
expect(@merge_request.author.id).to eq(1)
|
177
|
-
end
|
178
|
-
end
|
179
|
-
|
180
92
|
describe ".compare" do
|
181
93
|
before do
|
182
94
|
stub_get("/projects/3/repository/compare", "compare_merge_request_diff").
|
@@ -1,6 +1,23 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Gitlab::Client do
|
4
|
+
describe ".get_file" do
|
5
|
+
before do
|
6
|
+
stub_get("/projects/3/repository/files?file_path=README.md&ref=master", "get_repository_file")
|
7
|
+
@file = Gitlab.get_file(3, 'README.md', 'master')
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should create the correct resource" do
|
11
|
+
expect(a_get("/projects/3/repository/files?file_path=README.md&ref=master")).to have_been_made
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should return the base64 encoded file" do
|
15
|
+
expect(@file.file_path).to eq "README.md"
|
16
|
+
expect(@file.ref).to eq "master"
|
17
|
+
expect(@file.content).to eq "VGhpcyBpcyBhICpSRUFETUUqIQ==\n"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
4
21
|
describe ".create_file" do
|
5
22
|
let!(:request_stub) { stub_post("/projects/3/repository/files", "repository_file") }
|
6
23
|
let!(:file) { Gitlab.create_file(3, "path", "branch", "content", "commit message") }
|
@@ -82,4 +82,19 @@ describe Gitlab::Client do
|
|
82
82
|
expect(@snippet.author.name).to eq("John Smith")
|
83
83
|
end
|
84
84
|
end
|
85
|
+
|
86
|
+
describe ".snippet_content" do
|
87
|
+
before do
|
88
|
+
stub_get("/projects/3/snippets/1/raw", "snippet_content")
|
89
|
+
@snippet_content = Gitlab.snippet_content(3, 1)
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should get the correct resource" do
|
93
|
+
expect(a_get("/projects/3/snippets/1/raw")).to have_been_made
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should return raw content of a snippet" do
|
97
|
+
expect(@snippet_content).to eq("#!/usr/bin/env ruby\n\nputs \"Cool snippet!\"\n")
|
98
|
+
end
|
99
|
+
end
|
85
100
|
end
|
@@ -76,6 +76,33 @@ describe Gitlab::Client do
|
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
79
|
+
describe ".create_user_with_userame" do
|
80
|
+
context "when successful request" do
|
81
|
+
before do
|
82
|
+
stub_post("/users", "user")
|
83
|
+
@user = Gitlab.create_user("email", "pass", "username")
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should get the correct resource" do
|
87
|
+
body = {:email => "email", :password => "pass", :username => "username"}
|
88
|
+
expect(a_post("/users").with(:body => body)).to have_been_made
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should return information about a created user" do
|
92
|
+
expect(@user.email).to eq("john@example.com")
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
context "when bad request" do
|
97
|
+
it "should throw an exception" do
|
98
|
+
stub_post("/users", "error_already_exists", 409)
|
99
|
+
expect {
|
100
|
+
Gitlab.create_user("email", "pass", "username")
|
101
|
+
}.to raise_error(Gitlab::Error::Conflict, "Server responded with code 409, message: 409 Already exists. Request URI: #{Gitlab.endpoint}/users")
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
79
106
|
describe ".edit_user" do
|
80
107
|
before do
|
81
108
|
@options = { :name => "Roberto" }
|
@@ -88,6 +115,51 @@ describe Gitlab::Client do
|
|
88
115
|
end
|
89
116
|
end
|
90
117
|
|
118
|
+
describe ".delete_user" do
|
119
|
+
before do
|
120
|
+
stub_delete("/users/1", "user")
|
121
|
+
@user = Gitlab.delete_user(1)
|
122
|
+
end
|
123
|
+
|
124
|
+
it "should get the correct resource" do
|
125
|
+
expect(a_delete("/users/1")).to have_been_made
|
126
|
+
end
|
127
|
+
|
128
|
+
it "should return information about a deleted user" do
|
129
|
+
expect(@user.email).to eq("john@example.com")
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
describe ".block_user" do
|
134
|
+
before do
|
135
|
+
stub_put("/users/1/block", "user_block_unblock")
|
136
|
+
@result = Gitlab.block_user(1)
|
137
|
+
end
|
138
|
+
|
139
|
+
it "should get the correct resource" do
|
140
|
+
expect(a_put("/users/1/block")).to have_been_made
|
141
|
+
end
|
142
|
+
|
143
|
+
it "should return boolean" do
|
144
|
+
expect(@result).to eq(true)
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
describe ".unblock_user" do
|
149
|
+
before do
|
150
|
+
stub_put("/users/1/unblock", "user_block_unblock")
|
151
|
+
@result = Gitlab.unblock_user(1)
|
152
|
+
end
|
153
|
+
|
154
|
+
it "should get the correct resource" do
|
155
|
+
expect(a_put("/users/1/unblock")).to have_been_made
|
156
|
+
end
|
157
|
+
|
158
|
+
it "should return boolean" do
|
159
|
+
expect(@result).to eq(true)
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
91
163
|
describe ".session" do
|
92
164
|
after do
|
93
165
|
Gitlab.endpoint = 'https://api.example.com'
|
@@ -189,4 +261,5 @@ describe Gitlab::Client do
|
|
189
261
|
expect(@key.title).to eq("narkoz@helium")
|
190
262
|
end
|
191
263
|
end
|
264
|
+
|
192
265
|
end
|
data/spec/gitlab/help_spec.rb
CHANGED
@@ -13,7 +13,7 @@ describe Gitlab::Help do
|
|
13
13
|
context "ri command NOT found" do
|
14
14
|
it "should raise" do
|
15
15
|
allow(Gitlab::Help).to receive(:`).with(/which ri/).and_return('')
|
16
|
-
expect{Gitlab::Help.ri_cmd}.to raise_error
|
16
|
+
expect{Gitlab::Help.ri_cmd}.to raise_error RuntimeError
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
data/spec/gitlab/request_spec.rb
CHANGED
@@ -7,9 +7,6 @@ describe Gitlab::Request do
|
|
7
7
|
it { should respond_to :delete }
|
8
8
|
before do
|
9
9
|
@request = Gitlab::Request.new
|
10
|
-
@obj_h = Gitlab::ObjectifiedHash.new({user: ['not set'],
|
11
|
-
password: ['too short'],
|
12
|
-
embed_entity: { foo: ['bar'], sna: ['fu'] }})
|
13
10
|
end
|
14
11
|
|
15
12
|
describe ".default_options" do
|
@@ -27,6 +24,10 @@ describe Gitlab::Request do
|
|
27
24
|
it "should return ObjectifiedHash" do
|
28
25
|
body = JSON.unparse({a: 1, b: 2})
|
29
26
|
expect(Gitlab::Request.parse(body)).to be_an Gitlab::ObjectifiedHash
|
27
|
+
expect(Gitlab::Request.parse("true")).to be true
|
28
|
+
expect(Gitlab::Request.parse("false")).to be false
|
29
|
+
|
30
|
+
expect { Gitlab::Request.parse("string") }.to raise_error(Gitlab::Error::Parsing)
|
30
31
|
end
|
31
32
|
end
|
32
33
|
|
@@ -71,12 +72,24 @@ describe Gitlab::Request do
|
|
71
72
|
end
|
72
73
|
|
73
74
|
describe "#handle_error" do
|
75
|
+
before do
|
76
|
+
@array = Array.new(['First message.', 'Second message.'])
|
77
|
+
@obj_h = Gitlab::ObjectifiedHash.new({user: ['not set'],
|
78
|
+
password: ['too short'],
|
79
|
+
embed_entity: { foo: ['bar'], sna: ['fu'] }})
|
80
|
+
end
|
74
81
|
context "when passed an ObjectifiedHash" do
|
75
82
|
it "should return a joined string of error messages sorted by key" do
|
76
83
|
expect(@request.send(:handle_error, @obj_h)).to eq("'embed_entity' (foo: bar) (sna: fu), 'password' too short, 'user' not set")
|
77
84
|
end
|
78
85
|
end
|
79
86
|
|
87
|
+
context "when passed an Array" do
|
88
|
+
it "should return a joined string of messages" do
|
89
|
+
expect(@request.send(:handle_error, @array)).to eq("First message. Second message.")
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
80
93
|
context "when passed a String" do
|
81
94
|
it "should return the String untouched" do
|
82
95
|
error = 'this is an error string'
|