@@ -78,7 +78,7 @@ func TestInstallPackageRegex_MatchesPackageName(t *testing.T) {
7878
7979 matches := InstallPackageRegex .FindStringSubmatch (line )
8080
81- assert .Len (t , matches , InstallMaxMatchLen )
81+ assert .Len (t , matches , InstallPackageMaxMatchLen )
8282 assert .Equal (t , "X" , matches [InstallPackageName ])
8383}
8484
@@ -93,7 +93,7 @@ func TestInstallPackageRegex_MatchesPackageArch(t *testing.T) {
9393
9494 matches := InstallPackageRegex .FindStringSubmatch (line )
9595
96- assert .Len (t , matches , InstallMaxMatchLen )
96+ assert .Len (t , matches , InstallPackageMaxMatchLen )
9797 assert .Equal (t , "aarch64" , matches [InstallPackageArch ])
9898}
9999
@@ -108,7 +108,7 @@ func TestInstallPackageRegex_MatchesPackageVersionNoEpoch(t *testing.T) {
108108
109109 matches := InstallPackageRegex .FindStringSubmatch (line )
110110
111- assert .Len (t , matches , InstallMaxMatchLen )
111+ assert .Len (t , matches , InstallPackageMaxMatchLen )
112112 assert .Equal (t , "1.1b.8_X-22~rc1" , matches [InstallPackageVersion ])
113113}
114114
@@ -117,7 +117,7 @@ func TestInstallPackageRegex_MatchesPackageVersionWithEpoch(t *testing.T) {
117117
118118 matches := InstallPackageRegex .FindStringSubmatch (line )
119119
120- assert .Len (t , matches , InstallMaxMatchLen )
120+ assert .Len (t , matches , InstallPackageMaxMatchLen )
121121 assert .Equal (t , "5:1.1b.8_X-22~rc1" , matches [InstallPackageVersion ])
122122}
123123
@@ -132,7 +132,7 @@ func TestInstallPackageRegex_MatchesPackageDist(t *testing.T) {
132132
133133 matches := InstallPackageRegex .FindStringSubmatch (line )
134134
135- assert .Len (t , matches , InstallMaxMatchLen )
135+ assert .Len (t , matches , InstallPackageMaxMatchLen )
136136 assert .Equal (t , "azl3" , matches [InstallPackageDist ])
137137}
138138
@@ -153,3 +153,92 @@ func TestInstallPackageRegex_DoesNotMatchInvalidLine(t *testing.T) {
153153
154154 assert .False (t , InstallPackageRegex .MatchString (line ))
155155}
156+ func TestPackageLookupNameMatchRegex_MatchesExternalRepo (t * testing.T ) {
157+ const line = "xz-devel-5.4.4-1.azl3.x86_64 : Header and development files for xz\n Repo : toolchain-repo"
158+
159+ matches := PackageProvidesRegex .FindStringSubmatch (line )
160+
161+ assert .Len (t , matches , PackageProvidesMaxMatchLen )
162+ assert .Equal (t , "xz-devel-5.4.4-1.azl3.x86_64" , matches [PackageProvidesNameIndex ])
163+ }
164+
165+ func TestPackageLookupNameMatchRegex_MatchesPackageWithEpoch (t * testing.T ) {
166+ const line = "xz-devel-2:5.4.4-1.azl3.x86_64 : Header and development files for xz\n Repo : toolchain-repo"
167+
168+ matches := PackageProvidesRegex .FindStringSubmatch (line )
169+
170+ assert .Len (t , matches , PackageProvidesMaxMatchLen )
171+ assert .Equal (t , "xz-devel-2:5.4.4-1.azl3.x86_64" , matches [PackageProvidesNameIndex ])
172+ }
173+
174+ func TestPackageLookupNameMatchRegex_FailsForOutputWithoutRepo (t * testing.T ) {
175+ const line = "xz-devel-5.4.4-1.azl3.x86_64 : Header and development files for xz"
176+
177+ assert .False (t , PackageProvidesRegex .MatchString (line ))
178+ }
179+
180+ func TestPackageLookupNameMatchRegex_FailsForOutputWithSystemRepo (t * testing.T ) {
181+ const line = "xz-devel-5.4.4-1.azl3.x86_64 : Header and development files for xz\n Repo : @System"
182+
183+ assert .False (t , PackageProvidesRegex .MatchString (line ))
184+ }
185+
186+ func TestPackageLookupNameMatchRegex_FailsForEmptyOutput (t * testing.T ) {
187+ const line = ""
188+
189+ assert .False (t , PackageProvidesRegex .MatchString (line ))
190+ }
191+
192+ func TestPackageLookupNameMatchRegex_FailsForInvalidOutput (t * testing.T ) {
193+ const line = "Invalid output line"
194+
195+ assert .False (t , PackageProvidesRegex .MatchString (line ))
196+ }
197+
198+ func TestPackageLookupNameMatchRegex_MatchesOutputWithCapabilityMatch (t * testing.T ) {
199+ const line = "[using capability match for 'pkgconfig(liblzma)'] xz-devel-5.4.4-1.azl3.x86_64 : Header and development files for xz\n Repo : toolchain-repo"
200+
201+ matches := PackageProvidesRegex .FindStringSubmatch (line )
202+
203+ assert .Len (t , matches , PackageProvidesMaxMatchLen )
204+ assert .Equal (t , "xz-devel-5.4.4-1.azl3.x86_64" , matches [PackageProvidesNameIndex ])
205+ }
206+
207+ func TestPackageLookupNameMatchRegex_MatchesOutputWithMultiplePackages (t * testing.T ) {
208+ const line = "xz-devel-5.4.4-1.azl3.x86_64 : ABC\n Repo : toolchain-repo\n other-package-4.4.4-1.azl3.x86_64 : ABC2\n Repo : other-repo\n "
209+
210+ allMatches := PackageProvidesRegex .FindAllStringSubmatch (line , - 1 )
211+
212+ assert .Len (t , allMatches , 2 )
213+ assert .Len (t , allMatches [0 ], PackageProvidesMaxMatchLen )
214+ assert .Equal (t , "xz-devel-5.4.4-1.azl3.x86_64" , allMatches [0 ][PackageProvidesNameIndex ])
215+
216+ assert .Len (t , allMatches [1 ], PackageProvidesMaxMatchLen )
217+ assert .Equal (t , "other-package-4.4.4-1.azl3.x86_64" , allMatches [1 ][PackageProvidesNameIndex ])
218+ }
219+
220+ func TestPackageLookupNameMatchRegex_MatchesOutputWithExternalAndSystemMix (t * testing.T ) {
221+ const line = "xz-devel-5.4.4-1.azl3.x86_64 : ABC\n Repo : toolchain-repo\n other-package-4.4.4-1.azl3.x86_64 : ABC2\n Repo : @System\n "
222+
223+ allMatches := PackageProvidesRegex .FindAllStringSubmatch (line , - 1 )
224+
225+ assert .Len (t , allMatches , 1 )
226+ assert .Len (t , allMatches [0 ], PackageProvidesMaxMatchLen )
227+ assert .Equal (t , "xz-devel-5.4.4-1.azl3.x86_64" , allMatches [0 ][PackageProvidesNameIndex ])
228+ }
229+
230+ func TestPackageLookupNameMatchRegex_MatchesOutputWithSystemFirstExternalSecond (t * testing.T ) {
231+ const line = "other-package-4.4.4-1.azl3.x86_64 : ABC2\n Repo : @System\n xz-devel-5.4.4-1.azl3.x86_64 : ABC\n Repo : toolchain-repo"
232+
233+ allMatches := PackageProvidesRegex .FindAllStringSubmatch (line , - 1 )
234+
235+ assert .Len (t , allMatches , 1 )
236+ assert .Len (t , allMatches [0 ], PackageProvidesMaxMatchLen )
237+ assert .Equal (t , "xz-devel-5.4.4-1.azl3.x86_64" , allMatches [0 ][PackageProvidesNameIndex ])
238+ }
239+
240+ func TestPackageLookupNameMatchRegex_FailsForOutputWithOnlyPluginLoaded (t * testing.T ) {
241+ const line = "Loaded plugin: tdnfrepogpgcheck"
242+
243+ assert .False (t , PackageProvidesRegex .MatchString (line ))
244+ }
0 commit comments