rant 0.3.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.
- data/COPYING +504 -0
 - data/README +203 -0
 - data/Rantfile +104 -0
 - data/TODO +19 -0
 - data/bin/rant +12 -0
 - data/bin/rant-import +12 -0
 - data/devel-notes +50 -0
 - data/doc/configure.rdoc +40 -0
 - data/doc/csharp.rdoc +74 -0
 - data/doc/rant-import.rdoc +32 -0
 - data/doc/rant.rdoc +24 -0
 - data/doc/rantfile.rdoc +227 -0
 - data/doc/rubyproject.rdoc +210 -0
 - data/lib/rant.rb +9 -0
 - data/lib/rant/cs_compiler.rb +334 -0
 - data/lib/rant/import.rb +291 -0
 - data/lib/rant/import/rubydoc.rb +125 -0
 - data/lib/rant/import/rubypackage.rb +417 -0
 - data/lib/rant/import/rubytest.rb +97 -0
 - data/lib/rant/plugin/README +50 -0
 - data/lib/rant/plugin/configure.rb +345 -0
 - data/lib/rant/plugin/csharp.rb +275 -0
 - data/lib/rant/plugin_methods.rb +41 -0
 - data/lib/rant/rantenv.rb +217 -0
 - data/lib/rant/rantfile.rb +664 -0
 - data/lib/rant/rantlib.rb +1118 -0
 - data/lib/rant/rantsys.rb +258 -0
 - data/lib/rant/rantvar.rb +82 -0
 - data/rantmethods.rb +79 -0
 - data/run_import +7 -0
 - data/run_rant +7 -0
 - data/setup.rb +1360 -0
 - data/test/Rantfile +2 -0
 - data/test/plugin/configure/Rantfile +47 -0
 - data/test/plugin/configure/test_configure.rb +58 -0
 - data/test/plugin/csharp/Hello.cs +10 -0
 - data/test/plugin/csharp/Rantfile +30 -0
 - data/test/plugin/csharp/src/A.cs +8 -0
 - data/test/plugin/csharp/src/B.cs +8 -0
 - data/test/plugin/csharp/test_csharp.rb +99 -0
 - data/test/project1/Rantfile +127 -0
 - data/test/project1/test_project.rb +203 -0
 - data/test/project2/buildfile +14 -0
 - data/test/project2/rantfile.rb +20 -0
 - data/test/project2/sub1/Rantfile +12 -0
 - data/test/project2/test_project.rb +87 -0
 - data/test/project_rb1/README +14 -0
 - data/test/project_rb1/bin/wgrep +5 -0
 - data/test/project_rb1/lib/wgrep.rb +56 -0
 - data/test/project_rb1/rantfile.rb +30 -0
 - data/test/project_rb1/test/tc_wgrep.rb +21 -0
 - data/test/project_rb1/test/text +3 -0
 - data/test/project_rb1/test_project_rb1.rb +153 -0
 - data/test/test_env.rb +47 -0
 - data/test/test_filetask.rb +57 -0
 - data/test/test_lighttask.rb +49 -0
 - data/test/test_metatask.rb +29 -0
 - data/test/test_rant_interface.rb +65 -0
 - data/test/test_sys.rb +61 -0
 - data/test/test_task.rb +115 -0
 - data/test/toplevel.rf +11 -0
 - data/test/ts_all.rb +4 -0
 - data/test/tutil.rb +95 -0
 - metadata +133 -0
 
| 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            file "r_f1" do |t|
         
     | 
| 
      
 3 
     | 
    
         
            +
                sys.touch t.name
         
     | 
| 
      
 4 
     | 
    
         
            +
            end
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            file "r_f2" => "r_f1" do |t|
         
     | 
| 
      
 7 
     | 
    
         
            +
                sys.touch t.name
         
     | 
| 
      
 8 
     | 
    
         
            +
            end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            file "r_f3" => ["r_f2", :r_f4] do |t|
         
     | 
| 
      
 11 
     | 
    
         
            +
                sys.touch t.name
         
     | 
| 
      
 12 
     | 
    
         
            +
            end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            file "r_f4" => "r_f2" do |t|
         
     | 
| 
      
 15 
     | 
    
         
            +
                sys.touch t.name
         
     | 
| 
      
 16 
     | 
    
         
            +
            end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            task :clean do
         
     | 
| 
      
 19 
     | 
    
         
            +
                sys.rm_f Dir["r_f*"]
         
     | 
| 
      
 20 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,87 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            require 'test/unit'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'tutil'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            # We require 'rant/rantlib' instead of 'rant',
         
     | 
| 
      
 6 
     | 
    
         
            +
            # which would cause the rant.rb (which is ment as a Rantfile)
         
     | 
| 
      
 7 
     | 
    
         
            +
            # to be loaded!
         
     | 
| 
      
 8 
     | 
    
         
            +
            require 'rant/rantlib'
         
     | 
| 
      
 9 
     | 
    
         
            +
            include Rant
         
     | 
| 
      
 10 
     | 
    
         
            +
            include ::Rant::Sys
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            # Ensure we run in testproject directory.
         
     | 
| 
      
 13 
     | 
    
         
            +
            $testProject2Dir = File.expand_path(File.dirname(__FILE__))
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            class TestProject2 < Test::Unit::TestCase
         
     | 
| 
      
 16 
     | 
    
         
            +
                def app *args
         
     | 
| 
      
 17 
     | 
    
         
            +
            	@app = ::Rant::RantApp.new(*args)
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
                def setup
         
     | 
| 
      
 20 
     | 
    
         
            +
            	Dir.chdir($testProject2Dir) unless Dir.pwd == $testProject2Dir
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
                def teardown
         
     | 
| 
      
 23 
     | 
    
         
            +
            	capture_std do
         
     | 
| 
      
 24 
     | 
    
         
            +
            	    assert_equal(app(%w(-f rantfile.rb -f buildfile clean)).run, 0)
         
     | 
| 
      
 25 
     | 
    
         
            +
            	end
         
     | 
| 
      
 26 
     | 
    
         
            +
            	assert(Dir["r_f*"].empty?,
         
     | 
| 
      
 27 
     | 
    
         
            +
            	    "r_f* files should have been removed by `clean'")
         
     | 
| 
      
 28 
     | 
    
         
            +
            	assert(Dir["b_f*"].empty?,
         
     | 
| 
      
 29 
     | 
    
         
            +
            	    "b_f* files should have been removed by `clean'")
         
     | 
| 
      
 30 
     | 
    
         
            +
            	assert(Dir["sub1/s*f*"].empty?,
         
     | 
| 
      
 31 
     | 
    
         
            +
            	    "sub1/s*f* files should have been removed by `clean'")
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
                def test_use_first_task
         
     | 
| 
      
 34 
     | 
    
         
            +
            	capture_std do
         
     | 
| 
      
 35 
     | 
    
         
            +
            	    assert_equal(app.run, 0,
         
     | 
| 
      
 36 
     | 
    
         
            +
            		"run method of RantApp should return 0 on success")
         
     | 
| 
      
 37 
     | 
    
         
            +
            	end
         
     | 
| 
      
 38 
     | 
    
         
            +
            	assert(File.exist?("r_f1"))
         
     | 
| 
      
 39 
     | 
    
         
            +
                end
         
     | 
| 
      
 40 
     | 
    
         
            +
                def test_deps
         
     | 
| 
      
 41 
     | 
    
         
            +
            	capture_std do
         
     | 
| 
      
 42 
     | 
    
         
            +
            	    assert_equal(app("r_f4").run, 0)
         
     | 
| 
      
 43 
     | 
    
         
            +
            	end
         
     | 
| 
      
 44 
     | 
    
         
            +
            	assert(File.exist?("r_f4"))
         
     | 
| 
      
 45 
     | 
    
         
            +
            	assert(File.exist?("r_f2"))
         
     | 
| 
      
 46 
     | 
    
         
            +
            	assert(File.exist?("r_f1"))
         
     | 
| 
      
 47 
     | 
    
         
            +
            	assert(!File.exist?("r_f3"))
         
     | 
| 
      
 48 
     | 
    
         
            +
                end
         
     | 
| 
      
 49 
     | 
    
         
            +
                def test_load_rantfile
         
     | 
| 
      
 50 
     | 
    
         
            +
            	capture_std do
         
     | 
| 
      
 51 
     | 
    
         
            +
            	    app("b_f2")
         
     | 
| 
      
 52 
     | 
    
         
            +
            	    assert(@app.source("buildfile"),
         
     | 
| 
      
 53 
     | 
    
         
            +
            		"source should return a true value on success")
         
     | 
| 
      
 54 
     | 
    
         
            +
            	    assert_equal(@app.run, 0)
         
     | 
| 
      
 55 
     | 
    
         
            +
            	end
         
     | 
| 
      
 56 
     | 
    
         
            +
            	assert(File.exist?("b_f2"))
         
     | 
| 
      
 57 
     | 
    
         
            +
                end
         
     | 
| 
      
 58 
     | 
    
         
            +
                def test_subdirs
         
     | 
| 
      
 59 
     | 
    
         
            +
            	capture_std do
         
     | 
| 
      
 60 
     | 
    
         
            +
            	    assert_equal(app(%w(-f buildfile create_s1f1)).run, 0)
         
     | 
| 
      
 61 
     | 
    
         
            +
            	end
         
     | 
| 
      
 62 
     | 
    
         
            +
            	assert(File.exist?("sub1/s1f1"))
         
     | 
| 
      
 63 
     | 
    
         
            +
                end
         
     | 
| 
      
 64 
     | 
    
         
            +
                def test_opt_directory
         
     | 
| 
      
 65 
     | 
    
         
            +
            	app %w(insub1_s1f1 -C sub1)
         
     | 
| 
      
 66 
     | 
    
         
            +
            	capture_std do
         
     | 
| 
      
 67 
     | 
    
         
            +
            	    assert_equal(@app.run, 0)
         
     | 
| 
      
 68 
     | 
    
         
            +
            	end
         
     | 
| 
      
 69 
     | 
    
         
            +
            	assert(Dir.pwd !~ /sub1$/,
         
     | 
| 
      
 70 
     | 
    
         
            +
            	    "rant should cd to original dir before returning from `run'")
         
     | 
| 
      
 71 
     | 
    
         
            +
            	assert(test(?f, "sub1/s1f1"),
         
     | 
| 
      
 72 
     | 
    
         
            +
            	    "rant should cd to sub1 and run task insub1_s1f1")
         
     | 
| 
      
 73 
     | 
    
         
            +
                end
         
     | 
| 
      
 74 
     | 
    
         
            +
                def test_opth_directory
         
     | 
| 
      
 75 
     | 
    
         
            +
            	app %w(insub1_s1f1)
         
     | 
| 
      
 76 
     | 
    
         
            +
            	#Rant[:directory] = "sub1"
         
     | 
| 
      
 77 
     | 
    
         
            +
            	@app[:verbose] = 2
         
     | 
| 
      
 78 
     | 
    
         
            +
            	@app[:directory] = "sub1"
         
     | 
| 
      
 79 
     | 
    
         
            +
            	capture_std do
         
     | 
| 
      
 80 
     | 
    
         
            +
            	    assert_equal(@app.run, 0)
         
     | 
| 
      
 81 
     | 
    
         
            +
            	end
         
     | 
| 
      
 82 
     | 
    
         
            +
            	assert(Dir.pwd !~ /sub1$/,
         
     | 
| 
      
 83 
     | 
    
         
            +
            	    "rant should cd to original dir before returning from `run'")
         
     | 
| 
      
 84 
     | 
    
         
            +
            	assert(test(?f, "sub1/s1f1"),
         
     | 
| 
      
 85 
     | 
    
         
            +
            	    "rant should cd to sub1 and run task insub1_s1f1")
         
     | 
| 
      
 86 
     | 
    
         
            +
                end
         
     | 
| 
      
 87 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,14 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            = wgrep
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            wgrep is a simple grep utility written in Ruby. It searches for
         
     | 
| 
      
 5 
     | 
    
         
            +
            one word in one or more files or in standard input and prints each
         
     | 
| 
      
 6 
     | 
    
         
            +
            line which contains the word.
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            == Usage
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            wgrep WORD [FILE(s)]
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            == Running the tests
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            Type `rant test' to run the unit tests.
         
     | 
| 
         @@ -0,0 +1,56 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            module WGrep
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
                class CommandError < StandardError
         
     | 
| 
      
 5 
     | 
    
         
            +
                end
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                class WGrep
         
     | 
| 
      
 8 
     | 
    
         
            +
            	attr_reader :word
         
     | 
| 
      
 9 
     | 
    
         
            +
            	attr_reader :files
         
     | 
| 
      
 10 
     | 
    
         
            +
            	attr_reader :count
         
     | 
| 
      
 11 
     | 
    
         
            +
            	def initialize
         
     | 
| 
      
 12 
     | 
    
         
            +
            	    @word = nil
         
     | 
| 
      
 13 
     | 
    
         
            +
            	    @files = []
         
     | 
| 
      
 14 
     | 
    
         
            +
            	    @count = 0
         
     | 
| 
      
 15 
     | 
    
         
            +
            	end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            	def run(args = ARGV)
         
     | 
| 
      
 18 
     | 
    
         
            +
            	    process_args args
         
     | 
| 
      
 19 
     | 
    
         
            +
            	    @count = 0
         
     | 
| 
      
 20 
     | 
    
         
            +
            	    if @files.empty?
         
     | 
| 
      
 21 
     | 
    
         
            +
            		self.grep(@word, $stdin) { |line|
         
     | 
| 
      
 22 
     | 
    
         
            +
            		    print line
         
     | 
| 
      
 23 
     | 
    
         
            +
            		    @count += 1
         
     | 
| 
      
 24 
     | 
    
         
            +
            		}
         
     | 
| 
      
 25 
     | 
    
         
            +
            	    else
         
     | 
| 
      
 26 
     | 
    
         
            +
            		@files.each { |fn|
         
     | 
| 
      
 27 
     | 
    
         
            +
            		    File.open(fn) { |file|
         
     | 
| 
      
 28 
     | 
    
         
            +
            			self.grep(@word, file) { |line|
         
     | 
| 
      
 29 
     | 
    
         
            +
            			    print line
         
     | 
| 
      
 30 
     | 
    
         
            +
            			    @count += 1
         
     | 
| 
      
 31 
     | 
    
         
            +
            			}
         
     | 
| 
      
 32 
     | 
    
         
            +
            		    }
         
     | 
| 
      
 33 
     | 
    
         
            +
            		}
         
     | 
| 
      
 34 
     | 
    
         
            +
            	    end
         
     | 
| 
      
 35 
     | 
    
         
            +
            	    $stderr.puts "Found `#@word' in #{@count} lines."
         
     | 
| 
      
 36 
     | 
    
         
            +
            	    0
         
     | 
| 
      
 37 
     | 
    
         
            +
            	rescue CommandError => e
         
     | 
| 
      
 38 
     | 
    
         
            +
            	    $stderr.puts "Invalid commandline: #{e.message}"
         
     | 
| 
      
 39 
     | 
    
         
            +
            	    1
         
     | 
| 
      
 40 
     | 
    
         
            +
            	end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
            	def process_args(args)
         
     | 
| 
      
 43 
     | 
    
         
            +
            	    if args.nil? || args.empty?
         
     | 
| 
      
 44 
     | 
    
         
            +
            		raise CommandError, "No word given."
         
     | 
| 
      
 45 
     | 
    
         
            +
            	    end
         
     | 
| 
      
 46 
     | 
    
         
            +
            	    args = [args] unless Array === args
         
     | 
| 
      
 47 
     | 
    
         
            +
            	    @word, @files = args[0], args[1..-1]
         
     | 
| 
      
 48 
     | 
    
         
            +
            	end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
            	def grep(word, stream)
         
     | 
| 
      
 51 
     | 
    
         
            +
            	    stream.each { |rec|
         
     | 
| 
      
 52 
     | 
    
         
            +
            		yield(rec) if rec =~ /\b#{Regexp.escape(word)}\b/
         
     | 
| 
      
 53 
     | 
    
         
            +
            	    }
         
     | 
| 
      
 54 
     | 
    
         
            +
            	end
         
     | 
| 
      
 55 
     | 
    
         
            +
                end
         
     | 
| 
      
 56 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,30 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            import %w(rubytest rubydoc rubypackage)
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            lib_files = Dir["lib/**/*.rb"]
         
     | 
| 
      
 4 
     | 
    
         
            +
            dist_files = lib_files + %w(rantfile.rb README test_project_rb1.rb) + Dir["{test,bin}/*"]
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            desc "Run unit tests."
         
     | 
| 
      
 7 
     | 
    
         
            +
            gen RubyTest do |t|
         
     | 
| 
      
 8 
     | 
    
         
            +
                t.test_dir = "test"
         
     | 
| 
      
 9 
     | 
    
         
            +
                t.pattern = "tc_*.rb"
         
     | 
| 
      
 10 
     | 
    
         
            +
            end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            desc "Generate html documentation."
         
     | 
| 
      
 13 
     | 
    
         
            +
            gen RubyDoc do |t|
         
     | 
| 
      
 14 
     | 
    
         
            +
                t.opts = %w(--title wgrep --main README README)
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            desc "Create packages."
         
     | 
| 
      
 18 
     | 
    
         
            +
            gen RubyPackage, :wgrep do |t|
         
     | 
| 
      
 19 
     | 
    
         
            +
                t.version = "1.0.0"
         
     | 
| 
      
 20 
     | 
    
         
            +
                t.summary = "Simple grep program."
         
     | 
| 
      
 21 
     | 
    
         
            +
                t.files = dist_files
         
     | 
| 
      
 22 
     | 
    
         
            +
                t.bindir = "bin"
         
     | 
| 
      
 23 
     | 
    
         
            +
                t.executable = "wgrep"
         
     | 
| 
      
 24 
     | 
    
         
            +
                t.pkg_dir = "packages"
         
     | 
| 
      
 25 
     | 
    
         
            +
                t.package_task "pkg"
         
     | 
| 
      
 26 
     | 
    
         
            +
            end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            task :clean do
         
     | 
| 
      
 29 
     | 
    
         
            +
                sys.rm_rf %w(doc packages)
         
     | 
| 
      
 30 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,21 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            require 'test/unit'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'wgrep'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'fileutils'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            class TestWGrep < Test::Unit::TestCase
         
     | 
| 
      
 7 
     | 
    
         
            +
                def test_run
         
     | 
| 
      
 8 
     | 
    
         
            +
            	stdout = $stdout
         
     | 
| 
      
 9 
     | 
    
         
            +
            	output = File.new "wgrep_out", "w"
         
     | 
| 
      
 10 
     | 
    
         
            +
            	$stdout = output
         
     | 
| 
      
 11 
     | 
    
         
            +
            	assert_equal(WGrep::WGrep.new.run(%w(Hello text)), 0,
         
     | 
| 
      
 12 
     | 
    
         
            +
            		"Input to wgrep is ok, so `run' should return 0.")
         
     | 
| 
      
 13 
     | 
    
         
            +
            	output.close
         
     | 
| 
      
 14 
     | 
    
         
            +
            	$stdout = stdout
         
     | 
| 
      
 15 
     | 
    
         
            +
            	lines = File.read("wgrep_out").split("\n")
         
     | 
| 
      
 16 
     | 
    
         
            +
            	assert_equal(lines.size, 1)
         
     | 
| 
      
 17 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 18 
     | 
    
         
            +
            	FileUtils.rm_f "wgrep_out"
         
     | 
| 
      
 19 
     | 
    
         
            +
            	$stdout = stdout
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,153 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            require 'test/unit'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'rant/rantlib'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'tutil'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            $testProjectRb1Dir = File.expand_path(File.dirname(__FILE__))
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            class TestProjectRb1 < Test::Unit::TestCase
         
     | 
| 
      
 9 
     | 
    
         
            +
                def setup
         
     | 
| 
      
 10 
     | 
    
         
            +
            	@manifest = %w(bin lib test bin/wgrep lib/wgrep.rb
         
     | 
| 
      
 11 
     | 
    
         
            +
            	    test/text test/tc_wgrep.rb README test_project_rb1.rb
         
     | 
| 
      
 12 
     | 
    
         
            +
            	    rantfile.rb)
         
     | 
| 
      
 13 
     | 
    
         
            +
            	# Ensure we run in test directory.
         
     | 
| 
      
 14 
     | 
    
         
            +
            	Dir.chdir($testProjectRb1Dir) unless Dir.pwd == $testProjectRb1Dir
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
                def teardown
         
     | 
| 
      
 17 
     | 
    
         
            +
            	capture_std do
         
     | 
| 
      
 18 
     | 
    
         
            +
            	    assert_equal(Rant.run(%w(clean)), 0)
         
     | 
| 
      
 19 
     | 
    
         
            +
            	end
         
     | 
| 
      
 20 
     | 
    
         
            +
            	manifest = @manifest.dup
         
     | 
| 
      
 21 
     | 
    
         
            +
            	check_manifest "after clean: "
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
                def check_manifest(msg_prefix = "")
         
     | 
| 
      
 24 
     | 
    
         
            +
            	manifest = @manifest.dup
         
     | 
| 
      
 25 
     | 
    
         
            +
            	Dir["**/*"].each { |e|
         
     | 
| 
      
 26 
     | 
    
         
            +
            	    assert(manifest.reject! { |mf| mf == e } ,
         
     | 
| 
      
 27 
     | 
    
         
            +
            		"#{msg_prefix}#{e} shouldn't exist according to manifest")
         
     | 
| 
      
 28 
     | 
    
         
            +
            	}
         
     | 
| 
      
 29 
     | 
    
         
            +
            	manifest.each { |e|
         
     | 
| 
      
 30 
     | 
    
         
            +
            	    assert(false, "#{msg_prefix}#{e} missing according to manifest")
         
     | 
| 
      
 31 
     | 
    
         
            +
            	}
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
                def test_doc
         
     | 
| 
      
 34 
     | 
    
         
            +
            	capture_std do
         
     | 
| 
      
 35 
     | 
    
         
            +
            	    assert_equal(Rant.run(%w(doc)), 0)
         
     | 
| 
      
 36 
     | 
    
         
            +
            	end
         
     | 
| 
      
 37 
     | 
    
         
            +
            	assert(test(?d, "doc"),
         
     | 
| 
      
 38 
     | 
    
         
            +
            	    "RDoc task should generate dir `doc'")
         
     | 
| 
      
 39 
     | 
    
         
            +
            	assert(test(?f, "doc/index.html"),
         
     | 
| 
      
 40 
     | 
    
         
            +
            	    "doc/index.html should exist after `doc'")
         
     | 
| 
      
 41 
     | 
    
         
            +
            	fl = Dir["doc/files/**/*"]
         
     | 
| 
      
 42 
     | 
    
         
            +
            	assert(fl.find { |f| f =~ /wgrep/ },
         
     | 
| 
      
 43 
     | 
    
         
            +
            	    "lib/wgrep.rb should get documented")
         
     | 
| 
      
 44 
     | 
    
         
            +
            	assert(fl.find { |f| f =~ /README/ },
         
     | 
| 
      
 45 
     | 
    
         
            +
            	    "README should be in html docs")
         
     | 
| 
      
 46 
     | 
    
         
            +
                end
         
     | 
| 
      
 47 
     | 
    
         
            +
                def test_test
         
     | 
| 
      
 48 
     | 
    
         
            +
            	capture_std do
         
     | 
| 
      
 49 
     | 
    
         
            +
            	    assert_equal(Rant.run(%w(test)), 0)
         
     | 
| 
      
 50 
     | 
    
         
            +
            	end
         
     | 
| 
      
 51 
     | 
    
         
            +
                end
         
     | 
| 
      
 52 
     | 
    
         
            +
                def test_package
         
     | 
| 
      
 53 
     | 
    
         
            +
            	capture_std do
         
     | 
| 
      
 54 
     | 
    
         
            +
            	    assert_equal(Rant.run(%w(pkg)), 0)
         
     | 
| 
      
 55 
     | 
    
         
            +
            	end
         
     | 
| 
      
 56 
     | 
    
         
            +
            	assert(test(?d, "packages"),
         
     | 
| 
      
 57 
     | 
    
         
            +
            	    "task `pkg' should create dir `packages'")
         
     | 
| 
      
 58 
     | 
    
         
            +
            	begin
         
     | 
| 
      
 59 
     | 
    
         
            +
            	    have_tar = !`tar --help`.empty?
         
     | 
| 
      
 60 
     | 
    
         
            +
            	rescue
         
     | 
| 
      
 61 
     | 
    
         
            +
            	    have_tar = false
         
     | 
| 
      
 62 
     | 
    
         
            +
            	end
         
     | 
| 
      
 63 
     | 
    
         
            +
            	begin
         
     | 
| 
      
 64 
     | 
    
         
            +
            	    have_zip = !`zip -help`.empty?
         
     | 
| 
      
 65 
     | 
    
         
            +
            	rescue
         
     | 
| 
      
 66 
     | 
    
         
            +
            	    have_zip = false
         
     | 
| 
      
 67 
     | 
    
         
            +
            	end
         
     | 
| 
      
 68 
     | 
    
         
            +
            	have_gem = false
         
     | 
| 
      
 69 
     | 
    
         
            +
            	pkg_base = "packages/wgrep-1.0.0"
         
     | 
| 
      
 70 
     | 
    
         
            +
            	begin
         
     | 
| 
      
 71 
     | 
    
         
            +
            	    require 'rubygems'
         
     | 
| 
      
 72 
     | 
    
         
            +
            	    have_gem = true
         
     | 
| 
      
 73 
     | 
    
         
            +
            	rescue LoadError
         
     | 
| 
      
 74 
     | 
    
         
            +
            	end
         
     | 
| 
      
 75 
     | 
    
         
            +
            	if have_tar
         
     | 
| 
      
 76 
     | 
    
         
            +
            	    tar_fn = pkg_base + ".tar.gz"
         
     | 
| 
      
 77 
     | 
    
         
            +
            	    assert(test(?f, tar_fn),
         
     | 
| 
      
 78 
     | 
    
         
            +
            		"tar is available, so a tar.gz should have been built")
         
     | 
| 
      
 79 
     | 
    
         
            +
            	    verify_tar "packages", "wgrep-1.0.0", ".tar.gz"
         
     | 
| 
      
 80 
     | 
    
         
            +
            	else
         
     | 
| 
      
 81 
     | 
    
         
            +
            	    puts "*** tar not available ***"
         
     | 
| 
      
 82 
     | 
    
         
            +
            	end
         
     | 
| 
      
 83 
     | 
    
         
            +
            	if have_zip
         
     | 
| 
      
 84 
     | 
    
         
            +
            	    assert(test(?f, pkg_base + ".zip"),
         
     | 
| 
      
 85 
     | 
    
         
            +
            		"zip is available, so a zip should have been built")
         
     | 
| 
      
 86 
     | 
    
         
            +
            	    verify_zip "packages", "wgrep-1.0.0", ".zip"
         
     | 
| 
      
 87 
     | 
    
         
            +
            	else
         
     | 
| 
      
 88 
     | 
    
         
            +
            	    puts "*** zip not available ***"
         
     | 
| 
      
 89 
     | 
    
         
            +
            	end
         
     | 
| 
      
 90 
     | 
    
         
            +
            	if have_gem
         
     | 
| 
      
 91 
     | 
    
         
            +
            	    assert(test(?f, pkg_base + ".gem"),
         
     | 
| 
      
 92 
     | 
    
         
            +
            		"gem is available, so a gem should have been built")
         
     | 
| 
      
 93 
     | 
    
         
            +
            	else
         
     | 
| 
      
 94 
     | 
    
         
            +
            	    puts "*** gem not available ***"
         
     | 
| 
      
 95 
     | 
    
         
            +
            	end
         
     | 
| 
      
 96 
     | 
    
         
            +
                end
         
     | 
| 
      
 97 
     | 
    
         
            +
                def verify_tar(dir, pkg_base, ext)
         
     | 
| 
      
 98 
     | 
    
         
            +
            	tar_fn = pkg_base + ext
         
     | 
| 
      
 99 
     | 
    
         
            +
            	old_pwd = Dir.pwd
         
     | 
| 
      
 100 
     | 
    
         
            +
            	FileUtils.cd dir
         
     | 
| 
      
 101 
     | 
    
         
            +
            	tmp_dir = "_tmp_tar"
         
     | 
| 
      
 102 
     | 
    
         
            +
            	tmp_dir.freeze
         
     | 
| 
      
 103 
     | 
    
         
            +
            	FileUtils.mkdir tmp_dir
         
     | 
| 
      
 104 
     | 
    
         
            +
            	FileUtils.cp tar_fn, tmp_dir
         
     | 
| 
      
 105 
     | 
    
         
            +
            	FileUtils.cd tmp_dir do
         
     | 
| 
      
 106 
     | 
    
         
            +
            	    `tar xzf #{tar_fn}`
         
     | 
| 
      
 107 
     | 
    
         
            +
            	    assert(test(?d, pkg_base),
         
     | 
| 
      
 108 
     | 
    
         
            +
            		"`#{pkg_base}' should be root directory of all files in tar")
         
     | 
| 
      
 109 
     | 
    
         
            +
            	    FileUtils.cd pkg_base do
         
     | 
| 
      
 110 
     | 
    
         
            +
            		check_manifest "tar content: "
         
     | 
| 
      
 111 
     | 
    
         
            +
            	    end
         
     | 
| 
      
 112 
     | 
    
         
            +
            	end
         
     | 
| 
      
 113 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 114 
     | 
    
         
            +
            	FileUtils.cd old_pwd unless Dir.pwd == old_pwd
         
     | 
| 
      
 115 
     | 
    
         
            +
            	FileUtils.rm_rf tmp_dir
         
     | 
| 
      
 116 
     | 
    
         
            +
                end
         
     | 
| 
      
 117 
     | 
    
         
            +
                def verify_zip(dir, pkg_base, ext)
         
     | 
| 
      
 118 
     | 
    
         
            +
            	zip_fn = pkg_base + ext
         
     | 
| 
      
 119 
     | 
    
         
            +
            	old_pwd = Dir.pwd
         
     | 
| 
      
 120 
     | 
    
         
            +
            	FileUtils.cd dir
         
     | 
| 
      
 121 
     | 
    
         
            +
            	tmp_dir = "_tmp_zip"
         
     | 
| 
      
 122 
     | 
    
         
            +
            	tmp_dir.freeze
         
     | 
| 
      
 123 
     | 
    
         
            +
            	FileUtils.mkdir tmp_dir
         
     | 
| 
      
 124 
     | 
    
         
            +
            	FileUtils.cp zip_fn, tmp_dir
         
     | 
| 
      
 125 
     | 
    
         
            +
            	FileUtils.cd tmp_dir do
         
     | 
| 
      
 126 
     | 
    
         
            +
            	    `unzip -q #{zip_fn}`
         
     | 
| 
      
 127 
     | 
    
         
            +
            	    assert(test(?d, pkg_base),
         
     | 
| 
      
 128 
     | 
    
         
            +
            		"`#{pkg_base}' should be root directory of all files in zip")
         
     | 
| 
      
 129 
     | 
    
         
            +
            	    FileUtils.cd pkg_base do
         
     | 
| 
      
 130 
     | 
    
         
            +
            		check_manifest "zip content: "
         
     | 
| 
      
 131 
     | 
    
         
            +
            	    end
         
     | 
| 
      
 132 
     | 
    
         
            +
            	end
         
     | 
| 
      
 133 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 134 
     | 
    
         
            +
            	FileUtils.cd old_pwd unless Dir.pwd == old_pwd
         
     | 
| 
      
 135 
     | 
    
         
            +
            	FileUtils.rm_rf tmp_dir
         
     | 
| 
      
 136 
     | 
    
         
            +
                end
         
     | 
| 
      
 137 
     | 
    
         
            +
                def test_rant_import
         
     | 
| 
      
 138 
     | 
    
         
            +
            	require 'rant/import'
         
     | 
| 
      
 139 
     | 
    
         
            +
            	out, err = capture_std do
         
     | 
| 
      
 140 
     | 
    
         
            +
            	    assert_equal(0, Rant::RantImport.run(%w(--auto make)))
         
     | 
| 
      
 141 
     | 
    
         
            +
            	end
         
     | 
| 
      
 142 
     | 
    
         
            +
            	# TODO: some out, err checking
         
     | 
| 
      
 143 
     | 
    
         
            +
            	
         
     | 
| 
      
 144 
     | 
    
         
            +
            	# run the monolithic rant script
         
     | 
| 
      
 145 
     | 
    
         
            +
            	out = `#{Rant::Env::RUBY} make -T`
         
     | 
| 
      
 146 
     | 
    
         
            +
            	assert_equal(0, $?,
         
     | 
| 
      
 147 
     | 
    
         
            +
            	    "imported `rant -T' should return 0")
         
     | 
| 
      
 148 
     | 
    
         
            +
            	assert_match(/\bpkg\b/, out,
         
     | 
| 
      
 149 
     | 
    
         
            +
            	    "imported `rant -T' should list described task `pkg'")
         
     | 
| 
      
 150 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 151 
     | 
    
         
            +
            	File.delete "make" if File.exist? "make"
         
     | 
| 
      
 152 
     | 
    
         
            +
                end
         
     | 
| 
      
 153 
     | 
    
         
            +
            end
         
     | 
    
        data/test/test_env.rb
    ADDED
    
    | 
         @@ -0,0 +1,47 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            require 'test/unit'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'rant/rantlib'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            $testDir ||= File.expand_path(File.dirname(__FILE__))
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            class TestRantEnv < Test::Unit::TestCase
         
     | 
| 
      
 8 
     | 
    
         
            +
                def setup
         
     | 
| 
      
 9 
     | 
    
         
            +
            	# Ensure we run in test directory.
         
     | 
| 
      
 10 
     | 
    
         
            +
            	Dir.chdir($testDir) unless Dir.pwd == $testDir
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
                def teardown
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
                def test_on_windows
         
     | 
| 
      
 15 
     | 
    
         
            +
            	# rather primitive test, but should catch obvious programming
         
     | 
| 
      
 16 
     | 
    
         
            +
            	# errors when making changes in when in hurry ;)
         
     | 
| 
      
 17 
     | 
    
         
            +
            	if Rant::Env.on_windows?
         
     | 
| 
      
 18 
     | 
    
         
            +
            	    assert(File::ALT_SEPARATOR,
         
     | 
| 
      
 19 
     | 
    
         
            +
            		"Env says we're on windows, but there is no ALT_SEPARATOR")
         
     | 
| 
      
 20 
     | 
    
         
            +
            	end
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
                def test_find_bin
         
     | 
| 
      
 23 
     | 
    
         
            +
            	assert(Rant::Env.find_bin(Rant::Env::RUBY),
         
     | 
| 
      
 24 
     | 
    
         
            +
            	    "RUBY_INSTALL_NAME should be found by Env.find_bin, " +
         
     | 
| 
      
 25 
     | 
    
         
            +
            	    "doesn't need to be a bug of Rant")
         
     | 
| 
      
 26 
     | 
    
         
            +
            	# let's check for the `echo' command which should be on most
         
     | 
| 
      
 27 
     | 
    
         
            +
            	# systems:
         
     | 
| 
      
 28 
     | 
    
         
            +
            	have_echo = false
         
     | 
| 
      
 29 
     | 
    
         
            +
            	begin
         
     | 
| 
      
 30 
     | 
    
         
            +
            	    have_echo = `echo hello` =~ /hello/
         
     | 
| 
      
 31 
     | 
    
         
            +
            	rescue Exception
         
     | 
| 
      
 32 
     | 
    
         
            +
            	end
         
     | 
| 
      
 33 
     | 
    
         
            +
            	if have_echo
         
     | 
| 
      
 34 
     | 
    
         
            +
            =begin
         
     | 
| 
      
 35 
     | 
    
         
            +
                        # seems to be not so on windows...
         
     | 
| 
      
 36 
     | 
    
         
            +
            	    echo_bin = Rant::Env.find_bin("echo")
         
     | 
| 
      
 37 
     | 
    
         
            +
            	    assert(echo_bin,
         
     | 
| 
      
 38 
     | 
    
         
            +
            		"echo can be invoked, so find_bin should find it")
         
     | 
| 
      
 39 
     | 
    
         
            +
            	    assert(echo_bin =~ /echo/i)
         
     | 
| 
      
 40 
     | 
    
         
            +
            	    assert(`#{echo_bin} hello` =~ /hello/,
         
     | 
| 
      
 41 
     | 
    
         
            +
            		"echo should be invokable through `#{echo_bin}'")
         
     | 
| 
      
 42 
     | 
    
         
            +
            =end
         
     | 
| 
      
 43 
     | 
    
         
            +
            	else
         
     | 
| 
      
 44 
     | 
    
         
            +
            	    puts "*** echo not available, will not search with find_bin ***"
         
     | 
| 
      
 45 
     | 
    
         
            +
            	end
         
     | 
| 
      
 46 
     | 
    
         
            +
                end
         
     | 
| 
      
 47 
     | 
    
         
            +
            end
         
     |