azubi-0.2.0.2: test/TestUnixStateExecutor.hs
import Test.Hspec
import Azubi.Core.StateExecutors.LocalUnixStateExecutor
import Azubi
import System.Directory
import Azubi.Core.StateExecutor
verbosity :: Verbosity
verbosity = Verbose
main :: IO ()
main = hspec $ do
describe "whatIsBehind' should identify" $ do
it "a Folder as IsFolder" $ do
folderType <- whatIsBehind' folderPath
folderType `shouldBe` IsFolder
it "a File as IsFile" $ do
folderType <- whatIsBehind' filePath
folderType `shouldBe` IsFile
it "a Link as IsSymlink " $ do
folderType <- whatIsBehind' linkPath
folderType `shouldBe` IsSymlink "./file"
it "a Folder Link as IsSymlink " $ do
folderType <- whatIsBehind' folderLinkPath
folderType `shouldBe` IsSymlink "./folder"
it "~/.cabal as IsFolder" $ do
folderType <- whatIsBehind' "~/.cabal"
folderType `shouldBe` IsFolder
it "/usr as IsFolder" $ do
folderType <- whatIsBehind' "/usr"
folderType `shouldBe` IsFolder
it "/donotexist as DoesNotExist" $ do
noneType <- whatIsBehind' "/donotexist"
noneType `shouldBe` DoesNotExist
describe "basic functions" $ do
it "testing should be set up properly" $ do
removePathForcibly dynamicFolderPath
folderType <- whatIsBehind' dynamicFolderPath
folderType `shouldBe` DoesNotExist
it "should create a folder" $ do
executeIt [folderExists dynamicFolderPath]
folderType <- whatIsBehind' dynamicFolderPath
folderType `shouldBe` IsFolder
it "should create a file" $ do
let file = (dynamicSubPath "file")
executeIt [content file ["test"] ]
folderType <- whatIsBehind' file
folderType `shouldBe` IsFile
it "should create a folder" $ do
let folder = (dynamicSubPath "folder")
executeIt [folderExists folder]
folderType <- whatIsBehind' folder
folderType `shouldBe` IsFolder
it "should create a folder even if it is a file" $ do
let folder = (dynamicSubPath "should/be_a_folder")
executeIt [content folder ["test"]]
executeIt [folderExists folder]
folderType <- whatIsBehind' folder
folderType `shouldBe` IsFolder
it "should create a file even if it is a folder" $ do
let file = (dynamicSubPath "should/be_a_file")
executeIt [folderExists file]
executeIt [content file ["test"] ]
folderType <- whatIsBehind' file
folderType `shouldBe` IsFile
describe "preProcessState should" $ do
it "replace ~ in paths" $ do
home <- getHomeDirectory
home `shouldNotBe` "~"
state <- prePorcessState (UnixSystem verbosity) $ State [FolderExists "~/test"] [CreateFolder "~/test"] Nothing
state `shouldBe` State [FolderExists $ home ++ "/test"] [CreateFolder $ home ++ "/test"] Nothing
executeIt :: [State] -> IO ()
executeIt states = execute (LocalContext $ UnixSystem verbosity) states
dynamicFolderPath :: String
dynamicFolderPath = "./dynamic-test-folder"
dynamicSubPath :: String -> String
dynamicSubPath path = dynamicFolderPath ++ "/" ++ path
folderPath :: String
folderPath = "./test-resources/folder"
filePath :: String
filePath = "./test-resources/file"
linkPath :: String
linkPath = "./test-resources/filelink"
folderLinkPath :: String
folderLinkPath = "./test-resources/folderlink"