milkode 0.1.0

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 (70) hide show
  1. data/.document +5 -0
  2. data/Gemfile +12 -0
  3. data/Gemfile.lock +18 -0
  4. data/HISTORY.rdoc +5 -0
  5. data/LICENSE.txt +20 -0
  6. data/README.rdoc +19 -0
  7. data/Rakefile +78 -0
  8. data/VERSION +1 -0
  9. data/bin/cdv +6 -0
  10. data/bin/cdview +10 -0
  11. data/bin/milk +10 -0
  12. data/lib/milkode/cdstk/cdstk.rb +508 -0
  13. data/lib/milkode/cdstk/cdstk_yaml.rb +106 -0
  14. data/lib/milkode/cdstk/cli_cdstk.rb +103 -0
  15. data/lib/milkode/cdstk/cli_cdstksub.rb +102 -0
  16. data/lib/milkode/cdview/cli_cdview.rb +43 -0
  17. data/lib/milkode/cdweb/app.rb +136 -0
  18. data/lib/milkode/cdweb/cli_cdweb.rb +111 -0
  19. data/lib/milkode/cdweb/config.ru +3 -0
  20. data/lib/milkode/cdweb/lib/coderay_wrapper.rb +94 -0
  21. data/lib/milkode/cdweb/lib/command.rb +67 -0
  22. data/lib/milkode/cdweb/lib/database.rb +260 -0
  23. data/lib/milkode/cdweb/lib/grep.rb +68 -0
  24. data/lib/milkode/cdweb/lib/mkurl.rb +56 -0
  25. data/lib/milkode/cdweb/lib/query.rb +81 -0
  26. data/lib/milkode/cdweb/lib/search_contents.rb +117 -0
  27. data/lib/milkode/cdweb/lib/search_files.rb +88 -0
  28. data/lib/milkode/cdweb/public/css/coderay.css +131 -0
  29. data/lib/milkode/cdweb/public/css/gren.css +75 -0
  30. data/lib/milkode/cdweb/public/images/directory.png +0 -0
  31. data/lib/milkode/cdweb/public/images/file.png +0 -0
  32. data/lib/milkode/cdweb/public/images/gren-icon-mini.png +0 -0
  33. data/lib/milkode/cdweb/public/images/gren-icon.png +0 -0
  34. data/lib/milkode/cdweb/views/filelist.haml +14 -0
  35. data/lib/milkode/cdweb/views/help.haml +16 -0
  36. data/lib/milkode/cdweb/views/index.haml +17 -0
  37. data/lib/milkode/cdweb/views/layout.haml +33 -0
  38. data/lib/milkode/cdweb/views/search.haml +12 -0
  39. data/lib/milkode/cdweb/views/view.haml +16 -0
  40. data/lib/milkode/common/dbdir.rb +39 -0
  41. data/lib/milkode/common/display_util.rb +62 -0
  42. data/lib/milkode/common/grenfiletest.rb +19 -0
  43. data/lib/milkode/common/grensnip.rb +37 -0
  44. data/lib/milkode/common/platform.rb +17 -0
  45. data/lib/milkode/common/string_snip.rb +61 -0
  46. data/lib/milkode/common/util.rb +144 -0
  47. data/lib/milkode/findgrep/findgrep.rb +408 -0
  48. data/lib/milkode/findgrep/result.rb +43 -0
  49. data/milkode.gemspec +159 -0
  50. data/test/data/abc.zip +0 -0
  51. data/test/data/nodir_abc.zip +0 -0
  52. data/test/data/nodir_abc_xpi.xpi +0 -0
  53. data/test/file_assert.rb +41 -0
  54. data/test/file_test_utils.rb +59 -0
  55. data/test/rake_test_loader.rb +7 -0
  56. data/test/runner.rb +11 -0
  57. data/test/test_bin_exec.rb +30 -0
  58. data/test/test_cdstk.rb +90 -0
  59. data/test/test_cdstk_yaml.rb +157 -0
  60. data/test/test_coderay_wrapper.rb +22 -0
  61. data/test/test_coderay_wrapper_data.rb +91 -0
  62. data/test/test_database.rb +78 -0
  63. data/test/test_dbdir.rb +60 -0
  64. data/test/test_gren_util.rb +34 -0
  65. data/test/test_helper.rb +2 -0
  66. data/test/test_mkurl.rb +30 -0
  67. data/test/test_query.rb +54 -0
  68. data/test/test_string_snip.rb +31 -0
  69. data/test/test_util.rb +40 -0
  70. metadata +300 -0
@@ -0,0 +1,159 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{milkode}
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["ongaeshi"]
12
+ s.date = %q{2011-07-25}
13
+ s.description = %q{longer description of your gem}
14
+ s.email = %q{ongaeshi0621@gmail.com}
15
+ s.executables = ["cdv", "milk", "cdview"]
16
+ s.extra_rdoc_files = [
17
+ "LICENSE.txt",
18
+ "README.rdoc"
19
+ ]
20
+ s.files = [
21
+ ".document",
22
+ "Gemfile",
23
+ "Gemfile.lock",
24
+ "HISTORY.rdoc",
25
+ "LICENSE.txt",
26
+ "README.rdoc",
27
+ "Rakefile",
28
+ "VERSION",
29
+ "bin/cdv",
30
+ "bin/cdview",
31
+ "bin/milk",
32
+ "lib/milkode/cdstk/cdstk.rb",
33
+ "lib/milkode/cdstk/cdstk_yaml.rb",
34
+ "lib/milkode/cdstk/cli_cdstk.rb",
35
+ "lib/milkode/cdstk/cli_cdstksub.rb",
36
+ "lib/milkode/cdview/cli_cdview.rb",
37
+ "lib/milkode/cdweb/app.rb",
38
+ "lib/milkode/cdweb/cli_cdweb.rb",
39
+ "lib/milkode/cdweb/config.ru",
40
+ "lib/milkode/cdweb/lib/coderay_wrapper.rb",
41
+ "lib/milkode/cdweb/lib/command.rb",
42
+ "lib/milkode/cdweb/lib/database.rb",
43
+ "lib/milkode/cdweb/lib/grep.rb",
44
+ "lib/milkode/cdweb/lib/mkurl.rb",
45
+ "lib/milkode/cdweb/lib/query.rb",
46
+ "lib/milkode/cdweb/lib/search_contents.rb",
47
+ "lib/milkode/cdweb/lib/search_files.rb",
48
+ "lib/milkode/cdweb/public/css/coderay.css",
49
+ "lib/milkode/cdweb/public/css/gren.css",
50
+ "lib/milkode/cdweb/public/images/directory.png",
51
+ "lib/milkode/cdweb/public/images/file.png",
52
+ "lib/milkode/cdweb/public/images/gren-icon-mini.png",
53
+ "lib/milkode/cdweb/public/images/gren-icon.png",
54
+ "lib/milkode/cdweb/views/filelist.haml",
55
+ "lib/milkode/cdweb/views/help.haml",
56
+ "lib/milkode/cdweb/views/index.haml",
57
+ "lib/milkode/cdweb/views/layout.haml",
58
+ "lib/milkode/cdweb/views/search.haml",
59
+ "lib/milkode/cdweb/views/view.haml",
60
+ "lib/milkode/common/dbdir.rb",
61
+ "lib/milkode/common/display_util.rb",
62
+ "lib/milkode/common/grenfiletest.rb",
63
+ "lib/milkode/common/grensnip.rb",
64
+ "lib/milkode/common/platform.rb",
65
+ "lib/milkode/common/string_snip.rb",
66
+ "lib/milkode/common/util.rb",
67
+ "lib/milkode/findgrep/findgrep.rb",
68
+ "lib/milkode/findgrep/result.rb",
69
+ "milkode.gemspec",
70
+ "test/data/abc.zip",
71
+ "test/data/nodir_abc.zip",
72
+ "test/data/nodir_abc_xpi.xpi",
73
+ "test/file_assert.rb",
74
+ "test/file_test_utils.rb",
75
+ "test/rake_test_loader.rb",
76
+ "test/runner.rb",
77
+ "test/test_bin_exec.rb",
78
+ "test/test_cdstk.rb",
79
+ "test/test_cdstk_yaml.rb",
80
+ "test/test_coderay_wrapper.rb",
81
+ "test/test_coderay_wrapper_data.rb",
82
+ "test/test_database.rb",
83
+ "test/test_dbdir.rb",
84
+ "test/test_gren_util.rb",
85
+ "test/test_helper.rb",
86
+ "test/test_mkurl.rb",
87
+ "test/test_query.rb",
88
+ "test/test_string_snip.rb",
89
+ "test/test_util.rb"
90
+ ]
91
+ s.homepage = %q{http://github.com/ongaeshi/milkode}
92
+ s.licenses = ["MIT"]
93
+ s.require_paths = ["lib"]
94
+ s.rubygems_version = %q{1.3.6}
95
+ s.summary = %q{Line based local source(src) code search engin & web-app}
96
+ s.test_files = [
97
+ "test/file_assert.rb",
98
+ "test/file_test_utils.rb",
99
+ "test/rake_test_loader.rb",
100
+ "test/runner.rb",
101
+ "test/test_bin_exec.rb",
102
+ "test/test_cdstk.rb",
103
+ "test/test_cdstk_yaml.rb",
104
+ "test/test_coderay_wrapper.rb",
105
+ "test/test_coderay_wrapper_data.rb",
106
+ "test/test_database.rb",
107
+ "test/test_dbdir.rb",
108
+ "test/test_gren_util.rb",
109
+ "test/test_helper.rb",
110
+ "test/test_mkurl.rb",
111
+ "test/test_query.rb",
112
+ "test/test_string_snip.rb",
113
+ "test/test_util.rb"
114
+ ]
115
+
116
+ if s.respond_to? :specification_version then
117
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
118
+ s.specification_version = 3
119
+
120
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
121
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
122
+ s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
123
+ s.add_development_dependency(%q<rcov>, [">= 0"])
124
+ s.add_runtime_dependency(%q<termcolor>, [">= 1.2.0"])
125
+ s.add_runtime_dependency(%q<rroonga>, [">= 1.0.0"])
126
+ s.add_runtime_dependency(%q<rack>, [">= 1.2.1"])
127
+ s.add_runtime_dependency(%q<sinatra>, [">= 1.2.6"])
128
+ s.add_runtime_dependency(%q<launchy>, [">= 0.3.7"])
129
+ s.add_runtime_dependency(%q<coderay>, [">= 0.9.8"])
130
+ s.add_runtime_dependency(%q<thin>, [">= 1.2.10"])
131
+ s.add_runtime_dependency(%q<archive-zip>, [">= 0.3.0"])
132
+ else
133
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
134
+ s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
135
+ s.add_dependency(%q<rcov>, [">= 0"])
136
+ s.add_dependency(%q<termcolor>, [">= 1.2.0"])
137
+ s.add_dependency(%q<rroonga>, [">= 1.0.0"])
138
+ s.add_dependency(%q<rack>, [">= 1.2.1"])
139
+ s.add_dependency(%q<sinatra>, [">= 1.2.6"])
140
+ s.add_dependency(%q<launchy>, [">= 0.3.7"])
141
+ s.add_dependency(%q<coderay>, [">= 0.9.8"])
142
+ s.add_dependency(%q<thin>, [">= 1.2.10"])
143
+ s.add_dependency(%q<archive-zip>, [">= 0.3.0"])
144
+ end
145
+ else
146
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
147
+ s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
148
+ s.add_dependency(%q<rcov>, [">= 0"])
149
+ s.add_dependency(%q<termcolor>, [">= 1.2.0"])
150
+ s.add_dependency(%q<rroonga>, [">= 1.0.0"])
151
+ s.add_dependency(%q<rack>, [">= 1.2.1"])
152
+ s.add_dependency(%q<sinatra>, [">= 1.2.6"])
153
+ s.add_dependency(%q<launchy>, [">= 0.3.7"])
154
+ s.add_dependency(%q<coderay>, [">= 0.9.8"])
155
+ s.add_dependency(%q<thin>, [">= 1.2.10"])
156
+ s.add_dependency(%q<archive-zip>, [">= 0.3.0"])
157
+ end
158
+ end
159
+
Binary file
Binary file
@@ -0,0 +1,41 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # @file
4
+ # @brief ファイルテスト用アサート関数群
5
+ # @author ongaeshi
6
+ # @date 2011/06/22
7
+ #
8
+ # 以下の関数が使えます
9
+ #
10
+ # assert_diff_files(file1, file2)
11
+ #
12
+ # 二つのファイルが等しい場合はテスト成功
13
+ # 失敗した場合は二つのファイルのdiffを表示します
14
+ #
15
+ # assert_lines(s1, s2)
16
+ #
17
+ # 文字列を行単位で比較します。
18
+ #
19
+
20
+ def assert_diff_files(file1, file2)
21
+ unless (IO.read(file1) == IO.read(file2))
22
+ puts `diff -c #{file1} #{file2}`
23
+ assert_equal true, false
24
+ else
25
+ assert_equal true, true
26
+ end
27
+ end
28
+
29
+ def assert_lines(s1, s2)
30
+ a1 = s1.to_a
31
+ a2 = s2.to_a
32
+
33
+ a1.each_index do |i|
34
+ assert_equal a1[i], a2[i]
35
+ end
36
+
37
+ # s1の行数が長い時にエラーが出てしまう
38
+
39
+ assert_equal a1.size, a2.size
40
+ end
41
+
@@ -0,0 +1,59 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # @file
4
+ # @brief ファイルテスト用ユーティリティ
5
+ # @author ongaeshi
6
+ # @date 2011/02/21
7
+ #
8
+ #
9
+ # 以下のことを自動でやってくれます
10
+ #
11
+ # 1. tmpディレクトリの作成
12
+ # 2. tmpディレクトリに移動
13
+ # 3. テスト実行
14
+ # 4. 元のディレクトリに戻る
15
+ # 5. tmpディレクトリの削除
16
+ #
17
+ # また、以下の関数が使えます
18
+ #
19
+ # assert_diff_files(file1, file2)
20
+ #
21
+ # 二つのファイルが等しい場合はテスト成功
22
+ # 失敗した場合は二つのファイルのdiffを表示します
23
+
24
+ require 'pathname'
25
+ require 'fileutils'
26
+
27
+ module FileTestUtils
28
+ def setup
29
+ create_tmp_dir
30
+ FileUtils.cd(@tmp_dir.to_s)
31
+ end
32
+
33
+ def assert_diff_files(file1, file2)
34
+ unless (IO.read(file1) == IO.read(file2))
35
+ puts `diff -c #{file1} #{file2}`
36
+ assert_equal true, false
37
+ else
38
+ assert_equal true, true
39
+ end
40
+ end
41
+
42
+ def teardown
43
+ teardown_custom(true)
44
+ end
45
+
46
+ def teardown_custom(is_remove_dir)
47
+ FileUtils.cd(@prev_dir)
48
+ FileUtils.rm_rf(@tmp_dir.to_s) if (is_remove_dir)
49
+ end
50
+
51
+ private
52
+
53
+ def create_tmp_dir
54
+ @prev_dir = Dir.pwd
55
+ @tmp_dir = Pathname(File.dirname(__FILE__)) + "tmp"
56
+ FileUtils.rm_rf(@tmp_dir.to_s)
57
+ FileUtils.mkdir_p(@tmp_dir.to_s)
58
+ end
59
+ end
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Load the test files from the command line.
4
+ require 'rubygems'
5
+ require 'groonga'
6
+
7
+ ARGV.each { |f| load f unless f =~ /^-/ }
@@ -0,0 +1,11 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # @file
4
+ # @brief
5
+ # @author ongaeshi
6
+ # @date 2011/03/11
7
+
8
+ require 'test/unit'
9
+ Test::Unit::AutoRunner.run(true, '.')
10
+
11
+
@@ -0,0 +1,30 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # @file
4
+ # @brief
5
+ # @author ongaeshi
6
+ # @date 2011/03/08
7
+
8
+ require 'rubygems'
9
+ require 'test/unit'
10
+ require 'milkode/cdstk/cli_cdstk'
11
+ require 'milkode/cdview/cli_cdview'
12
+
13
+ class TestBinExec < Test::Unit::TestCase
14
+ def test_bin_exec
15
+ io = StringIO.new
16
+
17
+ Milkode::CLI_Cdstk.execute(io)
18
+
19
+ Milkode::CLI_Cdview.execute(io)
20
+
21
+ # 一定時間だけ起動するような仕組みは無いものか
22
+ # Milkode::CLI_Cdweb.execute(io, "--no-browser -p 5555".split)
23
+
24
+ # puts io.string
25
+ end
26
+ end
27
+
28
+
29
+
30
+
@@ -0,0 +1,90 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # @file
4
+ # @brief
5
+ # @author ongaeshi
6
+ # @date 2011/02/20
7
+
8
+ require 'rubygems'
9
+ require 'groonga'
10
+ require 'test_helper'
11
+ require 'file_test_utils'
12
+ require 'milkode/cdstk/cli_cdstk.rb'
13
+ require 'milkode/cdstk/cdstk'
14
+ require 'stringio'
15
+
16
+ class TestCdstk < Test::Unit::TestCase
17
+ include Milkode
18
+ include FileTestUtils
19
+
20
+ # メッセージを出す時はここをコメントアウト
21
+ def dbputs(msg)
22
+ # puts msg
23
+ end
24
+ private :dbputs
25
+
26
+ def test_basic
27
+ io = StringIO.new
28
+
29
+ begin
30
+ obj = Cdstk.new(io)
31
+
32
+ io.puts('--- init ---')
33
+ obj.init
34
+
35
+ io.puts('--- add ---')
36
+ obj.add(['../../lib/milkode/findgrep', '../../lib/milkode/common'])
37
+ obj.add(['../../lib/milkode/findgrep'])
38
+ obj.add(['../data/abc.zip'])
39
+ obj.add(['../data/nodir_abc.zip'])
40
+ obj.add(['../data/nodir_abc_xpi.xpi'])
41
+ obj.add(['http://ongaeshi.me/test_data/http_nodir_abc.zip'])
42
+ assert_raise(OpenURI::HTTPError) { obj.add(['http://ongaeshi.me/test_data/not_found.zip']) }
43
+
44
+ FileUtils.touch('last1.txt')
45
+ obj.add(['last1.txt'])
46
+ FileUtils.touch('atodekesu.txt')
47
+ obj.add(['atodekesu.txt'])
48
+ FileUtils.rm('atodekesu.txt')
49
+
50
+ io.puts('--- add notfound ---')
51
+ obj.add(['notfound.html'])
52
+
53
+ io.puts('--- update ---')
54
+ FileUtils.touch('packages/zip/abc/c.txt')
55
+ FileUtils.touch('packages/zip/abc/d.txt')
56
+ obj.update
57
+
58
+ io.puts('--- remove ---')
59
+ obj.remove(['findgrep'], {:force => true})
60
+ obj.remove([], {:force => true})
61
+ obj.remove(['abc', 'nodir_abc'], {:force => true})
62
+
63
+ io.puts('--- list ---')
64
+ obj.list([], {:verbose => true})
65
+ obj.list(['com'], {:verbose => false})
66
+
67
+ io.puts('--- cleanup ---')
68
+ # 何故か 'rake test' で実行すると上手く動かないので、一旦テストから外す
69
+ # obj.cleanup({:force=>true})
70
+
71
+ io.puts('--- rebuild ---')
72
+ obj.rebuild
73
+
74
+ io.puts('--- remove ---')
75
+ obj.remove(['findgrep', 'common'], {:force => true})
76
+
77
+ io.puts('--- dump ---')
78
+ obj.dump
79
+ ensure
80
+ dbputs io.string
81
+ end
82
+ end
83
+
84
+ def teardown
85
+ teardown_custom(true)
86
+ # teardown_custom(false)
87
+ end
88
+ end
89
+
90
+
@@ -0,0 +1,157 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # @file
4
+ # @brief
5
+ # @author ongaeshi
6
+ # @date 2011/02/20
7
+
8
+ require 'test_helper'
9
+ require 'milkode/cdstk/cdstk_yaml.rb'
10
+ require 'fileutils'
11
+
12
+ class TestCdstkYaml < Test::Unit::TestCase
13
+ include Milkode
14
+
15
+ def setup
16
+ @prev_dir = Dir.pwd
17
+ @tmp_dir = Pathname(File.dirname(__FILE__)) + "tmp"
18
+ FileUtils.rm_rf(@tmp_dir.to_s)
19
+ FileUtils.mkdir_p(@tmp_dir.to_s)
20
+ FileUtils.cd(@tmp_dir.to_s)
21
+ end
22
+
23
+ def test_000
24
+ # create
25
+ yaml = CdstkYaml.create
26
+ assert_equal yaml.contents, []
27
+ assert_equal yaml.version, 0.1
28
+ assert_raise(CdstkYaml::YAMLAlreadyExist) { CdstkYaml.create }
29
+
30
+ # load
31
+ yaml = CdstkYaml.load
32
+ assert_equal yaml.contents, []
33
+ assert_equal yaml.version, 0.1
34
+
35
+ # load fail
36
+ FileUtils.mkdir 'loadtest'
37
+ FileUtils.cd 'loadtest' do
38
+ assert_raise(CdstkYaml::YAMLNotExist) { CdstkYaml.load }
39
+ end
40
+
41
+ # add
42
+ yaml.add(['dir1'])
43
+ yaml.add(['dir2', 'dir3'])
44
+ assert_equal ['dir1', 'dir2', 'dir3'], yaml.directorys
45
+
46
+ # remove
47
+ yaml.add(['dir2', 'dir4', 'dir5'])
48
+ yaml.remove(CdstkYaml::Query.new ['dir5'])
49
+ yaml.remove(CdstkYaml::Query.new ['dir2', 'dir3'])
50
+ assert_equal ['dir1', 'dir4'], yaml.directorys
51
+
52
+ # save
53
+ yaml.save
54
+ assert_equal <<EOF, open('milkode.yaml').read
55
+ ---
56
+ version: 0.1
57
+ contents:
58
+ - directory: dir1
59
+ - directory: dir4
60
+ EOF
61
+ end
62
+
63
+ def test_001
64
+ FileUtils.mkdir 'otherpath'
65
+ yaml = CdstkYaml.create('otherpath')
66
+ yaml.save
67
+
68
+ # save
69
+ assert_equal <<EOF, open('otherpath/milkode.yaml').read
70
+ ---
71
+ version: 0.1
72
+ contents: []
73
+
74
+ EOF
75
+ end
76
+
77
+ def test_query
78
+ d = 'directory'
79
+
80
+ contents = [{d => 'key'}, {d => 'keyword'}, {d => 'not'}]
81
+
82
+ query = CdstkYaml::Query.new(['key'])
83
+ assert_equal [{d => 'key'}, {d => 'keyword'}], query.select(contents)
84
+
85
+ query = CdstkYaml::Query.new(['word'])
86
+ assert_equal [{d => 'keyword'}], query.select(contents)
87
+
88
+ contents = [{d => 'a/dir'}, {d => 'b/dia'}]
89
+ query = CdstkYaml::Query.new(['a'])
90
+ assert_equal [{d => 'b/dia'}], query.select(contents) # ディレクトリ名は含めない
91
+ end
92
+
93
+ def test_list
94
+ src = <<EOF
95
+ version: 0.1
96
+ contents:
97
+ - directory: /a/dir1
98
+ - directory: /b/dir4
99
+ EOF
100
+
101
+ yaml = CdstkYaml.new('dummy.yaml', YAML.load(src))
102
+ assert_equal [{"directory"=>"/a/dir1"}, {"directory"=>"/b/dir4"}], yaml.list
103
+ assert_equal [{"directory"=>"/b/dir4"}], yaml.list(CdstkYaml::Query.new(['4']))
104
+ assert_equal [], yaml.list(CdstkYaml::Query.new(['a']))
105
+ assert_equal [{"directory"=>"/a/dir1"}, {"directory"=>"/b/dir4"}], yaml.list(nil)
106
+ end
107
+
108
+ def test_remove
109
+ src = <<EOF
110
+ version: 0.1
111
+ contents:
112
+ - directory: /a/dir1
113
+ - directory: /b/dir4
114
+ EOF
115
+
116
+ yaml = CdstkYaml.new('dummy.yaml', YAML.load(src))
117
+
118
+ yaml.remove(CdstkYaml::Query.new(['dir4']))
119
+ assert_equal [{"directory"=>"/a/dir1"}], yaml.list
120
+
121
+ yaml.remove(CdstkYaml::Query.new(['dir1']))
122
+ assert_equal [], yaml.list
123
+
124
+ # ---
125
+
126
+ yaml = CdstkYaml.new('dummy.yaml', YAML.load(src))
127
+
128
+ yaml.remove(CdstkYaml::Query.new(['dir1']))
129
+ assert_equal [{"directory"=>"/b/dir4"}], yaml.list
130
+
131
+ yaml.remove(CdstkYaml::Query.new([]))
132
+ assert_equal [{"directory"=>"/b/dir4"}], yaml.list
133
+
134
+ end
135
+
136
+ def test_exist
137
+ src = <<EOF
138
+ version: 0.1
139
+ contents:
140
+ - directory: /a/dir1
141
+ - directory: /b/dir12
142
+ - directory: /b/dir4
143
+ EOF
144
+
145
+ yaml = CdstkYaml.new('dummy.yaml', YAML.load(src))
146
+
147
+ assert_not_nil yaml.exist?('dir1')
148
+ assert_not_nil yaml.exist?('dir12')
149
+ assert_nil yaml.exist?('dir123')
150
+ assert_nil yaml.exist?('dir')
151
+ end
152
+
153
+ def teardown
154
+ FileUtils.cd(@prev_dir)
155
+ FileUtils.rm_rf(@tmp_dir.to_s)
156
+ end
157
+ end