@@ -56,6 +56,14 @@ newBaseReleased =
56
56
, mkPackage " mtl" [2 ,3 ] [" base < 4.15" ]
57
57
]
58
58
59
+ newBaseReleasedMultiple :: [PkgInfo ]
60
+ newBaseReleasedMultiple =
61
+ [ mkPackage " base" [4 ,14 ] []
62
+ , mkPackage " base" [4 ,15 ] []
63
+ , mkPackage " mtl" [2 ,3 ] [" base < 4.15" ]
64
+ , mkPackage " mtl2" [2 ,3 ] [" base < 4.15" ]
65
+ ]
66
+
59
67
newVersionOfOldBase :: [PkgInfo ]
60
68
newVersionOfOldBase =
61
69
[ mkPackage " base" [4 ,14 ] []
@@ -104,6 +112,17 @@ allTests = testGroup "ReverseDependenciesTest"
104
112
res <- revPackageName " mtl"
105
113
let ref = Map. fromList [(" beeline" , (version0, Just NormalVersion ))]
106
114
assertEqual " reverse dependencies must be [beeline]" ref res
115
+ , testCase " with set [beeline->mtl, beeline2->mtl] and querying for mtl, we get [beeline, beeline2]" $ do
116
+ let pkgs =
117
+ [ mkPackage " base" [4 ,15 ] []
118
+ , mkPackage " mtl" [2 ,3 ] [" base" ]
119
+ , mkPackage " beeline" [0 ] [" mtl" ]
120
+ , mkPackage " beeline2" [0 ] [" mtl" ]
121
+ ]
122
+ ReverseFeature {revPackageName} <- mkRevFeat pkgs
123
+ res <- revPackageName " mtl"
124
+ let ref = Map. fromList [(" beeline" , (version0, Just NormalVersion )), (" beeline2" , (version0, Just NormalVersion ))]
125
+ assertEqual " reverse dependencies must be [beeline, beeline2]" ref res
107
126
, testCase " revPackageName selects only the version with an actual dependency, even if it is not the newest" $ do
108
127
let pkgs =
109
128
[ mkPackage " base" [4 ,15 ] []
@@ -190,6 +209,12 @@ allTests = testGroup "ReverseDependenciesTest"
190
209
base4_16 = PackageIdentifier " base" (mkVersion [4 ,16 ])
191
210
runWithPref preferences index pkg = runIdentity $
192
211
dependencyReleaseEmails userSetIdForPackage index (constructReverseIndex index) preferences pkg
212
+ runWithPrefAlsoMtl2 preferences index pkg = runIdentity $
213
+ dependencyReleaseEmails userSet index (constructReverseIndex index) preferences pkg
214
+ where
215
+ userSet arg | arg == mkPackageName " mtl" = Identity (UserIdSet. fromList [UserId 0 ])
216
+ | arg == mkPackageName " mtl2" = Identity (UserIdSet. fromList [UserId 0 ])
217
+ | otherwise = error " should only get user ids for mtl and mtl2"
193
218
assertEqual
194
219
" dependencyReleaseEmails(trigger=NewIncompatibility) shouldn't generate a notification when there are packages, but none are behind"
195
220
mempty
@@ -198,6 +223,18 @@ allTests = testGroup "ReverseDependenciesTest"
198
223
" dependencyReleaseEmails(trigger=NewIncompatibility) should generate a notification when package is a single base version behind"
199
224
(refNotification base4_15)
200
225
(runWithPref (pref NewIncompatibility ) (PackageIndex. fromList newBaseReleased) base4_15)
226
+ assertEqual
227
+ " dependencyReleaseEmails(trigger=NewIncompatibility) should generate a notification for two packages that are a single base version behind"
228
+ (Just $
229
+ Set. fromList
230
+ [ PackageIdentifier (mkPackageName " mtl" ) (mkVersion [2 ,3 ])
231
+ , PackageIdentifier (mkPackageName " mtl2" ) (mkVersion [2 ,3 ])
232
+ ]
233
+ )
234
+ ( fmap Set. fromList
235
+ . Map. lookup (UserId 0 , base4_15)
236
+ $ runWithPrefAlsoMtl2 (pref NewIncompatibility ) (PackageIndex. fromList newBaseReleasedMultiple) base4_15
237
+ )
201
238
assertEqual
202
239
" dependencyReleaseEmails(trigger=BoundsOutOfRange) should generate a notification when package is a single base version behind"
203
240
(refNotification base4_15)
0 commit comments