Commit 960d8739 authored by Robert Speicher's avatar Robert Speicher Committed by Robert Speicher

Merge branch 'fix-github-pull-requests-import' into 'master'

Fix cross projects detection when importing GitHub pull requests

Fixes #12456

See merge request !2523
parent ed540c37
...@@ -18,7 +18,7 @@ module Gitlab ...@@ -18,7 +18,7 @@ module Gitlab
end end
def cross_project? def cross_project?
source_repo.fork == true source_repo.id != target_repo.id
end end
def number def number
...@@ -73,6 +73,10 @@ module Gitlab ...@@ -73,6 +73,10 @@ module Gitlab
project project
end end
def target_repo
raw_data.base.repo
end
def target_branch def target_branch
target_project.repository.find_branch(raw_data.base.ref) target_project.repository.find_branch(raw_data.base.ref)
end end
......
...@@ -2,8 +2,11 @@ require 'spec_helper' ...@@ -2,8 +2,11 @@ require 'spec_helper'
describe Gitlab::GithubImport::PullRequestFormatter, lib: true do describe Gitlab::GithubImport::PullRequestFormatter, lib: true do
let(:project) { create(:project) } let(:project) { create(:project) }
let(:source_branch) { OpenStruct.new(ref: 'feature') } let(:repository) { OpenStruct.new(id: 1, fork: false) }
let(:target_branch) { OpenStruct.new(ref: 'master') } let(:source_repo) { repository }
let(:source_branch) { OpenStruct.new(ref: 'feature', repo: source_repo) }
let(:target_repo) { repository }
let(:target_branch) { OpenStruct.new(ref: 'master', repo: target_repo) }
let(:octocat) { OpenStruct.new(id: 123456, login: 'octocat') } let(:octocat) { OpenStruct.new(id: 123456, login: 'octocat') }
let(:created_at) { DateTime.strptime('2011-01-26T19:01:12Z') } let(:created_at) { DateTime.strptime('2011-01-26T19:01:12Z') }
let(:updated_at) { DateTime.strptime('2011-01-27T19:01:12Z') } let(:updated_at) { DateTime.strptime('2011-01-27T19:01:12Z') }
...@@ -125,10 +128,8 @@ describe Gitlab::GithubImport::PullRequestFormatter, lib: true do ...@@ -125,10 +128,8 @@ describe Gitlab::GithubImport::PullRequestFormatter, lib: true do
end end
describe '#cross_project?' do describe '#cross_project?' do
context 'when source repo is not a fork' do context 'when source, and target repositories are the same' do
let(:local_repo) { OpenStruct.new(fork: false) } let(:raw_data) { OpenStruct.new(base_data) }
let(:source_branch) { OpenStruct.new(ref: 'feature', repo: local_repo) }
let(:raw_data) { OpenStruct.new(base_data.merge(head: source_branch)) }
it 'returns false' do it 'returns false' do
expect(pull_request.cross_project?).to eq false expect(pull_request.cross_project?).to eq false
...@@ -136,9 +137,17 @@ describe Gitlab::GithubImport::PullRequestFormatter, lib: true do ...@@ -136,9 +137,17 @@ describe Gitlab::GithubImport::PullRequestFormatter, lib: true do
end end
context 'when source repo is a fork' do context 'when source repo is a fork' do
let(:forked_repo) { OpenStruct.new(fork: true) } let(:source_repo) { OpenStruct.new(id: 2, fork: true) }
let(:source_branch) { OpenStruct.new(ref: 'feature', repo: forked_repo) } let(:raw_data) { OpenStruct.new(base_data) }
let(:raw_data) { OpenStruct.new(base_data.merge(head: source_branch)) }
it 'returns true' do
expect(pull_request.cross_project?).to eq true
end
end
context 'when target repo is a fork' do
let(:target_repo) { OpenStruct.new(id: 2, fork: true) }
let(:raw_data) { OpenStruct.new(base_data) }
it 'returns true' do it 'returns true' do
expect(pull_request.cross_project?).to eq true expect(pull_request.cross_project?).to eq true
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment