import Data.Either (isLeft)
import Data.Foldable (for_)
import System.Environment.XDG.DesktopEntry
import System.FilePath ((</>))
import System.IO.Temp (withSystemTempDirectory)
import Test.Hspec
fileContent :: [String]
fileContent = [
"[Desktop Entry]\n\
\Icon=1",
"[Desktop Entry]\n\
\icon=2",
"[desktop entry]\n\
\Icon=3"
]
main :: IO ()
main = withSystemTempDirectory "xdg-desktop-entry" $ \dir -> do
let filepath :: Int -> String
filepath i = dir </> show i
for_ (zip [0::Int ..] fileContent) $ \(i, content) -> do
print i
writeFile (filepath i) content
hspec $ do
describe "deAtt" $ do
it "content0 should work" $ do
deResultE <- readDesktopEntry $ filepath 0
case deResultE of
Left e -> expectationFailure $ show e
Right deResult ->
deIcon deResult `shouldBe` Just "1"
it "content1 should not work" $ do
deResultE <- readDesktopEntry $ filepath 1
print deResultE
case deResultE of
Left e -> expectationFailure $ show e
Right deResult ->
deIcon deResult `shouldBe` Nothing
it "content2 should not work" $ do
deResultE <- readDesktopEntry $ filepath 2
isLeft deResultE `shouldBe` True