file-io-0.1.1: tests/CLC237.hs
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeApplications #-}
module Main where
import Control.Exception
import System.OsPath ((</>), osp)
import qualified System.OsPath as OSP
import qualified System.File.OsPath as OSP
import GHC.IO.Exception (IOErrorType(..), IOException(..))
import System.IO
import System.IO.Temp
-- Test that the action in 'withFile' does not inherit the filepath annotation
-- See https://github.com/haskell/core-libraries-committee/issues/237
main :: IO ()
main = withSystemTempDirectory "tar-test" $ \baseDir' -> do
baseDir <- OSP.encodeFS baseDir'
res <- try @IOException $ OSP.withFile (baseDir </> [osp|foo|]) WriteMode $ \_ -> fail "test"
case res of
Left (IOError Nothing UserError "" "test" Nothing Nothing) -> pure ()
Left e -> print e >> fail "Unexpected error"
Right _ -> fail "Unexpected success"