Skip to content

Commit

Permalink
Setup project links in development data
Browse files Browse the repository at this point in the history
  • Loading branch information
hennevogel committed May 29, 2024
1 parent 9c40f91 commit dad3d19
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 19 deletions.
4 changes: 3 additions & 1 deletion src/api/lib/tasks/dev.rake
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,6 @@ namespace :dev do
create(:project, name: 'linked_project', link_to: home_admin)
create(:multibuild_package, project: home_admin, name: 'multibuild_package')
create(:package_with_link, project: home_admin, name: 'linked_package')
create(:package_with_remote_link, project: home_admin, name: 'remotely_linked_package', remote_project_name: 'openSUSE.org:openSUSE:Factory', remote_package_name: 'aaa_base')

# Trigger package builds for home:Admin
home_admin.store
Expand Down Expand Up @@ -250,6 +249,9 @@ namespace :dev do

# Create notifications by running the `dev:notifications:data` task two times
Rake::Task['dev:notifications:data'].invoke(2)

# Create project link setups
Rake::Task['dev:project_links:data'].invoke
end
end
end
37 changes: 37 additions & 0 deletions src/api/lib/tasks/dev/project_links.rake
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
namespace :dev do
namespace :project_links do
# https://github.com/openSUSE/open-build-service/wiki/Links
desc 'Create a couple of project link setups'
task data: :development_environment do
require 'factory_bot'
include FactoryBot::Syntax::Methods
# Make sure the interconnect to api.opensuse.org is there as we are using it...
interconnect = Project.find_by(name: 'openSUSE.org', remoteurl: 'https://api.opensuse.org/public')
interconnect ||= create(:remote_project, name: 'openSUSE.org', remoteurl: 'https://api.opensuse.org/public')
interconnect_repo = interconnect.repositories.find_by(name: 'snapshot', remote_project_name: 'openSUSE:Factory')
interconnect_repo ||= create(:repository, name: 'snapshot', remote_project_name: 'openSUSE:Factory', project: interconnect)
interconnect.store

# An empty Project that links to another Project and rebuilds its packages
local_linked_to_project = create(:project, name: 'Hans')
create(:package_with_files, name: 'ctris', project: local_linked_to_project)
local_linked_to_project.store
project = create(:project, name: 'ProjectLinks:LocalLinkedBuild',
title: 'Has a project link to a local project and rebuilds its packages',
description: 'Project Links to Hans')
repository = create(:repository, name: 'openSUSE_Tumbleweed', linkedbuild: 'all', architectures: ['x86_64'], project: project)
create(:path_element, repository: repository, link: interconnect_repo)
create(:linked_project, project: project, linked_db_project: local_linked_to_project)
project.store

# An empty Project that links to a remote project and rebuilds its packages
project = create(:project, name: 'ProjectLinks:RemoteLinkedBuild',
title: 'Has a project link to a remote project and rebuilds its packages',
description: 'Project Link to openSUSE.org:home:hennevogel:myfirstproject')
repository = create(:repository, name: 'openSUSE_Tumbleweed', linkedbuild: 'all', architectures: ['x86_64'], project: project)
create(:path_element, repository: repository, link: interconnect_repo)
create(:linked_project, project: project, linked_remote_project_name: 'openSUSE.org:home:hennevogel:myfirstproject')
project.store
end
end
end
18 changes: 0 additions & 18 deletions src/api/spec/factories/packages.rb
Original file line number Diff line number Diff line change
Expand Up @@ -126,24 +126,6 @@
end
end

factory :package_with_remote_link do
transient do
remote_project_name { Faker::Lorem.word }
remote_package_name { Faker::Lorem.word }
end
after(:create) do |package, evaluator|
remote_project = create(:remote_project, name: evaluator.remote_project_name)
PackageKind.create(package_id: package.id, kind: 'link')
file_content = "<link package=\"#{evaluator.remote_package_name}\" project=\"#{remote_project.name}\" />"

if CONFIG['global_write_through']
Backend::Connection.put(
"/source/#{CGI.escape(package.project.name)}/#{CGI.escape(package.name)}/_link", file_content
)
end
end
end

factory :package_with_binary do
transient do
target_file_name { 'bigfile_archive.tar.gz' }
Expand Down

0 comments on commit dad3d19

Please sign in to comment.