txgh 7.0.1 → 7.0.3.beta4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cdb50c066c21ad6c3ca33db9e53e10a199bb02e4a4e814d73860c929d04322f7
4
- data.tar.gz: c9a9ed9b5e8bd74341c26b7449e95ad3f6a657ed7fbe2d42db927a7ad0635035
3
+ metadata.gz: 48e0eadcdb6ad07122b1373f84e39dbc8d219ae3cd2000c85cbdcd901ef4cd62
4
+ data.tar.gz: ee74522f8b4b97b0f0a2fd83a032e3f8a8734afb9f57e004d5dd7be4ffbccd36
5
5
  SHA512:
6
- metadata.gz: 06e7187ef0979e02ad65e91f6d8c91ecb86aa5760909f125e927cf69b5c7c21351c25ab7d6bbccbc64c8400e86603992d9d2e0f50a8879131c47c68b950827af
7
- data.tar.gz: 16875e8594818e3408c149b4313746c77c9b87bedbe23038ea395a85ce0b6ef300d5df2fd732140389cd02fdb402cb88a3ba2157ce3eccbe4dc64047858f95fe
6
+ metadata.gz: 8bfa277f9876adccb9bbbe8c01576bc08ed4294054afb522c49e97b5127d3cb2f4e355c847964405a6a764e29f9b6a220cac43b79923c4ac866a607bcce9d2ef
7
+ data.tar.gz: 972253d27b545b8ffa9e8f7b4793a8d96cd3259917d2a16b3900219798ed6006a22e632ffcb86229dd80a1caad51201185aaf29010ffefb7230a747ed2637f0a
@@ -33,10 +33,6 @@ module Txgh
33
33
 
34
34
  private
35
35
 
36
- def download
37
- raise NotImplementedError
38
- end
39
-
40
36
  def ref
41
37
  unless @ref
42
38
  raise TxghError,
@@ -1,4 +1,4 @@
1
- require 'celluloid/current'
1
+ require 'celluloid/autostart'
2
2
 
3
3
  module Txgh
4
4
  class GitStatus
@@ -42,13 +42,13 @@ module Txgh
42
42
  # mock github response
43
43
  {
44
44
  object: {
45
- sha: client.commit(repo_name, ref.gsub('heads/', '')).short_id
45
+ sha: client.commit(repo_name, Utils.url_safe_relative_branch(ref)).short_id
46
46
  }
47
47
  }
48
48
  end
49
49
 
50
50
  def download(path, branch)
51
- file = client.get_file(repo_name, path, branch.gsub('heads/', ''))
51
+ file = client.get_file(repo_name, path, Utils.relative_branch(branch))
52
52
 
53
53
  # mock github response
54
54
  {
@@ -58,7 +58,10 @@ module Txgh
58
58
  end
59
59
 
60
60
  def create_status(sha, state, options = {})
61
- client.update_commit_status(repo_name, sha, state, options)
61
+ client.update_commit_status(repo_name, Utils.url_safe_relative_branch(sha), state, options)
62
+ rescue ::Gitlab::Error::BadRequest => error
63
+ # Gitlab pipeline may have several jobs and txgh should not override commit statuses set by others
64
+ raise error unless error.message.include?('Cannot transition status')
62
65
  end
63
66
  end
64
67
  end
@@ -24,6 +24,10 @@ module Txgh
24
24
  branch.strip.sub(/\A(heads|tags)\//, '')
25
25
  end
26
26
 
27
+ def url_safe_relative_branch(branch)
28
+ CGI.escape(relative_branch(branch))
29
+ end
30
+
27
31
  def branches_equal?(first, second)
28
32
  absolute_branch(first) == absolute_branch(second)
29
33
  end
@@ -1,3 +1,3 @@
1
1
  module Txgh
2
- VERSION = '7.0.1'
2
+ VERSION = '7.0.3.beta4'
3
3
  end
@@ -5,7 +5,6 @@ describe Txgh::GitlabApi do
5
5
  let(:client) { double(:client) }
6
6
  let(:api) { described_class.create_from_client(client, repo) }
7
7
  let(:repo) { 'my_org/my_repo' }
8
- let(:branch) { 'master' }
9
8
  let(:sha) { 'abc123' }
10
9
  let(:gitlab_response) do
11
10
  OpenStruct.new({
@@ -18,23 +17,19 @@ describe Txgh::GitlabApi do
18
17
  })
19
18
  end
20
19
 
21
- describe '#update_contents' do
22
- let(:path) { 'path/to/file.txt' }
23
- let(:old_contents) { 'abc123' }
24
- let(:old_sha) { Txgh::Utils.git_hash_blob(old_contents) }
25
-
20
+ shared_examples 'an update_contents flow' do
26
21
  it 'updates the given file contents' do
27
22
  new_contents = 'def456'
28
23
 
29
24
  expect(client).to(
30
25
  receive(:get_file)
31
- .with(repo, path, branch)
26
+ .with(repo, path, filtered_branch)
32
27
  .and_return(double(blob_id: old_sha))
33
28
  )
34
29
 
35
30
  expect(client).to(
36
31
  receive(:edit_file)
37
- .with(repo, path, branch, new_contents, 'message')
32
+ .with(repo, path, filtered_branch, new_contents, 'message')
38
33
  )
39
34
 
40
35
  api.update_contents(branch, [{ path: path, contents: new_contents }], 'message')
@@ -43,7 +38,7 @@ describe Txgh::GitlabApi do
43
38
  it "doesn't update the file contents if the file hasn't changed" do
44
39
  expect(client).to(
45
40
  receive(:get_file)
46
- .with(repo, path, branch)
41
+ .with(repo, path, filtered_branch)
47
42
  .and_return(double(blob_id: old_sha))
48
43
  )
49
44
 
@@ -58,27 +53,18 @@ describe Txgh::GitlabApi do
58
53
 
59
54
  expect(client).to(
60
55
  receive(:edit_file)
61
- .with(repo, path, branch, new_contents, 'message')
56
+ .with(repo, path, filtered_branch, new_contents, 'message')
62
57
  )
63
58
 
64
59
  api.update_contents(branch, [{ path: path, contents: new_contents }], 'message')
65
60
  end
66
61
  end
67
62
 
68
- describe '#get_ref' do
69
- it 'retrieves the given ref (i.e. branch) using the client' do
70
- expect(client).to receive(:commit).with(repo, sha) { double(short_id: '0') }
71
- api.get_ref(sha)
72
- end
73
- end
74
-
75
- describe '#download' do
76
- let(:path) { 'path/to/file.xyz' }
77
-
63
+ shared_examples 'a download flow' do
78
64
  it 'downloads the file from the given branch' do
79
65
  expect(client).to(
80
66
  receive(:get_file)
81
- .with(repo, path, branch)
67
+ .with(repo, path, filtered_branch)
82
68
  .and_return(double(content: 'content', encoding: 'utf-8'))
83
69
  )
84
70
 
@@ -90,7 +76,7 @@ describe Txgh::GitlabApi do
90
76
 
91
77
  expect(client).to(
92
78
  receive(:get_file)
93
- .with(repo, path, branch)
79
+ .with(repo, path, filtered_branch)
94
80
  .and_return(double(content: content, encoding: 'utf-16'))
95
81
  )
96
82
 
@@ -102,11 +88,96 @@ describe Txgh::GitlabApi do
102
88
  it 'automatically decodes base64-encoded content' do
103
89
  expect(client).to(
104
90
  receive(:get_file)
105
- .with(repo, path, branch)
91
+ .with(repo, path, filtered_branch)
106
92
  .and_return(double(content: Base64.encode64('content'), encoding: 'base64'))
107
93
  )
108
94
 
109
95
  expect(api.download(path, branch)).to eq({ content: 'content', path: path })
110
96
  end
111
97
  end
98
+
99
+ describe '#update_contents' do
100
+ let(:path) { 'path/to/file.txt' }
101
+ let(:old_contents) { 'abc123' }
102
+ let(:old_sha) { Txgh::Utils.git_hash_blob(old_contents) }
103
+
104
+ context 'when master branch' do
105
+ let(:branch) { 'master' }
106
+ let(:filtered_branch) { 'master' }
107
+
108
+ it_behaves_like 'an update_contents flow'
109
+ end
110
+
111
+ context 'when feature branch' do
112
+ let(:branch) { 'heads/feature/foo-ticket' }
113
+ let(:filtered_branch) { 'feature/foo-ticket' }
114
+
115
+ it_behaves_like 'an update_contents flow'
116
+ end
117
+ end
118
+
119
+ describe '#get_ref' do
120
+ context 'when ref is a sha' do
121
+ it 'retrieves the given ref (i.e. branch) using the client' do
122
+ expect(client).to receive(:commit).with(repo, sha) { double(short_id: '0') }
123
+ api.get_ref(sha)
124
+ end
125
+ end
126
+
127
+ context 'when ref is a master branch' do
128
+ let(:sha) { 'master' }
129
+
130
+ it 'retrieves the given ref (i.e. branch) using the client' do
131
+ expect(client).to receive(:commit).with(repo, sha) { double(short_id: '0') }
132
+ api.get_ref(sha)
133
+ end
134
+ end
135
+
136
+ context 'when ref is a feature branch' do
137
+ let(:sha) { 'feature/foo-ticket' }
138
+ let(:url_safe_sha) { 'feature%2Ffoo-ticket' }
139
+
140
+ it 'retrieves the given ref (i.e. branch) using the client' do
141
+ expect(client).to receive(:commit).with(repo, url_safe_sha) { double(short_id: '0') }
142
+ api.get_ref(sha)
143
+ end
144
+ end
145
+ end
146
+
147
+ describe '#download' do
148
+ let(:path) { 'path/to/file.xyz' }
149
+
150
+ context 'when master branch' do
151
+ let(:branch) { 'master' }
152
+ let(:filtered_branch) { 'master' }
153
+
154
+ it_behaves_like 'a download flow'
155
+ end
156
+
157
+ context 'when feature branch' do
158
+ let(:branch) { 'heads/feature/foo-ticket' }
159
+ let(:filtered_branch) { 'feature/foo-ticket' }
160
+
161
+ it_behaves_like 'a download flow'
162
+ end
163
+ end
164
+
165
+ describe '#create_status' do
166
+ let(:gitlab_response) do
167
+ OpenStruct.new({
168
+ code: 404,
169
+ request: double(base_uri: 'https://gitlab.com/api/v3', path: '/foo'),
170
+ parsed_response: Gitlab::ObjectifiedHash.new(
171
+ error_description: 'Cannot transition status via :enqueue from :pending',
172
+ error: 'also will not be displayed'
173
+ )
174
+ })
175
+ end
176
+
177
+ it 'does not raise error if cannot change status' do
178
+ expect(client).to receive(:update_commit_status).and_raise(::Gitlab::Error::BadRequest.new(gitlab_response))
179
+
180
+ api.create_status('sha', 'state', {})
181
+ end
182
+ end
112
183
  end
@@ -47,6 +47,20 @@ describe Txgh::Utils do
47
47
  end
48
48
  end
49
49
 
50
+ describe '.url_safe_relative_branch' do
51
+ it 'removes tags/ if present' do
52
+ expect(described_class.url_safe_relative_branch('tags/feature/foobar')).to eq('feature%2Ffoobar')
53
+ end
54
+
55
+ it 'removes heads/ if present' do
56
+ expect(described_class.url_safe_relative_branch('heads/foobar')).to eq('foobar')
57
+ end
58
+
59
+ it 'does nothing if no prefix can be removed' do
60
+ expect(described_class.url_safe_relative_branch('feature/foo-ticket')).to eq('feature%2Ffoo-ticket')
61
+ end
62
+ end
63
+
50
64
  describe '.is_tag?' do
51
65
  it 'returns true if given a tag' do
52
66
  expect(described_class.is_tag?('tags/foo')).to eq(true)
@@ -13,12 +13,12 @@ Gem::Specification.new do |s|
13
13
  s.platform = Gem::Platform::RUBY
14
14
 
15
15
  s.add_dependency 'abroad', '~> 4.6'
16
- s.add_dependency 'celluloid'
16
+ s.add_dependency 'celluloid', '~> 0.18.0'
17
17
  s.add_dependency 'faraday', '0.17.3'
18
18
  s.add_dependency 'faraday_middleware', '0.14.0'
19
- s.add_dependency 'json', '~> 1.8'
19
+ s.add_dependency 'json', '~> 2.3'
20
20
  s.add_dependency 'octokit', '~> 4.2'
21
- s.add_dependency 'gitlab', '~> 4.14'
21
+ s.add_dependency 'gitlab', '~> 4.17'
22
22
  s.add_dependency 'parseconfig', '~> 1.0'
23
23
 
24
24
  s.require_path = 'lib'
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: txgh
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.0.1
4
+ version: 7.0.3.beta4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Jackowski
8
8
  - Cameron Dutro
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-03-31 00:00:00.000000000 Z
12
+ date: 2021-01-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: abroad
@@ -29,16 +29,16 @@ dependencies:
29
29
  name: celluloid
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ">="
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '0'
34
+ version: 0.18.0
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ">="
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '0'
41
+ version: 0.18.0
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: faraday
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -73,14 +73,14 @@ dependencies:
73
73
  requirements:
74
74
  - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: '1.8'
76
+ version: '2.3'
77
77
  type: :runtime
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - "~>"
82
82
  - !ruby/object:Gem::Version
83
- version: '1.8'
83
+ version: '2.3'
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: octokit
86
86
  requirement: !ruby/object:Gem::Requirement
@@ -101,14 +101,14 @@ dependencies:
101
101
  requirements:
102
102
  - - "~>"
103
103
  - !ruby/object:Gem::Version
104
- version: '4.14'
104
+ version: '4.17'
105
105
  type: :runtime
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
109
  - - "~>"
110
110
  - !ruby/object:Gem::Version
111
- version: '4.14'
111
+ version: '4.17'
112
112
  - !ruby/object:Gem::Dependency
113
113
  name: parseconfig
114
114
  requirement: !ruby/object:Gem::Requirement
@@ -213,7 +213,7 @@ files:
213
213
  homepage: https://github.com/lumoslabs/txgh
214
214
  licenses: []
215
215
  metadata: {}
216
- post_install_message:
216
+ post_install_message:
217
217
  rdoc_options: []
218
218
  require_paths:
219
219
  - lib
@@ -224,13 +224,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
224
224
  version: '0'
225
225
  required_rubygems_version: !ruby/object:Gem::Requirement
226
226
  requirements:
227
- - - ">="
227
+ - - ">"
228
228
  - !ruby/object:Gem::Version
229
- version: '0'
229
+ version: 1.3.1
230
230
  requirements: []
231
- rubyforge_project:
232
- rubygems_version: 2.7.6
233
- signing_key:
231
+ rubyforge_project:
232
+ rubygems_version: 2.7.6.2
233
+ signing_key:
234
234
  specification_version: 4
235
235
  summary: A library for syncing translation resources between Github and Transifex.
236
236
  test_files: []