]> gitweb.michael.orlitzky.com - haeredes.git/blobdiff - src/Main.hs
Sort output to fix random breakage in the test suite.
[haeredes.git] / src / Main.hs
index 89d2cd56d1a2aeaca07420d403e2e29da1e7abfe..c9356bfd9318de6d96c279d0bd9dd0608fe9b332 100644 (file)
@@ -9,8 +9,9 @@ import qualified Data.ByteString.Char8 as BS (
   getContents,
   pack,
   words )
-import Data.List ( (\\), intersperse )
+import Data.List ( (\\), intersperse, sort )
 import Network.DNS (
+  DNSError(NameError),
   Domain,
   FileOrNumericHost(RCHostName),
   ResolvConf(resolvInfo, resolvTimeout),
@@ -52,20 +53,24 @@ report :: [Domain] -- ^ The list of @delgts@
        -> LookupResult
        -> IO ()
 
--- If the lookup resulted in a DNS error, we just ignore the whole
--- thing.
-report _ _ (_, Left _) = return ()
-
 -- If the lookup succeeded but there were no results, report that the
--- domain is not delegated.
-report _ _ (d, Right []) =
+-- domain is not delegated. Note that the behavior of the DNS library
+-- changed with regard to this at some point: we used to get back
+-- a "success," but with an empty list of results. Now a NameError
+-- (which is not actually an error!) is returned.
+report _ _ (d, Left NameError) =
   putStrLn $ "Domain " ++ (show d) ++ " not delegated."
 
+-- If the lookup resulted in some other DNS error, we just ignore the
+-- whole thing.
+report _ _ (_, Left _) = return ()
+
 -- Otherwise, subtract our delegates from the list of results and
 -- report the leftovers.
 report delgts normalize_function (d, Right raw_hosts) = do
   let nrml_hosts = map normalize_function raw_hosts
-  let leftovers = nrml_hosts \\ delgts
+  -- Sort the leftovers so that we can test the expected output.
+  let leftovers = sort (nrml_hosts \\ delgts)
   unless (null leftovers) $
     putStrLn $ "Domain " ++
                (show d) ++