[Groonga-commit] groonga/groonga [master] emits usage to stdout and exits gracefully. #340

Back to archive index

null+****@clear***** null+****@clear*****
2010年 6月 11日 (金) 14:34:25 JST


Nobuyoshi Nakada	2010-06-11 05:34:25 +0000 (Fri, 11 Jun 2010)

  New Revision: 1e9765eecad8f3d08605ef7b64cd126067a5d3f0

  Log:
    emits usage to stdout and exits gracefully.  #340

  Added files:
    test/unit/gqtp/test-option-help.rb
  Modified files:
    src/groonga.c
    test/unit/gqtp/Makefile.am

  Modified: src/groonga.c (+9 -5)
===================================================================
--- src/groonga.c    2010-06-11 02:01:49 +0000 (47300e0)
+++ src/groonga.c    2010-06-11 05:34:25 +0000 (e85d5a4)
@@ -59,10 +59,10 @@ static uint32_t default_max_nfthreads = DEFAULT_MAX_NFTHREADS;
 static const char *pidfile_path;
 
 static void
-usage(void)
+usage(FILE *output)
 {
   gethostname(hostname, HOST_NAME_MAX);
-  fprintf(stderr,
+  fprintf(output,
           "Usage: groonga [options...] [dest]\n"
           "options:\n"
           "  -n:                       create new database\n"
@@ -1624,7 +1624,8 @@ enum {
   mode_daemon,
   mode_server,
   mode_usage,
-  mode_version
+  mode_version,
+  mode_error
 };
 
 #define MODE_MASK   0x007f
@@ -1697,7 +1698,7 @@ main(int argc, char **argv)
   }
   strcpy(listen_address, "0.0.0.0");
   i = grn_str_getopt(argc, argv, opts, &mode);
-  if (i < 0) { mode = mode_usage; }
+  if (i < 0) { mode = mode_error; }
   if (portstr) { port = atoi(portstr); }
   if (encstr) {
     switch (*encstr) {
@@ -1809,8 +1810,11 @@ main(int argc, char **argv)
   case mode_version :
     show_version(); r = 0;
     break;
+  case mode_usage :
+    usage(stdout); r = 0;
+    break;
   default :
-    usage(); r = -1;
+    usage(stderr); r = -1;
     break;
   }
   grn_fin();

  Modified: test/unit/gqtp/Makefile.am (+1 -0)
===================================================================
--- test/unit/gqtp/Makefile.am    2010-06-11 02:01:49 +0000 (76e7a8a)
+++ test/unit/gqtp/Makefile.am    2010-06-11 05:34:25 +0000 (d3285bd)
@@ -2,4 +2,5 @@ EXTRA_DIST =					\
 	test-cache.rb				\
 	test-restore.rb				\
 	test-load.rb				\
+	test-option-help.rb			\
 	test-option-pid-file.rb

  Added: test/unit/gqtp/test-option-help.rb (+34 -0) 100644
===================================================================
--- /dev/null
+++ test/unit/gqtp/test-option-help.rb    2010-06-11 05:34:25 +0000 (410a106)
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2010  Nobuyoshi Nakada <nakad****@clear*****>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1 as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+class OptionHelpTest < Test::Unit::TestCase
+  include GroongaTestUtils
+
+  # def setup
+  #   setup_database_path
+  # end
+
+  # def teardown
+  #   teardown_database_path
+  # end
+
+  def test_help_option
+    usage = run_groonga("--help")
+    assert_predicate($?, :success?)
+    assert_match(/\AUsage: groonga \[options\.\.\.\] \[dest\]$/, usage)
+  end
+end




Groonga-commit メーリングリストの案内
Back to archive index