diff --git a/src/api/app/controllers/test_controller.rb b/src/api/app/controllers/test_controller.rb index f78419da424..091c1995922 100644 --- a/src/api/app/controllers/test_controller.rb +++ b/src/api/app/controllers/test_controller.rb @@ -1,10 +1,5 @@ require 'obsapi/test_sphinx' -if Rails.env.test? || Rails.env.development? - require 'database_cleaner' - DatabaseCleaner.strategy = :transaction -end - class TestController < ApplicationController skip_before_action :extract_user before_action do @@ -29,7 +24,6 @@ def startme return end @@started = true - @@test_running = false WebMock.disable_net_connect!(allow_localhost: true) CONFIG['global_write_through'] = true backend.direct_http(URI("/")) @@ -43,16 +37,8 @@ def prepare_search end def test_start - if @@test_running == true - test_end - end - @@test_running = true + Rails.cache.clear render_ok end - - def test_end - @@test_running = false - Rails.cache.clear - end end diff --git a/src/api/app/models/project.rb b/src/api/app/models/project.rb index 8400b0d540a..5a980756ac8 100644 --- a/src/api/app/models/project.rb +++ b/src/api/app/models/project.rb @@ -234,7 +234,7 @@ def find_remote_project(name, skip_access=false) local_project = String.new remote_project = nil - while fragments.length > 1 + while !fragments.nil? && fragments.length > 1 remote_project = [fragments.pop, remote_project].compact.join ':' local_project = fragments.join ':' logger.debug "checking local project #{local_project}, remote_project #{remote_project}" diff --git a/src/api/test/functional/webui/users_test.rb b/src/api/test/functional/webui/users_test.rb index 7c2ac4b4931..1a009c8f928 100644 --- a/src/api/test/functional/webui/users_test.rb +++ b/src/api/test/functional/webui/users_test.rb @@ -75,7 +75,6 @@ def delete_user user @userspath = webui_engine.package_users_path(project: @project, package: @package) visit @userspath - add_user "user2", "maintainer" add_user "user3", "bugowner" add_user "user4", "reviewer" diff --git a/src/api/test/test_helper.rb b/src/api/test/test_helper.rb index 5cad47efe2d..e76c032506d 100644 --- a/src/api/test/test_helper.rb +++ b/src/api/test/test_helper.rb @@ -199,7 +199,7 @@ def current_user olddriver = Capybara.current_driver Capybara.current_driver = :rack_test self.class.start_test_api - #ActiveXML::api.http_do :post, "/test/test_start" + ActiveXML::api.http_do :post, "/test/test_start" Capybara.current_driver = olddriver @starttime = Time.now WebMock.disable_net_connect!(allow_localhost: true) diff --git a/src/api/webui/app/controllers/webui/package_controller.rb b/src/api/webui/app/controllers/webui/package_controller.rb index e94afb693f7..1e9e709c04d 100644 --- a/src/api/webui/app/controllers/webui/package_controller.rb +++ b/src/api/webui/app/controllers/webui/package_controller.rb @@ -91,7 +91,7 @@ def dependency @drepository = params[:drepository] @dproject = params[:dproject] @filename = params[:filename] - @fileinfo = find_cached(Fileinfo, :project => params[:dproject], :package => '_repository', :repository => params[:drepository], :arch => @arch, + @fileinfo = Fileinfo.find(:project => params[:dproject], :package => '_repository', :repository => params[:drepository], :arch => @arch, :filename => params[:dname], :view => 'fileinfo_ext') @durl = nil unless @fileinfo # avoid displaying an error for non-existing packages @@ -124,7 +124,7 @@ def binary @repository = params[:repository] @filename = params[:filename] begin - @fileinfo = find_cached(Fileinfo, :project => @project, :package => @package, :repository => @repository, :arch => @arch, + @fileinfo = Fileinfo.find(:project => @project, :package => @package, :repository => @repository, :arch => @arch, :filename => @filename, :view => 'fileinfo_ext') rescue ActiveXML::Transport::ForbiddenError => e flash[:error] = "File #{@filename} can not be downloaded from #{@project}: #{e.summary}" @@ -287,7 +287,7 @@ def set_file_details @spec_count += 1 if file[:ext] == "spec" if file[:name] == "_link" begin - @link = find_cached(Link, :project => @project, :package => @package, :rev => @revision ) + @link = Link.find(:project => @project, :package => @package, :rev => @revision ) rescue RuntimeError # possibly thrown on bad link files end @@ -584,7 +584,7 @@ def save_file end elsif not file_url.blank? # we have a remote file uri - @services = find_cached(Service, :project => @project, :package => @package ) + @services = Service.find(:project => @project, :package => @package ) unless @services @services = Service.new( :project => @project, :package => @package ) end diff --git a/src/api/webui/app/controllers/webui/patchinfo_controller.rb b/src/api/webui/app/controllers/webui/patchinfo_controller.rb index b69591d3c7d..64731a301d2 100644 --- a/src/api/webui/app/controllers/webui/patchinfo_controller.rb +++ b/src/api/webui/app/controllers/webui/patchinfo_controller.rb @@ -49,11 +49,7 @@ def edit_patchinfo def show read_patchinfo - @pkg_names = Array.new - packages = Webui::Package.find(:all, :project => @project.name, :expires_in => 30.seconds ) - packages.each do |pkg| - @pkg_names << pkg.value(:name) - end + @pkg_names = @project.api_project.packages.pluck(:name) @pkg_names.delete('patchinfo') @packager = Webui::Person.find(:login => @packager) end diff --git a/src/api/webui/app/controllers/webui/project_controller.rb b/src/api/webui/app/controllers/webui/project_controller.rb index d4f6080790e..d113cbda7c9 100644 --- a/src/api/webui/app/controllers/webui/project_controller.rb +++ b/src/api/webui/app/controllers/webui/project_controller.rb @@ -138,7 +138,7 @@ def subprojects @subprojects = Hash.new sub_names = Collection.find :id, :what => 'project', :predicate => "starts-with(@name,'#{@project}:')" sub_names.each do |sub| - @subprojects[sub.name] = find_cached( WebuiProject, sub.name ) + @subprojects[sub.name] = WebuiProject.find( sub.name ) end @subprojects = @subprojects.sort # Sort by hash key for better display @parentprojects = Hash.new @@ -146,7 +146,7 @@ def subprojects parent_names.each_with_index do |parent, idx| parent_name = parent_names.slice(0, idx+1).join(':') unless [@project.name, 'home'].include?( parent_name ) - parent_project = find_cached(WebuiProject, parent_name ) + parent_project = WebuiProject.find( parent_name ) @parentprojects[parent_name] = parent_project unless parent_project.blank? end end @@ -166,7 +166,7 @@ def new @project_name = params[:project] if @namespace begin - @project = find_cached(WebuiProject, @namespace) + @project = WebuiProject.find(@namespace) if @namespace == "home:#{session[:login]}" and not @project @pagetitle = "Your home project doesn't exist yet. You can create it now" @project_name = @namespace @@ -326,7 +326,7 @@ def show @has_patchinfo = false @packages.each do |pkg_element| if pkg_element == 'patchinfo' - Webui::Package.find_cached(pkg_element, :project => @project).files.each do |pkg_file| + Webui::Package.find(pkg_element, :project => @project).files.each do |pkg_file| @has_patchinfo = true if pkg_file[:name] == '_patchinfo' end end @@ -357,7 +357,7 @@ def linking_projects # TODO we need the architectures in api/distributions def add_repository_from_default_list - @distributions = find_cached(Distribution, :all) + @distributions = Distribution.find(:all) if @distributions.all_vendors.length < 1 if @user and @user.is_admin? flash.now[:notice] = "There are no distributions configured! Check out Configuration > Interconnect" @@ -385,7 +385,7 @@ def load_buildresult(cache = true) Buildresult.free_cache( :project => params[:project], :view => 'summary' ) end unless @spider_bot - @buildresult = find_cached(Buildresult, :project => params[:project], :view => 'summary', :expires_in => 3.minutes ) + @buildresult = Buildresult.find(:project => params[:project], :view => 'summary') end @repohash = Hash.new @@ -530,7 +530,7 @@ def repository_state repository.each_arch do |arch| cycles = Array.new # skip all packages via package=- to speed up the api call, we only parse the cycles anyway - deps = find_cached(BuilddepInfo, :project => @project.name, :package => '-', :repository => repository.name, :arch => arch) + deps = BuilddepInfo.find(:project => @project.name, :package => '-', :repository => repository.name, :arch => arch) nr_cycles = 0 if deps and deps.has_element? :cycle packages = Hash.new @@ -581,8 +581,8 @@ def rebuild_time redirect_to :action => :show, :project => @project return end - bdep = find_cached(BuilddepInfo, :project => @project.name, :repository => @repository, :arch => @arch) - jobs = find_cached(Jobhislist , :project => @project.name, :repository => @repository, :arch => @arch, + bdep = BuilddepInfo.find(:project => @project.name, :repository => @repository, :arch => @arch) + jobs = Jobhislist.find(:project => @project.name, :repository => @repository, :arch => @arch, :limit => @packages.size * 3, :code => ['succeeded', 'unchanged']) unless bdep and jobs flash[:error] = "Could not collect infos about repository #{@repository}/#{@arch}" diff --git a/src/api/webui/app/models/webui/package.rb b/src/api/webui/app/models/webui/package.rb index bec054ffe52..1f5ac2a93cb 100644 --- a/src/api/webui/app/models/webui/package.rb +++ b/src/api/webui/app/models/webui/package.rb @@ -39,7 +39,7 @@ def save_file(opt = {}) put_opt = Hash.new put_opt[:package] = self.name - put_opt[:project] = @init_options[:project] + put_opt[:project] = self.project put_opt[:filename] = opt[:filename] put_opt[:comment] = opt[:comment] put_opt[:keeplink] = opt[:expand] if opt[:expand] @@ -301,7 +301,7 @@ def developed_packages end def self.exists?(project, package) - if Package.find_cached(package, :project => project) + if ::Package.find_by_project_and_name project.to_param, package.to_param return true else return false @@ -339,8 +339,24 @@ def linkdiff end end + def self.find(name, opts) + raise "UU" if name == :all + project = opts[:project].to_param + name = name.to_param + begin + ap = ::Package.get_by_project_and_name(project, name, use_source: false) + rescue ::Package::UnknownObjectError, Project::UnknownObjectError + return nil + end + p = Webui::Package.new(ap.render_xml(opts[:view])) + p.api_package = ap + p.instance_variable_set('@init_options', project: project, name: name) + p + end + + attr_writer :api_package def api_package - ::Package.find_by_project_and_name(project, name) + @api_package ||= ::Package.find_by_project_and_name(project, name) end end