packages feed

hix-0.9.0: test/Hix/Test/Managed/TagTest.hs

module Hix.Test.Managed.TagTest where

import Distribution.Parsec (eitherParsec)
import Hedgehog ((===))
import Test.Tasty (TestTree, testGroup)

import Hix.Managed.Git (Tag (..))
import Hix.Managed.Maint.Prep (TagPrio (..))
import Hix.Test.Utils (UnitTest, unitTest)

test_parseTag :: UnitTest
test_parseTag = do
  Right (Tag (Just "pack") [1, 2, 3]) === eitherParsec "pack-1.2.3"
  Right (Tag Nothing [1, 2, 3]) === eitherParsec "1.2.3"

test_ordTag :: UnitTest
test_ordTag =
  target === sortOn TagPrio input
  where
    target =
      [
        t p0 v1,
        t p1 v1,
        t p2 v1,
        t p0 v2,
        t p1 v2,
        t p2 v2,
        t p0 v3,
        t p2 v3
      ]

    input =
      [
        t p2 v3,
        t p2 v1,
        t p0 v3,
        t p1 v2,
        t p0 v1,
        t p2 v2,
        t p0 v2,
        t p1 v1
      ]

    t package version = Tag {package, version}

    p0 = Nothing
    p1 = Just "p1"
    p2 = Just "p2"
    v1 = "1.0.0"
    v2 = "1.1.0"
    v3 = "2.0.0"

test_tag :: TestTree
test_tag =
  testGroup "git tags" [
    unitTest "parse" test_parseTag,
    unitTest "order" test_ordTag
  ]