Skip to content

Commit

Permalink
[api] fillup patchinfo issues on updatepatchinfo with database content
Browse files Browse the repository at this point in the history
  • Loading branch information
adrianschroeter committed Jan 25, 2012
1 parent 2b0bfa6 commit b57014e
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 18 deletions.
22 changes: 11 additions & 11 deletions src/api/app/controllers/source_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1950,19 +1950,19 @@ def update_patchinfo(patchinfo, pkg)
issues = Array.new()
pkg.db_project.db_packages.each do |p|
# create diff per package
begin
answer = Suse::Backend.post("/source/#{CGI.escape(pkg.db_project.name)}/#{CGI.escape(p.name)}?unified=1&cmd=diff&filelimit=0&expand=1", nil)
issues += IssueTracker.issues_in(answer.body, true)
rescue Suse::Backend::HTTPError
next if p.db_package_kinds.find_by_kind 'patchinfo'

p.db_package_issues.each do |i|
if i.change == "added"
unless patchinfo.has_element?("issue[(@id='#{i.issue.name}' and @tracker='#{i.issue.issue_tracker.name}')]")
e = patchinfo.add_element "issue"
e.set_attribute "tracker", i.issue.issue_tracker.name
e.set_attribute "id" , i.issue.name
patchinfo.category.text = "security" if i.issue.issue_tracker.kind == "cve"
end
end
end
end

issues.each do |i|
next if patchinfo.has_element?("issue[(@id='#{i.name}' and @tracker='#{i.issue_tracker.name}')]")
e = patchinfo.add_element "issue"
e.set_attribute "tracker", i.issue_tracker.name
e.set_attribute "id" , i.name
patchinfo.category.text = "security" if i.issue_tracker.kind == "cve"
end

return patchinfo
Expand Down
2 changes: 1 addition & 1 deletion src/api/app/models/db_package.rb
Original file line number Diff line number Diff line change
Expand Up @@ -403,7 +403,7 @@ def private_set_package_kind( kinds=nil, directory=nil, _noreset=nil )
xml = REXML::Document.new(patchinfo.body.to_s)
xml.root.elements.each('issue') { |i|
issue = Issue.find_or_create_by_name_and_tracker( i.attributes['id'], i.attributes['tracker'] )
self.db_package_issues.create( :issue => issue )
self.db_package_issues.create( :issue => issue, :change => "kept" )
}
end
else
Expand Down
13 changes: 7 additions & 6 deletions src/api/test/functional/maintenance_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -653,11 +653,11 @@ def test_create_maintenance_project_and_release_packages
assert_tag( :parent => { :tag => "build" }, :tag => "enable", :attributes => { :repository => "BaseDistro3"} )

# create some changes, including issue_tracker references
put "/source/"+maintenanceProject+"/pack2.BaseDistro2.0_LinkedUpdateProject/dummy_file", "DUMMY bnc#1042 CVE-2009-0815"
put "/source/"+maintenanceProject+"/pack2.BaseDistro2.0_LinkedUpdateProject/dummy.changes", "DUMMY bnc#1042"
assert_response :success
post "/source/"+maintenanceProject+"/pack2.BaseDistro2.0_LinkedUpdateProject?unified=1&cmd=diff&filelimit=0&expand=1"
assert_response :success
assert_match /DUMMY bnc#1042 CVE-2009-0815/, @response.body
assert_match /DUMMY bnc#1042/, @response.body

# add a new package with defined link target
post "/source/BaseDistro2.0/packNew", :cmd => "branch", :target_project => maintenanceProject, :missingok => 1, :extend_package_names => 1
Expand Down Expand Up @@ -690,15 +690,14 @@ def test_create_maintenance_project_and_release_packages
assert_tag( :parent => {:tag => "build"}, :tag => "enable", :content => nil )
get "/source/#{maintenanceProject}/patchinfo?view=issues"
assert_response :success
assert_no_tag :parent => { :tag => 'issue' }, :tag => 'issue', :attributes => { :change => nil }
assert_no_tag :parent => { :tag => 'issue' }, :tag => 'issue', :attributes => { :change => "" }
assert_tag :parent => { :tag => 'issue' }, :tag => 'name', :content => "1042"
assert_tag :parent => { :tag => 'issue' }, :tag => 'issue_tracker', :content => "bnc"
assert_tag :parent => { :tag => 'issue' }, :tag => 'name', :content => "0815"
assert_tag :parent => { :tag => 'issue' }, :tag => 'issue_tracker', :content => "bnc"
assert_tag :parent => { :tag => 'issue' }, :tag => 'name', :content => "CVE-2009-0815"
assert_tag :parent => { :tag => 'issue' }, :tag => 'issue_tracker', :content => "cve"

# add another issue and update patchinfo
put "/source/"+maintenanceProject+"/pack2.BaseDistro2.0_LinkedUpdateProject/dummy_file", "DUMMY bnc#1042 CVE-2009-0815 bnc#4201"
put "/source/"+maintenanceProject+"/pack2.BaseDistro2.0_LinkedUpdateProject/dummy.changes", "DUMMY bnc#1042 CVE-2009-0815 bnc#4201"
assert_response :success
post "/source/#{maintenanceProject}/patchinfo?cmd=updatepatchinfo"
assert_response :success
Expand All @@ -709,6 +708,8 @@ def test_create_maintenance_project_and_release_packages
get "/source/#{maintenanceProject}/patchinfo?view=issues"
assert_response :success
assert_tag :tag => 'kind', :content => "patchinfo"
assert_no_tag :parent => { :tag => 'issue' }, :tag => 'issue', :attributes => { :change => nil }
assert_no_tag :parent => { :tag => 'issue' }, :tag => 'issue', :attributes => { :change => "" }
assert_tag :parent => { :tag => 'issue' }, :tag => 'name', :content => "1042"
assert_tag :parent => { :tag => 'issue' }, :tag => 'issue_tracker', :content => "bnc"
assert_tag :parent => { :tag => 'issue' }, :tag => 'name', :content => "CVE-2009-0815"
Expand Down

0 comments on commit b57014e

Please sign in to comment.