Skip to content

Commit 29b7648

Browse files
committed
Update the array test to have a reproducable failure
1 parent 593496f commit 29b7648

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

test/Streamly/Test/Data/Array.hs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
module Streamly.Test.Data.Array (main) where
1010

11+
import Control.Monad (void)
1112
import Data.Char (isLower)
1213
import Data.List (sort)
1314
import Data.Proxy (Proxy(..))
@@ -222,12 +223,21 @@ testUnsafeAsForeignPtr = do
222223
where
223224
getIntList1 fp blen = withForeignPtr fp $ \p -> getIntList p blen
224225

226+
performGCSweep :: Int -> Int -> IO ()
227+
performGCSweep i j = do
228+
mapM_ id $ replicate i $ do
229+
performMajorGC
230+
void $ MA.fromList ([0 .. j] :: [Int])
231+
225232
testForeignPtrConversionId :: IO ()
226233
testForeignPtrConversionId = do
227234
arr0 <- MA.unsafeGetSlice 10 50 <$> MA.fromList ([0 .. 99] :: [Word8])
228235
let arr = A.unsafeFreeze arr0
229-
arr1 <- A.unsafeAsForeignPtr arr A.unsafeFromForeignPtr
230-
arr1 `shouldBe` arr
236+
A.unsafeAsForeignPtr arr $ \a b -> do
237+
res <- A.unsafeFromForeignPtr a b
238+
performGCSweep 4 100000
239+
res `shouldBe` arr
240+
231241

232242
testUnsafeFromForeignPtr :: IO ()
233243
testUnsafeFromForeignPtr = do

0 commit comments

Comments
 (0)