@@ -124,3 +124,60 @@ teardown() {
124124 _test_tmpdir=$( mktemp -d)
125125 ! _fast_copy_dir " /nonexistent/path" " $_test_tmpdir /"
126126}
127+
128+ # --- _expand_and_copy_pattern find-fallback tests ---
129+ # These test the Bash 3.2 fallback path (have_globstar=0)
130+
131+ @test " find fallback: empty results don't cause failures" {
132+ _test_tmpdir=$( mktemp -d)
133+ local src=" $_test_tmpdir /src" dst=" $_test_tmpdir /dst"
134+ mkdir -p " $src " " $dst "
135+
136+ cd " $src "
137+ local count
138+ count=$( _expand_and_copy_pattern " **/.nonexistent*" " $dst " " " " true" " false" " 0" )
139+ [ " $count " -eq 0 ]
140+ }
141+
142+ @test " find fallback: **/ pattern matches root-level files" {
143+ _test_tmpdir=$( mktemp -d)
144+ local src=" $_test_tmpdir /src" dst=" $_test_tmpdir /dst"
145+ mkdir -p " $src " " $dst "
146+ echo " secret" > " $src /.env"
147+ echo " local" > " $src /.env.local"
148+
149+ cd " $src "
150+ local count
151+ count=$( _expand_and_copy_pattern " **/.env*" " $dst " " " " true" " false" " 0" )
152+ [ " $count " -eq 2 ]
153+ [ -f " $dst /.env" ]
154+ [ -f " $dst /.env.local" ]
155+ }
156+
157+ @test " find fallback: **/ pattern matches nested files" {
158+ _test_tmpdir=$( mktemp -d)
159+ local src=" $_test_tmpdir /src" dst=" $_test_tmpdir /dst"
160+ mkdir -p " $src /subdir" " $dst "
161+ echo " nested" > " $src /subdir/.env"
162+
163+ cd " $src "
164+ local count
165+ count=$( _expand_and_copy_pattern " **/.env" " $dst " " " " true" " false" " 0" )
166+ [ " $count " -eq 1 ]
167+ [ -f " $dst /subdir/.env" ]
168+ }
169+
170+ @test " find fallback: **/ pattern matches both root and nested files" {
171+ _test_tmpdir=$( mktemp -d)
172+ local src=" $_test_tmpdir /src" dst=" $_test_tmpdir /dst"
173+ mkdir -p " $src /config" " $dst "
174+ echo " root" > " $src /CLAUDE.md"
175+ echo " nested" > " $src /config/CLAUDE.md"
176+
177+ cd " $src "
178+ local count
179+ count=$( _expand_and_copy_pattern " **/CLAUDE.md" " $dst " " " " true" " false" " 0" )
180+ [ " $count " -eq 2 ]
181+ [ -f " $dst /CLAUDE.md" ]
182+ [ -f " $dst /config/CLAUDE.md" ]
183+ }
0 commit comments