content: module Test.Targets(main) where
  
  import Development.Shake
  import Development.Shake.Internal.Core.Rules (getHelpSuffix)
  import Test.Type
  
  main :: IO () -> IO ()
  main _sleeper = do
      targets <- getTargets shakeOptions rules
      targets === expected
      helpSuffix <- getHelpSuffix shakeOptions rules
      helpSuffix === ["Don't Panic", "Know where your towel is"]
  
  rules :: Rules ()
  rules = do
      withTargetDocs "A phony target" $ phony "phony1" $ pure ()
  
      "file1" %> \_ -> pure ()
      ["file2", "file3"] |%> \_ -> pure ()
      ["file4", "file5"] &%> \_ -> pure ()
  
      "file6" %> \_ -> pure ()
      ["file7", "file8"] |%> \_ -> pure ()
      ["file9", "file10"] &%> \_ -> pure ()
  
      withTargetDocs "Builds something really good" $ phony "phony2" $ pure ()
      withTargetDocs "bad docs" $ do
          withTargetDocs "a great file" $ "file11" %> \_ -> pure ()
          withTargetDocs "awesome files" $ ["file12", "file13"] &%> \_ -> pure ()
          phony "Foo" $ pure ()
          withoutTargets $ phony "Bar" $ pure ()
  
      addHelpSuffix "Don't Panic"
      addHelpSuffix "Know where your towel is"
  
  
  expected :: [(String, Maybe String)]
  expected =
      [ "phony1" * Just "A phony target"
  
      , "file1" *  Nothing
      , "file2" *  Nothing
      , "file3" *  Nothing
      , "file4" *  Nothing
      , "file5" *  Nothing
  
      , "file6" *  Nothing
      , "file7" *  Nothing
      , "file8" *  Nothing
      , "file9" *  Nothing
      , "file10" * Nothing
  
      , "phony2" * Just "Builds something really good"
  
      , "file11" * Just "a great file"
      , "file12" * Just "awesome files"
      , "file13" * Just "awesome files"
      , "Foo" * Just "bad docs"
      ]
      where (*) = (,)
  