[Groonga-commit] groonga/gcs [master] Domain#getSynonymSync: return null for failure case

Back to archive index

Kouhei Sutou null+****@clear*****
Tue Aug 14 18:07:54 JST 2012


Kouhei Sutou	2012-08-14 18:07:54 +0900 (Tue, 14 Aug 2012)

  New Revision: e6782d548a42f3f395c53c5a90a0209ed057e45e
  https://github.com/groonga/gcs/commit/e6782d548a42f3f395c53c5a90a0209ed057e45e

  Log:
    Domain#getSynonymSync: return null for failure case

  Modified files:
    lib/database/domain.js
    test/database-domain.test.js

  Modified: lib/database/domain.js (+12 -3)
===================================================================
--- lib/database/domain.js    2012-08-14 17:24:21 +0900 (2fa9d57)
+++ lib/database/domain.js    2012-08-14 18:07:54 +0900 (4d79bbf)
@@ -276,16 +276,25 @@ Domain.prototype = {
       throw new Error('no context');
 
     if (!this.hasSynonymsTableSync())
-      return [];
+      return null;
 
     var options = {
           table: this.synonymsTableName,
 	  key: key,
           output_columns: SYNONYMS_COLUMN
         };
-    var getResult = this.context.commandSync('get', options);
-    var synonyms = getResult[1][0];
+    var getResult;
+    try {
+	getResult = this.context.commandSync('get', options);
+    } catch (error) {
+	if (/nonexistent key:/.test(error.message)) {
+	    return null;
+	} else {
+	    throw error;
+	}
+    }
 
+    var synonyms = getResult[1][0];
     return synonyms;
   },
 

  Modified: test/database-domain.test.js (+10 -1)
===================================================================
--- test/database-domain.test.js    2012-08-14 17:24:21 +0900 (164f09c)
+++ test/database-domain.test.js    2012-08-14 18:07:54 +0900 (5d2b0ff)
@@ -359,7 +359,7 @@ suite('database', function() {
         assert.equal(dumpExpected, dumpActual);
       });
 
-      test('getSynonymSync', function() {
+      test('getSynonymSync, existent', function() {
         var domain = new Domain('companies', context);
         domain.updateSynonymsSync({
           tokio: ['tonkin', 'tokyo']
@@ -368,6 +368,15 @@ suite('database', function() {
         assert.deepEqual(domain.getSynonymSync('tokio'), ['tonkin', 'tokyo']);
       });
 
+      test('getSynonymSync, nonexistent', function() {
+        var domain = new Domain('companies', context);
+        domain.updateSynonymsSync({
+          tokio: ['tonkin', 'tokyo']
+        });
+
+        assert.deepEqual(domain.getSynonymSync('hokkaido'), null);
+      });
+
       test('getSynonymsSync', function() {
         var domain = new Domain('companies', context);
         domain.updateSynonymsSync({
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index