From 9e3bd2fb1fcb07c98eed71cf809dbf95b8b38f30 Mon Sep 17 00:00:00 2001
From: Kate <kit-ty-kate@outlook.com>
Date: Thu, 19 Dec 2024 22:55:08 +0000
Subject: [PATCH] Stop double pin of packages located in ./opam/opam

---
 master_changes.md        | 1 +
 src/state/opamPinned.ml  | 5 ++---
 tests/reftests/lock.test | 5 +----
 3 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/master_changes.md b/master_changes.md
index e7ece6994e7..e68d2f848b7 100644
--- a/master_changes.md
+++ b/master_changes.md
@@ -46,6 +46,7 @@ users)
 
 ## Pin
   * [NEW] Make it so pin list display the current revision of a pinned repository in a new column [#6274 @desumn - fix #5533]
+  * [BUG] Stop double pin of packages located in ./opam/opam [#6343 @kit-ty-kate - fix #6342]
 
 ## List
 
diff --git a/src/state/opamPinned.ml b/src/state/opamPinned.ml
index fac5d8ecd83..c92f3e5aa31 100644
--- a/src/state/opamPinned.ml
+++ b/src/state/opamPinned.ml
@@ -193,9 +193,8 @@ let files_in_source ?locked ?(recurse=false) ?subpath d =
       in
       List.fold_left
         (fun acc d ->
-           if OpamFilename.(basename_dir d = Base.of_string "opam") ||
-              OpamStd.String.ends_with ~suffix:".opam"
-                (OpamFilename.Dir.to_string d)
+           if OpamStd.String.ends_with ~suffix:".opam"
+               (OpamFilename.Dir.to_string d)
            then
              match OpamFilename.opt_file OpamFilename.Op.(d//"opam") with
              | None -> acc
diff --git a/tests/reftests/lock.test b/tests/reftests/lock.test
index ea2910f2432..e8ff5903f86 100644
--- a/tests/reftests/lock.test
+++ b/tests/reftests/lock.test
@@ -386,13 +386,10 @@ Done.
 opam-version: "2.0"
 name: "silver"
 depends: "foo"
-### # ERROR double silver
+### : Make sure silver isn't pinned twice
 ### opam pin -n old
-This will pin the following packages: silver, silver. Continue? [Y/n] y
 Package silver does not exist, create as a NEW package? [Y/n] y
 silver is now pinned to file://${BASEDIR}/old (version dev)
-[NOTE] Package silver is already pinned to file://${BASEDIR}/old (version dev).
-silver is now pinned to file://${BASEDIR}/old (version dev)
 ### opam lock silver
 Generated lock files for:
   - silver.dev: ${BASEDIR}/silver.opam.locked