imw 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. data/.gitignore +15 -0
  2. data/CHANGELOG +0 -0
  3. data/LICENSE +674 -0
  4. data/README.rdoc +101 -0
  5. data/Rakefile +20 -0
  6. data/VERSION +1 -0
  7. data/etc/imwrc.rb +76 -0
  8. data/lib/imw.rb +42 -0
  9. data/lib/imw/boot.rb +58 -0
  10. data/lib/imw/dataset.rb +233 -0
  11. data/lib/imw/dataset/datamapper.rb +66 -0
  12. data/lib/imw/dataset/datamapper/time_and_user_stamps.rb +37 -0
  13. data/lib/imw/dataset/loaddump.rb +50 -0
  14. data/lib/imw/dataset/old/file_collection.rb +88 -0
  15. data/lib/imw/dataset/old/file_collection_utils.rb +71 -0
  16. data/lib/imw/dataset/scaffold.rb +132 -0
  17. data/lib/imw/dataset/scraped_uri.rb +305 -0
  18. data/lib/imw/dataset/scrub/old_working_scrubber.rb +87 -0
  19. data/lib/imw/dataset/scrub/scrub.rb +147 -0
  20. data/lib/imw/dataset/scrub/scrub_simple_url.rb +38 -0
  21. data/lib/imw/dataset/scrub/scrub_test.rb +60 -0
  22. data/lib/imw/dataset/scrub/slug.rb +101 -0
  23. data/lib/imw/dataset/stats.rb +73 -0
  24. data/lib/imw/dataset/stats/counter.rb +23 -0
  25. data/lib/imw/dataset/task.rb +38 -0
  26. data/lib/imw/dataset/workflow.rb +81 -0
  27. data/lib/imw/files.rb +110 -0
  28. data/lib/imw/files/archive.rb +113 -0
  29. data/lib/imw/files/basicfile.rb +122 -0
  30. data/lib/imw/files/binary.rb +28 -0
  31. data/lib/imw/files/compressed_file.rb +93 -0
  32. data/lib/imw/files/compressed_files_and_archives.rb +348 -0
  33. data/lib/imw/files/compressible.rb +103 -0
  34. data/lib/imw/files/csv.rb +112 -0
  35. data/lib/imw/files/json.rb +41 -0
  36. data/lib/imw/files/sgml.rb +65 -0
  37. data/lib/imw/files/text.rb +68 -0
  38. data/lib/imw/files/yaml.rb +46 -0
  39. data/lib/imw/packagers.rb +8 -0
  40. data/lib/imw/packagers/archiver.rb +108 -0
  41. data/lib/imw/packagers/s3_mover.rb +28 -0
  42. data/lib/imw/parsers.rb +7 -0
  43. data/lib/imw/parsers/html_parser.rb +382 -0
  44. data/lib/imw/parsers/html_parser/matchers.rb +306 -0
  45. data/lib/imw/parsers/line_parser.rb +87 -0
  46. data/lib/imw/parsers/regexp_parser.rb +72 -0
  47. data/lib/imw/utils.rb +24 -0
  48. data/lib/imw/utils/components.rb +61 -0
  49. data/lib/imw/utils/config.rb +46 -0
  50. data/lib/imw/utils/error.rb +54 -0
  51. data/lib/imw/utils/extensions/array.rb +125 -0
  52. data/lib/imw/utils/extensions/class/attribute_accessors.rb +8 -0
  53. data/lib/imw/utils/extensions/core.rb +43 -0
  54. data/lib/imw/utils/extensions/dir.rb +24 -0
  55. data/lib/imw/utils/extensions/file_core.rb +64 -0
  56. data/lib/imw/utils/extensions/hash.rb +218 -0
  57. data/lib/imw/utils/extensions/hpricot.rb +48 -0
  58. data/lib/imw/utils/extensions/string.rb +49 -0
  59. data/lib/imw/utils/extensions/struct.rb +42 -0
  60. data/lib/imw/utils/extensions/symbol.rb +28 -0
  61. data/lib/imw/utils/extensions/typed_struct.rb +22 -0
  62. data/lib/imw/utils/extensions/uri.rb +59 -0
  63. data/lib/imw/utils/log.rb +67 -0
  64. data/lib/imw/utils/misc.rb +63 -0
  65. data/lib/imw/utils/paths.rb +115 -0
  66. data/lib/imw/utils/uri.rb +59 -0
  67. data/lib/imw/utils/uuid.rb +33 -0
  68. data/lib/imw/utils/validate.rb +38 -0
  69. data/lib/imw/utils/version.rb +12 -0
  70. data/lib/imw/utils/view.rb +113 -0
  71. data/lib/imw/utils/view/dump_csv.rb +112 -0
  72. data/lib/imw/utils/view/dump_csv_older.rb +117 -0
  73. data/spec/data/sample.csv +131 -0
  74. data/spec/data/sample.tsv +131 -0
  75. data/spec/data/sample.txt +131 -0
  76. data/spec/data/sample.xml +653 -0
  77. data/spec/data/sample.yaml +652 -0
  78. data/spec/imw/dataset/datamapper/uri_spec.rb +43 -0
  79. data/spec/imw/dataset/datamapper_spec_helper.rb +11 -0
  80. data/spec/imw/files/archive_spec.rb +118 -0
  81. data/spec/imw/files/basicfile_spec.rb +121 -0
  82. data/spec/imw/files/bz2_spec.rb +32 -0
  83. data/spec/imw/files/compressed_file_spec.rb +96 -0
  84. data/spec/imw/files/compressible_spec.rb +100 -0
  85. data/spec/imw/files/file_spec.rb +144 -0
  86. data/spec/imw/files/gz_spec.rb +32 -0
  87. data/spec/imw/files/rar_spec.rb +33 -0
  88. data/spec/imw/files/tar_spec.rb +31 -0
  89. data/spec/imw/files/text_spec.rb +23 -0
  90. data/spec/imw/files/zip_spec.rb +31 -0
  91. data/spec/imw/files_spec.rb +38 -0
  92. data/spec/imw/packagers/archiver_spec.rb +125 -0
  93. data/spec/imw/packagers/s3_mover_spec.rb +7 -0
  94. data/spec/imw/parsers/line_parser_spec.rb +96 -0
  95. data/spec/imw/parsers/regexp_parser_spec.rb +42 -0
  96. data/spec/imw/utils/extensions/file_core_spec.rb +72 -0
  97. data/spec/imw/utils/extensions/find_spec.rb +113 -0
  98. data/spec/imw/utils/paths_spec.rb +38 -0
  99. data/spec/imw/workflow/rip/local_spec.rb +89 -0
  100. data/spec/imw/workflow/rip_spec.rb +27 -0
  101. data/spec/rcov.opts +1 -0
  102. data/spec/spec.opts +4 -0
  103. data/spec/spec_helper.rb +32 -0
  104. data/spec/support/archive_contents_matcher.rb +94 -0
  105. data/spec/support/custom_matchers.rb +21 -0
  106. data/spec/support/directory_contents_matcher.rb +61 -0
  107. data/spec/support/extensions.rb +18 -0
  108. data/spec/support/file_contents_matcher.rb +50 -0
  109. data/spec/support/random.rb +210 -0
  110. data/spec/support/without_regard_to_order_matcher.rb +58 -0
  111. metadata +196 -0
@@ -0,0 +1,144 @@
1
+ #
2
+ # h2. spec/imw/model/files/basicfile_spec.rb -- spec for a file object
3
+ #
4
+ # == About
5
+ #
6
+ # RSpec test code for <tt>IMW::Files::BasicFile</tt>.
7
+ #
8
+ # Author:: (Philip flip Kromer, Dhruv Bansal) for Infinite Monkeywrench Project (mailto:coders@infochimps.org)
9
+ # Copyright:: Copyright (c) 2008 infochimps.org
10
+ # License:: GPL 3.0
11
+ # Website:: http://infinitemonkeywrench.org/
12
+ #
13
+ require File.join(File.dirname(__FILE__),'../../../spec_helper')
14
+ require IMW_SPEC_DIR+'/imw/matchers/file_contents_matcher'
15
+
16
+ require 'imw/utils/random'
17
+ require 'imw/model/files/basicfile'
18
+
19
+ describe IMW::Files::BasicFile do
20
+
21
+ include Spec::Matchers::IMW
22
+
23
+ def create_file
24
+ IMW::Random.file @path
25
+ end
26
+
27
+ before(:all) do
28
+ @root_directory = IMW::DIRECTORIES[:dump] + "/file_spec"
29
+ FileUtils.mkdir @root_directory
30
+
31
+ @path = @root_directory + "/file.ext"
32
+ @copy_of_original_path = @root_directory + "/file_copy.ext"
33
+
34
+ @file = IMW::Files::BasicFile.new(@path)
35
+
36
+ @new_path_same_extension = @root_directory + "/file_new.ext"
37
+ @new_path_different_extension = @root_directory + "/file_new.next"
38
+ end
39
+
40
+ after(:each) do
41
+ FileUtils.rm Dir.glob(@root_directory + "/*")
42
+ end
43
+
44
+ after(:all) do
45
+ FileUtils.rm_rf @root_directory
46
+ end
47
+
48
+ describe "(attributes)" do
49
+ it "should have the correct path" do
50
+ @file.path.should eql(@path)
51
+ end
52
+
53
+ it "should have the correct directory name" do
54
+ @file.dirname.should eql(@root_directory)
55
+ end
56
+
57
+ it "should have the correct basename" do
58
+ @file.basename.should eql("file.ext")
59
+ end
60
+
61
+ it "should have the correct extension" do
62
+ @file.extname.should eql(".ext")
63
+ end
64
+
65
+ it "should have the correct name" do
66
+ @file.name.should eql("file")
67
+ end
68
+
69
+ end
70
+
71
+ describe "(existence)" do
72
+ it "should not exist if there is no file matching it on disk" do
73
+ @file.exist?.should eql(false)
74
+ end
75
+
76
+ it "should exist if there is a file matching it on disk" do
77
+ create_file
78
+ @file.exist?.should eql(true)
79
+ end
80
+ end
81
+
82
+ describe "(deletion)" do
83
+ it "should raise an error if it tries to delete itself but it doesn't exist" do
84
+ lambda { @file.rm }.should raise_error(IMW::PathError)
85
+ end
86
+
87
+ it "should delete itself if it it exists on disk" do
88
+ create_file
89
+ @file.rm
90
+ @file.exist?.should eql(false)
91
+ end
92
+ end
93
+
94
+ describe "(copying)" do
95
+ it "should raise an error if it tries to copy itself but it doesn't exist" do
96
+ lambda { @file.cp @new_path_same_extension }.should raise_error(IMW::PathError)
97
+ end
98
+
99
+ it "should copy itself with the same extension" do
100
+ create_file
101
+ new_file = @file.cp @new_path_same_extension
102
+ new_file.path.should have_contents_matching_those_of(@file.path)
103
+ end
104
+
105
+ it "should raise an error if it tries to copy itself with a differing extension without :force" do
106
+ create_file
107
+ lambda { @file.cp @new_path_different_extension }.should raise_error(IMW::Error)
108
+ end
109
+
110
+ it "should copy itself with a differing extension with :force" do
111
+ create_file
112
+ new_file = @file.cp @new_path_different_extension, :force => true
113
+ new_file.path.should have_contents_matching_those_of(@file.path)
114
+ end
115
+ end
116
+
117
+ describe "(moving)" do
118
+ it "should raise an error if it tries to move itself but it doesn't exist" do
119
+ lambda { @file.mv @new_path_same_extension }.should raise_error(IMW::PathError)
120
+ end
121
+
122
+ it "should move itself with the same extension" do
123
+ create_file
124
+ old_file = @file.cp @copy_of_original_path
125
+ new_file = @file.mv @new_path_same_extension
126
+ new_file.path.should have_contents_matching_those_of(old_file.path)
127
+ end
128
+
129
+ it "should raise an error if it tries to move itself with a differing extension without :force" do
130
+ create_file
131
+ lambda { @file.mv @new_path_different_extension }.should raise_error(IMW::Error)
132
+ end
133
+
134
+ it "should move itself with a differing extension with :force" do
135
+ create_file
136
+ old_file = @file.cp @copy_of_original_path
137
+ new_file = @file.mv @new_path_different_extension, :force => true
138
+ new_file.path.should have_contents_matching_those_of(old_file.path)
139
+ end
140
+ end
141
+ end
142
+
143
+
144
+ # puts "#{File.basename(__FILE__)}: You place the manilla file folder between the rusty teeth of your Monkeywrench and tighten..." # at bottom
@@ -0,0 +1,32 @@
1
+ #
2
+ # h2. spec/imw/model/files/gz_spec.rb -- spec for gz files
3
+ #
4
+ # == About
5
+ #
6
+ # RSpec code for <tt>IMW::Files::Gz</tt>.
7
+ #
8
+ # Author:: (Philip flip Kromer, Dhruv Bansal) for Infinite Monkeywrench Project (mailto:coders@infochimps.org)
9
+ # Copyright:: Copyright (c) 2008 infochimps.org
10
+ # License:: GPL 3.0
11
+ # Website:: http://infinitemonkeywrench.org/
12
+ #
13
+ require File.join(File.dirname(__FILE__),'../../../spec_helper')
14
+ require IMW_SPEC_DIR+'/imw/model/files/compressed_file_spec'
15
+
16
+ require 'imw/utils'
17
+ require 'imw/model/files/gz'
18
+ describe IMW::Files::Gz do
19
+
20
+ before(:all) do
21
+ @root_directory = IMW::DIRECTORIES[:dump] + "/gz_spec"
22
+
23
+ @path = @root_directory + "/file.txt.gz"
24
+ @file = IMW::Files::Gz.new(@path)
25
+
26
+ @copy_of_original_path = @root_directory + "/file_copy.txt.gz"
27
+ end
28
+
29
+ it_should_behave_like "a compressed file"
30
+ end
31
+
32
+ # puts "#{File.basename(__FILE__)}: You squeeze yourself and your Monkeywrench through a narrow opening." # at bottom
@@ -0,0 +1,33 @@
1
+ #
2
+ # h2. test/imw/model/files/rar_spec.rb -- tests of rar file
3
+ #
4
+ # == About
5
+ #
6
+ # RSpec tests for <tt>IMW::Files::Rar</tt> class.
7
+ #
8
+ # Author:: (Philip flip Kromer, Dhruv Bansal) for Infinite Monkeywrench Project (mailto:coders@infochimps.org)
9
+ # Copyright:: Copyright (c) 2008 infochimps.org
10
+ # License:: GPL 3.0
11
+ # Website:: http://infinitemonkeywrench.org/
12
+ #
13
+ require File.join(File.dirname(__FILE__),'../../../spec_helper')
14
+ require IMW_SPEC_DIR+'/imw/model/files/archive_spec'
15
+
16
+ unless IMW::SpecConfig::SKIP_ARCHIVE_FORMATS.include? :rar
17
+ require 'imw/model/files/rar'
18
+ describe IMW::Files::Rar do
19
+
20
+ before(:all) do
21
+ @root_directory = ::IMW::DIRECTORIES[:dump] + "/archive_test"
22
+ @initial_directory = @root_directory + "/create_and_append/initial"
23
+ @appending_directory = @root_directory + "/create_and_append/appending"
24
+ @extraction_directory = ::IMW::DIRECTORIES[:dump] + "/extract"
25
+ @archive = IMW::Files::Rar.new(@root_directory + "/test.rar")
26
+ end
27
+
28
+ it_should_behave_like "an archive of files"
29
+
30
+ end
31
+ end
32
+
33
+ # puts "#{File.basename(__FILE__)}: You bang your Monkeywrench uselessly on the locked file cabinet." # at bottom
@@ -0,0 +1,31 @@
1
+ #
2
+ # h2. test/imw/model/files/tar_spec.rb -- tests of tar file
3
+ #
4
+ # == About
5
+ #
6
+ # RSpec tests for <tt>IMW::Files::Tar</tt> class.
7
+ #
8
+ # Author:: (Philip flip Kromer, Dhruv Bansal) for Infinite Monkeywrench Project (mailto:coders@infochimps.org)
9
+ # Copyright:: Copyright (c) 2008 infochimps.org
10
+ # License:: GPL 3.0
11
+ # Website:: http://infinitemonkeywrench.org/
12
+ #
13
+ require File.join(File.dirname(__FILE__),'../../../spec_helper')
14
+ require IMW_SPEC_DIR+'/imw/model/files/archive_spec'
15
+
16
+ require 'imw/model/files/tar'
17
+ describe IMW::Files::Tar do
18
+
19
+ before(:all) do
20
+ @root_directory = ::IMW::DIRECTORIES[:dump] + "/archive_test"
21
+ @initial_directory = @root_directory + "/create_and_append/initial"
22
+ @appending_directory = @root_directory + "/create_and_append/appending"
23
+ @extraction_directory = ::IMW::DIRECTORIES[:dump] + "/extract"
24
+ @archive = IMW::Files::Tar.new(@root_directory + "/test.tar")
25
+ end
26
+
27
+ it_should_behave_like "an archive of files"
28
+
29
+ end
30
+
31
+ # puts "#{File.basename(__FILE__)}: The tar pits are just /wonderful/ today; really, you should go in for a dip!" # at bottom
@@ -0,0 +1,23 @@
1
+ require File.join(File.dirname(__FILE__),'../../spec_helper')
2
+
3
+ describe IMW::Files::Text do
4
+
5
+ before do
6
+ @path = "foobar.txt"
7
+ @text = <<EOF
8
+ Here is the first line
9
+ And here is the second
10
+ EOF
11
+ File.open(@path, 'w') { |f| f.write(@text) }
12
+ end
13
+
14
+ it "should return its entries" do
15
+ IMW.open(@path).entries.should == ["Here is the first line", "And here is the second"]
16
+ end
17
+
18
+ it "should be able to parse each line" do
19
+ file = IMW.open(@path)
20
+ results = file.parse :by_regexp => /^([^\s]+) ([^\s]+)/, :into_fields => [:word1, :word2]
21
+ file.parser.class.should == IMW::Parsers::RegexpParser
22
+ end
23
+ end
@@ -0,0 +1,31 @@
1
+ #
2
+ # h2. test/imw/model/files/zip_spec.rb -- tests of zip file
3
+ #
4
+ # == About
5
+ #
6
+ # RSpec tests for <tt>IMW::Files::Zip</tt> class.
7
+ #
8
+ # Author:: (Philip flip Kromer, Dhruv Bansal) for Infinite Monkeywrench Project (mailto:coders@infochimps.org)
9
+ # Copyright:: Copyright (c) 2008 infochimps.org
10
+ # License:: GPL 3.0
11
+ # Website:: http://infinitemonkeywrench.org/
12
+ #
13
+ require File.join(File.dirname(__FILE__),'../../../spec_helper')
14
+ require IMW_SPEC_DIR+'/imw/model/files/archive_spec'
15
+
16
+ require 'imw/model/files/zip'
17
+ describe IMW::Files::Zip do
18
+
19
+ before(:all) do
20
+ @root_directory = ::IMW::DIRECTORIES[:dump] + "/archive_test"
21
+ @initial_directory = @root_directory + "/create_and_append/initial"
22
+ @appending_directory = @root_directory + "/create_and_append/appending"
23
+ @extraction_directory = ::IMW::DIRECTORIES[:dump] + "/extract"
24
+ @archive = IMW::Files::Zip.new(@root_directory + "/test.zip")
25
+ end
26
+
27
+ it_should_behave_like "an archive of files"
28
+
29
+ end
30
+
31
+ # puts "#{File.basename(__FILE__)}: No matter how many times you test the integrity of a zipper at the store before you buy something it /will/ break when you take it home!" # at bottom
@@ -0,0 +1,38 @@
1
+ require File.dirname(__FILE__) + "/../spec_helper"
2
+
3
+ describe IMW::Files do
4
+
5
+ before do
6
+ @csv = "foobar.csv"
7
+ @weird = "foobar.awefawefawe"
8
+ @none = "foobar"
9
+
10
+ @files = [@csv, @weird, @none]
11
+
12
+ @files.each { |f| IMWTest::Random.file f }
13
+
14
+ @new = "newguy.txt"
15
+ end
16
+
17
+ it "chooses the correct class based upon the extension" do
18
+ IMW.open(@csv).class.should == IMW::Files::Csv
19
+ end
20
+
21
+ it "uses Text as a default class when there's a weird or no extension" do
22
+ IMW.open(@weird).class.should == IMW::Files::Text
23
+ IMW.open(@none).class.should == IMW::Files::Text
24
+ end
25
+
26
+ it "will use a different class if asked" do
27
+ IMW.open(@csv, :as => :Text).class.should == IMW::Files::Text
28
+ end
29
+
30
+ it "can write to a new file" do
31
+ f = IMW.open!(@new)
32
+ f.write('whatever')
33
+ f.close
34
+ open(@new).read.should == 'whatever'
35
+ end
36
+ end
37
+
38
+
@@ -0,0 +1,125 @@
1
+ require File.dirname(__FILE__) + "/../../spec_helper"
2
+
3
+ describe IMW::Packagers::Archiver do
4
+ before do
5
+ @name = 'foobar'
6
+
7
+ # regular files
8
+ @csv = "foobar-csv.csv"
9
+ @xml = "foobar-xml.xml"
10
+ @txt = "foobar-txt.txt"
11
+ @blah = "foobar"
12
+
13
+ # compressed files
14
+ @bz2 = "foobar-bz2.bz2"
15
+
16
+ # archives
17
+ @zip = "foobar-zip.zip"
18
+ @tarbz2 = "foobar-tarbz2.tar.bz2"
19
+ @rar = "foobar-rar.rar"
20
+ @archives = [@zip, @tarbz2]
21
+
22
+ @files = [@csv, @xml, @txt, @blah, @bz2, @zip, @tarbz2]
23
+
24
+ @files.each do |path|
25
+ IMWTest::Random.file path
26
+ end
27
+ end
28
+
29
+
30
+ describe "when preparing files" do
31
+ before do
32
+ @archiver = IMW::Packagers::Archiver.new @name, @files
33
+ @archiver.prepare!
34
+ end
35
+
36
+ after do
37
+ FileUtils.rm_rf @archiver.tmp_dir
38
+ end
39
+
40
+ it "should name its archive directory properly" do
41
+ @archiver.tmp_dir.should contain(@name)
42
+ end
43
+
44
+ it "should copy regular files to its archive directory" do
45
+ @archiver.dir.should contain(@csv, @xml, @txt)
46
+ end
47
+
48
+ it "should uncompress compressed files to its archive directory" do
49
+ @archiver.dir.should contain('foobar-bz2')
50
+ @archiver.dir.should_not contain(@bz2)
51
+ end
52
+
53
+ it "should copy the content of archive files to its archive directory (but not the actual archives)" do
54
+ @archives.each do |archive|
55
+ @archiver.dir.should_not contain(archive)
56
+ @archiver.dir.should contain(*IMW.open(archive).contents)
57
+ end
58
+ end
59
+
60
+ it "should not move any of the original files" do
61
+ IMWTest::TMP_DIR.should contain(@files)
62
+ end
63
+ end
64
+
65
+ describe "when preparing files while renaming them" do
66
+ before do
67
+
68
+ # to test renaming, consider the new paths to be the old paths
69
+ # but with the hyphens mapped to underscores...
70
+ @renaming_hash = {}
71
+ @files.each { |f| @renaming_hash[f] = f.gsub(/-/,'_') }
72
+
73
+ @archiver = IMW::Packagers::Archiver.new @name, @renaming_hash
74
+ @archiver.prepare!
75
+ end
76
+
77
+ after do
78
+ FileUtils.rm_rf @archiver.tmp_dir
79
+ end
80
+
81
+ it "should copy regular files to its archive directory, renaming them" do
82
+ @archiver.dir.should_not contain([@csv, @xml, @txt])
83
+ @archiver.dir.should contain([@csv, @xml, @txt].map { |f| @renaming_hash[f] })
84
+ end
85
+
86
+ it "should uncompress compressed files to its archive directory, renaming them" do
87
+ @archiver.dir.should contain('foobar_bz2')
88
+ @archiver.dir.should_not contain('foobar-bz2')
89
+ @archiver.dir.should_not contain(@renaming_hash[@bz2])
90
+ @archiver.dir.should_not contain(@bz2)
91
+ end
92
+ end
93
+
94
+ describe "when packaging files" do
95
+ before do
96
+ @archiver = IMW::Packagers::Archiver.new @name, @files
97
+ @archiver.prepare!
98
+
99
+ @package_tarbz2 = "package.tar.bz2"
100
+ @package_zip = "package.zip"
101
+ @packages = [@package_tarbz2, @package_zip]
102
+ end
103
+
104
+ after do
105
+ FileUtils.rm_rf @archiver.tmp_dir
106
+ end
107
+
108
+ it "should create a package file containing the proper files" do
109
+ @packages.each do |package|
110
+ @archiver.package! package
111
+ @archiver.tmp_dir.should contain(IMW.open(package).contents)
112
+ end
113
+ end
114
+
115
+ it "should return the package file" do
116
+ @packages.each do |package|
117
+ output = @archiver.package! package
118
+ output.basename.should == package
119
+ end
120
+ end
121
+
122
+
123
+ end
124
+ end
125
+