releasy 0.2.0rc1 → 0.2.0rc2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. data/CHANGELOG.md +1 -1
  2. data/README.md +79 -65
  3. data/Rakefile +1 -1
  4. data/lib/releasy/builders.rb +1 -1
  5. data/lib/releasy/builders/builder.rb +6 -4
  6. data/lib/releasy/builders/osx_app.rb +49 -27
  7. data/lib/releasy/builders/source.rb +1 -3
  8. data/lib/releasy/builders/windows_builder.rb +3 -10
  9. data/lib/releasy/builders/windows_folder.rb +4 -6
  10. data/lib/releasy/builders/windows_installer.rb +3 -5
  11. data/lib/releasy/builders/windows_standalone.rb +1 -3
  12. data/lib/releasy/builders/{windows_folder_from_ruby_dist.rb → windows_wrapped.rb} +24 -22
  13. data/lib/releasy/cli/install_sfx.rb +3 -3
  14. data/lib/releasy/deployers.rb +12 -0
  15. data/lib/releasy/deployers/deployer.rb +28 -0
  16. data/lib/releasy/deployers/github.rb +109 -0
  17. data/lib/releasy/mixins/can_exclude_encoding.rb +22 -0
  18. data/lib/releasy/mixins/exec.rb +2 -2
  19. data/lib/releasy/mixins/has_gemspecs.rb +6 -6
  20. data/lib/releasy/mixins/has_packagers.rb +37 -0
  21. data/lib/releasy/mixins/log.rb +39 -0
  22. data/lib/releasy/mixins/register.rb +0 -1
  23. data/lib/releasy/packagers.rb +12 -0
  24. data/lib/releasy/{archivers → packagers}/dmg.rb +4 -4
  25. data/lib/releasy/{archivers → packagers}/exe.rb +4 -4
  26. data/lib/releasy/{archivers/archiver.rb → packagers/packager.rb} +20 -11
  27. data/lib/releasy/packagers/seven_zip.rb +12 -0
  28. data/lib/releasy/{archivers → packagers}/tar_bzip2.rb +4 -4
  29. data/lib/releasy/{archivers → packagers}/tar_gzip.rb +4 -4
  30. data/lib/releasy/{archivers/tar_archiver.rb → packagers/tar_packager.rb} +4 -4
  31. data/lib/releasy/{archivers → packagers}/zip.rb +4 -4
  32. data/lib/releasy/project.rb +105 -46
  33. data/lib/releasy/version.rb +1 -1
  34. data/lib/releasy/windows_wrapper_maker.rb +0 -3
  35. data/releasy.gemspec +1 -0
  36. data/test/releasy/builders/helpers/helper.rb +0 -1
  37. data/test/releasy/builders/osx_app_test.rb +18 -8
  38. data/test/releasy/builders/{windows_folder_from_ruby_dist_test.rb → windows_wrapped_test.rb} +16 -14
  39. data/test/releasy/deployers/github_test.rb +133 -0
  40. data/test/releasy/deployers/helpers/helper.rb +19 -0
  41. data/test/releasy/integration/source_test.rb +25 -6
  42. data/test/releasy/mixins/log_test.rb +15 -0
  43. data/test/releasy/mixins/register_test.rb +0 -1
  44. data/test/releasy/{archivers_test.rb → packagers_test.rb} +16 -19
  45. data/test/releasy/project_test.rb +33 -29
  46. data/test/teststrap.rb +3 -1
  47. data/test/yard_test.rb +1 -1
  48. metadata +55 -34
  49. data/lib/releasy/archivers.rb +0 -12
  50. data/lib/releasy/archivers/seven_zip.rb +0 -12
  51. data/lib/releasy/mixins/has_archivers.rb +0 -37
@@ -1,3 +1,3 @@
1
1
  module Releasy
2
- VERSION = "0.2.0rc1"
2
+ VERSION = "0.2.0rc2"
3
3
  end
@@ -4,9 +4,6 @@ require 'ocra'
4
4
  module Releasy
5
5
  # Creates wrappers and executables by wrapping Ocra's functionality.
6
6
  class WindowsWrapperMaker
7
- include FileUtils
8
- include FileUtils::Verbose
9
-
10
7
  # Creates an win32 executable file (xxx.exe) that runs via a Ruby executable at bin/ruby(w).exe
11
8
  # Paths given to the executable are relative to the directory that the executable is in.
12
9
  # Assumes that user's source will be put into _./src/_ and that ruby executables will be in _./bin/_
@@ -29,6 +29,7 @@ END
29
29
  s.add_runtime_dependency('rake', '~> 0.9.2.2')
30
30
  s.add_runtime_dependency('cri', '~> 2.1.0')
31
31
  s.add_runtime_dependency('thor', '~> 0.14.6') # Only needed in Ruby 1.8, since it provides HashWithIndifferentAccess.
32
+ s.add_runtime_dependency('net-github-upload', '~> 0.0.7')
32
33
 
33
34
  s.add_development_dependency('riot', '~> 0.12.5')
34
35
  s.add_development_dependency('rr', '~> 1.0.4')
@@ -7,7 +7,6 @@ def new_project
7
7
  project.files = source_files
8
8
  project.exposed_files = %w[README.txt LICENSE.txt]
9
9
  project.add_link "http://spooner.github.com/libraries/releasy/", "Releasy website"
10
- project.quiet
11
10
  project.output_path = output_path
12
11
 
13
12
  project
@@ -18,17 +18,16 @@ if osx_app_wrapper
18
18
  end
19
19
 
20
20
  asserts(:folder_suffix).equals "OSX"
21
- asserts(:icon=, "test_app.ico").raises Releasy::ConfigError, /icon must be a .icns file/
21
+ asserts(:encoding_excluded?).equals false
22
+ asserts(:icon=, "test_app.ico").raises ArgumentError, /icon must be a .icns file/
22
23
  denies(:gemspecs).empty
23
24
 
24
- context "no wrapper" do
25
- hookup do
26
- topic.url = "org.frog.fish"
27
- end
25
+ context "#wrapper not set" do
26
+ hookup { topic.url = "org.frog.fish" }
28
27
  asserts(:generate_tasks).raises Releasy::ConfigError, /wrapper not set/
29
28
  end
30
29
 
31
- context "invalid wrapper" do
30
+ context "#wrapper invalid" do
32
31
  hookup do
33
32
  topic.url = "org.frog.fish"
34
33
  topic.wrapper = "whatever"
@@ -37,10 +36,17 @@ if osx_app_wrapper
37
36
  asserts(:generate_tasks).raises Releasy::ConfigError, /wrapper not valid/
38
37
  end
39
38
 
40
- context "no url" do
39
+ context "#wrapper does not exist" do
41
40
  hookup do
42
- topic.wrapper = osx_app_wrapper
41
+ topic.url = "org.frog.fish"
42
+ topic.wrapper = "gosu-mac-wrapper-0.0.00.tar.gz"
43
43
  end
44
+
45
+ asserts(:build).raises Releasy::ConfigError, /wrapper file does not exist:/
46
+ end
47
+
48
+ context "no url" do
49
+ hookup { topic.wrapper = osx_app_wrapper }
44
50
  asserts(:generate_tasks).raises Releasy::ConfigError, /url not set/
45
51
  end
46
52
 
@@ -50,6 +56,7 @@ if osx_app_wrapper
50
56
  topic.wrapper = osx_app_wrapper
51
57
  topic.icon = "test_app.icns"
52
58
  topic.gemspecs = gemspecs_to_use
59
+ topic.exclude_encoding
53
60
  topic.send :generate_tasks
54
61
  end
55
62
 
@@ -98,6 +105,9 @@ if osx_app_wrapper
98
105
 
99
106
  denies("default chingu gem left in app") { File.exists?("#{app_folder}/Contents/Resources/lib/chingu") }
100
107
 
108
+ helper(:enc_folder) { "#{app_folder}/Contents/Resources/lib/enc" }
109
+ asserts("remaining encoding files") { Dir["#{enc_folder}/**/*.bundle"].map {|f| f[(enc_folder.size + 1)..-1] } }.same_elements %w[encdb.bundle iso_8859_1.bundle utf_16le.bundle trans/single_byte.bundle trans/transdb.bundle trans/utf_16_32.bundle]
110
+
101
111
  if RUBY_PLATFORM =~ /darwin/
102
112
  asserts("program output") { clear_all_env { %x["./#{app_folder}/Contents/MacOS/Test App"] } }.equals "test run!\n"
103
113
  end
@@ -2,11 +2,11 @@ require File.expand_path("helpers/helper", File.dirname(__FILE__))
2
2
 
3
3
  Dir[File.expand_path("wrappers/ruby-*.7z", $original_path)].each do |path_to_ruby_dist|
4
4
  ruby_version = path_to_ruby_dist[/\d\.\d\.\d-p\d+/]
5
- suffix = "WIN32_FROM_RUBY_DIST_#{ruby_version.tr(".", "_")}"
5
+ suffix = "WIN32_WRAPPED_#{ruby_version.tr(".", "_")}"
6
6
  folder = File.join(output_path, "test_app_0_1_#{suffix}")
7
7
 
8
- context "#{Releasy::Builders::WindowsFolderFromRubyDist} for #{ruby_version}" do
9
- setup { Releasy::Builders::WindowsFolderFromRubyDist.new new_project }
8
+ context "#{Releasy::Builders::WindowsWrapped} for #{ruby_version}" do
9
+ setup { Releasy::Builders::WindowsWrapped.new new_project }
10
10
 
11
11
  teardown do
12
12
  Dir.chdir $original_path
@@ -17,9 +17,9 @@ Dir[File.expand_path("wrappers/ruby-*.7z", $original_path)].each do |path_to_rub
17
17
  Dir.chdir project_path
18
18
  end
19
19
 
20
- asserts(:ruby_dist).nil
20
+ asserts(:wrapper).nil
21
21
  asserts(:folder_suffix).equals "WIN32"
22
- asserts(:generate_tasks).raises Releasy::ConfigError, /ruby_dist not set/
22
+ asserts(:generate_tasks).raises Releasy::ConfigError, /wrapper not set/
23
23
  denies(:gemspecs).empty
24
24
 
25
25
  if Gem.win_platform?
@@ -28,18 +28,20 @@ Dir[File.expand_path("wrappers/ruby-*.7z", $original_path)].each do |path_to_rub
28
28
  asserts(:valid_for_platform?)
29
29
  end
30
30
 
31
- context "invalid ruby_dist" do
32
- hookup do
33
- topic.ruby_dist = "ruby_dist"
34
- end
31
+ context "#wrapper invalid" do
32
+ hookup { topic.wrapper = "wrapper" }
33
+ asserts(:generate_tasks).raises Releasy::ConfigError, /wrapper not valid/
34
+ end
35
35
 
36
- asserts(:generate_tasks).raises Releasy::ConfigError, /ruby_dist not valid/
36
+ context "#wrapper doesn't exist" do
37
+ hookup { topic.wrapper = "ruby-1.9.0-p999-i386-mingw32.7z" }
38
+ asserts(:build).raises Releasy::ConfigError, /wrapper does not exist/
37
39
  end
38
40
 
39
41
  context "valid" do
40
42
  hookup do
41
43
  stub(topic).valid_for_platform?.returns(true) # Need to do this so we can test on all platforms.
42
- topic.ruby_dist = path_to_ruby_dist
44
+ topic.wrapper = path_to_ruby_dist
43
45
  topic.folder_suffix = suffix
44
46
  topic.executable_type = :console
45
47
  topic.gemspecs = gemspecs_to_use
@@ -50,12 +52,12 @@ Dir[File.expand_path("wrappers/ruby-*.7z", $original_path)].each do |path_to_rub
50
52
 
51
53
  asserts(:output_path).equals output_path
52
54
  asserts(:folder_suffix).equals suffix
53
- asserts(:ruby_dist).equals path_to_ruby_dist
55
+ asserts(:wrapper).equals path_to_ruby_dist
54
56
  asserts("gemspecs correct") { topic.gemspecs == gemspecs_to_use }
55
57
 
56
58
  context "tasks" do
57
59
  tasks = [
58
- [ :Task, "build:windows:folder_from_ruby_dist", [folder] ],
60
+ [ :Task, "build:windows:wrapped", [folder] ],
59
61
  [ :FileTask, '..', [] ], # byproduct of using #directory
60
62
  [ :FileTask, output_path, [] ], # byproduct of using #directory
61
63
  [ :FileTask, folder, source_files + [path_to_ruby_dist]],
@@ -65,7 +67,7 @@ Dir[File.expand_path("wrappers/ruby-*.7z", $original_path)].each do |path_to_rub
65
67
  end
66
68
 
67
69
  context "generate" do
68
- hookup { Rake::Task["build:windows:folder_from_ruby_dist"].invoke }
70
+ hookup { Rake::Task["build:windows:wrapped"].invoke }
69
71
 
70
72
  asserts("files copied to folder") { source_files.all? {|f| same_contents? "#{folder}/src/#{f}", f } }
71
73
  asserts("readme copied to folder") { same_contents? "#{folder}/README.txt", "README.txt" }
@@ -0,0 +1,133 @@
1
+ require File.expand_path("helpers/helper", File.dirname(__FILE__))
2
+ require 'net/github-upload' # Because this isn't otherwise loaded until it is needed.
3
+
4
+ context Releasy::Deployers::Github do
5
+ setup do
6
+ any_instance_of Releasy::Deployers::Github do |github|
7
+ stub(github, :`).with("git config github.user").returns "test_user"
8
+ stub(github, :`).with("git config github.token").returns "0" * 32
9
+ end
10
+
11
+ Releasy::Deployers::Github.new new_project
12
+ end
13
+
14
+ teardown do
15
+ Dir.chdir $original_path
16
+ Rake::Task.clear
17
+ end
18
+
19
+ hookup do
20
+ Dir.chdir project_path
21
+ end
22
+
23
+ asserts(:user).equals "test_user"
24
+ asserts(:token).equals "0" * 32
25
+ asserts(:description).equals "Test App 0.1"
26
+
27
+ context "repository not configured" do
28
+ setup do
29
+ any_instance_of Releasy::Deployers::Github do |github|
30
+ mock(github, :`).with("git config remote.origin.url").returns { raise Errno::ENOENT }
31
+ end
32
+
33
+ Releasy::Deployers::Github.new new_project
34
+ end
35
+
36
+ asserts(:repository).equals "test_app"
37
+ end
38
+
39
+ context "repository configured" do
40
+ setup do
41
+ any_instance_of Releasy::Deployers::Github do |github|
42
+ mock(github, :`).with("git config remote.origin.url").returns "git@github.com:test_user/test-app.git"
43
+ end
44
+
45
+ Releasy::Deployers::Github.new new_project
46
+ end
47
+
48
+ asserts(:repository).equals "test-app"
49
+ end
50
+
51
+ context "user not configured" do
52
+ setup do
53
+ any_instance_of Releasy::Deployers::Github do |github|
54
+ mock(github, :`).with("git config github.user").returns { raise Errno::ENOENT }
55
+ mock(github, :`).with("git config github.token").returns "0" * 32
56
+ end
57
+
58
+ Releasy::Deployers::Github.new new_project
59
+ end
60
+
61
+ asserts(:user).nil
62
+
63
+ asserts(:deploy, "file").raises Releasy::ConfigError, /#user must be set manually if it is not configured on the system/
64
+ end
65
+
66
+ context "token not configured" do
67
+ setup do
68
+ any_instance_of Releasy::Deployers::Github do |github|
69
+ mock(github, :`).with("git config github.user").returns "test_user"
70
+ mock(github, :`).with("git config github.token").returns { raise Errno::ENOENT }
71
+ end
72
+ Releasy::Deployers::Github.new new_project
73
+ end
74
+
75
+ asserts(:token).nil
76
+
77
+ asserts(:deploy, "file").raises Releasy::ConfigError, /#token must be set manually if it is not configured on the system/
78
+ end
79
+
80
+
81
+ context "valid" do
82
+ context "#generate_tasks" do
83
+ hookup { topic.send :generate_tasks, "source:7z", "SOURCE.7z", ".7z" }
84
+ tasks = [
85
+ [ :Task, "deploy:source:7z:github", %w[package:source:7z] ],
86
+ ]
87
+
88
+ test_tasks tasks
89
+ end
90
+
91
+ context "#deploy" do
92
+ helper(:stub_file_size) { stub(File).size("file.zip").returns 1000 }
93
+
94
+ should "expect an Net::GitHub::Upload to be created and used to upload" do
95
+ stub_file_size
96
+ mock(Net::GitHub::Upload).new :login => "test_user", :token => "0" * 32 do
97
+ mock!.upload :repos => "test_app", :file => "file.zip", :description => "Test App 0.1", :replace => false
98
+ end
99
+
100
+ topic.send :deploy, "file.zip"
101
+
102
+ true
103
+ end
104
+
105
+ should "expect an Net::GitHub::Upload to be created and exit (not forcing replacement and file already exists)" do
106
+ stub_file_size
107
+ mock(Net::GitHub::Upload).new :login => "test_user", :token => "0" * 32 do
108
+ mock!.upload :repos => "test_app", :file => "file.zip", :description => "Test App 0.1", :replace => false do
109
+ raise "file already exists"
110
+ end
111
+ end
112
+
113
+ mock(topic).exit(1)
114
+
115
+ topic.send :deploy, "file.zip"
116
+
117
+ true
118
+ end
119
+
120
+ should "expect an Net::GitHub::Upload to be created and used to upload (forcing replacement)" do
121
+ stub_file_size
122
+ mock(Net::GitHub::Upload).new :login => "test_user", :token => "0" * 32 do
123
+ mock!.upload :repos => "test_app", :file => "file.zip", :description => "Test App 0.1", :replace => true
124
+ end
125
+
126
+ topic.replace!
127
+ topic.send :deploy, "file.zip"
128
+
129
+ true
130
+ end
131
+ end
132
+ end
133
+ end
@@ -0,0 +1,19 @@
1
+ require File.expand_path("../../../teststrap", File.dirname(__FILE__))
2
+
3
+ def new_project
4
+ project = Releasy::Project.new
5
+ project.name = "Test App"
6
+ project.version = "0.1"
7
+ project.files = source_files
8
+ project.exposed_files = %w[README.txt LICENSE.txt]
9
+ project.add_link "http://spooner.github.com/libraries/releasy/", "Releasy website"
10
+ project.output_path = output_path
11
+
12
+ project.add_build :source
13
+
14
+ project.add_package :"7z"
15
+
16
+ project
17
+ end
18
+
19
+ def archive_file; "test_app_0_1_SOURCE.7z"; end
@@ -20,14 +20,16 @@ context "Source in all formats" do
20
20
  create_md5s
21
21
 
22
22
  add_build :source do
23
- add_archive :dmg
24
- add_archive :exe
25
- add_archive :zip
26
- add_archive :"7z"
23
+ add_package :dmg
24
+ add_package :exe
25
+ add_package :zip
26
+ add_package :"7z"
27
27
  end
28
28
 
29
- add_archive :tar_gz
30
- add_archive :tar_bz2
29
+ add_package :tar_gz
30
+ add_package :tar_bz2
31
+
32
+ add_deploy :github
31
33
  end
32
34
  end
33
35
 
@@ -46,6 +48,23 @@ context "Source in all formats" do
46
48
 
47
49
  context "tasks" do
48
50
  tasks = [
51
+ [ :Task, "deploy", %w[deploy:source] ],
52
+ [ :Task, "deploy:github", %w[deploy:source:github] ],
53
+ [ :Task, "deploy:source", %w[deploy:source:github] ],
54
+ [ :Task, "deploy:source:github", %w[deploy:source:dmg:github deploy:source:7z:github deploy:source:exe:github deploy:source:tar_gz:github deploy:source:tar_bz2:github deploy:source:zip:github] ],
55
+ [ :Task, "deploy:source:dmg", %w[deploy:source:dmg:github] ],
56
+ [ :Task, "deploy:source:dmg:github", %w[package:source:dmg] ],
57
+ [ :Task, "deploy:source:7z", %w[deploy:source:7z:github] ],
58
+ [ :Task, "deploy:source:7z:github", %w[package:source:7z] ],
59
+ [ :Task, "deploy:source:exe", %w[deploy:source:exe:github] ],
60
+ [ :Task, "deploy:source:exe:github", %w[package:source:exe] ],
61
+ [ :Task, "deploy:source:tar_gz", %w[deploy:source:tar_gz:github] ],
62
+ [ :Task, "deploy:source:tar_gz:github", %w[package:source:tar_gz] ],
63
+ [ :Task, "deploy:source:tar_bz2", %w[deploy:source:tar_bz2:github] ],
64
+ [ :Task, "deploy:source:tar_bz2:github", %w[package:source:tar_bz2] ],
65
+ [ :Task, "deploy:source:zip", %w[deploy:source:zip:github] ],
66
+ [ :Task, "deploy:source:zip:github", %w[package:source:zip] ],
67
+
49
68
  [ :Task, "package", %w[package:source] ],
50
69
  [ :Task, "package:source", %w[package:source:dmg package:source:7z package:source:exe package:source:tar_gz package:source:tar_bz2 package:source:zip] ],
51
70
  [ :Task, "package:source:dmg", ["#{folder}.dmg"] ],
@@ -0,0 +1,15 @@
1
+ require File.expand_path("../../teststrap", File.dirname(__FILE__))
2
+
3
+ context Releasy::Mixins::Log do
4
+ setup { Releasy::Mixins::Log }
5
+
6
+ asserts(:log_level=, :fish).raises ArgumentError, "Bad log_level: :fish"
7
+
8
+ context "included" do
9
+ setup { Object.new.extend topic }
10
+
11
+ asserts_topic.respond_to :heading
12
+ asserts_topic.respond_to :info
13
+ asserts_topic.respond_to :warn
14
+ end
15
+ end
@@ -20,7 +20,6 @@ context Releasy::Mixins::Register do
20
20
  end
21
21
 
22
22
  asserts("trying to register a non-class") { topic.register 12 }.raises TypeError, /Can only register classes/
23
- asserts("trying to register a class not within the module") { topic.register NotInModule }.raises ArgumentError, /Can't register a class not within this module/
24
23
  asserts("trying to register a class without TYPE, even if in the module") { topic.register topic::Untyped }.raises ArgumentError, /To register, a class must have TYPE defined/
25
24
 
26
25
  context "with registered classes (blue and red frogs)" do
@@ -1,22 +1,22 @@
1
1
  require File.expand_path("../teststrap", File.dirname(__FILE__))
2
2
 
3
- # Test all archivers at once, since they are pretty much identical.
3
+ # Test all packagers at once, since they are pretty much identical.
4
4
  [
5
- [:dmg, Releasy::Archivers::Dmg, %[GZIP=-9 hdiutil create -fs HFS+ -srcfolder "f" -volname "Test App 0.1" "f.dmg"]],
6
- [:exe, Releasy::Archivers::Exe, %[7z a -mmt -bd -t7z -mx9 -sfx7z.sfx "f.exe" "f"]],
7
- [:"7z", Releasy::Archivers::SevenZip, %[7z a -mmt -bd -t7z -mx9 "f.7z" "f"]],
8
- [:tar_bz2, Releasy::Archivers::TarBzip2, %[7z a -so -mmt -bd -ttar "f.tar" "f" | 7z a -si -bd -tbzip2 -mx9 "f.tar.bz2"]],
9
- [:tar_gz, Releasy::Archivers::TarGzip, %[7z a -so -mmt -bd -ttar "f.tar" "f" | 7z a -si -bd -tgzip -mx9 "f.tar.gz"]],
10
- [:zip, Releasy::Archivers::Zip, %[7z a -mmt -bd -tzip -mx9 "f.zip" "f"]],
11
- ].each do |type, archiver, command|
5
+ [:dmg, Releasy::Packagers::Dmg, %[GZIP=-9 hdiutil create -fs HFS+ -srcfolder "f" -volname "Test App 0.1" "f.dmg"]],
6
+ [:exe, Releasy::Packagers::Exe, %[7z a -mmt -bd -t7z -mx9 -sfx7z.sfx "f.exe" "f"]],
7
+ [:"7z", Releasy::Packagers::SevenZip, %[7z a -mmt -bd -t7z -mx9 "f.7z" "f"]],
8
+ [:tar_bz2, Releasy::Packagers::TarBzip2, %[7z a -so -mmt -bd -ttar "f.tar" "f" | 7z a -si -bd -tbzip2 -mx9 "f.tar.bz2"]],
9
+ [:tar_gz, Releasy::Packagers::TarGzip, %[7z a -so -mmt -bd -ttar "f.tar" "f" | 7z a -si -bd -tgzip -mx9 "f.tar.gz"]],
10
+ [:zip, Releasy::Packagers::Zip, %[7z a -mmt -bd -tzip -mx9 "f.zip" "f"]],
11
+ ].each do |type, packager, command|
12
12
  extension = "." + type.to_s.tr("_", ".")
13
13
 
14
- context archiver do
14
+ context packager do
15
15
  setup do
16
16
  project = Releasy::Project.new
17
17
  project.name = "Test App"
18
18
  project.version = "0.1"
19
- archiver.new project
19
+ packager.new project
20
20
  end
21
21
  teardown { Rake::Task.clear }
22
22
 
@@ -32,15 +32,12 @@ require File.expand_path("../teststrap", File.dirname(__FILE__))
32
32
  asserts(:package, "f").equals "f.wobble"
33
33
  end
34
34
 
35
- context "setting extension without a . still adds one" do
36
- hookup { topic.extension = "wobble" }
37
-
38
- asserts(:extension).equals "wobble"
39
- asserts(:package, "f").equals "f.wobble"
35
+ context "setting extension without a . raises an error" do
36
+ asserts(:extension=, "wobble").raises ArgumentError, /extension must be valid/
40
37
  end
41
38
 
42
39
  context "generated tasks" do
43
- hookup { topic.send :generate_tasks, "source", "frog" }
40
+ hookup { topic.send :generate_tasks, "source", "frog", [] }
44
41
 
45
42
  tasks = [
46
43
  [:FileTask, "frog#{extension}", %w[frog]],
@@ -53,11 +50,11 @@ require File.expand_path("../teststrap", File.dirname(__FILE__))
53
50
  context "class" do
54
51
  setup { topic.class }
55
52
 
56
- asserts("#{archiver}::TYPE") { topic::TYPE }.equals type
53
+ asserts("#{packager}::TYPE") { topic::TYPE }.equals type
57
54
 
58
55
  if type == :exe
59
- asserts("#{archiver}::SFX_NAME") { topic::SFX_NAME }.equals "7z.sfx"
60
- asserts("#{archiver}::SFX_FILE") { topic::SFX_FILE }.equals File.expand_path("bin/7z.sfx", $original_path)
56
+ asserts("#{packager}::SFX_NAME") { topic::SFX_NAME }.equals "7z.sfx"
57
+ asserts("#{packager}::SFX_FILE") { topic::SFX_FILE }.equals File.expand_path("bin/7z.sfx", $original_path)
61
58
  asserts("sfx file included") { File.exists? topic::SFX_FILE }
62
59
  end
63
60
  end