activegroonga 0.0.2 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. data/NEWS.ja.rdoc +4 -0
  2. data/NEWS.rdoc +4 -0
  3. data/README.ja.rdoc +1 -1
  4. data/README.rdoc +1 -1
  5. data/Rakefile +3 -4
  6. data/lib/active_groonga.rb +2 -0
  7. data/lib/active_groonga/base.rb +125 -99
  8. data/lib/active_groonga/column.rb +9 -0
  9. data/lib/active_groonga/dynamic_record_expression_builder.rb +40 -0
  10. data/lib/active_groonga/schema.rb +107 -204
  11. data/lib/active_groonga/schema_dumper.rb +40 -25
  12. data/lib/active_groonga/tasks/groonga.rake +2 -0
  13. data/lib/active_groonga/version.rb +1 -1
  14. data/rails_generators/index_table_groonga/USAGE +23 -0
  15. data/rails_generators/index_table_groonga/index_table_groonga_generator.rb +44 -0
  16. data/rails_generators/index_table_groonga/templates/migration.rb +12 -0
  17. data/rails_generators/migration_groonga/USAGE +29 -0
  18. data/rails_generators/migration_groonga/migration_groonga_generator.rb +19 -0
  19. data/rails_generators/migration_groonga/templates/migration.rb +11 -0
  20. data/test-unit/Rakefile +6 -1
  21. data/test-unit/lib/test/unit/autorunner.rb +26 -3
  22. data/test-unit/lib/test/unit/priority.rb +21 -1
  23. data/test-unit/lib/test/unit/testcase.rb +101 -36
  24. data/test-unit/lib/test/unit/ui/console/testrunner.rb +7 -4
  25. data/test-unit/test/{test_testcase.rb → test-testcase.rb} +30 -1
  26. data/test-unit/test/test_assertions.rb +1 -1
  27. data/test/active-groonga-test-utils.rb +25 -26
  28. data/test/test-base.rb +16 -6
  29. data/test/test-schema-dumper.rb +48 -0
  30. data/test/test-schema.rb +20 -4
  31. data/test/tmp/database/database.groonga +0 -0
  32. data/test/tmp/database/database.groonga.0000000 +0 -0
  33. data/test/tmp/database/database.groonga.0000100 +0 -0
  34. data/test/tmp/database/database.groonga.0000101 +0 -0
  35. metadata +19 -7
@@ -185,10 +185,13 @@ module Test
185
185
 
186
186
  def guess_color_availability
187
187
  return false unless @output.tty?
188
- term = ENV["TERM"]
189
- return true if term and (/term\z/ =~ term or term == "screen")
190
- return true if ENV["EMACS"] == "t"
191
- false
188
+ case ENV["TERM"]
189
+ when /term(?:-color)?\z/, "screen"
190
+ true
191
+ else
192
+ return true if ENV["EMACS"] == "t"
193
+ false
194
+ end
192
195
  end
193
196
 
194
197
  def guess_progress_row_max
@@ -6,7 +6,7 @@ require 'test/unit'
6
6
 
7
7
  module Test
8
8
  module Unit
9
- class TC_TestCase < TestCase
9
+ class TestTestCase < TestCase
10
10
  def test_creation
11
11
  tc = Class.new(TestCase) do
12
12
  def test_with_arguments(arg1, arg2)
@@ -468,11 +468,40 @@ module Test
468
468
  end
469
469
  end
470
470
 
471
+ def test_defined_order
472
+ keep_test_order do
473
+ test_case = Class.new(Test::Unit::TestCase) do
474
+ def test_z
475
+ end
476
+
477
+ def test_1
478
+ end
479
+
480
+ def test_a
481
+ end
482
+ end
483
+
484
+ assert_equal(["test_1", "test_a", "test_z"],
485
+ test_case.suite.tests.collect {|test| test.method_name})
486
+
487
+ test_case.test_order = :defined
488
+ assert_equal(["test_z", "test_1", "test_a"],
489
+ test_case.suite.tests.collect {|test| test.method_name})
490
+ end
491
+ end
492
+
471
493
  private
472
494
  def check(message, passed)
473
495
  add_assertion
474
496
  raise AssertionFailedError.new(message) unless passed
475
497
  end
498
+
499
+ def keep_test_order
500
+ order = TestCase.test_order
501
+ yield
502
+ ensure
503
+ TestCase.test_order = order
504
+ end
476
505
  end
477
506
  end
478
507
  end
@@ -428,7 +428,7 @@ EOM
428
428
 
429
429
  different_error_class = Class.new(StandardError)
430
430
  message = <<-EOM
431
- <\#<Class:0x[a-f\\d]+>\\("Error"\\)> exception expected but was
431
+ <\#<Class:[xa-f\\d]+>\\("Error"\\)> exception expected but was
432
432
  Class: <RuntimeError>
433
433
  Message: <"Error">
434
434
  EOM
@@ -78,37 +78,39 @@ module ActiveGroongaTestUtils
78
78
 
79
79
  def setup_users_table
80
80
  @users_path = @tables_dir + "users.groonga"
81
- @users = Groonga::Array.create(:name => "<table:users>",
82
- :path => @users_path.to_s)
81
+ @users = Groonga::Array.create(:name => "users",
82
+ :path => @users_path.to_s,
83
+ :sub_records => true)
83
84
 
84
85
  columns_dir = @tables_dir + "users" + "columns"
85
86
  columns_dir.mkpath
86
87
 
87
88
  @name_column_path = columns_dir + "name.groonga"
88
- @name_column = @users.define_column("name", "<shorttext>",
89
+ @name_column = @users.define_column("name", "ShortText",
89
90
  :path => @name_column_path.to_s)
90
91
  end
91
92
 
92
93
  def setup_bookmarks_table
93
94
  @bookmarks_path = @tables_dir + "bookmarks.groonga"
94
- @bookmarks = Groonga::Array.create(:name => "<table:bookmarks>",
95
- :path => @bookmarks_path.to_s)
95
+ @bookmarks = Groonga::Array.create(:name => "bookmarks",
96
+ :path => @bookmarks_path.to_s,
97
+ :sub_records => true)
96
98
 
97
99
  columns_dir = @tables_dir + "bookmarks" + "columns"
98
100
  columns_dir.mkpath
99
101
 
100
102
  @uri_column_path = columns_dir + "uri.groonga"
101
- @uri_column = @bookmarks.define_column("uri", "<shorttext>",
103
+ @uri_column = @bookmarks.define_column("uri", "ShortText",
102
104
  :path => @uri_column_path.to_s)
103
105
 
104
106
  @comment_column_path = columns_dir + "comment.groonga"
105
107
  @comment_column =
106
- @bookmarks.define_column("comment", "<text>",
108
+ @bookmarks.define_column("comment", "Text",
107
109
  :path => @comment_column_path.to_s)
108
110
 
109
111
  @content_column_path = columns_dir + "content.groonga"
110
112
  @content_column =
111
- @bookmarks.define_column("content", "<longtext>",
113
+ @bookmarks.define_column("content", "LongText",
112
114
  :path => @content_column_path.to_s)
113
115
 
114
116
  @user_column_path = columns_dir + "user.groonga"
@@ -121,51 +123,48 @@ module ActiveGroongaTestUtils
121
123
 
122
124
  def define_timestamp(table, columns_dir)
123
125
  created_at_column_path = columns_dir + "created_at.groonga"
124
- table.define_column("created_at", "<time>",
126
+ table.define_column("created_at", "Time",
125
127
  :path => created_at_column_path.to_s)
126
128
 
127
129
  updated_at_column_path = columns_dir + "updated_at.groonga"
128
- table.define_column("updated_at", "<time>",
130
+ table.define_column("updated_at", "Time",
129
131
  :path => updated_at_column_path.to_s)
130
132
  end
131
133
 
132
134
  def setup_bookmarks_index_tables
133
- @index = @context["<metadata:index>"]
134
-
135
- setup_bookmarks_content_index_table
136
- end
137
-
138
- def setup_bookmarks_content_index_table
139
- bookmarks_index_dir = @metadata_dir + "index" + "bookmarks"
135
+ @terms_path = @tables_dir + "terms.groonga"
136
+ @terms = Groonga::PatriciaTrie.create(:name => "terms",
137
+ :key_type => "ShortText",
138
+ :path => @terms_path.to_s,
139
+ :default_tokenizer => "TokenBigram")
140
+
141
+ columns_dir = @tables_dir + "terms" + "columns"
142
+ bookmarks_index_dir = columns_dir + "bookmarks"
140
143
  bookmarks_index_dir.mkpath
141
144
 
142
145
  @bookmarks_content_index_column_path =
143
146
  bookmarks_index_dir + "content.groonga"
144
147
  path = @bookmarks_content_index_column_path.to_s
145
148
  @bookmarks_content_index_column =
146
- @index.define_index_column("bookmarks/content", @bookmarks,
149
+ @terms.define_index_column("bookmarks/content", @bookmarks,
147
150
  :with_section => true,
148
151
  :with_weight => true,
149
152
  :with_position => true,
150
153
  :path => path)
151
154
  @bookmarks_content_index_column.source = @content_column
152
-
153
- record = ActiveGroonga::Schema.index_management_table.add
154
- record["table"] = @bookmarks.name
155
- record["column"] = "content"
156
- record["index"] = @index.name
157
155
  end
158
156
 
159
157
  def setup_tasks_table
160
158
  @tasks_path = @tables_dir + "tasks.groonga"
161
- @tasks = Groonga::Array.create(:name => "<table:tasks>",
162
- :path => @tasks_path.to_s)
159
+ @tasks = Groonga::Array.create(:name => "tasks",
160
+ :path => @tasks_path.to_s,
161
+ :sub_records => true)
163
162
 
164
163
  columns_dir = @tables_dir + "tasks" + "columns"
165
164
  columns_dir.mkpath
166
165
 
167
166
  @name_column_path = columns_dir + "name.groonga"
168
- @name_column = @tasks.define_column("name", "<shorttext>",
167
+ @name_column = @tasks.define_column("name", "ShortText",
169
168
  :path => @name_column_path.to_s)
170
169
  end
171
170
 
data/test/test-base.rb CHANGED
@@ -14,7 +14,7 @@
14
14
  # License along with this library; if not, write to the Free Software
15
15
  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16
16
 
17
- class BaseTest < Test::Unit::TestCase
17
+ class TestBase < Test::Unit::TestCase
18
18
  include ActiveGroongaTestUtils
19
19
 
20
20
  def test_find
@@ -128,16 +128,16 @@ class BaseTest < Test::Unit::TestCase
128
128
  }
129
129
  google.save!
130
130
 
131
- bookmarks = Bookmark.find_all_by_content("Google")
131
+ bookmarks = Bookmark.find(:all) {|record| record["content"] =~ "Google"}
132
132
  assert_equal([google], bookmarks)
133
133
 
134
134
  google.content = "<html><body>...Empty...</body></html>"
135
135
  google.save!
136
136
 
137
- bookmarks = Bookmark.find_all_by_content("Google")
137
+ bookmarks = Bookmark.find(:all) {|record| record["content"] =~ "Google"}
138
138
  assert_equal([], bookmarks)
139
139
 
140
- bookmarks = Bookmark.find_all_by_content("Empty")
140
+ bookmarks = Bookmark.find(:all) {|record| record["content"] =~ "Empty"}
141
141
  assert_equal([google], bookmarks)
142
142
  end
143
143
 
@@ -167,8 +167,8 @@ class BaseTest < Test::Unit::TestCase
167
167
  "comment" => "a search engine",
168
168
  "content" => "<html><body>...Google...</body></html>")
169
169
 
170
-
171
- assert_equal([google], Bookmark.find_all_by_content("Google"))
170
+ assert_equal([google],
171
+ Bookmark.find(:all) {|record| record["content"] =~ "Google"})
172
172
  end
173
173
 
174
174
  def test_find_by_model
@@ -191,4 +191,14 @@ class BaseTest < Test::Unit::TestCase
191
191
  groonga.reload
192
192
  assert_equal("fulltext search engine", groonga.comment)
193
193
  end
194
+
195
+ def test_find_column_access_by_method
196
+ google = Bookmark.create("uri" => "http://google.com/",
197
+ "comment" => "a search engine",
198
+ "content" => "<html><body>Google</body></html>")
199
+
200
+
201
+ assert_equal([google],
202
+ Bookmark.find(:all) {|record| record.content =~ "Google"})
203
+ end
194
204
  end
@@ -0,0 +1,48 @@
1
+ # Copyright (C) 2009 Kouhei Sutou <kou@clear-code.com>
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16
+
17
+ class TestSchemaDumper < Test::Unit::TestCase
18
+ include ActiveGroongaTestUtils
19
+
20
+ def setup
21
+ @output = StringIO.new
22
+ end
23
+
24
+ def test_dump
25
+ ActiveGroonga::SchemaDumper.dump(@output)
26
+ assert_equal(<<-EOS, @output.string.gsub(/^\s*(?:#.*)?\n/, ''))
27
+ ActiveGroonga::Schema.define(:version => 0) do
28
+ create_table "bookmarks", :force => true do |t|
29
+ t.string "uri"
30
+ t.time "updated_at"
31
+ t.time "created_at"
32
+ t.text "content"
33
+ t.text "comment"
34
+ end
35
+ create_table "tasks", :force => true do |t|
36
+ t.string "name"
37
+ end
38
+ create_table "terms", :force => true, :type => :patricia_trie, :key_type => "ShortText", :default_tokenizer => "TokenBigram" do |t|
39
+ end
40
+ create_table "users", :force => true do |t|
41
+ t.string "name"
42
+ end
43
+ add_column "bookmarks", "user", "users"
44
+ add_index_column "terms", "bookmarks", "content", :name => "bookmarks/content"
45
+ end
46
+ EOS
47
+ end
48
+ end
data/test/test-schema.rb CHANGED
@@ -14,7 +14,7 @@
14
14
  # License along with this library; if not, write to the Free Software
15
15
  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16
16
 
17
- class SchemaTest < Test::Unit::TestCase
17
+ class TestSchema < Test::Unit::TestCase
18
18
  include ActiveGroongaTestUtils
19
19
 
20
20
  def test_create_table
@@ -34,14 +34,30 @@ class SchemaTest < Test::Unit::TestCase
34
34
  assert_predicate(column_file, :exist?)
35
35
  end
36
36
 
37
+ def test_reference_column
38
+ ActiveGroonga::Schema.create_table(:categories) do |table|
39
+ table.string :name
40
+ end
41
+
42
+ column_file = @tables_dir + "posts" + "columns" + "category.groonga"
43
+ assert_not_predicate(column_file, :exist?)
44
+ ActiveGroonga::Schema.create_table(:posts) do |table|
45
+ table.reference :category
46
+ end
47
+ assert_predicate(column_file, :exist?)
48
+ end
49
+
37
50
  def test_add_index
38
- base_dir = @metadata_dir + "index" + "posts"
39
- index_file = base_dir + "content.groonga"
51
+ columns_dir = @tables_dir + "words" + "columns" + "posts"
52
+ index_file = columns_dir + "posts_content.groonga"
40
53
  assert_not_predicate(index_file, :exist?)
41
54
 
42
55
  ActiveGroonga::Schema.create_table(:posts) do |table|
43
56
  table.string :content
44
- table.index :content
57
+ end
58
+
59
+ ActiveGroonga::Schema.create_table(:words) do |table|
60
+ table.index :posts, :content
45
61
  end
46
62
 
47
63
  assert_predicate(index_file, :exist?)
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activegroonga
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kouhei Sutou
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-06-05 00:00:00 +09:00
12
+ date: 2009-08-01 00:00:00 +09:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - "="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.0.2
23
+ version: 0.0.6
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activerecord
@@ -44,10 +44,10 @@ executables: []
44
44
  extensions: []
45
45
 
46
46
  extra_rdoc_files:
47
- - NEWS.ja.rdoc
48
- - NEWS.rdoc
49
47
  - README.rdoc
48
+ - NEWS.ja.rdoc
50
49
  - README.ja.rdoc
50
+ - NEWS.rdoc
51
51
  files:
52
52
  - AUTHORS
53
53
  - NEWS.ja.rdoc
@@ -63,6 +63,7 @@ files:
63
63
  - lib/active_groonga/base.rb
64
64
  - lib/active_groonga/column.rb
65
65
  - lib/active_groonga/dirty.rb
66
+ - lib/active_groonga/dynamic_record_expression_builder.rb
66
67
  - lib/active_groonga/fixtures.rb
67
68
  - lib/active_groonga/migration.rb
68
69
  - lib/active_groonga/rails_support.rb
@@ -79,6 +80,12 @@ files:
79
80
  - license/LGPL
80
81
  - rails/README
81
82
  - rails/init.rb
83
+ - rails_generators/index_table_groonga/USAGE
84
+ - rails_generators/index_table_groonga/index_table_groonga_generator.rb
85
+ - rails_generators/index_table_groonga/templates/migration.rb
86
+ - rails_generators/migration_groonga/USAGE
87
+ - rails_generators/migration_groonga/migration_groonga_generator.rb
88
+ - rails_generators/migration_groonga/templates/migration.rb
82
89
  - rails_generators/model_groonga/USAGE
83
90
  - rails_generators/model_groonga/model_groonga_generator.rb
84
91
  - rails_generators/model_groonga/templates/fixtures.yml
@@ -149,10 +156,10 @@ files:
149
156
  - test-unit/test/test-omission.rb
150
157
  - test-unit/test/test-pending.rb
151
158
  - test-unit/test/test-priority.rb
159
+ - test-unit/test/test-testcase.rb
152
160
  - test-unit/test/test_assertions.rb
153
161
  - test-unit/test/test_error.rb
154
162
  - test-unit/test/test_failure.rb
155
- - test-unit/test/test_testcase.rb
156
163
  - test-unit/test/test_testresult.rb
157
164
  - test-unit/test/test_testsuite.rb
158
165
  - test-unit/test/testunit-test-util.rb
@@ -168,7 +175,12 @@ files:
168
175
  - test/run-test.rb
169
176
  - test/test-associations.rb
170
177
  - test/test-base.rb
178
+ - test/test-schema-dumper.rb
171
179
  - test/test-schema.rb
180
+ - test/tmp/database/database.groonga
181
+ - test/tmp/database/database.groonga.0000000
182
+ - test/tmp/database/database.groonga.0000100
183
+ - test/tmp/database/database.groonga.0000101
172
184
  has_rdoc: true
173
185
  homepage: http://groonga.rubyforge.org/
174
186
  licenses: []
@@ -194,7 +206,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
194
206
  requirements: []
195
207
 
196
208
  rubyforge_project: groonga
197
- rubygems_version: 1.3.3
209
+ rubygems_version: 1.3.4
198
210
  signing_key:
199
211
  specification_version: 3
200
212
  summary: A library to use groonga with ActiveRecord like API.