milkode 0.2.4 → 0.2.9
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.
- data/HISTORY.ja.rdoc +16 -0
 - data/HISTORY.rdoc +25 -0
 - data/Rakefile +3 -2
 - data/VERSION +1 -1
 - data/bin/gmilk +10 -0
 - data/bin/milk +1 -1
 - data/lib/milkode/cdstk/cdstk.rb +121 -6
 - data/lib/milkode/cdstk/cdstk_command.rb +28 -0
 - data/lib/milkode/cdstk/cdstk_yaml.rb +30 -3
 - data/lib/milkode/cdstk/cli_cdstk.rb +37 -14
 - data/lib/milkode/cdstk/cli_cdstksub.rb +36 -1
 - data/lib/milkode/cdweb/app.rb +1 -1
 - data/lib/milkode/cdweb/lib/coderay_wrapper.rb +4 -5
 - data/lib/milkode/cdweb/lib/database.rb +2 -0
 - data/lib/milkode/cdweb/lib/my_nokogiri.rb +34 -0
 - data/lib/milkode/common/dbdir.rb +30 -1
 - data/lib/milkode/common/util.rb +15 -3
 - data/lib/milkode/findgrep/findgrep.rb +86 -18
 - data/lib/milkode/findgrep/result.rb +2 -2
 - data/lib/milkode/grep/cli_grep.rb +113 -0
 - data/milkode.gemspec +32 -9
 - data/test/data/a_project/cdstk.rb +634 -0
 - data/test/data/a_project/cdstk_yaml.rb +130 -0
 - data/test/data/b_project/runner.rb +11 -0
 - data/test/data/b_project/test_dir.rb +21 -0
 - data/test/milkode_test_work.rb +78 -0
 - data/test/test_cdstk.rb +12 -2
 - data/test/test_cdstk_command.rb +50 -0
 - data/test/test_cdstk_yaml.rb +20 -3
 - data/test/test_cli_cdstk.rb +71 -0
 - data/test/test_cli_grep.rb +79 -0
 - data/test/test_database.rb +1 -1
 - data/test/test_dbdir.rb +11 -0
 - metadata +43 -8
 
| 
         @@ -0,0 +1,130 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -*- coding: utf-8 -*-
         
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            # @file 
         
     | 
| 
      
 4 
     | 
    
         
            +
            # @brief
         
     | 
| 
      
 5 
     | 
    
         
            +
            # @author ongaeshi
         
     | 
| 
      
 6 
     | 
    
         
            +
            # @date   2011/02/20
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            require 'yaml'
         
     | 
| 
      
 9 
     | 
    
         
            +
            require 'pathname'
         
     | 
| 
      
 10 
     | 
    
         
            +
            require 'milkode/common/dbdir'
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            module Milkode
         
     | 
| 
      
 13 
     | 
    
         
            +
              class CdstkYaml
         
     | 
| 
      
 14 
     | 
    
         
            +
                class YAMLAlreadyExist < RuntimeError
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
                
         
     | 
| 
      
 17 
     | 
    
         
            +
                class YAMLNotExist < RuntimeError
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                def self.create(path = ".")
         
     | 
| 
      
 21 
     | 
    
         
            +
                  yf = yaml_file(path)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  raise YAMLAlreadyExist.new if FileTest.exist? yf
         
     | 
| 
      
 23 
     | 
    
         
            +
                  obj = CdstkYaml.new(yf, {'contents' => [], 'version' => 0.1})
         
     | 
| 
      
 24 
     | 
    
         
            +
                  obj.save
         
     | 
| 
      
 25 
     | 
    
         
            +
                  return obj
         
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                def self.load(path = ".")
         
     | 
| 
      
 29 
     | 
    
         
            +
                  yf = yaml_file(path)
         
     | 
| 
      
 30 
     | 
    
         
            +
                  raise YAMLNotExist.new unless FileTest.exist? yf
         
     | 
| 
      
 31 
     | 
    
         
            +
                  open(yf) do |f|
         
     | 
| 
      
 32 
     | 
    
         
            +
                    return CdstkYaml.new(yf, YAML.load(f.read()))
         
     | 
| 
      
 33 
     | 
    
         
            +
                  end
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                def initialize(yaml_file, data)
         
     | 
| 
      
 37 
     | 
    
         
            +
                  @yaml_file = yaml_file
         
     | 
| 
      
 38 
     | 
    
         
            +
                  @data = data
         
     | 
| 
      
 39 
     | 
    
         
            +
                end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                def add(dirs)
         
     | 
| 
      
 42 
     | 
    
         
            +
                  contents.concat(dirs.map{|v|{'directory' => v}})
         
     | 
| 
      
 43 
     | 
    
         
            +
                  contents.uniq!
         
     | 
| 
      
 44 
     | 
    
         
            +
                end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                def remove(query)
         
     | 
| 
      
 47 
     | 
    
         
            +
                  r = query.select_any?(contents)
         
     | 
| 
      
 48 
     | 
    
         
            +
                  r.each {|v| contents.delete v}
         
     | 
| 
      
 49 
     | 
    
         
            +
                end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                def save
         
     | 
| 
      
 52 
     | 
    
         
            +
                  open(@yaml_file, "w") { |f| YAML.dump(@data, f) }
         
     | 
| 
      
 53 
     | 
    
         
            +
                end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                def contents
         
     | 
| 
      
 56 
     | 
    
         
            +
                  @data['contents']
         
     | 
| 
      
 57 
     | 
    
         
            +
                end
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
                def package_num
         
     | 
| 
      
 60 
     | 
    
         
            +
                  @data['contents'].size
         
     | 
| 
      
 61 
     | 
    
         
            +
                end
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
                def directorys
         
     | 
| 
      
 64 
     | 
    
         
            +
                  contents.map{|v|v['directory']}
         
     | 
| 
      
 65 
     | 
    
         
            +
                end
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
                def version
         
     | 
| 
      
 68 
     | 
    
         
            +
                  @data['version']
         
     | 
| 
      
 69 
     | 
    
         
            +
                end
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
                def list(query = nil)
         
     | 
| 
      
 72 
     | 
    
         
            +
                  query ? query.select_all?(contents) : contents
         
     | 
| 
      
 73 
     | 
    
         
            +
                end
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
                def exist?(shortname)
         
     | 
| 
      
 76 
     | 
    
         
            +
                  @data['contents'].find {|v| File.basename(v['directory']) == shortname }   
         
     | 
| 
      
 77 
     | 
    
         
            +
                end
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
                def cant_add_directory?(dir)
         
     | 
| 
      
 80 
     | 
    
         
            +
                  @data['contents'].find {|v|
         
     | 
| 
      
 81 
     | 
    
         
            +
                    v['directory'] != File.expand_path(dir) &&
         
     | 
| 
      
 82 
     | 
    
         
            +
                    File.basename(v['directory']) == File.basename(dir)
         
     | 
| 
      
 83 
     | 
    
         
            +
                  }
         
     | 
| 
      
 84 
     | 
    
         
            +
                end
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
                def cleanup
         
     | 
| 
      
 87 
     | 
    
         
            +
                  contents.delete_if do |v|
         
     | 
| 
      
 88 
     | 
    
         
            +
                    if (!File.exist? v['directory'])
         
     | 
| 
      
 89 
     | 
    
         
            +
                      yield v if block_given?
         
     | 
| 
      
 90 
     | 
    
         
            +
                      true
         
     | 
| 
      
 91 
     | 
    
         
            +
                    else
         
     | 
| 
      
 92 
     | 
    
         
            +
                      false
         
     | 
| 
      
 93 
     | 
    
         
            +
                    end
         
     | 
| 
      
 94 
     | 
    
         
            +
                  end
         
     | 
| 
      
 95 
     | 
    
         
            +
                end
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
                def package_root(dir)
         
     | 
| 
      
 98 
     | 
    
         
            +
                  @data['contents'].find do |v|
         
     | 
| 
      
 99 
     | 
    
         
            +
                    v if dir =~ /^#{v['directory']}/
         
     | 
| 
      
 100 
     | 
    
         
            +
                  end
         
     | 
| 
      
 101 
     | 
    
         
            +
                end
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
                def package_root_dir(dir)
         
     | 
| 
      
 104 
     | 
    
         
            +
                  package = package_root(dir)
         
     | 
| 
      
 105 
     | 
    
         
            +
                  (package) ? package['directory'] : nil
         
     | 
| 
      
 106 
     | 
    
         
            +
                end
         
     | 
| 
      
 107 
     | 
    
         
            +
             
     | 
| 
      
 108 
     | 
    
         
            +
                def self.yaml_file(path)
         
     | 
| 
      
 109 
     | 
    
         
            +
                  Dbdir.yaml_path(path)
         
     | 
| 
      
 110 
     | 
    
         
            +
                end
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
                class Query
         
     | 
| 
      
 113 
     | 
    
         
            +
                  def initialize(keywords)
         
     | 
| 
      
 114 
     | 
    
         
            +
                    @keywords = keywords
         
     | 
| 
      
 115 
     | 
    
         
            +
                  end
         
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
      
 117 
     | 
    
         
            +
                  def select_any?(contents)
         
     | 
| 
      
 118 
     | 
    
         
            +
                    contents.find_all do |v|
         
     | 
| 
      
 119 
     | 
    
         
            +
                      @keywords.any? {|s| File.basename(v['directory']).include? s }
         
     | 
| 
      
 120 
     | 
    
         
            +
                    end
         
     | 
| 
      
 121 
     | 
    
         
            +
                  end
         
     | 
| 
      
 122 
     | 
    
         
            +
             
     | 
| 
      
 123 
     | 
    
         
            +
                  def select_all?(contents)
         
     | 
| 
      
 124 
     | 
    
         
            +
                    contents.find_all do |v|
         
     | 
| 
      
 125 
     | 
    
         
            +
                      @keywords.all? {|s| File.basename(v['directory']).include? s }
         
     | 
| 
      
 126 
     | 
    
         
            +
                    end
         
     | 
| 
      
 127 
     | 
    
         
            +
                  end
         
     | 
| 
      
 128 
     | 
    
         
            +
                end
         
     | 
| 
      
 129 
     | 
    
         
            +
              end
         
     | 
| 
      
 130 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,21 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -*- coding: utf-8 -*-
         
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            # @file 
         
     | 
| 
      
 4 
     | 
    
         
            +
            # @brief
         
     | 
| 
      
 5 
     | 
    
         
            +
            # @author ongaeshi
         
     | 
| 
      
 6 
     | 
    
         
            +
            # @date   2011/02/20
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            require 'milkode/common/dir'
         
     | 
| 
      
 9 
     | 
    
         
            +
            require 'test/unit'
         
     | 
| 
      
 10 
     | 
    
         
            +
            require 'file_test_utils'
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            class TestDir < Test::Unit::TestCase
         
     | 
| 
      
 13 
     | 
    
         
            +
              include FileTestUtils
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              def test_emptydir?
         
     | 
| 
      
 16 
     | 
    
         
            +
                assert_equal true, Dir.emptydir?(".")
         
     | 
| 
      
 17 
     | 
    
         
            +
                assert_equal false, Dir.emptydir?("..")
         
     | 
| 
      
 18 
     | 
    
         
            +
              end
         
     | 
| 
      
 19 
     | 
    
         
            +
            end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,78 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -*- coding: utf-8 -*-
         
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            # @file 
         
     | 
| 
      
 4 
     | 
    
         
            +
            # @brief Milkodeテスト用のワーク領域確保
         
     | 
| 
      
 5 
     | 
    
         
            +
            # @author ongaeshi
         
     | 
| 
      
 6 
     | 
    
         
            +
            # @date 2011/12/14
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            require 'test_helper'
         
     | 
| 
      
 9 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 10 
     | 
    
         
            +
            require 'groonga'
         
     | 
| 
      
 11 
     | 
    
         
            +
            require 'pathname'
         
     | 
| 
      
 12 
     | 
    
         
            +
            require 'fileutils'
         
     | 
| 
      
 13 
     | 
    
         
            +
            require 'milkode/cdstk/cdstk'
         
     | 
| 
      
 14 
     | 
    
         
            +
            require 'milkode/common/dbdir'
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            class MilkodeTestWork
         
     | 
| 
      
 17 
     | 
    
         
            +
              def initialize(option = nil)
         
     | 
| 
      
 18 
     | 
    
         
            +
                @option = option
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                create_tmp_dir
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                if (@option[:default_db])
         
     | 
| 
      
 23 
     | 
    
         
            +
                  @old_path = Dbdir.milkode_db_dir
         
     | 
| 
      
 24 
     | 
    
         
            +
                  path = expand_path(".milkode_db_dir")
         
     | 
| 
      
 25 
     | 
    
         
            +
                  Dbdir.set_milkode_db_dir path
         
     | 
| 
      
 26 
     | 
    
         
            +
                  open(Dbdir.milkode_db_dir, "w") {|f| f.print expand_path("db1") }
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                init_db("db1")
         
     | 
| 
      
 30 
     | 
    
         
            +
              end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
              def init_db(name)
         
     | 
| 
      
 33 
     | 
    
         
            +
                dbdir = expand_path(name)
         
     | 
| 
      
 34 
     | 
    
         
            +
                FileUtils.mkdir_p dbdir
         
     | 
| 
      
 35 
     | 
    
         
            +
                Dir.chdir(dbdir) { cdstk.init }
         
     | 
| 
      
 36 
     | 
    
         
            +
              end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
              def add_package(name, package_path)
         
     | 
| 
      
 39 
     | 
    
         
            +
                dbdir = expand_path(name)
         
     | 
| 
      
 40 
     | 
    
         
            +
                
         
     | 
| 
      
 41 
     | 
    
         
            +
                Dir.chdir(dbdir) do
         
     | 
| 
      
 42 
     | 
    
         
            +
                  cdstk.add [package_path]
         
     | 
| 
      
 43 
     | 
    
         
            +
                end
         
     | 
| 
      
 44 
     | 
    
         
            +
              end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
              def teardown
         
     | 
| 
      
 47 
     | 
    
         
            +
                FileUtils.rm_rf(@tmp_dir.to_s)
         
     | 
| 
      
 48 
     | 
    
         
            +
                Dbdir.set_milkode_db_dir @old_path if (@option[:default_db])
         
     | 
| 
      
 49 
     | 
    
         
            +
              end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
              def path(path)
         
     | 
| 
      
 52 
     | 
    
         
            +
                File.join @tmp_dir.to_s, path
         
     | 
| 
      
 53 
     | 
    
         
            +
              end
         
     | 
| 
      
 54 
     | 
    
         
            +
              
         
     | 
| 
      
 55 
     | 
    
         
            +
              def expand_path(path)
         
     | 
| 
      
 56 
     | 
    
         
            +
                File.expand_path path(path)
         
     | 
| 
      
 57 
     | 
    
         
            +
              end
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
              def pwd
         
     | 
| 
      
 60 
     | 
    
         
            +
                cdstk.pwd({})
         
     | 
| 
      
 61 
     | 
    
         
            +
              end
         
     | 
| 
      
 62 
     | 
    
         
            +
              
         
     | 
| 
      
 63 
     | 
    
         
            +
              private
         
     | 
| 
      
 64 
     | 
    
         
            +
              
         
     | 
| 
      
 65 
     | 
    
         
            +
              def create_tmp_dir
         
     | 
| 
      
 66 
     | 
    
         
            +
                @tmp_dir = Pathname(File.dirname(__FILE__)) + "milkode_test_work"
         
     | 
| 
      
 67 
     | 
    
         
            +
                FileUtils.rm_rf(@tmp_dir.to_s)
         
     | 
| 
      
 68 
     | 
    
         
            +
                FileUtils.mkdir_p(@tmp_dir.to_s)
         
     | 
| 
      
 69 
     | 
    
         
            +
              end
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
              def cdstk
         
     | 
| 
      
 72 
     | 
    
         
            +
                Cdstk.new(StringIO.new, Dbdir.select_dbdir)
         
     | 
| 
      
 73 
     | 
    
         
            +
              end
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
            end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
    
        data/test/test_cdstk.rb
    CHANGED
    
    | 
         @@ -50,10 +50,20 @@ class TestCdstk < Test::Unit::TestCase 
     | 
|
| 
       50 
50 
     | 
    
         
             
                  io.puts('--- add notfound ---')
         
     | 
| 
       51 
51 
     | 
    
         
             
                  obj.add(['notfound.html'])
         
     | 
| 
       52 
52 
     | 
    
         | 
| 
       53 
     | 
    
         
            -
                  io.puts('---  
     | 
| 
      
 53 
     | 
    
         
            +
                  io.puts('--- update_all ---')
         
     | 
| 
       54 
54 
     | 
    
         
             
                  FileUtils.touch('packages/zip/abc/c.txt')
         
     | 
| 
       55 
55 
     | 
    
         
             
                  FileUtils.touch('packages/zip/abc/d.txt')
         
     | 
| 
       56 
     | 
    
         
            -
                  obj. 
     | 
| 
      
 56 
     | 
    
         
            +
                  obj.update_all
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                  io.puts('--- update --all ---')
         
     | 
| 
      
 59 
     | 
    
         
            +
                  FileUtils.touch('packages/zip/abc/e.txt')
         
     | 
| 
      
 60 
     | 
    
         
            +
                  obj.update([], {:all => true})
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
                  io.puts('--- update in package dir ---')
         
     | 
| 
      
 63 
     | 
    
         
            +
                  Dir.chdir('packages/zip/abc') do
         
     | 
| 
      
 64 
     | 
    
         
            +
                    # setdbコマンドが無いので上手く動かせない
         
     | 
| 
      
 65 
     | 
    
         
            +
                    # obj.update([], {})
         
     | 
| 
      
 66 
     | 
    
         
            +
                  end
         
     | 
| 
       57 
67 
     | 
    
         | 
| 
       58 
68 
     | 
    
         
             
                  io.puts('--- remove ---')
         
     | 
| 
       59 
69 
     | 
    
         
             
                  obj.remove(['findgrep'], {:force => true})
         
     | 
| 
         @@ -0,0 +1,50 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -*- coding: utf-8 -*-
         
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            # @file 
         
     | 
| 
      
 4 
     | 
    
         
            +
            # @brief
         
     | 
| 
      
 5 
     | 
    
         
            +
            # @author ongaeshi
         
     | 
| 
      
 6 
     | 
    
         
            +
            # @date   2011/02/20
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            require 'milkode_test_work'
         
     | 
| 
      
 9 
     | 
    
         
            +
            require 'milkode/cdstk/cdstk_command'
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            class TestCdstkCommand < Test::Unit::TestCase
         
     | 
| 
      
 12 
     | 
    
         
            +
              def setup
         
     | 
| 
      
 13 
     | 
    
         
            +
                @work = MilkodeTestWork.new({:default_db => true})
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              def test_main
         
     | 
| 
      
 17 
     | 
    
         
            +
                t_setdb_set
         
     | 
| 
      
 18 
     | 
    
         
            +
                t_setdb_reset
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
              
         
     | 
| 
      
 21 
     | 
    
         
            +
              def teardown
         
     | 
| 
      
 22 
     | 
    
         
            +
                @work.teardown
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              private
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
              def t_setdb_set
         
     | 
| 
      
 28 
     | 
    
         
            +
                # デフォルトデータベースの切り替え
         
     | 
| 
      
 29 
     | 
    
         
            +
                CdstkCommand.setdb_set(@work.expand_path "db1")
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                # デフォルトデータベースの切り替え
         
     | 
| 
      
 32 
     | 
    
         
            +
                # @work.init_db( "db2" )
         
     | 
| 
      
 33 
     | 
    
         
            +
                # CdstkCommand.setdb_set(@work.expand_path "db2")
         
     | 
| 
      
 34 
     | 
    
         
            +
                
         
     | 
| 
      
 35 
     | 
    
         
            +
                # 存在していないデータベースを指定するとエラー
         
     | 
| 
      
 36 
     | 
    
         
            +
                assert_raise(Milkode::CdstkCommand::NotExistDatabase) { CdstkCommand.setdb_set("not_found") } 
         
     | 
| 
      
 37 
     | 
    
         
            +
              end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
              def t_setdb_reset
         
     | 
| 
      
 40 
     | 
    
         
            +
                path = @work.expand_path '.milkode_db_dir'
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                CdstkCommand.setdb_set(@work.expand_path "db1")
         
     | 
| 
      
 43 
     | 
    
         
            +
                assert File.exist?(path)
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                CdstkCommand.setdb_reset
         
     | 
| 
      
 46 
     | 
    
         
            +
                assert !File.exist?(path)
         
     | 
| 
      
 47 
     | 
    
         
            +
              end
         
     | 
| 
      
 48 
     | 
    
         
            +
            end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
    
        data/test/test_cdstk_yaml.rb
    CHANGED
    
    | 
         @@ -73,14 +73,14 @@ class TestCdstkYaml < Test::Unit::TestCase 
     | 
|
| 
       73 
73 
     | 
    
         
             
                contents = [{d => 'key'}, {d => 'keyword'}, {d => 'not'}]
         
     | 
| 
       74 
74 
     | 
    
         | 
| 
       75 
75 
     | 
    
         
             
                query = CdstkYaml::Query.new(['key'])
         
     | 
| 
       76 
     | 
    
         
            -
                assert_equal [{d => 'key'}, {d => 'keyword'}], query. 
     | 
| 
      
 76 
     | 
    
         
            +
                assert_equal [{d => 'key'}, {d => 'keyword'}], query.select_any?(contents)
         
     | 
| 
       77 
77 
     | 
    
         | 
| 
       78 
78 
     | 
    
         
             
                query = CdstkYaml::Query.new(['word'])
         
     | 
| 
       79 
     | 
    
         
            -
                assert_equal [{d => 'keyword'}], query. 
     | 
| 
      
 79 
     | 
    
         
            +
                assert_equal [{d => 'keyword'}], query.select_any?(contents)
         
     | 
| 
       80 
80 
     | 
    
         | 
| 
       81 
81 
     | 
    
         
             
                contents = [{d => 'a/dir'}, {d => 'b/dia'}]
         
     | 
| 
       82 
82 
     | 
    
         
             
                query = CdstkYaml::Query.new(['a'])
         
     | 
| 
       83 
     | 
    
         
            -
                assert_equal [{d => 'b/dia'}], query. 
     | 
| 
      
 83 
     | 
    
         
            +
                assert_equal [{d => 'b/dia'}], query.select_any?(contents) # ディレクトリ名は含めない
         
     | 
| 
       84 
84 
     | 
    
         
             
              end
         
     | 
| 
       85 
85 
     | 
    
         | 
| 
       86 
86 
     | 
    
         
             
              def test_list
         
     | 
| 
         @@ -142,6 +142,23 @@ EOF 
     | 
|
| 
       142 
142 
     | 
    
         
             
                assert_nil yaml.exist?('dir123')
         
     | 
| 
       143 
143 
     | 
    
         
             
                assert_nil yaml.exist?('dir')
         
     | 
| 
       144 
144 
     | 
    
         
             
              end
         
     | 
| 
      
 145 
     | 
    
         
            +
             
     | 
| 
      
 146 
     | 
    
         
            +
              def test_package_root
         
     | 
| 
      
 147 
     | 
    
         
            +
                src = <<EOF
         
     | 
| 
      
 148 
     | 
    
         
            +
            version: 0.1
         
     | 
| 
      
 149 
     | 
    
         
            +
            contents: 
         
     | 
| 
      
 150 
     | 
    
         
            +
            - directory: /a/dir1
         
     | 
| 
      
 151 
     | 
    
         
            +
            - directory: /path/to/dir
         
     | 
| 
      
 152 
     | 
    
         
            +
            - directory: /a/b/c
         
     | 
| 
      
 153 
     | 
    
         
            +
            EOF
         
     | 
| 
      
 154 
     | 
    
         
            +
             
     | 
| 
      
 155 
     | 
    
         
            +
                yaml = CdstkYaml.new('dummy.yaml', YAML.load(src))
         
     | 
| 
      
 156 
     | 
    
         
            +
             
     | 
| 
      
 157 
     | 
    
         
            +
                assert_equal nil           , yaml.package_root_dir('/not_dir')
         
     | 
| 
      
 158 
     | 
    
         
            +
                assert_equal "/a/dir1"     , yaml.package_root_dir('/a/dir1/dir3')
         
     | 
| 
      
 159 
     | 
    
         
            +
                assert_equal nil           , yaml.package_root_dir('/hoge/a/dir1/dir3')
         
     | 
| 
      
 160 
     | 
    
         
            +
                assert_equal '/path/to/dir', yaml.package_root_dir('/path/to/dir')
         
     | 
| 
      
 161 
     | 
    
         
            +
              end
         
     | 
| 
       145 
162 
     | 
    
         | 
| 
       146 
163 
     | 
    
         
             
              def teardown
         
     | 
| 
       147 
164 
     | 
    
         
             
                FileUtils.cd(@prev_dir)
         
     | 
| 
         @@ -0,0 +1,71 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -*- coding: utf-8 -*-
         
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            # @file 
         
     | 
| 
      
 4 
     | 
    
         
            +
            # @brief
         
     | 
| 
      
 5 
     | 
    
         
            +
            # @author ongaeshi
         
     | 
| 
      
 6 
     | 
    
         
            +
            # @date   2011/12/03
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            require 'milkode/cdstk/cli_cdstk.rb'
         
     | 
| 
      
 9 
     | 
    
         
            +
            require 'milkode/common/dbdir'
         
     | 
| 
      
 10 
     | 
    
         
            +
            require 'test_helper'
         
     | 
| 
      
 11 
     | 
    
         
            +
            require 'milkode/cdstk/cdstk_command'
         
     | 
| 
      
 12 
     | 
    
         
            +
            require 'milkode_test_work'
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            class TestCLI_Cdstk < Test::Unit::TestCase
         
     | 
| 
      
 15 
     | 
    
         
            +
              def setup
         
     | 
| 
      
 16 
     | 
    
         
            +
                @first_default_dir = Dbdir.default_dir
         
     | 
| 
      
 17 
     | 
    
         
            +
                @work = MilkodeTestWork.new({:default_db => true})
         
     | 
| 
      
 18 
     | 
    
         
            +
                @work.add_package "db1", @work.expand_path("../data/a_project")
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              def test_main
         
     | 
| 
      
 22 
     | 
    
         
            +
                t_grep
         
     | 
| 
      
 23 
     | 
    
         
            +
                t_mcd
         
     | 
| 
      
 24 
     | 
    
         
            +
                t_setdb
         
     | 
| 
      
 25 
     | 
    
         
            +
              end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
              def teardown
         
     | 
| 
      
 28 
     | 
    
         
            +
                @work.teardown
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
              private
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
              def t_grep
         
     | 
| 
      
 34 
     | 
    
         
            +
                command("grep")
         
     | 
| 
      
 35 
     | 
    
         
            +
                command("grep not_found")
         
     | 
| 
      
 36 
     | 
    
         
            +
                command("grep require -a")
         
     | 
| 
      
 37 
     | 
    
         
            +
              end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
              def t_mcd
         
     | 
| 
      
 40 
     | 
    
         
            +
                assert_match /mcd/, command("mcd")
         
     | 
| 
      
 41 
     | 
    
         
            +
              end
         
     | 
| 
      
 42 
     | 
    
         
            +
              
         
     | 
| 
      
 43 
     | 
    
         
            +
              def t_setdb
         
     | 
| 
      
 44 
     | 
    
         
            +
                # 引数無しで現在の値を表示
         
     | 
| 
      
 45 
     | 
    
         
            +
                assert_equal @work.expand_path("db1") + "\n", command("setdb")
         
     | 
| 
      
 46 
     | 
    
         
            +
                
         
     | 
| 
      
 47 
     | 
    
         
            +
                # .milkode_db_dir を書き換えてテスト
         
     | 
| 
      
 48 
     | 
    
         
            +
                open(@work.path(".milkode_db_dir"), "w") {|f| f.print "/a/custom/db" }
         
     | 
| 
      
 49 
     | 
    
         
            +
                assert_equal "/a/custom/db\n", command("setdb")
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                # データベースではないディレクトリに切り替ようとするとエラー
         
     | 
| 
      
 52 
     | 
    
         
            +
                assert_match(/fatal:/, command("setdb /a/write/test"))
         
     | 
| 
      
 53 
     | 
    
         
            +
                
         
     | 
| 
      
 54 
     | 
    
         
            +
                # 切り替え
         
     | 
| 
      
 55 
     | 
    
         
            +
                @work.init_db("db2")
         
     | 
| 
      
 56 
     | 
    
         
            +
                assert_match "Set default db", command("setdb #{@work.path "db2"}")
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                # リセット
         
     | 
| 
      
 59 
     | 
    
         
            +
                assert_not_equal @first_default_dir, Dbdir.default_dir
         
     | 
| 
      
 60 
     | 
    
         
            +
                command("setdb --reset")
         
     | 
| 
      
 61 
     | 
    
         
            +
                assert_equal @first_default_dir, Dbdir.default_dir
         
     | 
| 
      
 62 
     | 
    
         
            +
              end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
              private
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
              def command(arg)
         
     | 
| 
      
 67 
     | 
    
         
            +
                io = StringIO.new
         
     | 
| 
      
 68 
     | 
    
         
            +
                CLI_Cdstk.execute(io, arg.split)
         
     | 
| 
      
 69 
     | 
    
         
            +
                io.string
         
     | 
| 
      
 70 
     | 
    
         
            +
              end
         
     | 
| 
      
 71 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,79 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -*- coding: utf-8 -*-
         
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            # @file 
         
     | 
| 
      
 4 
     | 
    
         
            +
            # @brief
         
     | 
| 
      
 5 
     | 
    
         
            +
            # @author ongaeshi
         
     | 
| 
      
 6 
     | 
    
         
            +
            # @date   2011/12/03
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            require 'milkode/grep/cli_grep.rb'
         
     | 
| 
      
 9 
     | 
    
         
            +
            require 'test_helper'
         
     | 
| 
      
 10 
     | 
    
         
            +
            require 'milkode_test_work'
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            class TestCLI_Grep < Test::Unit::TestCase
         
     | 
| 
      
 13 
     | 
    
         
            +
              def setup
         
     | 
| 
      
 14 
     | 
    
         
            +
                @work = MilkodeTestWork.new({:default_db => true})
         
     | 
| 
      
 15 
     | 
    
         
            +
                @work.add_package "db1", @work.expand_path("../data/a_project")
         
     | 
| 
      
 16 
     | 
    
         
            +
                @work.add_package "db1", @work.expand_path("../data/b_project")
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
              def test_main
         
     | 
| 
      
 20 
     | 
    
         
            +
                # 全てを test_* にすると、毎回setup, teardown が走ってデータベースを生成する時間がもったいないので
         
     | 
| 
      
 21 
     | 
    
         
            +
                t_basic
         
     | 
| 
      
 22 
     | 
    
         
            +
                t_not_found_package
         
     | 
| 
      
 23 
     | 
    
         
            +
                t_not_package_root
         
     | 
| 
      
 24 
     | 
    
         
            +
                t_exec_onlysuffix
         
     | 
| 
      
 25 
     | 
    
         
            +
                t_cache
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
              def teardown
         
     | 
| 
      
 29 
     | 
    
         
            +
                @work.teardown
         
     | 
| 
      
 30 
     | 
    
         
            +
              end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
              private
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
              def t_basic
         
     | 
| 
      
 35 
     | 
    
         
            +
                io = StringIO.new
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                CLI_Grep.execute(io, "".split)
         
     | 
| 
      
 38 
     | 
    
         
            +
                CLI_Grep.execute(io, "-a test".split)
         
     | 
| 
      
 39 
     | 
    
         
            +
                CLI_Grep.execute(io, "-p a_project test".split)
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                # puts io.string
         
     | 
| 
      
 42 
     | 
    
         
            +
              end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
              def t_not_found_package
         
     | 
| 
      
 45 
     | 
    
         
            +
                io = StringIO.new
         
     | 
| 
      
 46 
     | 
    
         
            +
                CLI_Grep.execute(io, "-p c_project test".split)
         
     | 
| 
      
 47 
     | 
    
         
            +
                assert_match "fatal:", io.string
         
     | 
| 
      
 48 
     | 
    
         
            +
              end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
              def t_not_package_root
         
     | 
| 
      
 51 
     | 
    
         
            +
                Dir.chdir(File.join(File.dirname(__FILE__))) do
         
     | 
| 
      
 52 
     | 
    
         
            +
                  io = StringIO.new
         
     | 
| 
      
 53 
     | 
    
         
            +
                  CLI_Grep.execute(io, "require".split)
         
     | 
| 
      
 54 
     | 
    
         
            +
                  assert_match "fatal:", io.string
         
     | 
| 
      
 55 
     | 
    
         
            +
                end
         
     | 
| 
      
 56 
     | 
    
         
            +
                
         
     | 
| 
      
 57 
     | 
    
         
            +
                Dir.chdir(File.join(File.dirname(__FILE__), "data/a_project")) do
         
     | 
| 
      
 58 
     | 
    
         
            +
                  io = StringIO.new
         
     | 
| 
      
 59 
     | 
    
         
            +
                  CLI_Grep.execute(io, "require".split)
         
     | 
| 
      
 60 
     | 
    
         
            +
                  assert_no_match /fatal:/, io.string
         
     | 
| 
      
 61 
     | 
    
         
            +
                end
         
     | 
| 
      
 62 
     | 
    
         
            +
              end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
              def t_exec_onlysuffix
         
     | 
| 
      
 65 
     | 
    
         
            +
                io = StringIO.new
         
     | 
| 
      
 66 
     | 
    
         
            +
                CLI_Grep.execute(io, "-p a_project -s rb".split)
         
     | 
| 
      
 67 
     | 
    
         
            +
                assert_match "a_project/cdstk.rb\n", io.string
         
     | 
| 
      
 68 
     | 
    
         
            +
              end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
              def t_cache
         
     | 
| 
      
 71 
     | 
    
         
            +
                io = StringIO.new
         
     | 
| 
      
 72 
     | 
    
         
            +
                CLI_Grep.execute(io, "-p a_project test --cache".split)
         
     | 
| 
      
 73 
     | 
    
         
            +
                assert_match "grenfiletest", io.string
         
     | 
| 
      
 74 
     | 
    
         
            +
              end
         
     | 
| 
      
 75 
     | 
    
         
            +
            end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
             
     |