rant 0.3.8 → 0.4.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/NEWS +19 -0
 - data/README +51 -24
 - data/Rantfile +7 -8
 - data/doc/advanced.rdoc +3 -1
 - data/doc/package.rdoc +280 -0
 - data/doc/rantfile.rdoc +9 -19
 - data/doc/rubyproject.rdoc +24 -16
 - data/lib/rant/archive/minitar.rb +983 -0
 - data/lib/rant/archive/rubyzip/ioextras.rb +122 -0
 - data/lib/rant/archive/rubyzip/stdrubyext.rb +114 -0
 - data/lib/rant/archive/rubyzip/tempfile_bugfixed.rb +195 -0
 - data/lib/rant/archive/rubyzip.rb +1575 -0
 - data/lib/rant/import/archive/tgz.rb +49 -0
 - data/lib/rant/import/archive/zip.rb +67 -0
 - data/lib/rant/import/archive.rb +312 -0
 - data/lib/rant/import/autoclean.rb +2 -2
 - data/lib/rant/import/c/dependencies.rb +3 -3
 - data/lib/rant/import/clean.rb +1 -1
 - data/lib/rant/import/directedrule.rb +1 -1
 - data/lib/rant/import/package/tgz.rb +35 -0
 - data/lib/rant/import/package/zip.rb +36 -0
 - data/lib/rant/import/rubydoc.rb +1 -1
 - data/lib/rant/import/rubypackage.rb +19 -77
 - data/lib/rant/import/rubytest.rb +1 -1
 - data/lib/rant/import/subfile.rb +28 -14
 - data/lib/rant/import/win32/rubycmdwrapper.rb +1 -1
 - data/lib/rant/import.rb +36 -16
 - data/lib/rant/plugin/csharp.rb +1 -1
 - data/lib/rant/rantenv.rb +2 -13
 - data/lib/rant/rantfile.rb +11 -11
 - data/lib/rant/rantlib.rb +7 -3
 - data/lib/rant/rantsys.rb +53 -2
 - data/lib/rant/rantvar.rb +62 -1
 - data/misc/TODO +41 -0
 - data/{devel-notes → misc/devel-notes} +6 -0
 - data/misc/mt.rb +3 -0
 - data/misc/t.rb +18 -0
 - data/test/import/c/dependencies/test_c_dependencies.rb +18 -0
 - data/test/import/package/MANIFEST +4 -0
 - data/test/import/package/Rantfile +49 -0
 - data/test/import/package/deep/sub/sub/f1 +1 -0
 - data/test/import/package/sub/f1 +1 -0
 - data/test/import/package/sub2/f1 +1 -0
 - data/test/import/package/test_package.rb +425 -0
 - data/test/import/subfile/Rantfile +8 -0
 - data/test/import/subfile/test_subfile.rb +12 -0
 - data/test/project_rb1/rantfile.rb +3 -4
 - data/test/project_rb1/test_project_rb1.rb +16 -40
 - data/test/rant-import/test_rant-import.rb +3 -3
 - data/test/test_filelist.rb +39 -2
 - data/test/tutil.rb +89 -3
 - metadata +35 -6
 - data/TODO +0 -21
 - data/lib/rant/import/package.rb +0 -258
 - /data/{rantmethods.rb → misc/rantmethods.rb} +0 -0
 
    
        data/misc/TODO
    ADDED
    
    | 
         @@ -0,0 +1,41 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            = TODO
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            == Solve archiving dependency problem
         
     | 
| 
      
 5 
     | 
    
         
            +
            Because of timed depdencies, the archiving tasks don't recognize if
         
     | 
| 
      
 6 
     | 
    
         
            +
            the only change is that a file was removed. The only exception is a
         
     | 
| 
      
 7 
     | 
    
         
            +
            primitive +Archive+ task whith manifest synchronization. The problem
         
     | 
| 
      
 8 
     | 
    
         
            +
            can be solved by writing a list of files parallel to archive creation
         
     | 
| 
      
 9 
     | 
    
         
            +
            or to write a signature of the filelist.
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            == Dependency alternation
         
     | 
| 
      
 12 
     | 
    
         
            +
            Allow at least two tasks as one dependency where the first available
         
     | 
| 
      
 13 
     | 
    
         
            +
            will actually used to satisfy the dependency, pseudo code:
         
     | 
| 
      
 14 
     | 
    
         
            +
                task :a => :b | :c
         
     | 
| 
      
 15 
     | 
    
         
            +
            Rant should first try :b and if the task :b exists and succeds
         
     | 
| 
      
 16 
     | 
    
         
            +
            :c won't be considered, if task :b doesn't exist, rant should try
         
     | 
| 
      
 17 
     | 
    
         
            +
            to make :c.
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            == GET RID OF CLASS Rant::Path
         
     | 
| 
      
 20 
     | 
    
         
            +
            Done (0.3.7).
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            == Packaging
         
     | 
| 
      
 23 
     | 
    
         
            +
            Try minitar if tar is not available.
         
     | 
| 
      
 24 
     | 
    
         
            +
            Done (0.3.9).
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            == C# plugin
         
     | 
| 
      
 27 
     | 
    
         
            +
            Define the method +assembly+ for building a file with the C# compiler?
         
     | 
| 
      
 28 
     | 
    
         
            +
            Done.
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            == Predefined tasks
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            Add a 'distclean' task that removes all files and directories
         
     | 
| 
      
 33 
     | 
    
         
            +
            generatet by any file task.
         
     | 
| 
      
 34 
     | 
    
         
            +
            Done (AutoClean generator).
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            == Java plugin
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
            At least for the 1.0.0 release.
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            #--
         
     | 
| 
      
 41 
     | 
    
         
            +
            # vim:tw=70
         
     | 
| 
         @@ -1,4 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         | 
| 
      
 2 
     | 
    
         
            +
            == Task alias
         
     | 
| 
      
 3 
     | 
    
         
            +
            Since +alias+ is a Ruby keyword, we could use +nick+ to create task
         
     | 
| 
      
 4 
     | 
    
         
            +
            alises.
         
     | 
| 
      
 5 
     | 
    
         
            +
            Other choices: short, cut, name, label, syn, synonym, ident, term,
         
     | 
| 
      
 6 
     | 
    
         
            +
                shortcut, abbreviation
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
       2 
8 
     | 
    
         
             
            == Here docs
         
     | 
| 
       3 
9 
     | 
    
         
             
            Don't use here documents in the Rant sources, imports and plugins.
         
     | 
| 
       4 
10 
     | 
    
         
             
            They'll get messed up by the rant-import command.
         
     | 
    
        data/misc/mt.rb
    ADDED
    
    
    
        data/misc/t.rb
    ADDED
    
    | 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            =begin
         
     | 
| 
      
 3 
     | 
    
         
            +
            Run this with `rant -f t.rb', it should print the following 3 lines:
         
     | 
| 
      
 4 
     | 
    
         
            +
            Task
         
     | 
| 
      
 5 
     | 
    
         
            +
            Rant::Task
         
     | 
| 
      
 6 
     | 
    
         
            +
            a
         
     | 
| 
      
 7 
     | 
    
         
            +
            =end
         
     | 
| 
      
 8 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 9 
     | 
    
         
            +
            #require 'rake'
         
     | 
| 
      
 10 
     | 
    
         
            +
            require 'mt'
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            gen Task, "a" do |t|
         
     | 
| 
      
 13 
     | 
    
         
            +
                t.needed { true }
         
     | 
| 
      
 14 
     | 
    
         
            +
                t.act { puts t.name }
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            p ::Task
         
     | 
| 
      
 18 
     | 
    
         
            +
            p Task
         
     | 
| 
         @@ -89,4 +89,22 @@ class TestImportCDependencies < Test::Unit::TestCase 
     | 
|
| 
       89 
89 
     | 
    
         
             
            	    assert(!test(?e, f), "#{f} should get unlinked by AutoClean")
         
     | 
| 
       90 
90 
     | 
    
         
             
            	}
         
     | 
| 
       91 
91 
     | 
    
         
             
                end
         
     | 
| 
      
 92 
     | 
    
         
            +
                def test_rant_import_hello_c
         
     | 
| 
      
 93 
     | 
    
         
            +
                    run_import("-q", "--auto", "ant.t")
         
     | 
| 
      
 94 
     | 
    
         
            +
                    assert_exit
         
     | 
| 
      
 95 
     | 
    
         
            +
                    assert(test(?f, "ant.t"))
         
     | 
| 
      
 96 
     | 
    
         
            +
                    run_ruby("ant.t", "hello.t")
         
     | 
| 
      
 97 
     | 
    
         
            +
                    assert_exit
         
     | 
| 
      
 98 
     | 
    
         
            +
            	assert(test(?f, "hello.t"))
         
     | 
| 
      
 99 
     | 
    
         
            +
            	assert(test(?f, "c_dependencies"))
         
     | 
| 
      
 100 
     | 
    
         
            +
                    out = run_ruby("ant.t", "hello.t")
         
     | 
| 
      
 101 
     | 
    
         
            +
            	assert(out.strip.empty?)
         
     | 
| 
      
 102 
     | 
    
         
            +
            	open "ant.t" do |f|
         
     | 
| 
      
 103 
     | 
    
         
            +
            	    requires = extract_requires(f)
         
     | 
| 
      
 104 
     | 
    
         
            +
            	    requires.each { |fn|
         
     | 
| 
      
 105 
     | 
    
         
            +
            		assert_no_match(/^rant\//, fn,
         
     | 
| 
      
 106 
     | 
    
         
            +
            		    "#{fn} should be inlined by rant-import")
         
     | 
| 
      
 107 
     | 
    
         
            +
            	    }
         
     | 
| 
      
 108 
     | 
    
         
            +
            	end
         
     | 
| 
      
 109 
     | 
    
         
            +
                end
         
     | 
| 
       92 
110 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,49 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            import %w(package/tgz package/zip autoclean)
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            gen Archive::Tgz, "t1", :manifest => "MANIFEST"
         
     | 
| 
      
 5 
     | 
    
         
            +
            desc "Create t1.zip"
         
     | 
| 
      
 6 
     | 
    
         
            +
            gen Archive::Zip, "t1", :manifest => "MANIFEST"
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            desc "Create t2.tgz"
         
     | 
| 
      
 9 
     | 
    
         
            +
            gen Archive::Tgz, "t2",
         
     | 
| 
      
 10 
     | 
    
         
            +
                :files => sys["sub*/f?"],
         
     | 
| 
      
 11 
     | 
    
         
            +
                :manifest => "m2.tgz.t"
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            gen Archive::Zip, "t2",
         
     | 
| 
      
 14 
     | 
    
         
            +
                :files => sys["sub*/f?"],
         
     | 
| 
      
 15 
     | 
    
         
            +
                :manifest => "m2.zip.t"
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            gen Archive::Tgz, "t3", :files => %w(Rantfile sub/f1)
         
     | 
| 
      
 18 
     | 
    
         
            +
            gen Archive::Zip, "t3", :files => sys["Rantfile", "sub/f1"]
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            gen Archive::Tgz, "pkg.t/t4", :manifest, :version => "1.0.0"
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            gen Archive::Zip, "zip.t", "t4", :manifest, :version => "1.0.0"
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            gen Package::Tgz, "pkg2.t", :manifest
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            gen Package::Zip, "pkg.t/pkg",
         
     | 
| 
      
 27 
     | 
    
         
            +
                :manifest => "CONTENTS",
         
     | 
| 
      
 28 
     | 
    
         
            +
                :files => %w(deep/sub/sub/f1)
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            gen Package::Tgz, "sub", "pkg.t/pkg", :manifest,
         
     | 
| 
      
 31 
     | 
    
         
            +
                :version => "0.1",
         
     | 
| 
      
 32 
     | 
    
         
            +
                :extension => ".tar.gz"
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
            gen Package::Tgz, "sub.t/", "pkg", :files => %w(sub/f1)
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            gen Package::Tgz, "t5",
         
     | 
| 
      
 37 
     | 
    
         
            +
                :manifest => "mf5.t",
         
     | 
| 
      
 38 
     | 
    
         
            +
                :files => %w(Rantfile mf5.t)
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            gen Package::Tgz, "t6", :files => %w(sub6.t)
         
     | 
| 
      
 41 
     | 
    
         
            +
            gen Package::Zip, "t6", :files => %w(sub6.t)
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
            gen Archive::Tgz, "t7", :files => %w(sub7.t)
         
     | 
| 
      
 44 
     | 
    
         
            +
            gen Archive::Zip, "t7", :files => %w(sub7.t)
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
            gen Archive::Tgz, "sym", :files => sys["subs.t/**/*"]
         
     | 
| 
      
 47 
     | 
    
         
            +
            gen Archive::Zip, "sym", :files => sys["subs.t/**/*"]
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
            gen AutoClean
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            deep/sub/sub/f1
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            sub/f1
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            sub2/f1
         
     | 
| 
         @@ -0,0 +1,425 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            require 'test/unit'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'tutil'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            $testIPackageDir ||= File.expand_path(File.dirname(__FILE__))
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            class TestImportPackage < Test::Unit::TestCase
         
     | 
| 
      
 8 
     | 
    
         
            +
                def setup
         
     | 
| 
      
 9 
     | 
    
         
            +
            	# Ensure we run in test directory.
         
     | 
| 
      
 10 
     | 
    
         
            +
            	Dir.chdir $testIPackageDir
         
     | 
| 
      
 11 
     | 
    
         
            +
            	@pkg_dir = nil
         
     | 
| 
      
 12 
     | 
    
         
            +
                    @contents = {}
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
                def teardown
         
     | 
| 
      
 15 
     | 
    
         
            +
            	assert_rant("autoclean")
         
     | 
| 
      
 16 
     | 
    
         
            +
            	Dir["*.{tgz,zip,t}"].each { |f|
         
     | 
| 
      
 17 
     | 
    
         
            +
                        assert(false, "#{f} should be removed by AutoClean")
         
     | 
| 
      
 18 
     | 
    
         
            +
                    }
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
                def check_contents(atype, archive, files, dirs = [], manifest_file = nil)
         
     | 
| 
      
 21 
     | 
    
         
            +
            	old_pwd = Dir.pwd
         
     | 
| 
      
 22 
     | 
    
         
            +
            	FileUtils.mkdir "u.t"
         
     | 
| 
      
 23 
     | 
    
         
            +
            	FileUtils.cp archive, "u.t"
         
     | 
| 
      
 24 
     | 
    
         
            +
            	FileUtils.cd "u.t"
         
     | 
| 
      
 25 
     | 
    
         
            +
            	archive = File.basename archive
         
     | 
| 
      
 26 
     | 
    
         
            +
            	unpack_archive atype, archive
         
     | 
| 
      
 27 
     | 
    
         
            +
            	if @pkg_dir
         
     | 
| 
      
 28 
     | 
    
         
            +
            	    assert(test(?d, @pkg_dir))
         
     | 
| 
      
 29 
     | 
    
         
            +
            	    FileUtils.cd @pkg_dir
         
     | 
| 
      
 30 
     | 
    
         
            +
            	end
         
     | 
| 
      
 31 
     | 
    
         
            +
            	files.each { |f|
         
     | 
| 
      
 32 
     | 
    
         
            +
                        assert(test(?f, f), "file #{f} is missing in archive")
         
     | 
| 
      
 33 
     | 
    
         
            +
                        content = @contents[f]
         
     | 
| 
      
 34 
     | 
    
         
            +
                        if content
         
     | 
| 
      
 35 
     | 
    
         
            +
                            assert_equal(content, File.read(f))
         
     | 
| 
      
 36 
     | 
    
         
            +
                        end
         
     | 
| 
      
 37 
     | 
    
         
            +
            	}
         
     | 
| 
      
 38 
     | 
    
         
            +
            	dirs.each { |f|
         
     | 
| 
      
 39 
     | 
    
         
            +
            	    assert(test(?d, f), "dir #{f} is missing in archive")
         
     | 
| 
      
 40 
     | 
    
         
            +
            	}
         
     | 
| 
      
 41 
     | 
    
         
            +
            	count = files.size + dirs.size
         
     | 
| 
      
 42 
     | 
    
         
            +
            	# + 1 because of the archive file
         
     | 
| 
      
 43 
     | 
    
         
            +
            	count += 1 unless @pkg_dir
         
     | 
| 
      
 44 
     | 
    
         
            +
            	assert_equal(count, Dir["**/*"].size)
         
     | 
| 
      
 45 
     | 
    
         
            +
            	if manifest_file
         
     | 
| 
      
 46 
     | 
    
         
            +
            	    check_manifest(manifest_file, files)
         
     | 
| 
      
 47 
     | 
    
         
            +
            	end
         
     | 
| 
      
 48 
     | 
    
         
            +
            	yield if block_given?
         
     | 
| 
      
 49 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 50 
     | 
    
         
            +
            	FileUtils.cd old_pwd
         
     | 
| 
      
 51 
     | 
    
         
            +
            	FileUtils.rm_r "u.t"
         
     | 
| 
      
 52 
     | 
    
         
            +
                end
         
     | 
| 
      
 53 
     | 
    
         
            +
                def check_manifest(file, entries)
         
     | 
| 
      
 54 
     | 
    
         
            +
            	assert(test(?f, file))
         
     | 
| 
      
 55 
     | 
    
         
            +
            	m_entries = IO.read(file).split("\n")
         
     | 
| 
      
 56 
     | 
    
         
            +
            	assert_equal(entries.size, m_entries.size)
         
     | 
| 
      
 57 
     | 
    
         
            +
            	entries.each { |f|
         
     | 
| 
      
 58 
     | 
    
         
            +
            	    assert(m_entries.include?(f),
         
     | 
| 
      
 59 
     | 
    
         
            +
            		"#{f} missing in manifest")
         
     | 
| 
      
 60 
     | 
    
         
            +
            	}
         
     | 
| 
      
 61 
     | 
    
         
            +
                end
         
     | 
| 
      
 62 
     | 
    
         
            +
                def test_tgz_from_manifest
         
     | 
| 
      
 63 
     | 
    
         
            +
            	assert_rant
         
     | 
| 
      
 64 
     | 
    
         
            +
            	mf = %w(Rantfile sub/f1 sub2/f1 MANIFEST)
         
     | 
| 
      
 65 
     | 
    
         
            +
            	dirs = %w(sub sub2)
         
     | 
| 
      
 66 
     | 
    
         
            +
            	check_contents(:tgz, "t1.tgz", mf, dirs, "MANIFEST")
         
     | 
| 
      
 67 
     | 
    
         
            +
                end
         
     | 
| 
      
 68 
     | 
    
         
            +
                def test_tgz_sync_manifest
         
     | 
| 
      
 69 
     | 
    
         
            +
            	assert_rant("t2.tgz")
         
     | 
| 
      
 70 
     | 
    
         
            +
            	mf = %w(sub/f1 sub2/f1 m2.tgz.t)
         
     | 
| 
      
 71 
     | 
    
         
            +
            	dirs = %w(sub sub2)
         
     | 
| 
      
 72 
     | 
    
         
            +
            	check_manifest("m2.tgz.t", mf)
         
     | 
| 
      
 73 
     | 
    
         
            +
            	check_contents(:tgz, "t2.tgz", mf, dirs, "m2.tgz.t")
         
     | 
| 
      
 74 
     | 
    
         
            +
            	out, err = assert_rant("t2.tgz")
         
     | 
| 
      
 75 
     | 
    
         
            +
            	assert(out.strip.empty?)
         
     | 
| 
      
 76 
     | 
    
         
            +
            	#assert(err.strip.empty?)
         
     | 
| 
      
 77 
     | 
    
         
            +
            	FileUtils.touch "sub/f5"
         
     | 
| 
      
 78 
     | 
    
         
            +
            	out, err = assert_rant("t2.tgz")
         
     | 
| 
      
 79 
     | 
    
         
            +
            	assert_match(/writing m2\.tgz\.t.*\n.*tar/m, out)
         
     | 
| 
      
 80 
     | 
    
         
            +
            	check_contents(:tgz, "t2.tgz", mf + %w(sub/f5), dirs, "m2.tgz.t")
         
     | 
| 
      
 81 
     | 
    
         
            +
            	timeout
         
     | 
| 
      
 82 
     | 
    
         
            +
            	FileUtils.rm "sub/f5"
         
     | 
| 
      
 83 
     | 
    
         
            +
            	out, err = assert_rant("t2.tgz")
         
     | 
| 
      
 84 
     | 
    
         
            +
            	assert_match(/writing m2\.tgz\.t.*\n.*tar/m, out)
         
     | 
| 
      
 85 
     | 
    
         
            +
            	check_contents(:tgz, "t2.tgz", mf, dirs, "m2.tgz.t")
         
     | 
| 
      
 86 
     | 
    
         
            +
            	# test autoclean
         
     | 
| 
      
 87 
     | 
    
         
            +
            	assert_rant("autoclean")
         
     | 
| 
      
 88 
     | 
    
         
            +
            	assert(!test(?e, "m2.tgz.t"))
         
     | 
| 
      
 89 
     | 
    
         
            +
            	# hmm.. the tgz will be removed by check_contents anyway...
         
     | 
| 
      
 90 
     | 
    
         
            +
            	assert(!test(?e, "t2.tgz"))
         
     | 
| 
      
 91 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 92 
     | 
    
         
            +
            	FileUtils.rm_rf "sub/f5"
         
     | 
| 
      
 93 
     | 
    
         
            +
                end
         
     | 
| 
      
 94 
     | 
    
         
            +
                def test_tgz_files_array
         
     | 
| 
      
 95 
     | 
    
         
            +
            	assert_rant("t3.tgz")
         
     | 
| 
      
 96 
     | 
    
         
            +
            	mf = %w(Rantfile sub/f1)
         
     | 
| 
      
 97 
     | 
    
         
            +
            	dirs = %w(sub)
         
     | 
| 
      
 98 
     | 
    
         
            +
            	check_contents(:tgz, "t3.tgz", mf, dirs)
         
     | 
| 
      
 99 
     | 
    
         
            +
                end
         
     | 
| 
      
 100 
     | 
    
         
            +
                def test_tgz_version_and_dir
         
     | 
| 
      
 101 
     | 
    
         
            +
            	assert_rant("pkg.t/t4-1.0.0.tgz")
         
     | 
| 
      
 102 
     | 
    
         
            +
            	assert(test(?d, "pkg.t"))
         
     | 
| 
      
 103 
     | 
    
         
            +
            	mf = %w(Rantfile sub/f1 sub2/f1 MANIFEST)
         
     | 
| 
      
 104 
     | 
    
         
            +
            	dirs = %w(sub sub2)
         
     | 
| 
      
 105 
     | 
    
         
            +
            	check_contents(:tgz, "pkg.t/t4-1.0.0.tgz", mf, dirs, "MANIFEST")
         
     | 
| 
      
 106 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 107 
     | 
    
         
            +
            	FileUtils.rm_rf "pkg.t"
         
     | 
| 
      
 108 
     | 
    
         
            +
                end
         
     | 
| 
      
 109 
     | 
    
         
            +
                def test_tgz_package_manifest
         
     | 
| 
      
 110 
     | 
    
         
            +
            	assert(!test(?e, "pkg2.t"))
         
     | 
| 
      
 111 
     | 
    
         
            +
            	assert_rant("pkg2.t.tgz")
         
     | 
| 
      
 112 
     | 
    
         
            +
            	assert(?d, "pkg2.t")
         
     | 
| 
      
 113 
     | 
    
         
            +
            	mf = %w(Rantfile sub/f1 sub2/f1 MANIFEST)
         
     | 
| 
      
 114 
     | 
    
         
            +
            	dirs = %w(sub sub2)
         
     | 
| 
      
 115 
     | 
    
         
            +
            	@pkg_dir = "pkg2.t"
         
     | 
| 
      
 116 
     | 
    
         
            +
            	check_contents(:tgz, "pkg2.t.tgz", mf, dirs, "MANIFEST")
         
     | 
| 
      
 117 
     | 
    
         
            +
            	assert(test(?d, "pkg2.t"))
         
     | 
| 
      
 118 
     | 
    
         
            +
            	assert_rant("autoclean")
         
     | 
| 
      
 119 
     | 
    
         
            +
            	assert(!test(?e, "pkg2.t"))
         
     | 
| 
      
 120 
     | 
    
         
            +
                end
         
     | 
| 
      
 121 
     | 
    
         
            +
                def test_tgz_package_basedir_manifest_extension
         
     | 
| 
      
 122 
     | 
    
         
            +
            	assert_rant("sub/pkg.t/pkg-0.1.tar.gz")
         
     | 
| 
      
 123 
     | 
    
         
            +
            	assert(test(?f, "sub/pkg.t/pkg-0.1.tar.gz"))
         
     | 
| 
      
 124 
     | 
    
         
            +
            	mf = %w(Rantfile sub/f1 sub2/f1 MANIFEST)
         
     | 
| 
      
 125 
     | 
    
         
            +
            	dirs = %w(sub sub2)
         
     | 
| 
      
 126 
     | 
    
         
            +
            	@pkg_dir = "pkg-0.1"
         
     | 
| 
      
 127 
     | 
    
         
            +
            	check_contents(:tgz,
         
     | 
| 
      
 128 
     | 
    
         
            +
            	    "sub/pkg.t/pkg-0.1.tar.gz", mf, dirs, "MANIFEST")
         
     | 
| 
      
 129 
     | 
    
         
            +
            	assert(test(?f, "sub/f1"))
         
     | 
| 
      
 130 
     | 
    
         
            +
            	assert_rant("autoclean")
         
     | 
| 
      
 131 
     | 
    
         
            +
            	assert(!test(?e, "sub/pkg.t-0.1"))
         
     | 
| 
      
 132 
     | 
    
         
            +
            	assert(test(?d, "sub"))
         
     | 
| 
      
 133 
     | 
    
         
            +
            	assert(test(?f, "sub/f1"))
         
     | 
| 
      
 134 
     | 
    
         
            +
                end
         
     | 
| 
      
 135 
     | 
    
         
            +
                def test_tgz_package_basedir_with_slash
         
     | 
| 
      
 136 
     | 
    
         
            +
            	assert(!test(?d, "sub.t"))
         
     | 
| 
      
 137 
     | 
    
         
            +
            	assert_rant(:fail, "sub.t/pkg.tgz")
         
     | 
| 
      
 138 
     | 
    
         
            +
            	assert(!test(?d, "sub.t"))
         
     | 
| 
      
 139 
     | 
    
         
            +
            	FileUtils.mkdir "sub.t"
         
     | 
| 
      
 140 
     | 
    
         
            +
            	FileUtils.touch "sub.t/a.t"
         
     | 
| 
      
 141 
     | 
    
         
            +
            	out, err = assert_rant("sub.t/pkg.tgz")
         
     | 
| 
      
 142 
     | 
    
         
            +
            	assert(!out.empty?)
         
     | 
| 
      
 143 
     | 
    
         
            +
            	out, err = assert_rant("sub.t/pkg.tgz")
         
     | 
| 
      
 144 
     | 
    
         
            +
            	assert(out.empty?)
         
     | 
| 
      
 145 
     | 
    
         
            +
            	assert(test(?d, "sub.t/pkg"))
         
     | 
| 
      
 146 
     | 
    
         
            +
            	@pkg_dir = "pkg"
         
     | 
| 
      
 147 
     | 
    
         
            +
            	mf = %w(sub/f1)
         
     | 
| 
      
 148 
     | 
    
         
            +
            	dirs = %w(sub)
         
     | 
| 
      
 149 
     | 
    
         
            +
            	check_contents(:tgz, "sub.t/pkg.tgz", mf, dirs)
         
     | 
| 
      
 150 
     | 
    
         
            +
            	assert_rant("autoclean")
         
     | 
| 
      
 151 
     | 
    
         
            +
            	assert(!test(?e, "sub.t/pkg.tgz"))
         
     | 
| 
      
 152 
     | 
    
         
            +
            	assert(!test(?e, "sub.t/pkg"))
         
     | 
| 
      
 153 
     | 
    
         
            +
            	assert(test(?d, "sub.t"))
         
     | 
| 
      
 154 
     | 
    
         
            +
            	assert(test(?f, "sub.t/a.t"))
         
     | 
| 
      
 155 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 156 
     | 
    
         
            +
            	FileUtils.rm_rf "sub.t"
         
     | 
| 
      
 157 
     | 
    
         
            +
                end
         
     | 
| 
      
 158 
     | 
    
         
            +
                def test_tgz_import_archive
         
     | 
| 
      
 159 
     | 
    
         
            +
            	open "rf.t", "w" do |f|
         
     | 
| 
      
 160 
     | 
    
         
            +
            	    f << <<-EOF
         
     | 
| 
      
 161 
     | 
    
         
            +
            		import "archive/tgz", "autoclean"
         
     | 
| 
      
 162 
     | 
    
         
            +
            		gen Archive::Tgz, "rf", :files => sys["deep/sub/sub/f1"]
         
     | 
| 
      
 163 
     | 
    
         
            +
            		gen AutoClean
         
     | 
| 
      
 164 
     | 
    
         
            +
            	    EOF
         
     | 
| 
      
 165 
     | 
    
         
            +
            	end
         
     | 
| 
      
 166 
     | 
    
         
            +
            	assert_rant("-frf.t")
         
     | 
| 
      
 167 
     | 
    
         
            +
            	mf = %w(deep/sub/sub/f1)
         
     | 
| 
      
 168 
     | 
    
         
            +
            	dirs = %w(deep deep/sub deep/sub/sub)
         
     | 
| 
      
 169 
     | 
    
         
            +
            	check_contents(:tgz, "rf.tgz", mf, dirs)
         
     | 
| 
      
 170 
     | 
    
         
            +
            	assert(test(?f, "rf.tgz"))
         
     | 
| 
      
 171 
     | 
    
         
            +
            	assert_rant("-frf.t", "autoclean")
         
     | 
| 
      
 172 
     | 
    
         
            +
            	assert(!test(?e, "rf.tgz"))
         
     | 
| 
      
 173 
     | 
    
         
            +
            	run_import("-frf.t", "-q", "--auto", "ant.t")
         
     | 
| 
      
 174 
     | 
    
         
            +
            	assert_equal(0, $?.exitstatus)
         
     | 
| 
      
 175 
     | 
    
         
            +
            	out = run_ruby("ant.t", "-frf.t")
         
     | 
| 
      
 176 
     | 
    
         
            +
            	assert(!out.empty?)
         
     | 
| 
      
 177 
     | 
    
         
            +
            	out = run_ruby("ant.t", "-frf.t")
         
     | 
| 
      
 178 
     | 
    
         
            +
            	assert(out.empty?)
         
     | 
| 
      
 179 
     | 
    
         
            +
            	check_contents(:tgz, "rf.tgz", mf, dirs)
         
     | 
| 
      
 180 
     | 
    
         
            +
            	assert(test(?f, "rf.tgz"))
         
     | 
| 
      
 181 
     | 
    
         
            +
            	assert_rant("-frf.t", "autoclean")
         
     | 
| 
      
 182 
     | 
    
         
            +
            	assert(!test(?e, "rf.tgz"))
         
     | 
| 
      
 183 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 184 
     | 
    
         
            +
            	FileUtils.rm_rf %w(rf.t ant.t)
         
     | 
| 
      
 185 
     | 
    
         
            +
                end
         
     | 
| 
      
 186 
     | 
    
         
            +
                def test_tgz_package_empty_dir
         
     | 
| 
      
 187 
     | 
    
         
            +
            	FileUtils.mkdir "sub6.t"
         
     | 
| 
      
 188 
     | 
    
         
            +
            	assert_rant("t6.tgz")
         
     | 
| 
      
 189 
     | 
    
         
            +
            	@pkg_dir = "t6"
         
     | 
| 
      
 190 
     | 
    
         
            +
            	mf = %w()
         
     | 
| 
      
 191 
     | 
    
         
            +
            	dirs = %w(sub6.t)
         
     | 
| 
      
 192 
     | 
    
         
            +
            	check_contents(:tgz, "t6.tgz", mf, dirs)
         
     | 
| 
      
 193 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 194 
     | 
    
         
            +
            	FileUtils.rm_rf %w(sub6.t)
         
     | 
| 
      
 195 
     | 
    
         
            +
                end
         
     | 
| 
      
 196 
     | 
    
         
            +
                def test_tgz_files_manifest_desc
         
     | 
| 
      
 197 
     | 
    
         
            +
            	out, err = assert_rant("--tasks")
         
     | 
| 
      
 198 
     | 
    
         
            +
            	assert_match(/rant\s+t2\.tgz\s+#\s+Create t2\.tgz/, out)
         
     | 
| 
      
 199 
     | 
    
         
            +
                end
         
     | 
| 
      
 200 
     | 
    
         
            +
                def test_tgz_package_files_contains_manifest
         
     | 
| 
      
 201 
     | 
    
         
            +
            	assert_rant("t5.tgz")
         
     | 
| 
      
 202 
     | 
    
         
            +
            	@pkg_dir = "t5"
         
     | 
| 
      
 203 
     | 
    
         
            +
            	mf = %w(Rantfile mf5.t)
         
     | 
| 
      
 204 
     | 
    
         
            +
            	dirs = %w()
         
     | 
| 
      
 205 
     | 
    
         
            +
            	check_contents(:tgz, "t5.tgz", mf, dirs, "mf5.t")
         
     | 
| 
      
 206 
     | 
    
         
            +
            	assert_rant("autoclean")
         
     | 
| 
      
 207 
     | 
    
         
            +
            	assert(!test(?e, "t5"))
         
     | 
| 
      
 208 
     | 
    
         
            +
                end
         
     | 
| 
      
 209 
     | 
    
         
            +
                def test_tgz_package_non_recursive
         
     | 
| 
      
 210 
     | 
    
         
            +
                    FileUtils.mkdir "sub6.t"
         
     | 
| 
      
 211 
     | 
    
         
            +
                    FileUtils.touch "sub6.t/.t"
         
     | 
| 
      
 212 
     | 
    
         
            +
                    FileUtils.touch "sub6.t/a.t"
         
     | 
| 
      
 213 
     | 
    
         
            +
                    assert_rant("t6.tgz")
         
     | 
| 
      
 214 
     | 
    
         
            +
                    @pkg_dir = "t6"
         
     | 
| 
      
 215 
     | 
    
         
            +
                    mf = %w()
         
     | 
| 
      
 216 
     | 
    
         
            +
                    dirs = %w(sub6.t)
         
     | 
| 
      
 217 
     | 
    
         
            +
                    check_contents(:tgz, "t6.tgz", mf, dirs)
         
     | 
| 
      
 218 
     | 
    
         
            +
                    assert_rant("autoclean")
         
     | 
| 
      
 219 
     | 
    
         
            +
                    assert(!test(?e, "t6"))
         
     | 
| 
      
 220 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 221 
     | 
    
         
            +
                    FileUtils.rm_rf "sub6.t"
         
     | 
| 
      
 222 
     | 
    
         
            +
                end
         
     | 
| 
      
 223 
     | 
    
         
            +
                def test_tgz_non_recursive
         
     | 
| 
      
 224 
     | 
    
         
            +
                    FileUtils.mkdir "sub7.t"
         
     | 
| 
      
 225 
     | 
    
         
            +
                    FileUtils.touch "sub7.t/a"
         
     | 
| 
      
 226 
     | 
    
         
            +
                    assert_rant("t7.tgz")
         
     | 
| 
      
 227 
     | 
    
         
            +
                    mf = %w()
         
     | 
| 
      
 228 
     | 
    
         
            +
                    dirs = %w(sub7.t)
         
     | 
| 
      
 229 
     | 
    
         
            +
                    check_contents(:tgz, "t7.tgz", mf, dirs)
         
     | 
| 
      
 230 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 231 
     | 
    
         
            +
                    FileUtils.rm_rf "sub7.t"
         
     | 
| 
      
 232 
     | 
    
         
            +
                end
         
     | 
| 
      
 233 
     | 
    
         
            +
                def test_tgz_follow_symlink
         
     | 
| 
      
 234 
     | 
    
         
            +
                    have_symlinks = true
         
     | 
| 
      
 235 
     | 
    
         
            +
                    FileUtils.mkdir "subs.t"
         
     | 
| 
      
 236 
     | 
    
         
            +
                    open "target.t", "w" do |f|
         
     | 
| 
      
 237 
     | 
    
         
            +
                        f.print "symlink test target file"
         
     | 
| 
      
 238 
     | 
    
         
            +
                    end
         
     | 
| 
      
 239 
     | 
    
         
            +
                    begin
         
     | 
| 
      
 240 
     | 
    
         
            +
                        File.symlink "../target.t", "subs.t/symlink"
         
     | 
| 
      
 241 
     | 
    
         
            +
                    rescue NotImplementedError
         
     | 
| 
      
 242 
     | 
    
         
            +
                        have_symlinks = false
         
     | 
| 
      
 243 
     | 
    
         
            +
                    end
         
     | 
| 
      
 244 
     | 
    
         
            +
                    if have_symlinks
         
     | 
| 
      
 245 
     | 
    
         
            +
                        assert(File.symlink?("subs.t/symlink"))
         
     | 
| 
      
 246 
     | 
    
         
            +
                        assert(File.exist?("subs.t/symlink"))
         
     | 
| 
      
 247 
     | 
    
         
            +
                        assert_rant("sym.tgz")
         
     | 
| 
      
 248 
     | 
    
         
            +
                        mf = %w(subs.t/symlink)
         
     | 
| 
      
 249 
     | 
    
         
            +
                        dirs = %w(subs.t)
         
     | 
| 
      
 250 
     | 
    
         
            +
                        @contents["subs.t/symlink"] = "symlink test target file"
         
     | 
| 
      
 251 
     | 
    
         
            +
                        check_contents(:tgz, "sym.tgz", mf, dirs)
         
     | 
| 
      
 252 
     | 
    
         
            +
                    else
         
     | 
| 
      
 253 
     | 
    
         
            +
                        STDERR.puts "*** platform doesn't support symbolic links ***"
         
     | 
| 
      
 254 
     | 
    
         
            +
                    end
         
     | 
| 
      
 255 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 256 
     | 
    
         
            +
                    FileUtils.rm_f %w(target.t sym.tgz)
         
     | 
| 
      
 257 
     | 
    
         
            +
                    FileUtils.rm_rf "subs.t"
         
     | 
| 
      
 258 
     | 
    
         
            +
                end
         
     | 
| 
      
 259 
     | 
    
         
            +
                def test_tgz_package_follow_symlink_dir
         
     | 
| 
      
 260 
     | 
    
         
            +
                    have_symlinks = true
         
     | 
| 
      
 261 
     | 
    
         
            +
                    FileUtils.mkdir "subs.t"
         
     | 
| 
      
 262 
     | 
    
         
            +
                    begin
         
     | 
| 
      
 263 
     | 
    
         
            +
                        File.symlink "subs.t", "sub6.t"
         
     | 
| 
      
 264 
     | 
    
         
            +
                    rescue NotImplementedError
         
     | 
| 
      
 265 
     | 
    
         
            +
                        have_symlinks = false
         
     | 
| 
      
 266 
     | 
    
         
            +
                    end
         
     | 
| 
      
 267 
     | 
    
         
            +
                    if have_symlinks
         
     | 
| 
      
 268 
     | 
    
         
            +
                        assert_rant("t6.tgz")
         
     | 
| 
      
 269 
     | 
    
         
            +
                        @pkg_dir = "t6"
         
     | 
| 
      
 270 
     | 
    
         
            +
                        mf = %w()
         
     | 
| 
      
 271 
     | 
    
         
            +
                        dirs = %w(sub6.t)
         
     | 
| 
      
 272 
     | 
    
         
            +
                        check_contents(:tgz, "t6.tgz", mf, dirs)
         
     | 
| 
      
 273 
     | 
    
         
            +
                    end
         
     | 
| 
      
 274 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 275 
     | 
    
         
            +
                    FileUtils.rm_rf %w(subs.t sub6.t)
         
     | 
| 
      
 276 
     | 
    
         
            +
                end
         
     | 
| 
      
 277 
     | 
    
         
            +
                def test_zip_follow_symlink
         
     | 
| 
      
 278 
     | 
    
         
            +
                    have_symlinks = true
         
     | 
| 
      
 279 
     | 
    
         
            +
                    FileUtils.mkdir "subs.t"
         
     | 
| 
      
 280 
     | 
    
         
            +
                    open "target.t", "w" do |f|
         
     | 
| 
      
 281 
     | 
    
         
            +
                        f.print "symlink test target file"
         
     | 
| 
      
 282 
     | 
    
         
            +
                    end
         
     | 
| 
      
 283 
     | 
    
         
            +
                    begin
         
     | 
| 
      
 284 
     | 
    
         
            +
                        File.symlink "../target.t", "subs.t/symlink"
         
     | 
| 
      
 285 
     | 
    
         
            +
                    rescue NotImplementedError
         
     | 
| 
      
 286 
     | 
    
         
            +
                        have_symlinks = false
         
     | 
| 
      
 287 
     | 
    
         
            +
                    end
         
     | 
| 
      
 288 
     | 
    
         
            +
                    if have_symlinks
         
     | 
| 
      
 289 
     | 
    
         
            +
                        assert(File.symlink?("subs.t/symlink"))
         
     | 
| 
      
 290 
     | 
    
         
            +
                        assert(File.exist?("subs.t/symlink"))
         
     | 
| 
      
 291 
     | 
    
         
            +
                        assert_rant("sym.zip")
         
     | 
| 
      
 292 
     | 
    
         
            +
                        mf = %w(subs.t/symlink)
         
     | 
| 
      
 293 
     | 
    
         
            +
                        dirs = %w(subs.t)
         
     | 
| 
      
 294 
     | 
    
         
            +
                        @contents["subs.t/symlink"] = "symlink test target file"
         
     | 
| 
      
 295 
     | 
    
         
            +
                        check_contents(:zip, "sym.zip", mf, dirs)
         
     | 
| 
      
 296 
     | 
    
         
            +
                    else
         
     | 
| 
      
 297 
     | 
    
         
            +
                        STDERR.puts "*** platform doesn't support symbolic links ***"
         
     | 
| 
      
 298 
     | 
    
         
            +
                    end
         
     | 
| 
      
 299 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 300 
     | 
    
         
            +
                    FileUtils.rm_f %w(target.t sym.zip)
         
     | 
| 
      
 301 
     | 
    
         
            +
                    FileUtils.rm_rf "subs.t"
         
     | 
| 
      
 302 
     | 
    
         
            +
                end
         
     | 
| 
      
 303 
     | 
    
         
            +
                def test_zip_package_follow_symlink_dir
         
     | 
| 
      
 304 
     | 
    
         
            +
                    have_symlinks = true
         
     | 
| 
      
 305 
     | 
    
         
            +
                    FileUtils.mkdir "subs.t"
         
     | 
| 
      
 306 
     | 
    
         
            +
                    begin
         
     | 
| 
      
 307 
     | 
    
         
            +
                        File.symlink "subs.t", "sub6.t"
         
     | 
| 
      
 308 
     | 
    
         
            +
                    rescue NotImplementedError
         
     | 
| 
      
 309 
     | 
    
         
            +
                        have_symlinks = false
         
     | 
| 
      
 310 
     | 
    
         
            +
                    end
         
     | 
| 
      
 311 
     | 
    
         
            +
                    if have_symlinks
         
     | 
| 
      
 312 
     | 
    
         
            +
                        assert_rant("t6.zip")
         
     | 
| 
      
 313 
     | 
    
         
            +
                        @pkg_dir = "t6"
         
     | 
| 
      
 314 
     | 
    
         
            +
                        mf = %w()
         
     | 
| 
      
 315 
     | 
    
         
            +
                        dirs = %w(sub6.t)
         
     | 
| 
      
 316 
     | 
    
         
            +
                        check_contents(:zip, "t6.zip", mf, dirs)
         
     | 
| 
      
 317 
     | 
    
         
            +
                    end
         
     | 
| 
      
 318 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 319 
     | 
    
         
            +
                    FileUtils.rm_rf %w(subs.t sub6.t)
         
     | 
| 
      
 320 
     | 
    
         
            +
                end
         
     | 
| 
      
 321 
     | 
    
         
            +
                def test_zip_non_recursive
         
     | 
| 
      
 322 
     | 
    
         
            +
                    FileUtils.mkdir "sub7.t"
         
     | 
| 
      
 323 
     | 
    
         
            +
                    FileUtils.touch "sub7.t/a"
         
     | 
| 
      
 324 
     | 
    
         
            +
                    assert_rant("t7.zip")
         
     | 
| 
      
 325 
     | 
    
         
            +
                    mf = %w()
         
     | 
| 
      
 326 
     | 
    
         
            +
                    dirs = %w(sub7.t)
         
     | 
| 
      
 327 
     | 
    
         
            +
                    check_contents(:zip, "t7.zip", mf, dirs)
         
     | 
| 
      
 328 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 329 
     | 
    
         
            +
                    FileUtils.rm_rf "sub7.t"
         
     | 
| 
      
 330 
     | 
    
         
            +
                end
         
     | 
| 
      
 331 
     | 
    
         
            +
                def test_zip_package_non_recursive
         
     | 
| 
      
 332 
     | 
    
         
            +
                    FileUtils.mkdir "sub6.t"
         
     | 
| 
      
 333 
     | 
    
         
            +
                    FileUtils.touch "sub6.t/.t"
         
     | 
| 
      
 334 
     | 
    
         
            +
                    FileUtils.touch "sub6.t/a.t"
         
     | 
| 
      
 335 
     | 
    
         
            +
                    assert_rant("t6.zip")
         
     | 
| 
      
 336 
     | 
    
         
            +
                    @pkg_dir = "t6"
         
     | 
| 
      
 337 
     | 
    
         
            +
                    mf = %w()
         
     | 
| 
      
 338 
     | 
    
         
            +
                    dirs = %w(sub6.t)
         
     | 
| 
      
 339 
     | 
    
         
            +
                    check_contents(:zip, "t6.zip", mf, dirs)
         
     | 
| 
      
 340 
     | 
    
         
            +
                    assert_rant("autoclean")
         
     | 
| 
      
 341 
     | 
    
         
            +
                    assert(!test(?e, "t6"))
         
     | 
| 
      
 342 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 343 
     | 
    
         
            +
                    FileUtils.rm_rf "sub6.t"
         
     | 
| 
      
 344 
     | 
    
         
            +
                end
         
     | 
| 
      
 345 
     | 
    
         
            +
                def test_zip_package_empty_dir
         
     | 
| 
      
 346 
     | 
    
         
            +
            	FileUtils.mkdir "sub6.t"
         
     | 
| 
      
 347 
     | 
    
         
            +
            	assert_rant("t6.zip")
         
     | 
| 
      
 348 
     | 
    
         
            +
            	@pkg_dir = "t6"
         
     | 
| 
      
 349 
     | 
    
         
            +
            	mf = %w()
         
     | 
| 
      
 350 
     | 
    
         
            +
            	dirs = %w(sub6.t)
         
     | 
| 
      
 351 
     | 
    
         
            +
            	check_contents(:zip, "t6.zip", mf, dirs)
         
     | 
| 
      
 352 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 353 
     | 
    
         
            +
            	FileUtils.rm_rf %w(sub6.t)
         
     | 
| 
      
 354 
     | 
    
         
            +
                end
         
     | 
| 
      
 355 
     | 
    
         
            +
                def test_zip_manifest_desc
         
     | 
| 
      
 356 
     | 
    
         
            +
            	out, err = assert_rant("--tasks")
         
     | 
| 
      
 357 
     | 
    
         
            +
            	assert_match(/rant\s+t1\.zip\s+#\s+Create t1\.zip/, out)
         
     | 
| 
      
 358 
     | 
    
         
            +
                end
         
     | 
| 
      
 359 
     | 
    
         
            +
                def test_zip_rant_import
         
     | 
| 
      
 360 
     | 
    
         
            +
            	run_import("-q", "--auto", "ant.t")
         
     | 
| 
      
 361 
     | 
    
         
            +
            	assert_equal(0, $?.exitstatus)
         
     | 
| 
      
 362 
     | 
    
         
            +
            	assert(test(?f, "ant.t"))
         
     | 
| 
      
 363 
     | 
    
         
            +
            	out = run_ruby("ant.t", "pkg.t/pkg.zip")
         
     | 
| 
      
 364 
     | 
    
         
            +
            	assert_equal(0, $?.exitstatus)
         
     | 
| 
      
 365 
     | 
    
         
            +
            	assert(!out.empty?)
         
     | 
| 
      
 366 
     | 
    
         
            +
            	out = run_ruby("ant.t", "pkg.t/pkg.zip")
         
     | 
| 
      
 367 
     | 
    
         
            +
            	assert(out.empty?)
         
     | 
| 
      
 368 
     | 
    
         
            +
            	mf = %w(deep/sub/sub/f1 CONTENTS)
         
     | 
| 
      
 369 
     | 
    
         
            +
            	dirs = %w(deep deep/sub deep/sub/sub)
         
     | 
| 
      
 370 
     | 
    
         
            +
            	@pkg_dir = "pkg"
         
     | 
| 
      
 371 
     | 
    
         
            +
            	check_contents(:zip, "pkg.t/pkg.zip", mf, dirs, "CONTENTS")
         
     | 
| 
      
 372 
     | 
    
         
            +
            	assert(test(?f, "CONTENTS"))
         
     | 
| 
      
 373 
     | 
    
         
            +
            	run_ruby("ant.t", "autoclean")
         
     | 
| 
      
 374 
     | 
    
         
            +
            	assert(!test(?f, "CONTENTS"))
         
     | 
| 
      
 375 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 376 
     | 
    
         
            +
            	FileUtils.rm_f "ant.t"
         
     | 
| 
      
 377 
     | 
    
         
            +
                end
         
     | 
| 
      
 378 
     | 
    
         
            +
                def test_zip_package_write_manifest
         
     | 
| 
      
 379 
     | 
    
         
            +
            	assert(!test(?f, "CONTENTS"))
         
     | 
| 
      
 380 
     | 
    
         
            +
            	assert_rant(:x, "pkg.t/pkg.zip")
         
     | 
| 
      
 381 
     | 
    
         
            +
            	assert(test(?f, "CONTENTS"))
         
     | 
| 
      
 382 
     | 
    
         
            +
            	mf = %w(deep/sub/sub/f1 CONTENTS)
         
     | 
| 
      
 383 
     | 
    
         
            +
            	dirs = %w(deep deep/sub deep/sub/sub)
         
     | 
| 
      
 384 
     | 
    
         
            +
            	@pkg_dir = "pkg"
         
     | 
| 
      
 385 
     | 
    
         
            +
            	check_contents(:zip, "pkg.t/pkg.zip", mf, dirs, "CONTENTS")
         
     | 
| 
      
 386 
     | 
    
         
            +
            	assert(test(?f, "CONTENTS"))
         
     | 
| 
      
 387 
     | 
    
         
            +
            	assert_rant("autoclean")
         
     | 
| 
      
 388 
     | 
    
         
            +
            	assert(!test(?f, "CONTENTS"))
         
     | 
| 
      
 389 
     | 
    
         
            +
                end
         
     | 
| 
      
 390 
     | 
    
         
            +
                def test_zip_with_basedir
         
     | 
| 
      
 391 
     | 
    
         
            +
            	assert_rant(:fail, "zip.t/t4-1.0.0.zip")
         
     | 
| 
      
 392 
     | 
    
         
            +
            	assert(!test(?d, "zip.t"))
         
     | 
| 
      
 393 
     | 
    
         
            +
            	FileUtils.mkdir "zip.t"
         
     | 
| 
      
 394 
     | 
    
         
            +
            	assert_rant(:x, "zip.t/t4-1.0.0.zip")
         
     | 
| 
      
 395 
     | 
    
         
            +
            	mf = %w(Rantfile sub/f1 sub2/f1 MANIFEST)
         
     | 
| 
      
 396 
     | 
    
         
            +
            	dirs = %w(sub sub2)
         
     | 
| 
      
 397 
     | 
    
         
            +
            	check_contents(:zip, "zip.t/t4-1.0.0.zip", mf, dirs, "MANIFEST")
         
     | 
| 
      
 398 
     | 
    
         
            +
            	assert_rant("autoclean")
         
     | 
| 
      
 399 
     | 
    
         
            +
            	assert(test(?d, "zip.t"))
         
     | 
| 
      
 400 
     | 
    
         
            +
            	assert(!test(?e, "zip.t/t4-1.0.0.zip"))
         
     | 
| 
      
 401 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 402 
     | 
    
         
            +
            	FileUtils.rm_rf "zip.t"
         
     | 
| 
      
 403 
     | 
    
         
            +
                end
         
     | 
| 
      
 404 
     | 
    
         
            +
                def test_zip_from_manifest
         
     | 
| 
      
 405 
     | 
    
         
            +
            	assert_rant(:x, "t1.zip")
         
     | 
| 
      
 406 
     | 
    
         
            +
            	mf = %w(Rantfile sub/f1 sub2/f1 MANIFEST)
         
     | 
| 
      
 407 
     | 
    
         
            +
            	dirs = %w(sub sub2)
         
     | 
| 
      
 408 
     | 
    
         
            +
            	check_contents(:zip, "t1.zip", mf, dirs, "MANIFEST")
         
     | 
| 
      
 409 
     | 
    
         
            +
                end
         
     | 
| 
      
 410 
     | 
    
         
            +
                def test_zip_sync_manifest
         
     | 
| 
      
 411 
     | 
    
         
            +
            	assert_rant(:x, "t2.zip")
         
     | 
| 
      
 412 
     | 
    
         
            +
            	mf = %w(sub/f1 sub2/f1 m2.zip.t)
         
     | 
| 
      
 413 
     | 
    
         
            +
            	dirs = %w(sub sub2)
         
     | 
| 
      
 414 
     | 
    
         
            +
            	check_manifest("m2.zip.t", mf)
         
     | 
| 
      
 415 
     | 
    
         
            +
            	check_contents(:zip, "t2.zip", mf, dirs, "m2.zip.t")
         
     | 
| 
      
 416 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 417 
     | 
    
         
            +
            	FileUtils.rm_f "m2.zip.t"
         
     | 
| 
      
 418 
     | 
    
         
            +
                end
         
     | 
| 
      
 419 
     | 
    
         
            +
                def test_zip_filelist
         
     | 
| 
      
 420 
     | 
    
         
            +
            	assert_rant(:x, "t3.zip")
         
     | 
| 
      
 421 
     | 
    
         
            +
            	mf = %w(Rantfile sub/f1)
         
     | 
| 
      
 422 
     | 
    
         
            +
            	dirs = %w(sub)
         
     | 
| 
      
 423 
     | 
    
         
            +
            	check_contents(:zip, "t3.zip", mf, dirs)
         
     | 
| 
      
 424 
     | 
    
         
            +
                end
         
     | 
| 
      
 425 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -71,6 +71,18 @@ class TestSubFile < Test::Unit::TestCase 
     | 
|
| 
       71 
71 
     | 
    
         
             
            	out, err = assert_rant("file.t")
         
     | 
| 
       72 
72 
     | 
    
         
             
            	assert(out.strip.empty?)
         
     | 
| 
       73 
73 
     | 
    
         
             
                end
         
     | 
| 
      
 74 
     | 
    
         
            +
                def test_dependency
         
     | 
| 
      
 75 
     | 
    
         
            +
            	FileUtils.mkdir "sub.t"
         
     | 
| 
      
 76 
     | 
    
         
            +
            	assert_rant("sub.t/sub/file")
         
     | 
| 
      
 77 
     | 
    
         
            +
            	assert(test(?f, "file.t"))
         
     | 
| 
      
 78 
     | 
    
         
            +
            	assert(test(?f, "sub.t/sub/file"))
         
     | 
| 
      
 79 
     | 
    
         
            +
                end
         
     | 
| 
      
 80 
     | 
    
         
            +
                def test_dependencies
         
     | 
| 
      
 81 
     | 
    
         
            +
            	assert_rant("a.t")
         
     | 
| 
      
 82 
     | 
    
         
            +
            	assert(test(?f, "file.t"))
         
     | 
| 
      
 83 
     | 
    
         
            +
            	assert(test(?f, "sub.t/file2"))
         
     | 
| 
      
 84 
     | 
    
         
            +
            	assert(test(?f, "a.t"))
         
     | 
| 
      
 85 
     | 
    
         
            +
                end
         
     | 
| 
       74 
86 
     | 
    
         
             
                def test_autoclean
         
     | 
| 
       75 
87 
     | 
    
         
             
            	assert_rant("-fautoclean.rf", "sub.t/file")
         
     | 
| 
       76 
88 
     | 
    
         
             
            	assert(test(?f, "sub.t/file"))
         
     | 
| 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            import %w(rubytest rubydoc rubypackage)
         
     | 
| 
      
 1 
     | 
    
         
            +
            import %w(rubytest rubydoc rubypackage clean)
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            lib_files = Dir["lib/**/*.rb"]
         
     | 
| 
       4 
4 
     | 
    
         
             
            dist_files = lib_files + %w(rantfile.rb README test_project_rb1.rb) + Dir["{test,bin}/*"]
         
     | 
| 
         @@ -25,6 +25,5 @@ gen RubyPackage, :wgrep do |t| 
     | 
|
| 
       25 
25 
     | 
    
         
             
                t.package_task "pkg"
         
     | 
| 
       26 
26 
     | 
    
         
             
            end
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
            end
         
     | 
| 
      
 28 
     | 
    
         
            +
            gen Clean
         
     | 
| 
      
 29 
     | 
    
         
            +
            var[:clean].include "doc", "packages", "*~"
         
     |