git_lib 1.2.0 → 1.3.0.pre.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/build.yml +27 -0
- data/.github/workflows/gem_release.yml +1 -1
- data/CHANGELOG.md +5 -0
- data/Gemfile.lock +1 -1
- data/lib/git/git.rb +1 -1
- data/lib/git/git_commit.rb +3 -2
- data/lib/git/git_test_helpers.rb +3 -2
- data/lib/git/version.rb +1 -1
- data/spec/lib/git/git_branch_spec.rb +1 -1
- data/spec/lib/git/git_commit_spec.rb +24 -0
- data/spec/lib/git/git_conflict_spec.rb +1 -1
- data/spec/lib/git/git_error_spec.rb +1 -1
- data/spec/lib/git/git_spec.rb +13 -11
- data/spec/spec_helper.rb +10 -0
- metadata +7 -6
- data/.jenkins/Jenkinsfile +0 -72
- data/.jenkins/ruby_build_pod.yml +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b67afe61368367e9d2eb9465a835b27710832495d8a8b404408c3d8248a93180
|
4
|
+
data.tar.gz: 6f661d3724d7d67c851b8620c5ac6e4fa05bb4124241509de5a781a9c64d2750
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c907b7a750ee58d1a639633e7df7b7e7de6978b5f5aecb0c1c4b4fd95f1bc4e93b5bd507a912b010bf93abfecb02ca3e525f190f363ebc7f42bb69a1dc371902
|
7
|
+
data.tar.gz: a61b0196e8be976b61df55fc268ec8d1058d227c89d247fe9e6f936979c3564a52b53619ae11864320cdb82100fc652cc4b2f7430f8978136df9df61d8665338
|
@@ -0,0 +1,27 @@
|
|
1
|
+
---
|
2
|
+
name: Build
|
3
|
+
on: [push]
|
4
|
+
jobs:
|
5
|
+
tests:
|
6
|
+
name: Unit Tests
|
7
|
+
runs-on: ubuntu-latest
|
8
|
+
strategy:
|
9
|
+
fail-fast: false
|
10
|
+
matrix:
|
11
|
+
ruby: [2.5, 2.6]
|
12
|
+
gemfile:
|
13
|
+
- Gemfile
|
14
|
+
- gemfiles/rails_4.gemfile
|
15
|
+
- gemfiles/rails_5.gemfile
|
16
|
+
- gemfiles/rails_6.gemfile
|
17
|
+
env:
|
18
|
+
BUNDLE_GEMFILE: ${{ matrix.gemfile }}
|
19
|
+
steps:
|
20
|
+
- uses: actions/checkout@v2
|
21
|
+
- uses: ruby/setup-ruby@v1
|
22
|
+
with:
|
23
|
+
ruby-version: ${{ matrix.ruby }}
|
24
|
+
bundler: 1.17.3
|
25
|
+
bundler-cache: true
|
26
|
+
- name: Unit tests
|
27
|
+
run: bundle exec rspec
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,10 @@ Inspired by [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
4
4
|
|
5
5
|
Note: this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
6
6
|
|
7
|
+
## [1.3.0] - Unreleased
|
8
|
+
### Added
|
9
|
+
- Add `repository:` to `GitCommit`.
|
10
|
+
|
7
11
|
## [1.2.0] - 2020-07-13
|
8
12
|
### Added
|
9
13
|
- Add support for Rails 5 and 6.
|
@@ -20,5 +24,6 @@ Note: this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0
|
|
20
24
|
- Add magic frozen_string_literal: true comment everywhere.
|
21
25
|
- Clean up Rakefile.
|
22
26
|
|
27
|
+
[1.3.0]: https://github.com/Invoca/git_lib/compare/v1.2.0...v1.3.0
|
23
28
|
[1.2.0]: https://github.com/Invoca/git_lib/compare/v1.1.1...v1.2.0
|
24
29
|
[1.1.1]: https://github.com/Invoca/git_lib/compare/v1.1.0...v1.1.1
|
data/Gemfile.lock
CHANGED
data/lib/git/git.rb
CHANGED
@@ -163,7 +163,7 @@ module Git
|
|
163
163
|
)
|
164
164
|
raw_output.split("\n").map do |row|
|
165
165
|
commit_data = row.split("\t")
|
166
|
-
GitCommit.new(commit_data[0], commit_data[4], DateTime.iso8601(commit_data[3]), commit_data[1], commit_data[2])
|
166
|
+
GitCommit.new(commit_data[0], commit_data[4], DateTime.iso8601(commit_data[3]), commit_data[1], commit_data[2], repository_name: @repository_name)
|
167
167
|
end
|
168
168
|
end
|
169
169
|
|
data/lib/git/git_commit.rb
CHANGED
@@ -2,14 +2,15 @@
|
|
2
2
|
|
3
3
|
module Git
|
4
4
|
class GitCommit
|
5
|
-
attr_reader :sha, :message, :commit_date, :author_name, :author_email
|
5
|
+
attr_reader :repository_name, :sha, :message, :commit_date, :author_name, :author_email
|
6
6
|
|
7
|
-
def initialize(sha, message, commit_date, author_name, author_email)
|
7
|
+
def initialize(sha, message, commit_date, author_name, author_email, repository_name:)
|
8
8
|
@sha = sha
|
9
9
|
@message = message
|
10
10
|
@commit_date = commit_date
|
11
11
|
@author_email = author_email
|
12
12
|
@author_name = author_name
|
13
|
+
@repository_name = repository_name
|
13
14
|
end
|
14
15
|
|
15
16
|
def to_s
|
data/lib/git/git_test_helpers.rb
CHANGED
@@ -23,12 +23,13 @@ module Git
|
|
23
23
|
GitConflict.new(repository_name, branch_a_name, branch_b_name, file_list)
|
24
24
|
end
|
25
25
|
|
26
|
-
def self.create_commit(
|
26
|
+
def self.create_commit(repository_name: 'repository',
|
27
|
+
sha: '1234567890123456789012345678901234567890',
|
27
28
|
message: 'Commit message',
|
28
29
|
author_name: 'Author Name',
|
29
30
|
author_email: 'author@email.com',
|
30
31
|
commit_date: Time.current)
|
31
|
-
GitCommit.new(sha, message, commit_date, author_name, author_email)
|
32
|
+
GitCommit.new(sha, message, commit_date, author_name, author_email, repository_name: repository_name)
|
32
33
|
end
|
33
34
|
|
34
35
|
def self.create_sha
|
data/lib/git/version.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
require_relative '../../../lib/git/git_branch.rb'
|
5
5
|
|
6
|
-
describe 'Git::GitBranch' do
|
6
|
+
RSpec.describe 'Git::GitBranch' do
|
7
7
|
it 'can be created' do
|
8
8
|
last_modified_date = Time.current
|
9
9
|
branch = Git::GitBranch.new('repository_name', 'name', last_modified_date, 'author_name', 'author@email.com')
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require_relative '../../../lib/git/git_commit.rb'
|
5
|
+
|
6
|
+
RSpec.describe Git::GitCommit do
|
7
|
+
let(:sha) { 'aabb2345' }
|
8
|
+
let(:message) { 'TECH-1234: update comments' }
|
9
|
+
let(:commit_date) { '2021-08-23 10:03:00 -0700' }
|
10
|
+
let(:author_name) { 'John Doe' }
|
11
|
+
let(:author_email) { 'john@doe.com' }
|
12
|
+
let(:repository_name) { 'repository_name' }
|
13
|
+
|
14
|
+
it 'can be created' do
|
15
|
+
commit = Git::GitCommit.new(sha, message, commit_date, author_name, author_email, repository_name: repository_name)
|
16
|
+
|
17
|
+
expect(commit.sha).to eq(sha)
|
18
|
+
expect(commit.message).to eq(message)
|
19
|
+
expect(commit.commit_date).to eq(commit_date)
|
20
|
+
expect(commit.author_name).to eq(author_name)
|
21
|
+
expect(commit.author_email).to eq(author_email)
|
22
|
+
expect(commit.repository_name).to eq(repository_name)
|
23
|
+
end
|
24
|
+
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
require_relative '../../../lib/git/git_conflict.rb'
|
5
5
|
|
6
|
-
describe 'Git::GitConflict' do
|
6
|
+
RSpec.describe 'Git::GitConflict' do
|
7
7
|
it 'can be created' do
|
8
8
|
conflict = Git::GitConflict.new('repository_name', 'branch_a', 'branch_b', ['file1', 'file2'])
|
9
9
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
require_relative '../../../lib/git/git_error.rb'
|
5
5
|
|
6
|
-
describe 'Git::GitError' do
|
6
|
+
RSpec.describe 'Git::GitError' do
|
7
7
|
it 'can be raised' do
|
8
8
|
expect { raise Git::GitError.new('command', 200, 'error_message') }.to \
|
9
9
|
raise_exception(Git::GitError, "Git command command failed with exit code 200. Message:\nerror_message")
|
data/spec/lib/git/git_spec.rb
CHANGED
@@ -4,7 +4,7 @@ require 'spec_helper'
|
|
4
4
|
require_relative '../../../lib/git/git.rb'
|
5
5
|
|
6
6
|
# rubocop:disable Metrics/LineLength
|
7
|
-
describe 'Git::Git' do
|
7
|
+
RSpec.describe 'Git::Git' do
|
8
8
|
include FakeFS::SpecHelpers
|
9
9
|
|
10
10
|
def create_mock_open_status(status)
|
@@ -28,15 +28,17 @@ describe 'Git::Git' do
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
+
let(:repository_name) { 'repository_name' }
|
32
|
+
|
31
33
|
it 'can be created' do
|
32
|
-
git = Git::Git.new(
|
34
|
+
git = Git::Git.new(repository_name)
|
33
35
|
|
34
36
|
expect(git.repository_url).to eq('git@github.com:repository_name.git')
|
35
37
|
expect(git.repository_path).to eq('/tmp/git/repository_name')
|
36
38
|
end
|
37
39
|
|
38
40
|
it 'can be created with a different cache path' do
|
39
|
-
git = Git::Git.new(
|
41
|
+
git = Git::Git.new(repository_name, git_cache_path: './mycache')
|
40
42
|
|
41
43
|
expect(git.repository_url).to eq('git@github.com:repository_name.git')
|
42
44
|
expect(git.repository_path).to eq('./mycache/repository_name')
|
@@ -44,7 +46,7 @@ describe 'Git::Git' do
|
|
44
46
|
|
45
47
|
context 'with a git repository' do
|
46
48
|
before do
|
47
|
-
@git = Git::Git.new(
|
49
|
+
@git = Git::Git.new(repository_name)
|
48
50
|
end
|
49
51
|
|
50
52
|
it 'can execute a command' do
|
@@ -145,21 +147,21 @@ describe 'Git::Git' do
|
|
145
147
|
|
146
148
|
branch_list = []
|
147
149
|
branch_list << Git::GitBranch.new(
|
148
|
-
|
150
|
+
repository_name,
|
149
151
|
'test_1',
|
150
152
|
DateTime.iso8601('2015-10-19T17:58:24-0700'),
|
151
153
|
'Nicholas Ellis',
|
152
154
|
'nellis@invoca.com'
|
153
155
|
)
|
154
156
|
branch_list << Git::GitBranch.new(
|
155
|
-
|
157
|
+
repository_name,
|
156
158
|
'test_build',
|
157
159
|
DateTime.iso8601('2015-10-19T15:03:22-0700'),
|
158
160
|
'Bob Smith',
|
159
161
|
'bob@invoca.com'
|
160
162
|
)
|
161
163
|
branch_list << Git::GitBranch.new(
|
162
|
-
|
164
|
+
repository_name,
|
163
165
|
'test_build_b',
|
164
166
|
DateTime.iso8601('2015-10-19T16:52:40-0700'),
|
165
167
|
'Nicholas Ellis',
|
@@ -186,7 +188,7 @@ describe 'Git::Git' do
|
|
186
188
|
)
|
187
189
|
|
188
190
|
conflict = Git::GitConflict.new(
|
189
|
-
|
191
|
+
repository_name,
|
190
192
|
'91/eb/WEB-1723_Ringswitch_DB_Conn_Loss',
|
191
193
|
'85/t/trello_adwords_dashboard_tiles_auto_adjust_font_size',
|
192
194
|
['test/workers/adwords_detail_worker_test.rb', 'pegasus/backdraft/pegasus_dashboard/spec/views/call_cost_tile_spec.js']
|
@@ -215,7 +217,7 @@ describe 'Git::Git' do
|
|
215
217
|
expect(@git).to receive(:reset)
|
216
218
|
|
217
219
|
conflict = Git::GitConflict.new(
|
218
|
-
|
220
|
+
repository_name,
|
219
221
|
'91/eb/WEB-1723_Ringswitch_DB_Conn_Loss',
|
220
222
|
'85/t/trello_adwords_dashboard_tiles_auto_adjust_font_size',
|
221
223
|
[
|
@@ -377,8 +379,8 @@ describe 'Git::Git' do
|
|
377
379
|
it 'can diff a branch' do
|
378
380
|
mocked_output = ["efd778098239838c165ffab2f12ad293f32824c8\tAuthor 1\tauthor1@email.com\t2016-07-14T10:09:45-07:00\tMerge branch 'production'\n",
|
379
381
|
"667f3e5347c48c04663209682642fd8d6d93fde2\tAuthor 2\tauthor2@email.com\t2016-07-14T16:46:35-07:00\tMerge pull request #5584 from Owner/repo/dimension_repair\n"].join
|
380
|
-
expected_array = [Git::GitCommit.new('efd778098239838c165ffab2f12ad293f32824c8', "Merge branch 'production'", nil, 'Author 1', 'author1@email.com'),
|
381
|
-
Git::GitCommit.new('667f3e5347c48c04663209682642fd8d6d93fde2', 'Merge pull request #5584 from Owner/repo/dimension_repair', nil, 'Author 2', 'author2@email.com')]
|
382
|
+
expected_array = [Git::GitCommit.new('efd778098239838c165ffab2f12ad293f32824c8', "Merge branch 'production'", nil, 'Author 1', 'author1@email.com', repository_name: repository_name),
|
383
|
+
Git::GitCommit.new('667f3e5347c48c04663209682642fd8d6d93fde2', 'Merge pull request #5584 from Owner/repo/dimension_repair', nil, 'Author 2', 'author2@email.com', repository_name: repository_name)]
|
382
384
|
mock_execute(
|
383
385
|
mocked_output,
|
384
386
|
1,
|
data/spec/spec_helper.rb
CHANGED
@@ -7,14 +7,22 @@ require 'pp'
|
|
7
7
|
require 'fakefs/spec_helpers'
|
8
8
|
require 'rspec_junit_formatter'
|
9
9
|
require 'climate_control'
|
10
|
+
require 'rspec/support/object_formatter'
|
10
11
|
|
11
12
|
RSpec.configure do |config|
|
12
13
|
config.add_formatter RspecJunitFormatter, ENV['JUNIT_OUTPUT'] || 'spec/reports/rspec.xml'
|
14
|
+
RSpec::Support::ObjectFormatter.default_instance.max_formatted_output_length = 2_000
|
15
|
+
|
16
|
+
# Disable RSpec exposing methods globally on `Module` and `main`
|
17
|
+
config.disable_monkey_patching!
|
18
|
+
|
19
|
+
config.filter_run_when_matching :focus
|
13
20
|
|
14
21
|
# Enable flags like --only-failures and --next-failure
|
15
22
|
config.example_status_persistence_file_path = "spec/reports/.rspec_status"
|
16
23
|
|
17
24
|
config.expect_with :rspec do |expectations|
|
25
|
+
expectations.syntax = :expect
|
18
26
|
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
19
27
|
end
|
20
28
|
|
@@ -23,6 +31,8 @@ RSpec.configure do |config|
|
|
23
31
|
end
|
24
32
|
config.shared_context_metadata_behavior = :apply_to_host_groups
|
25
33
|
|
34
|
+
config.shared_context_metadata_behavior = :apply_to_host_groups
|
35
|
+
|
26
36
|
def with_modified_env(options, &block)
|
27
37
|
ClimateControl.modify(options, &block)
|
28
38
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git_lib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0.pre.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Invoca Development
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -38,10 +38,9 @@ extensions: []
|
|
38
38
|
extra_rdoc_files: []
|
39
39
|
files:
|
40
40
|
- ".dependabot/config.yml"
|
41
|
+
- ".github/workflows/build.yml"
|
41
42
|
- ".github/workflows/gem_release.yml"
|
42
43
|
- ".gitignore"
|
43
|
-
- ".jenkins/Jenkinsfile"
|
44
|
-
- ".jenkins/ruby_build_pod.yml"
|
45
44
|
- ".rspec"
|
46
45
|
- ".rubocop.yml"
|
47
46
|
- ".ruby-version"
|
@@ -65,6 +64,7 @@ files:
|
|
65
64
|
- lib/git/version.rb
|
66
65
|
- lib/git_lib.rb
|
67
66
|
- spec/lib/git/git_branch_spec.rb
|
67
|
+
- spec/lib/git/git_commit_spec.rb
|
68
68
|
- spec/lib/git/git_conflict_spec.rb
|
69
69
|
- spec/lib/git/git_error_spec.rb
|
70
70
|
- spec/lib/git/git_spec.rb
|
@@ -84,9 +84,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
84
84
|
version: '0'
|
85
85
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - ">"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: 1.3.1
|
90
90
|
requirements: []
|
91
91
|
rubygems_version: 3.0.1
|
92
92
|
signing_key:
|
@@ -94,6 +94,7 @@ specification_version: 4
|
|
94
94
|
summary: Git wrapper library.
|
95
95
|
test_files:
|
96
96
|
- spec/lib/git/git_branch_spec.rb
|
97
|
+
- spec/lib/git/git_commit_spec.rb
|
97
98
|
- spec/lib/git/git_conflict_spec.rb
|
98
99
|
- spec/lib/git/git_error_spec.rb
|
99
100
|
- spec/lib/git/git_spec.rb
|
data/.jenkins/Jenkinsfile
DELETED
@@ -1,72 +0,0 @@
|
|
1
|
-
#!/usr/bin/groovy
|
2
|
-
@Library('jenkins-pipeline@v0.4.5')
|
3
|
-
import com.invoca.docker.*;
|
4
|
-
|
5
|
-
pipeline {
|
6
|
-
agent {
|
7
|
-
kubernetes {
|
8
|
-
defaultContainer "ruby"
|
9
|
-
yamlFile ".jenkins/ruby_build_pod.yml"
|
10
|
-
}
|
11
|
-
}
|
12
|
-
|
13
|
-
environment {
|
14
|
-
GITHUB_TOKEN = credentials('github_token')
|
15
|
-
BUNDLE_GEM__FURY__IO = credentials('gemfury_deploy_token')
|
16
|
-
}
|
17
|
-
|
18
|
-
stages {
|
19
|
-
stage('Setup') {
|
20
|
-
steps {
|
21
|
-
updateGitHubStatus('clean-build', 'pending', 'Running unit tests...')
|
22
|
-
sh 'bundle install'
|
23
|
-
sh 'bundle exec appraisal install'
|
24
|
-
}
|
25
|
-
}
|
26
|
-
|
27
|
-
stage('Appraisals') {
|
28
|
-
parallel {
|
29
|
-
stage('Current') {
|
30
|
-
environment { JUNIT_OUTPUT = 'spec/reports/current/rspec.xml' }
|
31
|
-
steps { sh 'bundle exec rspec' }
|
32
|
-
post { always { junit JUNIT_OUTPUT } }
|
33
|
-
}
|
34
|
-
|
35
|
-
stage('Rails 4') {
|
36
|
-
environment { JUNIT_OUTPUT = 'spec/reports/rails-4/rspec.xml' }
|
37
|
-
steps { sh 'bundle exec appraisal rails-4 rspec' }
|
38
|
-
post { always { junit JUNIT_OUTPUT } }
|
39
|
-
}
|
40
|
-
|
41
|
-
stage('Rails 5') {
|
42
|
-
environment { JUNIT_OUTPUT = 'spec/reports/rails-5/rspec.xml' }
|
43
|
-
steps { sh 'bundle exec appraisal rails-5 rspec' }
|
44
|
-
post { always { junit JUNIT_OUTPUT } }
|
45
|
-
}
|
46
|
-
|
47
|
-
stage('Rails 6') {
|
48
|
-
environment { JUNIT_OUTPUT = 'spec/reports/rails-6/rspec.xml' }
|
49
|
-
steps { sh 'bundle exec appraisal rails-6 rspec' }
|
50
|
-
post { always { junit JUNIT_OUTPUT } }
|
51
|
-
}
|
52
|
-
}
|
53
|
-
}
|
54
|
-
}
|
55
|
-
|
56
|
-
post {
|
57
|
-
success { updateGitHubStatus('clean-build', 'success', 'Unit tests passed') }
|
58
|
-
failure { updateGitHubStatus('clean-build', 'failure', 'Unit tests failed') }
|
59
|
-
}
|
60
|
-
}
|
61
|
-
|
62
|
-
void updateGitHubStatus(String context, String status, String description) {
|
63
|
-
gitHubStatus([
|
64
|
-
repoSlug: 'Invoca/git_lib',
|
65
|
-
sha: env.GIT_COMMIT,
|
66
|
-
description: description,
|
67
|
-
context: context,
|
68
|
-
targetURL: env.RUN_DISPLAY_URL,
|
69
|
-
token: env.GITHUB_TOKEN,
|
70
|
-
status: status
|
71
|
-
])
|
72
|
-
}
|
data/.jenkins/ruby_build_pod.yml
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
---
|
2
|
-
apiVersion: v1
|
3
|
-
kind: Pod
|
4
|
-
metadata:
|
5
|
-
labels:
|
6
|
-
jenkins/git-lib: 'true'
|
7
|
-
namespace: jenkins
|
8
|
-
name: git-lib
|
9
|
-
spec:
|
10
|
-
containers:
|
11
|
-
- name: ruby
|
12
|
-
image: ruby:2.6.1
|
13
|
-
tty: true
|
14
|
-
resources:
|
15
|
-
requests:
|
16
|
-
memory: "100Mi"
|
17
|
-
command:
|
18
|
-
- cat
|
19
|
-
|