]> gitweb.michael.orlitzky.com - dead/htsn.git/commitdiff
Fix the "no feed hosts" check and add a shelltest for the behavior. 0.0.7
authorMichael Orlitzky <michael@orlitzky.com>
Tue, 28 Jan 2014 20:02:58 +0000 (15:02 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Tue, 28 Jan 2014 20:02:58 +0000 (15:02 -0500)
Bump to 0.0.7.

htsn.cabal
src/Main.hs
test/ShellTests.hs [new file with mode: 0644]
test/shell/command-line-feed-hosts.test [new file with mode: 0644]

index 4f2f31ab1e5fd2eb91325f82e0de3e3ab08768eb..4380400ceaa4a8dd70501fa5dec17fe6af4ef171 100644 (file)
@@ -1,5 +1,5 @@
 name:           htsn
-version:        0.0.6
+version:        0.0.7
 cabal-version:  >= 1.8
 author:         Michael Orlitzky
 maintainer:    Michael Orlitzky <michael@orlitzky.com>
@@ -11,6 +11,7 @@ extra-source-files:
   doc/htsnrc.example
   doc/man1/htsn.1
   doc/init.openrc
+  test/shell/*.test
   test/xml/*.xml
 synopsis:
   Parse XML files from The Sports Network feed.
@@ -291,6 +292,44 @@ test-suite testsuite
     -O2
 
 
+-- These won't work without shelltestrunner installed in your
+-- $PATH. Maybe there is some way to tell Cabal that.
+test-suite shelltests
+  type: exitcode-stdio-1.0
+  hs-source-dirs: src test
+  main-is: ShellTests.hs
+  build-depends:
+    base                        == 4.*,
+    cmdargs                     >= 0.10.6,
+    configurator                == 0.2.*,
+    directory                   == 1.2.*,
+    filepath                    == 1.3.*,
+    hdaemonize                  == 0.4.*,
+    hslogger                    == 1.2.*,
+    htsn-common                 == 0.0.1,
+    hxt                         == 9.3.*,
+    MissingH                    == 1.2.*,
+    network                     == 2.4.*,
+    process                     == 1.1.*,
+    tasty                       == 0.7.*,
+    tasty-hunit                 == 0.4.*,
+    unix                        == 2.6.*
+
+  -- It's not entirely clear to me why I have to reproduce all of this.
+  ghc-options:
+    -Wall
+    -fwarn-hi-shadowing
+    -fwarn-missing-signatures
+    -fwarn-name-shadowing
+    -fwarn-orphans
+    -fwarn-type-defaults
+    -fwarn-tabs
+    -fwarn-incomplete-record-updates
+    -fwarn-monomorphism-restriction
+    -fwarn-unused-do-bind
+    -O2
+
+
 source-repository head
   type: git
   location: http://michael.orlitzky.com/git/htsn.git
index 6dfbfb7ec54220414c727e748774261b95ab9d55..aebf5c503aa53f413100243900aee69b939e3c99 100644 (file)
@@ -297,15 +297,7 @@ main = do
   let cfg = (def :: Configuration) `merge_optional` opt_config
   init_logging (log_level cfg) (log_file cfg) (syslog cfg)
 
-  -- Check the optional config for missing required options. This is
-  -- necessary because if the user specifies an empty list of
-  -- hostnames in e.g. the config file, we want to bail rather than
-  -- fall back on the default list (which was merged from a default
-  -- Configuration above).
-  when (null $ get_feed_hosts (OC.feed_hosts opt_config)) $ do
-    report_error "No feed hosts supplied."
-    exitWith (ExitFailure exit_no_feed_hosts)
-
+  -- Check the optional config for missing required options.
   when (isNothing (OC.password opt_config)) $ do
     report_error "No password supplied."
     exitWith (ExitFailure exit_no_password)
@@ -314,6 +306,18 @@ main = do
     report_error "No username supplied."
     exitWith (ExitFailure exit_no_username)
 
+  -- This should be impossible. We had a choice to make: since the
+  -- command-line feed_hosts are usually not supplied, we don't want
+  -- to take the empty list supplied on the command-line and use
+  -- that. But that means that we need to do the same thing if the
+  -- user supplies an empty list in the config file. That "same thing"
+  -- is to use the default list. So, this should never be empty,
+  -- because if the optional config has no feed hosts, we use the
+  -- default list.
+  when (null $ get_feed_hosts (feed_hosts cfg)) $ do
+    report_error "No feed hosts supplied."
+    exitWith (ExitFailure exit_no_feed_hosts)
+
   when (daemonize cfg) $ do
     -- Old PID files can be left around after an unclean shutdown. We
     -- only care if we're running as a daemon.
diff --git a/test/ShellTests.hs b/test/ShellTests.hs
new file mode 100644 (file)
index 0000000..65a10cc
--- /dev/null
@@ -0,0 +1,10 @@
+module Main
+where
+
+import System.Cmd ( system )
+import System.Exit ( exitWith )
+
+main :: IO ()
+main = do
+  result <- system "shelltest test/shell/*.test"
+  exitWith result
diff --git a/test/shell/command-line-feed-hosts.test b/test/shell/command-line-feed-hosts.test
new file mode 100644 (file)
index 0000000..27b9ebf
--- /dev/null
@@ -0,0 +1,9 @@
+#
+# If a feed host is supplied on the command-line, it should override
+# the default list. Since htsn attempts to run forever, we sleep for a
+# second after starting it and then kill it ($! is its pid).
+#
+dist/build/htsn/htsn -u foo --password bar localhost & sleep 1; kill $!
+>>> /Connecting to localhost./
+>>>2 /ERROR: connect: does not exist \(Connection refused\)/
+>>>=0