From 1871decffa5f1373b21e44bcfb8d68ce8c4acb05 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Oc=C3=A9ane=20Legrand?= <oceane.legrand@scania.com>
Date: Thu, 6 Mar 2025 07:24:26 +0000
Subject: [PATCH] Exclude Conan package files with recipe revisions from
 package presenter

---
 .../packages/conan/package_presenter.rb         |  2 +-
 .../packages/conan/package_presenter_spec.rb    | 17 +++++++++++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/app/presenters/packages/conan/package_presenter.rb b/app/presenters/packages/conan/package_presenter.rb
index 709876176109..beb4715444d9 100644
--- a/app/presenters/packages/conan/package_presenter.rb
+++ b/app/presenters/packages/conan/package_presenter.rb
@@ -80,7 +80,7 @@ def map_package_files
       def package_files
         return unless @package
 
-        @package.installable_package_files.preload_conan_file_metadata
+        @package.installable_package_files.without_conan_recipe_revision.preload_conan_file_metadata
       end
       strong_memoize_attr :package_files
 
diff --git a/spec/presenters/packages/conan/package_presenter_spec.rb b/spec/presenters/packages/conan/package_presenter_spec.rb
index ecca9e6e9260..2a0b8b49cf3b 100644
--- a/spec/presenters/packages/conan/package_presenter_spec.rb
+++ b/spec/presenters/packages/conan/package_presenter_spec.rb
@@ -41,6 +41,15 @@
     end
   end
 
+  shared_examples 'excludes files with recipe revisions' do
+    context 'when there are files with recipe revisions' do
+      let_it_be(:recipe_revision) { create(:conan_recipe_revision, package: package) }
+      let_it_be(:conan_package_file) { create(:conan_package_file, :conan_recipe_file, package: package, conan_recipe_revision: recipe_revision) }
+
+      it { is_expected.to eq(expected_result) }
+    end
+  end
+
   describe '#recipe_urls' do
     subject { presenter.recipe_urls }
 
@@ -57,6 +66,8 @@
 
       it { is_expected.to eq(expected_result) }
 
+      it_behaves_like 'excludes files with recipe revisions'
+
       context 'when there are multiple channels for the same package' do
         let(:conan_metadatum) { create(:conan_metadatum, package_channel: 'newest') }
         let!(:newest_package) { create(:conan_package, name: package.name, version: package.version, project: project, conan_metadatum: conan_metadatum) }
@@ -97,6 +108,8 @@
       end
 
       it { is_expected.to eq(expected_result) }
+
+      it_behaves_like 'excludes files with recipe revisions'
     end
   end
 
@@ -130,6 +143,8 @@
 
       it { is_expected.to eq(expected_result) }
 
+      it_behaves_like 'excludes files with recipe revisions'
+
       context 'with package_scope of project' do
         # #package_file_url checks for params[:id]
         let(:params) do
@@ -198,6 +213,8 @@
 
       it { is_expected.to eq(expected_result) }
 
+      it_behaves_like 'excludes files with recipe revisions'
+
       context 'when requested with invalid reference' do
         let(:reference) { 'invalid' }
 
-- 
GitLab