Merge branch 'master' into 369-bootstrap

This commit is contained in:
Alexander Machehin 2015-01-22 15:22:26 +05:00
commit 4daa857f2c
7 changed files with 68 additions and 10 deletions

View File

@ -142,6 +142,7 @@ class Ability
can(:read, Product, read_relations_for('products', 'platforms')) {|product| product.platform.main?} can(:read, Product, read_relations_for('products', 'platforms')) {|product| product.platform.main?}
can([:create, :update, :destroy, :clone], Product) {|product| local_admin? product.platform and product.platform.main?} can([:create, :update, :destroy, :clone], Product) {|product| local_admin? product.platform and product.platform.main?}
can([:create, :cancel], ProductBuildList) {|pbl| can?(:write, pbl.project)}
can([:create, :cancel, :update], ProductBuildList) {|pbl| can?(:update, pbl.product)} can([:create, :cancel, :update], ProductBuildList) {|pbl| can?(:update, pbl.product)}
can(:destroy, ProductBuildList) {|pbl| can?(:destroy, pbl.product)} can(:destroy, ProductBuildList) {|pbl| can?(:destroy, pbl.product)}

View File

@ -85,6 +85,8 @@ class ProductBuildList < ActiveRecord::Base
Time.now - LIVE_TIME, Time.now - MAX_LIVE_TIME) Time.now - LIVE_TIME, Time.now - MAX_LIVE_TIME)
} }
after_initialize :init_project, if: :new_record?
after_create :add_job_to_abf_worker_queue after_create :add_job_to_abf_worker_queue
before_destroy :can_destroy? before_destroy :can_destroy?
@ -158,6 +160,10 @@ class ProductBuildList < ActiveRecord::Base
protected protected
def init_project
self.project ||= product.try(:project)
end
def abf_worker_priority def abf_worker_priority
'' ''
end end

View File

@ -1,7 +1,6 @@
json.build_list do json.build_list do
json.(@build_list, :id, :container_status, :status, :duration) json.(@build_list, :id, :container_status, :status, :duration)
json.(@build_list, :update_type, :priority, :new_core) json.(@build_list, :update_type, :priority, :new_core)
json.(@build_list, :advisory, :mass_build)
json.(@build_list, :auto_publish_status, :package_version, :commit_hash, :last_published_commit_hash, :auto_create_container, :use_cached_chroot, :use_extra_tests) json.(@build_list, :auto_publish_status, :package_version, :commit_hash, :last_published_commit_hash, :auto_create_container, :use_cached_chroot, :use_extra_tests)
json.build_log_url log_build_list_path(@build_list) json.build_log_url log_build_list_path(@build_list)
@ -63,14 +62,22 @@ json.build_list do
json.extra_params @build_list.extra_params json.extra_params @build_list.extra_params
if @build_list.advisory
json.advisory do json.advisory do
json.name @build_list.advisory.advisory_id json.name @build_list.advisory.advisory_id
json.(@build_list.advisory, :description) json.(@build_list.advisory, :description)
end if @build_list.advisory end
else
json.advisory nil
end
if @build_list.mass_build
json.mass_build do json.mass_build do
json.(@build_list.mass_build, :id, :name) json.(@build_list.mass_build, :id, :name)
end if @build_list.mass_build end
else
json.mass_build nil
end
json.logs (@build_list.results || []) do |result| json.logs (@build_list.results || []) do |result|
json.file_name result['file_name'] json.file_name result['file_name']

View File

@ -2,3 +2,8 @@ json.(package, :id, :name, :version, :release, :epoch)
json.type package.package_type json.type package.package_type
json.updated_at package.updated_at.to_i json.updated_at package.updated_at.to_i
json.url (package.sha1 ? "#{APP_CONFIG['file_store_url']}/api/v1/file_stores/#{package.sha1}" : '' ) json.url (package.sha1 ? "#{APP_CONFIG['file_store_url']}/api/v1/file_stores/#{package.sha1}" : '' )
json.dependent_projects dependent_projects(package) do |project, packages|
json.partial! 'api/v1/projects/project', project: project
json.dependent_packages packages
end if package.build_list.save_to_platform.main?

View File

@ -83,7 +83,7 @@ module Grit
def diff_stats(a,b) def diff_stats(a,b)
stats = [] stats = []
Dir.chdir(path) do Dir.chdir(path) do
lines = self.git.native(:diff, {numstat: true, M: true}, "#{a}...#{b}").split("\n") lines = self.git.native(:diff, {numstat: true}, "#{a}...#{b}").split("\n")
while !lines.empty? while !lines.empty?
files = [] files = []
while lines.first =~ /^([-\d]+)\s+([-\d]+)\s+(.+)/ while lines.first =~ /^([-\d]+)\s+([-\d]+)\s+(.+)/

View File

@ -115,6 +115,7 @@ end
describe Api::V1::ProductBuildListsController do describe Api::V1::ProductBuildListsController do
before(:each) do before(:each) do
stub_symlink_methods stub_symlink_methods
FactoryGirl.create(:arch, name: 'x86_64')
@product_build_list = FactoryGirl.create(:product_build_list) @product_build_list = FactoryGirl.create(:product_build_list)
@another_user = FactoryGirl.create(:user) @another_user = FactoryGirl.create(:user)

View File

@ -318,5 +318,43 @@ describe CanCan do
end end
end end
end # 'repository relations' end # 'repository relations'
context 'product build list relations' do
let(:product_build_list) { FactoryGirl.create(:product_build_list) }
before { FactoryGirl.create(:arch, name: 'x86_64') }
context 'with platform admin rights' do
before do
product_build_list.product.platform.owner = @user
product_build_list.product.platform.save
end
[:read, :create, :update, :destroy, :log, :cancel].each do |action|
it "should be able to #{action} product build list" do
@ability.should be_able_to(action, product_build_list)
end
end
end
context 'with project writer rights' do
before do
create_relation(product_build_list.project, @user, 'writer')
end
[:read, :create, :log, :cancel].each do |action|
it "should be able to #{action} product build list" do
@ability.should be_able_to(action, product_build_list)
end
end
[:update, :destroy].each do |action|
it "should not be able to #{action} product build list" do
@ability.should_not be_able_to(action, product_build_list)
end
end
end
end # 'product build list relations'
end # 'Site user' end # 'Site user'
end end