From 647da42af99a703fc3af3452b39acf0c3dc3050d Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Thu, 30 Jun 2016 15:44:29 +0200 Subject: Merge coverage report --- lib/tasks/ci/simplecov.rake | 63 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 lib/tasks/ci/simplecov.rake (limited to 'lib') diff --git a/lib/tasks/ci/simplecov.rake b/lib/tasks/ci/simplecov.rake new file mode 100644 index 00000000000..0c8322940ec --- /dev/null +++ b/lib/tasks/ci/simplecov.rake @@ -0,0 +1,63 @@ +require 'simplecov' + +namespace :ci do + namespace :simplecov do + desc 'GitLab CI | Merge all coverage results and generate report' + task merge: :environment do + merged_result.format! + end + + private + + def read(file) + return unless File.exist?(file) + data = File.read(file) + return if data.nil? || data.length < 2 + data + end + + def load(file) + begin + JSON.parse(read(file)) + rescue + {} + end + end + + def files + Dir.glob(File.join(SimpleCov.coverage_path, '*/.resultset.json')) + end + + def resultsfiles + files.map { |file| load(file) } + end + + def resultsets + resultsfiles.reduce({}, :merge) + end + + def all_results + results = [] + resultsets.each do |command_name, data| + result = SimpleCov::Result.from_hash(command_name => data) + # Only add result if the timeout is above the configured threshold + if (Time.now - result.created_at) < SimpleCov.merge_timeout + results << result + end + end + results + end + + def merged_result + merged = {} + results = all_results + results.each do |result| + merged = result.original_result.merge_resultset(merged) + end + result = SimpleCov::Result.new(merged) + # Specify the command name + result.command_name = results.map(&:command_name).sort.join(", ") + result + end + end +end -- cgit v1.2.1 From bd709e29b50940409d6b1abc869fe2969d6a3b51 Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Thu, 30 Jun 2016 16:08:01 +0200 Subject: Use `scripts/merge-simplecov` --- lib/tasks/ci/simplecov.rake | 63 --------------------------------------------- 1 file changed, 63 deletions(-) delete mode 100644 lib/tasks/ci/simplecov.rake (limited to 'lib') diff --git a/lib/tasks/ci/simplecov.rake b/lib/tasks/ci/simplecov.rake deleted file mode 100644 index 0c8322940ec..00000000000 --- a/lib/tasks/ci/simplecov.rake +++ /dev/null @@ -1,63 +0,0 @@ -require 'simplecov' - -namespace :ci do - namespace :simplecov do - desc 'GitLab CI | Merge all coverage results and generate report' - task merge: :environment do - merged_result.format! - end - - private - - def read(file) - return unless File.exist?(file) - data = File.read(file) - return if data.nil? || data.length < 2 - data - end - - def load(file) - begin - JSON.parse(read(file)) - rescue - {} - end - end - - def files - Dir.glob(File.join(SimpleCov.coverage_path, '*/.resultset.json')) - end - - def resultsfiles - files.map { |file| load(file) } - end - - def resultsets - resultsfiles.reduce({}, :merge) - end - - def all_results - results = [] - resultsets.each do |command_name, data| - result = SimpleCov::Result.from_hash(command_name => data) - # Only add result if the timeout is above the configured threshold - if (Time.now - result.created_at) < SimpleCov.merge_timeout - results << result - end - end - results - end - - def merged_result - merged = {} - results = all_results - results.each do |result| - merged = result.original_result.merge_resultset(merged) - end - result = SimpleCov::Result.new(merged) - # Specify the command name - result.command_name = results.map(&:command_name).sort.join(", ") - result - end - end -end -- cgit v1.2.1 From e18eddcb208fecd0abd9ce328a0e71f2560a0672 Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Mon, 4 Jul 2016 15:02:27 +0200 Subject: Remove unused coveralls --- lib/tasks/test.rake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/tasks/test.rake b/lib/tasks/test.rake index 21c0e5f1d41..d3dcbd2c29b 100644 --- a/lib/tasks/test.rake +++ b/lib/tasks/test.rake @@ -7,5 +7,5 @@ end unless Rails.env.production? desc "GitLab | Run all tests on CI with simplecov" - task test_ci: [:rubocop, :brakeman, 'teaspoon', :spinach, :spec] + task test_ci: [:rubocop, :brakeman, :teaspoon, :spinach, :spec] end -- cgit v1.2.1 From 9c34fafb8b728358a516a25120aa5f28567eae48 Mon Sep 17 00:00:00 2001 From: Patricio Cano Date: Sat, 16 Jul 2016 11:42:44 -0500 Subject: Submit new issues created via the WebUI by non project members to Akismet for spam check. --- lib/api/issues.rb | 13 +------------ lib/gitlab/akismet_helper.rb | 11 +++++++++++ 2 files changed, 12 insertions(+), 12 deletions(-) (limited to 'lib') diff --git a/lib/api/issues.rb b/lib/api/issues.rb index c588103e517..9adbde04884 100644 --- a/lib/api/issues.rb +++ b/lib/api/issues.rb @@ -21,17 +21,6 @@ module API def filter_issues_milestone(issues, milestone) issues.includes(:milestone).where('milestones.title' => milestone) end - - def create_spam_log(project, current_user, attrs) - params = attrs.merge({ - source_ip: client_ip(env), - user_agent: user_agent(env), - noteable_type: 'Issue', - via_api: true - }) - - ::CreateSpamLogService.new(project, current_user, params).execute - end end resource :issues do @@ -171,7 +160,7 @@ module API text = [attrs[:title], attrs[:description]].reject(&:blank?).join("\n") if check_for_spam?(project, current_user) && is_spam?(env, current_user, text) - create_spam_log(project, current_user, attrs) + create_spam_log(project, current_user, attrs, env) render_api_error!({ error: 'Spam detected' }, 400) end diff --git a/lib/gitlab/akismet_helper.rb b/lib/gitlab/akismet_helper.rb index 04676fdb748..fa8a79207f6 100644 --- a/lib/gitlab/akismet_helper.rb +++ b/lib/gitlab/akismet_helper.rb @@ -43,5 +43,16 @@ module Gitlab false end end + + def create_spam_log(project, current_user, attrs, env, api: true) + params = attrs.merge({ + source_ip: client_ip(env), + user_agent: user_agent(env), + noteable_type: 'Issue', + via_api: api + }) + + ::CreateSpamLogService.new(project, current_user, params).execute + end end end -- cgit v1.2.1 From f7807c5b68b59f6a5b984ee64a6c82a3bd993d92 Mon Sep 17 00:00:00 2001 From: Patricio Cano Date: Mon, 18 Jul 2016 18:17:43 -0500 Subject: Submit all issues on public projects to Akismet if enabled. --- lib/api/issues.rb | 8 +++----- lib/gitlab/akismet_helper.rb | 4 ++-- 2 files changed, 5 insertions(+), 7 deletions(-) (limited to 'lib') diff --git a/lib/api/issues.rb b/lib/api/issues.rb index 9adbde04884..787d416b960 100644 --- a/lib/api/issues.rb +++ b/lib/api/issues.rb @@ -157,15 +157,13 @@ module API end project = user_project - text = [attrs[:title], attrs[:description]].reject(&:blank?).join("\n") - if check_for_spam?(project, current_user) && is_spam?(env, current_user, text) - create_spam_log(project, current_user, attrs, env) + issue = ::Issues::CreateService.new(project, current_user, attrs.merge({ request: request })).execute + + if issue.nil? render_api_error!({ error: 'Spam detected' }, 400) end - issue = ::Issues::CreateService.new(project, current_user, attrs).execute - if issue.valid? # Find or create labels and attach to issue. Labels are valid because # we already checked its name, so there can't be an error here diff --git a/lib/gitlab/akismet_helper.rb b/lib/gitlab/akismet_helper.rb index fa8a79207f6..fc1fbc5b600 100644 --- a/lib/gitlab/akismet_helper.rb +++ b/lib/gitlab/akismet_helper.rb @@ -17,8 +17,8 @@ module Gitlab env['HTTP_USER_AGENT'] end - def check_for_spam?(project, user) - akismet_enabled? && !project.team.member?(user) + def check_for_spam?(project) + akismet_enabled? && project.public? end def is_spam?(environment, user, text) -- cgit v1.2.1 From 8f04cf0eadbcde7fc5d1c970741e30ca8b97967d Mon Sep 17 00:00:00 2001 From: Patricio Cano Date: Wed, 20 Jul 2016 20:15:17 -0500 Subject: Refactor `SpamCheckService` to make it cleaner and clearer. --- lib/api/issues.rb | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/api/issues.rb b/lib/api/issues.rb index 787d416b960..21b9eb367e7 100644 --- a/lib/api/issues.rb +++ b/lib/api/issues.rb @@ -160,11 +160,13 @@ module API issue = ::Issues::CreateService.new(project, current_user, attrs.merge({ request: request })).execute - if issue.nil? - render_api_error!({ error: 'Spam detected' }, 400) - end - if issue.valid? + # Need to check if id is nil here, because if issue is spam, errors + # get added, but Rails still thinks it's valid, but it is never saved + # so id will be nil + if issue.id.nil? + render_api_error!({ error: 'Spam detected' }, 400) + end # Find or create labels and attach to issue. Labels are valid because # we already checked its name, so there can't be an error here if params[:labels].present? -- cgit v1.2.1 From f01fce7f4683e06e83d3f91d38ca5b749e27e7ec Mon Sep 17 00:00:00 2001 From: Patricio Cano Date: Thu, 21 Jul 2016 18:11:53 -0500 Subject: Refactor spam validation to a concern that can be easily reused and improve legibility in `SpamCheckService` --- lib/api/issues.rb | 12 +++++------- lib/gitlab/akismet_helper.rb | 11 ----------- 2 files changed, 5 insertions(+), 18 deletions(-) (limited to 'lib') diff --git a/lib/api/issues.rb b/lib/api/issues.rb index 21b9eb367e7..c4d3134da6c 100644 --- a/lib/api/issues.rb +++ b/lib/api/issues.rb @@ -158,15 +158,13 @@ module API project = user_project - issue = ::Issues::CreateService.new(project, current_user, attrs.merge({ request: request })).execute + issue = ::Issues::CreateService.new(project, current_user, attrs.merge(request: request, api: true)).execute + + if issue.spam? + render_api_error!({ error: 'Spam detected' }, 400) + end if issue.valid? - # Need to check if id is nil here, because if issue is spam, errors - # get added, but Rails still thinks it's valid, but it is never saved - # so id will be nil - if issue.id.nil? - render_api_error!({ error: 'Spam detected' }, 400) - end # Find or create labels and attach to issue. Labels are valid because # we already checked its name, so there can't be an error here if params[:labels].present? diff --git a/lib/gitlab/akismet_helper.rb b/lib/gitlab/akismet_helper.rb index fc1fbc5b600..207736b59db 100644 --- a/lib/gitlab/akismet_helper.rb +++ b/lib/gitlab/akismet_helper.rb @@ -43,16 +43,5 @@ module Gitlab false end end - - def create_spam_log(project, current_user, attrs, env, api: true) - params = attrs.merge({ - source_ip: client_ip(env), - user_agent: user_agent(env), - noteable_type: 'Issue', - via_api: api - }) - - ::CreateSpamLogService.new(project, current_user, params).execute - end end end -- cgit v1.2.1