null+****@clear*****
null+****@clear*****
2010年 9月 15日 (水) 11:15:03 JST
Kouhei Sutou 2010-09-15 02:15:03 +0000 (Wed, 15 Sep 2010)
New Revision: 73414def134259c370b9deff709032e41af992c4
Log:
allow command_version option.
Modified files:
lib/ctx.c
test/unit/gqtp/test-status.rb
test/unit/http/test-http.rb
Modified: lib/ctx.c (+24 -0)
===================================================================
--- lib/ctx.c 2010-09-15 02:13:05 +0000 (0c5989c)
+++ lib/ctx.c 2010-09-15 02:15:03 +0000 (ca47231)
@@ -909,10 +909,24 @@ grn_str_get_mime_type(grn_ctx *ctx, const char *p, const char *pe,
}
}
+static void
+get_command_version(grn_ctx *ctx, const char *p, const char *pe)
+{
+ grn_command_version version;
+ const char *rest;
+
+ version = grn_atoui(p, pe, &rest);
+ if (pe == rest) {
+ grn_ctx_set_command_version(ctx, version);
+ }
+}
+
#define INDEX_HTML "index.html"
#define OUTPUT_TYPE "output_type"
+#define COMMAND_VERSION "command_version"
#define EXPR_MISSING "expr_missing"
#define OUTPUT_TYPE_LEN (sizeof(OUTPUT_TYPE) - 1)
+#define COMMAND_VERSION_LEN (sizeof(COMMAND_VERSION) - 1)
static inline int
command_proc_p(grn_obj *expr)
@@ -945,6 +959,11 @@ grn_ctx_qe_exec_uri(grn_ctx *ctx, const char *path, uint32_t path_len)
p = grn_text_cgidec(ctx, &buf, p, e, '&');
v = GRN_TEXT_VALUE(&buf);
get_content_mime_type(ctx, v, GRN_BULK_CURR(&buf));
+ } else if (l == COMMAND_VERSION_LEN &&
+ !memcmp(v, COMMAND_VERSION, COMMAND_VERSION_LEN)) {
+ GRN_BULK_REWIND(&buf);
+ p = grn_text_cgidec(ctx, &buf, p, e, '&');
+ get_command_version(ctx, GRN_TEXT_VALUE(&buf), GRN_BULK_CURR(&buf));
} else {
if (!(val = grn_expr_get_or_add_var(ctx, expr, v, l))) {
val = &buf;
@@ -995,6 +1014,11 @@ grn_ctx_qe_exec(grn_ctx *ctx, const char *str, uint32_t str_len)
p = grn_text_unesc_tok(ctx, &buf, p, e, &tok_type);
v = GRN_TEXT_VALUE(&buf);
get_content_mime_type(ctx, v, GRN_BULK_CURR(&buf));
+ } else if (l == COMMAND_VERSION_LEN &&
+ !memcmp(v, COMMAND_VERSION, COMMAND_VERSION_LEN)) {
+ GRN_BULK_REWIND(&buf);
+ p = grn_text_unesc_tok(ctx, &buf, p, e, &tok_type);
+ get_command_version(ctx, GRN_TEXT_VALUE(&buf), GRN_BULK_CURR(&buf));
} else if (expr && (val = grn_expr_get_or_add_var(ctx, expr, v, l))) {
grn_obj_reinit(ctx, val, GRN_DB_TEXT, 0);
p = grn_text_unesc_tok(ctx, val, p, e, &tok_type);
Modified: test/unit/gqtp/test-status.rb (+6 -1)
===================================================================
--- test/unit/gqtp/test-status.rb 2010-09-15 02:13:05 +0000 (9c5e674)
+++ test/unit/gqtp/test-status.rb 2010-09-15 02:15:03 +0000 (97a8a92)
@@ -26,8 +26,13 @@ class StatusTest < Test::Unit::TestCase
teardown_local_database
end
- def test_status_exit_successfully
+ def test_exit_successfully
output = run_groonga(@database_path, "status")
assert_predicate($?, :success?)
end
+
+ def test_command_version
+ output = run_groonga(@database_path, "status", "--command_version", "1")
+ assert_equal(1, JSON.parse(output)[1]["command_version"])
+ end
end
Modified: test/unit/http/test-http.rb (+6 -0)
===================================================================
--- test/unit/http/test-http.rb 2010-09-15 02:13:05 +0000 (2bd67aa)
+++ test/unit/http/test-http.rb 2010-09-15 02:15:03 +0000 (d9fb523)
@@ -37,6 +37,12 @@ class HTTPTest < Test::Unit::TestCase
JSON.parse(response.body)[1].keys.sort)
end
+ def test_status_command_version
+ response = get(command_path(:status, :command_version => 1))
+ assert_equal("application/json", response.content_type)
+ assert_equal(1, JSON.parse(response.body)[1]["command_version"])
+ end
+
def test_quit
response = get(command_path(:quit))
assert_success_response(response,