gitlab-elasticsearch-git 0.0.9 → 0.0.10

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: 124cbbe73d9be0107bf261ec04b544f5e424a491
4
- data.tar.gz: 5fba4f6f0893ac7b0947865d48a519dd3e38edf3
3
+ metadata.gz: 0c0282fc661a63a7df2bacfd3e4da215d2c689d0
4
+ data.tar.gz: 0b3267f71ed82e71bdc3f25b58a594dd2f91aa6a
5
5
  SHA512:
6
- metadata.gz: cfd5d246d4bd85f7f1aee7b30e0da5aa3a12abb5ff845d047c9158e3128af4464fa7cdf2d232df2907134154fd28b19e8f6cf3735f54e5d7f7efc33efbb12a4a
7
- data.tar.gz: 73bd68f1e6035115f9992a715ecb15f46eddd145ee2a97a1a07d10e79d770cf4f1e63ed439f12a0df3178b8f0cef901746d9587cffb51b5ccf85e43c3a78d97d
6
+ metadata.gz: 9f0fe56d9a2bff37ffccc9f92de92f5494123fa2873f40f34876daca40340fc47f4f9143899bd6c28517da0c278476cd73215509237a3b2ccaebf87075819280
7
+ data.tar.gz: 6738e1e8628d01b6c1bee9e24632ef4f2914204d1287a9978b62595d12522d10933b4e7e9d00942e1ba3ac9fc6d01fe28e937756f2969683fd0e929dbd89115b
data/.gitignore CHANGED
@@ -2,10 +2,7 @@
2
2
  *.rbc
3
3
  .bundle
4
4
  .config
5
- _yardoc
6
5
  coverage
7
6
  rdoc
8
7
  spec/reports
9
- test/tmp
10
- test/version_tmp
11
- tmp
8
+ support/**
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
data/CHANGELOG CHANGED
@@ -1,3 +1,9 @@
1
+ 0.0.10
2
+ - Fix gem so it will work without rails
3
+ - Rspec
4
+ - Fix: prevent failings for repositories with different file permissions
5
+ - Revert ObjectSpace.garbage_collect from original gem
6
+
1
7
  0.0.9
2
8
  - Resolve dependency hell
3
9
 
data/Gemfile CHANGED
@@ -6,10 +6,8 @@ gemspec
6
6
  gem 'elasticsearch-model'
7
7
  gem 'elasticsearch-api'
8
8
  gem 'rugged'
9
- gem 'bundler'
10
9
  gem 'rake'
11
10
  gem 'pry'
12
11
  gem 'charlock_holmes', '~> 0.7.3'
13
12
  gem 'github-linguist', '~> 4.7.0'
14
- gem 'minitest'
15
- gem 'wrong'
13
+ gem 'rspec'
data/Gemfile.lock CHANGED
@@ -1,13 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gitlab-elasticsearch-git (0.0.6)
5
- activemodel (~> 4.2.0)
6
- activesupport (~> 4.2.0)
7
- charlock_holmes (~> 0.7.3)
8
- elasticsearch-api (> 0.4.0)
9
- elasticsearch-model
10
- github-linguist (~> 4.7.0)
4
+ gitlab-elasticsearch-git (0.0.9)
5
+ activemodel (~> 4.2)
6
+ activesupport (~> 4.2)
7
+ charlock_holmes (~> 0.7)
8
+ elasticsearch-api (~> 1.0)
9
+ elasticsearch-model (~> 0.1.8)
10
+ github-linguist (~> 4.7)
11
11
  rugged (~> 0.23.3)
12
12
 
13
13
  GEM
@@ -56,42 +56,43 @@ GEM
56
56
  minitest (5.8.3)
57
57
  multi_json (1.11.2)
58
58
  multipart-post (2.0.0)
59
- predicated (0.2.6)
60
59
  pry (0.10.3)
61
60
  coderay (~> 1.1.0)
62
61
  method_source (~> 0.8.1)
63
62
  slop (~> 3.4)
64
63
  rake (10.5.0)
65
- ruby2ruby (2.2.0)
66
- ruby_parser (~> 3.1)
67
- sexp_processor (~> 4.0)
68
- ruby_parser (3.7.2)
69
- sexp_processor (~> 4.1)
64
+ rspec (3.4.0)
65
+ rspec-core (~> 3.4.0)
66
+ rspec-expectations (~> 3.4.0)
67
+ rspec-mocks (~> 3.4.0)
68
+ rspec-core (3.4.2)
69
+ rspec-support (~> 3.4.0)
70
+ rspec-expectations (3.4.0)
71
+ diff-lcs (>= 1.2.0, < 2.0)
72
+ rspec-support (~> 3.4.0)
73
+ rspec-mocks (3.4.1)
74
+ diff-lcs (>= 1.2.0, < 2.0)
75
+ rspec-support (~> 3.4.0)
76
+ rspec-support (3.4.1)
70
77
  rugged (0.23.3)
71
- sexp_processor (4.6.0)
72
78
  slop (3.6.0)
73
79
  thread_safe (0.3.5)
74
80
  tzinfo (1.2.2)
75
81
  thread_safe (~> 0.1)
76
- wrong (0.7.1)
77
- diff-lcs (~> 1.2.5)
78
- predicated (~> 0.2.6)
79
- ruby2ruby (>= 2.0.1)
80
- ruby_parser (>= 3.0.1)
81
- sexp_processor (>= 4.0)
82
82
 
83
83
  PLATFORMS
84
84
  ruby
85
85
 
86
86
  DEPENDENCIES
87
- bundler
88
87
  charlock_holmes (~> 0.7.3)
89
88
  elasticsearch-api
90
89
  elasticsearch-model
91
90
  github-linguist (~> 4.7.0)
92
91
  gitlab-elasticsearch-git!
93
- minitest
94
92
  pry
95
93
  rake
94
+ rspec
96
95
  rugged
97
- wrong
96
+
97
+ BUNDLED WITH
98
+ 1.10.6
data/README.md CHANGED
@@ -15,23 +15,8 @@ Now indexing text-like documents mo nore 1 mb size
15
15
  Add this line to your application's Gemfile:
16
16
 
17
17
  ``` ruby
18
- gem 'elasticsearch-git', '~> 0.0.5'
18
+ gem 'gitlab-elasticsearch-git', require 'elasticsearch-git'
19
19
 
20
- # or
21
-
22
- gem 'elasticsearch-git', github: 'zzet/elasticsearch-git', ref: 'last_ref'
23
- ```
24
-
25
- And then execute:
26
-
27
- ``` bash
28
- $ bundle
29
- ```
30
-
31
- Or install it yourself as:
32
-
33
- ``` bash
34
- $ gem install elasticsearch-git
35
20
  ```
36
21
 
37
22
  ## Usage
@@ -44,7 +29,9 @@ class Repository
44
29
  project.id
45
30
  end
46
31
 
47
- repository_for_indexing '/path/to/your/repo'
32
+ def path_to_repo
33
+ '/path/to/your/repo'
34
+ end
48
35
  end
49
36
 
50
37
  Repository.__elasticsearch__.create_index! force: true
@@ -332,10 +319,6 @@ Project.last.repository.as_indexed_json
332
319
  :message=>"first commit\n"}]}
333
320
  ```
334
321
 
335
- ## TODO
336
-
337
- * Add Exceptions handlers for indexing (Error connections and timeouts)
338
-
339
322
  ## Contributing
340
323
 
341
324
  1. Fork it ( http://github.com/zzet/elasticsearch-git/fork )
@@ -15,10 +15,10 @@ module Elasticsearch
15
15
  env = if defined?(::Rails)
16
16
  ::Rails.env.to_s
17
17
  else
18
- "undefined"
18
+ nil
19
19
  end
20
20
 
21
- index_name [self.name.downcase, 'index', env].join('-')
21
+ index_name [self.name.downcase, 'index', env].compact.join('-')
22
22
 
23
23
  settings \
24
24
  index: {
@@ -5,6 +5,7 @@ require 'elasticsearch/git/model'
5
5
  require 'elasticsearch/git/encoder_helper'
6
6
  require 'elasticsearch/git/lite_blob'
7
7
  require 'rugged'
8
+ require 'open3'
8
9
 
9
10
  module Elasticsearch
10
11
  module Git
@@ -86,10 +87,16 @@ module Elasticsearch
86
87
 
87
88
  perform_bulk bulk_operations
88
89
  end
90
+
91
+ ObjectSpace.garbage_collect
89
92
  end
90
93
 
91
94
  def perform_bulk(bulk_operations)
92
- client_for_indexing.bulk body: bulk_operations.compact
95
+ bulk_operations.compact!
96
+
97
+ return false if bulk_operations.empty?
98
+
99
+ client_for_indexing.bulk body: bulk_operations
93
100
  end
94
101
 
95
102
 
@@ -162,6 +169,8 @@ module Elasticsearch
162
169
 
163
170
  perform_bulk bulk_operations
164
171
  end
172
+
173
+ ObjectSpace.garbage_collect
165
174
  end
166
175
  end
167
176
 
@@ -1,5 +1,5 @@
1
1
  module Elasticsearch
2
2
  module Git
3
- VERSION = "0.0.9"
3
+ VERSION = "0.0.10"
4
4
  end
5
5
  end
data/spec/main_spec.rb ADDED
@@ -0,0 +1,68 @@
1
+ require 'spec_helper'
2
+
3
+ describe TestRepository do
4
+ before do
5
+ remove_index(TestRepository.index_name)
6
+ end
7
+
8
+ it "creates an index" do
9
+ expect(index_exist?(TestRepository.index_name)).to be_falsey
10
+
11
+ TestRepository.__elasticsearch__.create_index!
12
+
13
+ expect(index_exist?(TestRepository.index_name)).to be_truthy
14
+ end
15
+
16
+ it "indexes all blobs and searches" do
17
+ repo = TestRepository.new
18
+ repo.index_blobs
19
+
20
+ TestRepository.__elasticsearch__.refresh_index!
21
+
22
+ expect(repo.search('def', type: :blob)[:blobs][:total_count]).to eq(4)
23
+ end
24
+
25
+ it "indexes all commits and searches" do
26
+ repo = TestRepository.new
27
+ repo.index_commits
28
+
29
+ TestRepository.__elasticsearch__.refresh_index!
30
+
31
+ expect(repo.search('test', type: :commit)[:commits][:total_count]).to eq(2)
32
+ end
33
+
34
+ it "searches through all types" do
35
+ repo = TestRepository.new
36
+ repo.index_commits
37
+ repo.index_blobs
38
+
39
+ TestRepository.__elasticsearch__.refresh_index!
40
+
41
+ expect(repo.search('test')[:commits][:total_count]).to eq(2)
42
+ expect(repo.search('def')[:blobs][:total_count]).to eq(4)
43
+ end
44
+
45
+ it "it indexes specified commits" do
46
+ repo = TestRepository.new
47
+ repo.index_commits(
48
+ from_rev: '40f4a7a617393735a95a0bb67b08385bc1e7c66d',
49
+ to_rev: '732401c65e924df81435deb12891ef570167d2e2'
50
+ )
51
+
52
+ TestRepository.__elasticsearch__.refresh_index!
53
+
54
+ expect(repo.search('empty', type: :commit)[:commits][:total_count]).to eq(1)
55
+ end
56
+
57
+ it "it indexes specified blobs" do
58
+ repo = TestRepository.new
59
+ repo.index_blobs(
60
+ from_rev: '40f4a7a617393735a95a0bb67b08385bc1e7c66d',
61
+ to_rev: '732401c65e924df81435deb12891ef570167d2e2'
62
+ )
63
+
64
+ TestRepository.__elasticsearch__.refresh_index!
65
+
66
+ expect(repo.search('Permission is hereby granted', type: :blob)[:blobs][:total_count]).to eq(1)
67
+ end
68
+ end
@@ -0,0 +1,16 @@
1
+ require 'pry'
2
+ require 'elasticsearch/git'
3
+
4
+ require_relative 'support/seed_helper'
5
+ require_relative 'support/elastic_helper'
6
+ require_relative 'support/test_repository'
7
+
8
+ SUPPORT_PATH = File.join(File.expand_path(File.dirname(__FILE__)), '../support')
9
+ TEST_REPO_PATH = File.join(SUPPORT_PATH, 'gitlab-elasticsearch-git-test.git')
10
+
11
+ RSpec.configure do |config|
12
+ config.order = 'random'
13
+ config.include ElasticHelper
14
+ config.include SeedHelper
15
+ config.before(:all) { ensure_seeds }
16
+ end
@@ -0,0 +1,14 @@
1
+ module ElasticHelper
2
+ def index_exist?(index_name)
3
+ out, err, status = Open3.capture3("curl -XGET '#{elastic_url}/#{index_name}/'")
4
+ !out.include?('index_not_found_exception')
5
+ end
6
+
7
+ def remove_index(index_name)
8
+ system("curl -XDELETE '#{elastic_url}/#{index_name}/' > /dev/null 2>&1")
9
+ end
10
+
11
+ def elastic_url
12
+ 'http://localhost:9200/'
13
+ end
14
+ end
@@ -0,0 +1,25 @@
1
+ require 'fileutils'
2
+
3
+ module SeedHelper
4
+ GITLAB_URL = "git@gitlab.com:gitlab-org/gitlab-elasticsearch-git-test.git"
5
+
6
+ def ensure_seeds
7
+ if File.exists?(SUPPORT_PATH)
8
+ FileUtils.rm_r(SUPPORT_PATH)
9
+ end
10
+
11
+ FileUtils.mkdir_p(SUPPORT_PATH)
12
+
13
+ create_test_bare_repo
14
+ end
15
+
16
+ def create_test_bare_repo
17
+ system(git_env, *%W(git clone --bare #{GITLAB_URL}), chdir: SUPPORT_PATH)
18
+ end
19
+
20
+ # Prevent developer git configurations from being persisted to test
21
+ # repositories
22
+ def git_env
23
+ {'GIT_TEMPLATE_DIR' => ''}
24
+ end
25
+ end
@@ -0,0 +1,11 @@
1
+ class TestRepository
2
+ include Elasticsearch::Git::Repository
3
+
4
+ def repository_id
5
+ 'test_1'
6
+ end
7
+
8
+ def path_to_repo
9
+ TEST_REPO_PATH
10
+ end
11
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab-elasticsearch-git
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrey Kumanyaev
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-01-27 00:00:00.000000000 Z
13
+ date: 2016-02-08 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: elasticsearch-model
@@ -119,6 +119,7 @@ extensions: []
119
119
  extra_rdoc_files: []
120
120
  files:
121
121
  - ".gitignore"
122
+ - ".rspec"
122
123
  - CHANGELOG
123
124
  - Gemfile
124
125
  - Gemfile.lock
@@ -132,11 +133,11 @@ files:
132
133
  - lib/elasticsearch/git/model.rb
133
134
  - lib/elasticsearch/git/repository.rb
134
135
  - lib/elasticsearch/git/version.rb
135
- - test/lib/repository_test.rb
136
- - test/support/repo_info.rb
137
- - test/support/repository.rb
138
- - test/support/seed_helper.rb
139
- - test/test_helper.rb
136
+ - spec/main_spec.rb
137
+ - spec/spec_helper.rb
138
+ - spec/support/elastic_helper.rb
139
+ - spec/support/seed_helper.rb
140
+ - spec/support/test_repository.rb
140
141
  homepage: https://gitlab.com/gitlab-org/gitlab-elasticsearch-git
141
142
  licenses:
142
143
  - MIT
@@ -162,8 +163,8 @@ signing_key:
162
163
  specification_version: 4
163
164
  summary: Elasticsearch integrations for git repositories.
164
165
  test_files:
165
- - test/lib/repository_test.rb
166
- - test/support/repo_info.rb
167
- - test/support/repository.rb
168
- - test/support/seed_helper.rb
169
- - test/test_helper.rb
166
+ - spec/main_spec.rb
167
+ - spec/spec_helper.rb
168
+ - spec/support/elastic_helper.rb
169
+ - spec/support/seed_helper.rb
170
+ - spec/support/test_repository.rb
@@ -1,43 +0,0 @@
1
- require 'test_helper'
2
-
3
-
4
- class RepositoryTest < TestCase
5
- def setup
6
- @repository = Repository.new
7
- @repository.repository_for_indexing(TEST_REPO_PATH)
8
- Repository.__elasticsearch__.create_index! force: true
9
- end
10
-
11
- def test_index_commits
12
- commit_count = @repository.index_commits
13
- assert { commit_count == RepoInfo::COMMIT_COUNT }
14
- end
15
-
16
- def test_index_commits_after_first_push
17
- commit_count = @repository.index_commits(
18
- from_rev: "0000000000000000000000000000000000000000",
19
- to_rev: @repository.repository_for_indexing.head.target.oid)
20
-
21
- assert { commit_count == RepoInfo::COMMIT_COUNT }
22
- end
23
-
24
- #TODO write better assertions
25
- def test_index_all_blobs_from_head
26
- blob_count = @repository.index_blobs
27
- Repository.__elasticsearch__.refresh_index!
28
-
29
- result = @repository.search('def project_name_regex')
30
- assert { result[:blobs][:total_count] == 1 }
31
- end
32
-
33
- #TODO write better assertions
34
- def test_index_blobs_after_first_push
35
- commit_count = @repository.index_blobs(
36
- from_rev: "0000000000000000000000000000000000000000",
37
- to_rev: @repository.repository_for_indexing.head.target.oid)
38
- Repository.__elasticsearch__.refresh_index!
39
-
40
- result = @repository.search('def project_name_regex')
41
- assert { result[:blobs][:total_count] == 1 }
42
- end
43
- end
@@ -1,3 +0,0 @@
1
- module RepoInfo
2
- COMMIT_COUNT = 13
3
- end
@@ -1,9 +0,0 @@
1
- class Repository
2
- include Elasticsearch::Git::Repository
3
-
4
- index_name 'elasticsearch-git-test'
5
-
6
- def repository_id
7
- 1
8
- end
9
- end
@@ -1,6 +0,0 @@
1
- unless File.exists?(TEST_REPO_PATH)
2
- puts 'Prepare seeds'
3
- FileUtils.mkdir_p(SUPPORT_PATH)
4
- system(*%W(git clone --bare https://gitlab.com/gitlab-org/gitlab-test.git), chdir: SUPPORT_PATH)
5
- system(*%W(git checkout 5937ac0a7beb003549fc5fd26fc247adbce4a52e), chdir: SUPPORT_PATH)
6
- end
data/test/test_helper.rb DELETED
@@ -1,29 +0,0 @@
1
- require "rubygems"
2
- require 'bundler/setup'
3
- require 'pry'
4
- require 'elasticsearch/git'
5
-
6
- SUPPORT_PATH = File.join(File.expand_path(File.dirname(__FILE__)), '../support')
7
- TEST_REPO_PATH = File.join(SUPPORT_PATH, 'gitlab-test.git')
8
-
9
- require_relative 'support/seed_helper'
10
- require_relative 'support/repository'
11
- require_relative 'support/repo_info'
12
-
13
- Bundler.require
14
-
15
- require 'wrong/adapters/minitest'
16
-
17
- PROJECT_ROOT = File.join(Dir.pwd)
18
-
19
- Wrong.config.color
20
-
21
- Minitest.autorun
22
-
23
- class TestCase < Minitest::Test
24
- include Wrong
25
-
26
- def fixtures_path
27
- @path ||= File.expand_path(File.join(__FILE__, "../fixtures"))
28
- end
29
- end