gitarro 0.1.56 → 0.1.70

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 66c7a56331a26d15804e98a354e00de75b7a9c08
4
- data.tar.gz: 18914ad11c07fba2e904a50cd28e1f993f343208
3
+ metadata.gz: 2a2a34d84599e596da7d621b259fc5d28e0595d1
4
+ data.tar.gz: d625f03c948ff34129250332dffbc0fdb930f7bc
5
5
  SHA512:
6
- metadata.gz: 44ef09f2898c29b82d5a7feecaa57965e3448d94c4a0e8954350f8ef4b8bef61d46f0bd30bfd5787f0d21c7e3eeb2477215e2aa85234ffd454d9b6db0c593f6b
7
- data.tar.gz: ca747b9497342c94d91e9ef654ddf10ababbe2dcba7311ce5a8ad0b38dc762d696ca61c93598803e73fe5d45a9f3f68744d6ad035fd5a8fa5324920e40b876d5
6
+ metadata.gz: 2f6dedf76a39c784378cf4430f53f65d328269f3b8774e6d614f45cbfe03e4d0e92cee3566fef946a071d26515cc861ec167a3a02d2748c6916d1c335c9d2c3c
7
+ data.tar.gz: 660e5aecfd92a15f21407b494da427241d03b7c493883b9cbe3be203802e7280d9a598b743bd688fb2da9677db1e170923484ce4d5640065a3cf3440ebba424c
@@ -84,15 +84,11 @@ class TestExecutor
84
84
 
85
85
  # this will clone the repo and execute the tests
86
86
  def pr_test(pr)
87
- git = GitOp.new(@git_dir, pr, @options)
88
- # merge PR-branch to upstream branch
89
- git.merge_pr_totarget(pr.base.ref, pr.head.ref)
87
+ clone_repo(@noshallow)
90
88
  # export variables
91
89
  export_pr_variables(pr)
92
90
  # do valid tests and store the result
93
91
  test_status = run_script
94
- # del branch
95
- git.del_pr_branch(pr.base.ref, pr.head.ref)
96
92
  test_status
97
93
  end
98
94
 
@@ -105,6 +101,23 @@ class TestExecutor
105
101
 
106
102
  private
107
103
 
104
+ def clone_repo(noshallow)
105
+ shallow = GitShallowClone.new(@git_dir, pr, @options)
106
+ # by default we use always shallow clone
107
+ unless noshallow
108
+ shallow.clone
109
+ return
110
+ end
111
+ # this is for using the merging to ref
112
+ full_clone
113
+ end
114
+
115
+ def full_clone
116
+ git = GitOp.new(@git_dir, pr, @options)
117
+ git.merge_pr_totarget(pr.base.ref, pr.head.ref)
118
+ git.del_pr_branch(pr.base.ref, pr.head.ref)
119
+ end
120
+
108
121
  def export_pr_variables(pr)
109
122
  ENV['GITARRO_PR_AUTHOR'] = pr.head.user.login.to_s
110
123
  ENV['GITARRO_PR_TITLE'] = pr.title.to_s
@@ -3,6 +3,39 @@
3
3
  require 'English'
4
4
  require 'fileutils'
5
5
  require 'timeout'
6
+ require 'tmpdir'
7
+
8
+ # handle shallow clone
9
+ class GitShallowClone
10
+ attr_reader :git_dir, :pr, :options, :repo_protocol
11
+ def initialize(git_dir, pr, options)
12
+ @git_dir = git_dir
13
+ # pr object for extract all relev. data.
14
+ @pr = pr
15
+ # All gitarro options
16
+ @options = options
17
+ gh = 'https://github.com/'
18
+ gg = 'git@github.com:'
19
+ @repo_protocol = @options[:https] ? gh : gg
20
+ @repo_url = @options[:https] ? pr.head.repo.html_url : pr.head.repo.ssh_url
21
+ end
22
+
23
+ # shallow clone
24
+ def clone
25
+ tmp_dir = create_tmp_dir!
26
+ git_local = "#{git_dir}/#{tmp_dir}"
27
+ puts `git clone --depth 1 #{@repo_url} -b #{pr.head.ref} #{git_local}`
28
+ exit 1 if $CHILD_STATUS.exitstatus.nonzero?
29
+ Dir.chdir git_local
30
+ end
31
+
32
+ private
33
+
34
+ def create_tmp_dir!
35
+ repo = options[:repo].split('/')[1]
36
+ "#{repo}#{Time.now.to_i}_#{rand(100)}"
37
+ end
38
+ end
6
39
 
7
40
  # This class is used by lib/backend.rb
8
41
  # git operation for gitarro
@@ -22,21 +22,11 @@ module MandatoryOptions
22
22
  end
23
23
  end
24
24
 
25
- def git_opt(opt)
26
- desc = 'Specify a location where gitarro will clone the GitHub project. '\
27
- 'If the dir does not exists, gitarro will create one. '\
28
- 'For example: /tmp/'
29
- opt.on('-g', "--git_dir 'GIT_LOCAL_DIR'", desc) do |git_dir|
30
- @options[:git_dir] = git_dir
31
- end
32
- end
33
-
34
25
  def mandatory_options(opt)
35
26
  opt.separator 'Mandatory options:'
36
27
  repo_opt(opt)
37
28
  context_opt(opt)
38
29
  test_opt(opt)
39
- git_opt(opt)
40
30
  end
41
31
  end
42
32
 
@@ -47,12 +37,26 @@ module OptionalOptions
47
37
  opt.on('-C', '--check', desc) { |check| @options[:check] = check }
48
38
  end
49
39
 
40
+ def no_shallow(opt)
41
+ desc = 'If enabled, gitarro will not use git shallow clone'
42
+ opt.on('--noshallow', desc) { |noshallow| @options[:noshallow] = noshallow }
43
+ end
44
+
50
45
  def desc_opt(opt)
51
46
  opt.on('-d', "--description 'DESCRIPTION'", 'Test decription') do |d|
52
47
  @options[:description] = d
53
48
  end
54
49
  end
55
50
 
51
+ def git_opt(opt)
52
+ desc = 'Specify a location where gitarro will clone the GitHub project. '\
53
+ 'If the dir does not exists, gitarro will create one. '\
54
+ 'by default is the /tmp'
55
+ opt.on('-g', "--git_dir 'GIT_LOCAL_DIR'", desc) do |git_dir|
56
+ @options[:git_dir] = git_dir
57
+ end
58
+ end
59
+
56
60
  def url_opt(opt)
57
61
  desc = 'Specify the URL to append to add to the GitHub review. ' \
58
62
  'Usually you will use an URL to the Jenkins build log.'
@@ -95,11 +99,13 @@ module OptionalOptions
95
99
  opt.separator "\n Optional options:"
96
100
  desc_opt(opt)
97
101
  check_opt(opt)
102
+ no_shallow(opt)
98
103
  file_opt(opt)
99
104
  url_opt(opt)
100
105
  pr_number(opt)
101
106
  https_opt(opt)
102
107
  changed_since(opt)
108
+ git_opt(opt)
103
109
  end
104
110
  end
105
111
 
@@ -127,7 +133,7 @@ class OptParserInternal
127
133
 
128
134
  def parse(opt_parser)
129
135
  parse_options(opt_parser)
130
- mandatory_options = %w[repo context test_file git_dir]
136
+ mandatory_options = %w[repo context test_file]
131
137
  mandatory_options.each { |opt| ck_mandatory_option(opt) }
132
138
  defaults_false
133
139
  defaults_to_text
@@ -159,6 +165,7 @@ class OptParserInternal
159
165
  @options[:check] = false if @options[:check].nil?
160
166
  @options[:target_url] = '' if @options[:target_url].nil?
161
167
  @options[:https] = false if @options[:https].nil?
168
+ @options[:noshallow] = false if @options[:noshallow].nil?
162
169
  @options[:changed_since] = -1 if @options[:changed_since].nil?
163
170
  end
164
171
 
@@ -166,6 +173,7 @@ class OptParserInternal
166
173
  desc = 'use option -d to set a custom test description.'
167
174
  @options[:description] = desc if @options[:description].nil?
168
175
  @options[:file_type] = 'notype' if @options[:file_type].nil?
176
+ @options[:git_dir] = '/tmp' if @options[:git_dir].nil?
169
177
  end
170
178
  end
171
179
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitarro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.56
4
+ version: 0.1.70
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dario Maiocchi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-02 00:00:00.000000000 Z
11
+ date: 2017-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: english
@@ -168,7 +168,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
168
168
  version: '0'
169
169
  requirements: []
170
170
  rubyforge_project:
171
- rubygems_version: 2.5.2
171
+ rubygems_version: 2.5.1
172
172
  signing_key:
173
173
  specification_version: 4
174
174
  summary: gitarro gem