bpescatore-stash 0.3.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.
@@ -0,0 +1,91 @@
1
+ require 'helper'
2
+
3
+ include Atlassian::Stash
4
+ include Atlassian::Stash::Git
5
+
6
+ class TestStashRepoInfo < Minitest::Test
7
+
8
+ context "Extract repository info" do
9
+ should "extract project key and repo slug from Stash remote" do
10
+ Atlassian::Stash::Git.stubs(:get_remotes).returns("origin https://sruiz@stash-dev.atlassian.com/scm/STASH/stash.git (push)")
11
+
12
+ ri = RepoInfo.create({})
13
+ assert_equal 'STASH', ri.projectKey
14
+ assert_equal 'stash', ri.slug
15
+ end
16
+
17
+ should "extracting project key and repo slug from non stash url raises exception" do
18
+ Atlassian::Stash::Git.stubs(:get_remotes).returns("origin git@bitbucket.org:sebr/atlassian-stash-rubygem.git (push)")
19
+ assert_raises(RuntimeError) { RepoInfo.create({}) }
20
+ end
21
+
22
+ should "repo with hyphes" do
23
+ Atlassian::Stash::Git.stubs(:get_remotes).returns("origin https://sruiz@stash-dev.atlassian.com/scm/s745h/stash-repository.git (push)")
24
+ ri = RepoInfo.create({})
25
+ assert_equal 's745h', ri.projectKey
26
+ assert_equal 'stash-repository', ri.slug
27
+ end
28
+ end
29
+
30
+ context "Create repo url" do
31
+ setup do
32
+ Atlassian::Stash::Git.stubs(:get_remotes).returns("origin https://sruiz@stash-dev.atlassian.com/scm/STASH/stash.git (push)")
33
+ end
34
+
35
+ should "create expected repo path" do
36
+ config = {
37
+ 'stash_url' => 'https://www.stash.com'
38
+ }
39
+ ri = RepoInfo.create config
40
+ assert_equal '/projects/STASH/repos/stash', ri.repoPath
41
+ end
42
+
43
+ should "create expected repo path with context" do
44
+ config = {
45
+ 'stash_url' => 'https://www.stash.com/foo'
46
+ }
47
+ ri = RepoInfo.create config
48
+ assert_equal '/foo/projects/STASH/repos/stash', ri.repoPath
49
+ end
50
+
51
+ should "create expected repo path with context and query" do
52
+ config = {
53
+ 'stash_url' => 'https://www.stash.com/foo'
54
+ }
55
+ ri = RepoInfo.create config
56
+ assert_equal '/foo/projects/STASH/repos/stash', ri.repoPath
57
+ end
58
+
59
+ should "create expected repo url with no suffix or branch" do
60
+ config = {
61
+ 'stash_url' => 'https://www.stash.com'
62
+ }
63
+ ri = RepoInfo.create config
64
+ assert_equal 'https://www.stash.com/projects/STASH/repos/stash', ri.repoUrl(nil, nil)
65
+ end
66
+
67
+ should "create expected repo url with context" do
68
+ config = {
69
+ 'stash_url' => 'https://www.stash.com/foo'
70
+ }
71
+ ri = RepoInfo.create config
72
+ assert_equal 'https://www.stash.com/foo/projects/STASH/repos/stash', ri.repoUrl(nil, nil)
73
+ end
74
+
75
+ should "create expected repo url with path and branch" do
76
+ config = {
77
+ 'stash_url' => 'https://www.stash.com/foo'
78
+ }
79
+ ri = RepoInfo.create config
80
+ assert_equal 'https://www.stash.com/foo/projects/STASH/repos/stash/commits?at=develop', ri.repoUrl('commits', 'develop')
81
+ end
82
+
83
+ should "create expected repo url with context, query, path and branch" do
84
+ config = {
85
+ 'stash_url' => 'https://www.stash.com/foo?git=ftw'
86
+ }
87
+ ri = RepoInfo.create config
88
+ assert_equal 'https://www.stash.com/foo/projects/STASH/repos/stash/commits?git=ftw&at=develop', ri.repoUrl('commits', 'develop')
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,103 @@
1
+
2
+ include Atlassian::Util::TextUtil
3
+
4
+ class TextUtilTest < Minitest::Test
5
+
6
+ context "to_sentence_case" do
7
+ should "work with an empty string" do
8
+ assert_equal "", to_sentence_case("")
9
+ end
10
+
11
+ should "work with a single letter" do
12
+ assert_equal "A", to_sentence_case("a")
13
+ end
14
+
15
+ should "work with a single number" do
16
+ assert_equal "1", to_sentence_case("1")
17
+ end
18
+
19
+ should "work with multichar" do
20
+ assert_equal "Abc def", to_sentence_case("abc def")
21
+ end
22
+
23
+ should "coerce boolean false" do
24
+ assert_equal "False", to_sentence_case(false)
25
+ end
26
+
27
+ should "coerce boolean true" do
28
+ assert_equal "True", to_sentence_case(true)
29
+ end
30
+
31
+ should "coerce nil" do
32
+ assert_equal "", to_sentence_case(nil)
33
+ end
34
+
35
+ should "coerce 0" do
36
+ assert_equal "0", to_sentence_case(0)
37
+ end
38
+
39
+ should "coerce 1" do
40
+ assert_equal "1", to_sentence_case(1)
41
+ end
42
+ end
43
+
44
+ context "convert_branch_name_to_sentence" do
45
+
46
+ should "work with branch name with leading issue key" do
47
+ assert_equal "STASHDEV-1234 branch name", convert_branch_name_to_sentence("STASHDEV-1234-branch-name")
48
+ end
49
+
50
+ should "work with branch name with trailing issue key" do
51
+ assert_equal "Branch name STASHDEV-1234", convert_branch_name_to_sentence("branch-name-STASHDEV-1234")
52
+ end
53
+
54
+ should "work with branch name with issue key in middle" do
55
+ assert_equal "Branch STASHDEV-1234 name", convert_branch_name_to_sentence("branch-STASHDEV-1234-name")
56
+ end
57
+
58
+ should "work with branch name with multiple adjacent issue keys" do
59
+ assert_equal "Branch name STASHDEV-1234 STASHDEV-1234", convert_branch_name_to_sentence("branch-name-STASHDEV-1234-STASHDEV-1234")
60
+ end
61
+
62
+ should "work with branch name with no issue keys" do
63
+ assert_equal "Tests branch name", convert_branch_name_to_sentence("tests-branch-name")
64
+ end
65
+
66
+ should "work with branch name with underscore delimiter" do
67
+ assert_equal "Tests branch name", convert_branch_name_to_sentence("tests_branch_name")
68
+ end
69
+
70
+ should "work with branch name with mixed delimiter" do
71
+ assert_equal "Tests branch name", convert_branch_name_to_sentence("tests-branch_name")
72
+ end
73
+
74
+ should "work with single word branch name" do
75
+ assert_equal "Branchname", convert_branch_name_to_sentence("branchname")
76
+ end
77
+
78
+ should "work with slash delimited branch name" do
79
+ assert_equal "Feature/tests/STASHDEV-1234 branch name", convert_branch_name_to_sentence("feature/tests/STASHDEV-1234-branch-name")
80
+ end
81
+
82
+ should "work with slash delimited branch name with issue key component" do
83
+ assert_equal "Feature/STASHDEV-1234/branch name", convert_branch_name_to_sentence("feature/STASHDEV-1234/branch-name")
84
+ end
85
+
86
+ should "work with branch name with invalid issue key (punctuation)" do
87
+ assert_equal "STASHDEV! 1234 branch name", convert_branch_name_to_sentence("STASHDEV!-1234-branch-name")
88
+ end
89
+
90
+ should "work with branch name with invalid issue key (lowercase)" do
91
+ assert_equal "Stashdev 1234 branch name", convert_branch_name_to_sentence("stashdev-1234-branch-name")
92
+ end
93
+
94
+ should "work with branch name with invalid issue key (numbers in project key)" do
95
+ assert_equal "STASHDEV1 1234 branch name", convert_branch_name_to_sentence("STASHDEV1-1234-branch-name")
96
+ end
97
+
98
+ should "work with empty branch name" do
99
+ assert_equal "", convert_branch_name_to_sentence("")
100
+ end
101
+ end
102
+
103
+ end
metadata ADDED
@@ -0,0 +1,241 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bpescatore-stash
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.2
5
+ platform: ruby
6
+ authors:
7
+ - Seb Ruiz
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-11-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: git
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: !binary |-
20
+ MS4yLjU=
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ! '>='
26
+ - !ruby/object:Gem::Version
27
+ version: !binary |-
28
+ MS4yLjU=
29
+ - !ruby/object:Gem::Dependency
30
+ name: json
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ! '>='
34
+ - !ruby/object:Gem::Version
35
+ version: !binary |-
36
+ MS43LjU=
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: !binary |-
44
+ MS43LjU=
45
+ - !ruby/object:Gem::Dependency
46
+ name: commander
47
+ requirement: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ~>
50
+ - !ruby/object:Gem::Version
51
+ version: !binary |-
52
+ NC4xLjI=
53
+ type: :runtime
54
+ prerelease: false
55
+ version_requirements: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ~>
58
+ - !ruby/object:Gem::Version
59
+ version: !binary |-
60
+ NC4xLjI=
61
+ - !ruby/object:Gem::Dependency
62
+ name: launchy
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ~>
66
+ - !ruby/object:Gem::Version
67
+ version: 2.4.2
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ~>
73
+ - !ruby/object:Gem::Version
74
+ version: 2.4.2
75
+ - !ruby/object:Gem::Dependency
76
+ name: shoulda
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ! '>='
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: rdoc
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ~>
94
+ - !ruby/object:Gem::Version
95
+ version: !binary |-
96
+ My4xMg==
97
+ type: :development
98
+ prerelease: false
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ version: !binary |-
104
+ My4xMg==
105
+ - !ruby/object:Gem::Dependency
106
+ name: bundler
107
+ requirement: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ! '>='
110
+ - !ruby/object:Gem::Version
111
+ version: 1.2.0
112
+ type: :development
113
+ prerelease: false
114
+ version_requirements: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: 1.2.0
119
+ - !ruby/object:Gem::Dependency
120
+ name: jeweler
121
+ requirement: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: 2.0.0
126
+ type: :development
127
+ prerelease: false
128
+ version_requirements: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ~>
131
+ - !ruby/object:Gem::Version
132
+ version: 2.0.0
133
+ - !ruby/object:Gem::Dependency
134
+ name: rcov
135
+ requirement: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ! '>='
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ type: :development
141
+ prerelease: false
142
+ version_requirements: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ! '>='
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ - !ruby/object:Gem::Dependency
148
+ name: simplecov
149
+ requirement: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ! '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ type: :development
155
+ prerelease: false
156
+ version_requirements: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ! '>='
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ - !ruby/object:Gem::Dependency
162
+ name: minitest
163
+ requirement: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ! '>='
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ type: :development
169
+ prerelease: false
170
+ version_requirements: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ! '>='
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ - !ruby/object:Gem::Dependency
176
+ name: mocha
177
+ requirement: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ! '>='
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ type: :development
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ! '>='
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ description: Provides convenient functions for interacting with Atlassian Stash through
190
+ the command line
191
+ email: bpescatore@mocana.com
192
+ executables:
193
+ - stash
194
+ extensions: []
195
+ extra_rdoc_files:
196
+ - LICENSE.txt
197
+ - README.md
198
+ files:
199
+ - .document
200
+ - Gemfile
201
+ - LICENSE.txt
202
+ - README.md
203
+ - Rakefile
204
+ - VERSION
205
+ - bin/stash
206
+ - lib/atlassian/stash/git.rb
207
+ - lib/atlassian/stash/pull_request.rb
208
+ - lib/atlassian/stash/repo_info.rb
209
+ - lib/atlassian/stash/version.rb
210
+ - lib/atlassian/util/text_util.rb
211
+ - lib/stash_cli.rb
212
+ - test/helper.rb
213
+ - test/test_stash-create-pull-request.rb
214
+ - test/test_stash-git.rb
215
+ - test/test_stash-repo-info.rb
216
+ - test/test_text-util.rb
217
+ homepage: https://bitbucket.org/atlassian/stash-command-line-tools
218
+ licenses:
219
+ - MIT
220
+ metadata: {}
221
+ post_install_message:
222
+ rdoc_options: []
223
+ require_paths:
224
+ - lib
225
+ required_ruby_version: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ! '>='
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ required_rubygems_version: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - ! '>='
233
+ - !ruby/object:Gem::Version
234
+ version: '0'
235
+ requirements: []
236
+ rubyforge_project:
237
+ rubygems_version: 2.4.2
238
+ signing_key:
239
+ specification_version: 4
240
+ summary: Command line tools for Atlassian Stash
241
+ test_files: []