module Angel.UtilSpec (spec) where import Angel.Util import System.Posix.User (getEffectiveUserID, getUserEntryForID, UserEntry(..)) import SpecHelper spec :: TestTree spec = testGroup "Angel.Util" [ testGroup "expandPath" [ testCase "generates the correct path for just a tilde" $ do UserEntry { homeDirectory = home } <- getUserEntry path <- expandPath "~/foo" path @?= home ++ "/foo" , testCase "generates the correct path for tilde with a specific user" $ do UserEntry { homeDirectory = home, userName = user } <- getUserEntry path <- expandPath $ "~" ++ user ++ "/foo" path @?= home ++ "/foo" , testCase "leaves paths without tildes alone" $ do path <- expandPath "/foo" path @?= "/foo" ] , testGroup "split" [ testProperty "produces no null values" $ \(a :: Char) (xs :: [Char]) -> none null $ split a xs , testProperty "produces no instances of the split element" $ \(a :: Char) (xs :: [Char]) -> none (elem a) $ split a xs , testCase "splits" $ split ' ' " foo bar baz " @?= ["foo", "bar", "baz"] ] ] where getUserEntry = getUserEntryForID =<< getEffectiveUserID none p = not . any p