70 lines
2.5 KiB
Haskell
70 lines
2.5 KiB
Haskell
module GitSafetySpec (spec) where
|
|
|
|
import Converge (checkIndicatorFiles, isInMiddleOfOperation)
|
|
import Test.Hspec
|
|
import TestHelper
|
|
|
|
spec :: Spec
|
|
spec = do
|
|
describe "isInMiddleOfOperation" $ do
|
|
|
|
it "returns False when no operation is in progress" $ do
|
|
withTempGitRepo $ \repo -> do
|
|
result <- isInMiddleOfOperation repo
|
|
result `shouldBe` False
|
|
|
|
describe "merge detection" $ do
|
|
it "returns True when MERGE_HEAD exists" $ do
|
|
withTempGitRepo $ \repo -> do
|
|
createMergeHead repo
|
|
result <- isInMiddleOfOperation repo
|
|
result `shouldBe` True
|
|
|
|
describe "revert detection" $ do
|
|
it "returns True when REVERT_HEAD exists" $ do
|
|
withTempGitRepo $ \repo -> do
|
|
createRevertHead repo
|
|
result <- isInMiddleOfOperation repo
|
|
result `shouldBe` True
|
|
|
|
describe "cherry-pick detection" $ do
|
|
it "returns True when CHERRY_PICK_HEAD exists" $ do
|
|
withTempGitRepo $ \repo -> do
|
|
createCherryPickHead repo
|
|
result <- isInMiddleOfOperation repo
|
|
result `shouldBe` True
|
|
|
|
describe "bisect detection" $ do
|
|
it "returns True when BISECT_LOG exists" $ do
|
|
withTempGitRepo $ \repo -> do
|
|
createBisectLog repo
|
|
result <- isInMiddleOfOperation repo
|
|
result `shouldBe` True
|
|
|
|
describe "rebase detection" $ do
|
|
it "returns True when rebase-apply directory exists" $ do
|
|
withTempGitRepo $ \repo -> do
|
|
createRebaseApply repo
|
|
result <- isInMiddleOfOperation repo
|
|
result `shouldBe` True
|
|
|
|
it "returns True when rebase-merge directory exists" $ do
|
|
withTempGitRepo $ \repo -> do
|
|
createRebaseMerge repo
|
|
result <- isInMiddleOfOperation repo
|
|
result `shouldBe` True
|
|
|
|
describe "sequencer detection" $ do
|
|
it "returns True when sequencer directory exists" $ do
|
|
withTempGitRepo $ \repo -> do
|
|
createSequencer repo
|
|
result <- isInMiddleOfOperation repo
|
|
result `shouldBe` True
|
|
|
|
describe "checkIndicatorFiles" $ do
|
|
it "returns False for a clean git directory" $ do
|
|
withTempGitRepo $ \repo -> do
|
|
dir <- gitDir repo
|
|
result <- checkIndicatorFiles dir
|
|
result `shouldBe` False
|