releasy 0.2.0rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +17 -0
- data/.yardopts +4 -0
- data/CHANGELOG.md +24 -0
- data/Gemfile +3 -0
- data/LICENSE.txt +20 -0
- data/README.md +165 -0
- data/Rakefile +31 -0
- data/bin/7z.sfx +0 -0
- data/bin/releasy +7 -0
- data/lib/releasy.rb +18 -0
- data/lib/releasy/archivers.rb +12 -0
- data/lib/releasy/archivers/archiver.rb +74 -0
- data/lib/releasy/archivers/dmg.rb +18 -0
- data/lib/releasy/archivers/exe.rb +23 -0
- data/lib/releasy/archivers/seven_zip.rb +12 -0
- data/lib/releasy/archivers/tar_archiver.rb +14 -0
- data/lib/releasy/archivers/tar_bzip2.rb +13 -0
- data/lib/releasy/archivers/tar_gzip.rb +13 -0
- data/lib/releasy/archivers/zip.rb +12 -0
- data/lib/releasy/builders.rb +12 -0
- data/lib/releasy/builders/builder.rb +52 -0
- data/lib/releasy/builders/ocra_builder.rb +43 -0
- data/lib/releasy/builders/osx_app.rb +158 -0
- data/lib/releasy/builders/source.rb +27 -0
- data/lib/releasy/builders/windows_builder.rb +65 -0
- data/lib/releasy/builders/windows_folder.rb +47 -0
- data/lib/releasy/builders/windows_folder_from_ruby_dist.rb +150 -0
- data/lib/releasy/builders/windows_installer.rb +117 -0
- data/lib/releasy/builders/windows_standalone.rb +37 -0
- data/lib/releasy/cli.rb +12 -0
- data/lib/releasy/cli/install_sfx.rb +66 -0
- data/lib/releasy/dsl_wrapper.rb +71 -0
- data/lib/releasy/mixins/exec.rb +14 -0
- data/lib/releasy/mixins/has_archivers.rb +37 -0
- data/lib/releasy/mixins/has_gemspecs.rb +42 -0
- data/lib/releasy/mixins/register.rb +47 -0
- data/lib/releasy/project.rb +300 -0
- data/lib/releasy/version.rb +3 -0
- data/lib/releasy/windows_wrapper_maker.rb +90 -0
- data/lib/releasy/windows_wrapper_maker/Gemfile +8 -0
- data/media/releasy.png +0 -0
- data/releasy.gemspec +37 -0
- data/test/releasy/archivers_test.rb +65 -0
- data/test/releasy/builders/data/Info.plist +51 -0
- data/test/releasy/builders/data/Main.rb +12 -0
- data/test/releasy/builders/data/relapse_runner.rb +1 -0
- data/test/releasy/builders/data/set_app_executable.sh +3 -0
- data/test/releasy/builders/helpers/helper.rb +47 -0
- data/test/releasy/builders/ocra_builder_test.rb +37 -0
- data/test/releasy/builders/osx_app_test.rb +107 -0
- data/test/releasy/builders/source_test.rb +43 -0
- data/test/releasy/builders/windows_builder_test.rb +26 -0
- data/test/releasy/builders/windows_folder_from_ruby_dist_test.rb +105 -0
- data/test/releasy/builders/windows_folder_test.rb +56 -0
- data/test/releasy/builders/windows_installer_test.rb +62 -0
- data/test/releasy/builders/windows_standalone_test.rb +58 -0
- data/test/releasy/cli/install_sfx_test.rb +90 -0
- data/test/releasy/dsl_wrapper_test.rb +79 -0
- data/test/releasy/integration/source_test.rb +122 -0
- data/test/releasy/mixins/register_test.rb +52 -0
- data/test/releasy/project_test.rb +198 -0
- data/test/releasy/windows_wrapper_maker_test.rb +61 -0
- data/test/teststrap.rb +52 -0
- data/test/yard_test.rb +61 -0
- data/test_project/Gemfile +9 -0
- data/test_project/LICENSE.txt +1 -0
- data/test_project/README.txt +2 -0
- data/test_project/bin/test_app +3 -0
- data/test_project/lib/test_app.rb +6 -0
- data/test_project/lib/test_app/stuff.rb +1 -0
- data/test_project/test_app.icns +0 -0
- data/test_project/test_app.ico +0 -0
- data/wrappers/put_wrappers_here_for_testing.txt +17 -0
- metadata +236 -0
@@ -0,0 +1,79 @@
|
|
1
|
+
require File.expand_path("../teststrap", File.dirname(__FILE__))
|
2
|
+
|
3
|
+
context Releasy::DSLWrapper do
|
4
|
+
helper :owner_class do
|
5
|
+
# Can't simply stub, since the DSLWrapper redirection methods are created when from the owner's methods.
|
6
|
+
Owner = Class.new do
|
7
|
+
def frog; end
|
8
|
+
def fish; end
|
9
|
+
def fish=(fish); end
|
10
|
+
def knees=(knees); end
|
11
|
+
def add_cheese(a, b); end
|
12
|
+
def add_peas(a, &block); end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
helper(:owner) { @owner ||= owner_class.new }
|
17
|
+
|
18
|
+
setup { Releasy::DSLWrapper.new owner }
|
19
|
+
|
20
|
+
expected_methods = [:frog, :fish, :add_cheese, :owner, :add_peas, :knees]
|
21
|
+
expected_methods.map!(&:to_s) if RUBY_VERSION =~ /1\.8\./
|
22
|
+
asserts(:public_methods, false).same_elements expected_methods
|
23
|
+
asserts(:owner).equals { owner }
|
24
|
+
|
25
|
+
asserts("a method that doesn't exist on the owner") { topic.wibble }.raises NoMethodError, /<Owner:0x\w+> does not have either public method, #wibble or #wibble=/
|
26
|
+
|
27
|
+
should "redirect to a setter, that has no corresponding getter, even if no arguments are passed" do
|
28
|
+
topic.knees
|
29
|
+
end.raises ArgumentError
|
30
|
+
|
31
|
+
should "redirect to a getter, that has no corresponding setter, even if arguments are passed" do
|
32
|
+
topic.frog 25
|
33
|
+
end.raises ArgumentError
|
34
|
+
|
35
|
+
should "redirect a getter (that has no corresponding setter)" do
|
36
|
+
mock(owner, :frog).returns(5)
|
37
|
+
topic.frog == 5
|
38
|
+
end
|
39
|
+
|
40
|
+
should "redirect a setter (that has no corresponding getter)" do
|
41
|
+
mock(owner, :knees=).with(1).returns(5)
|
42
|
+
topic.knees(1) == 5
|
43
|
+
end
|
44
|
+
|
45
|
+
should "redirect a getter (that has a corresponding setter)" do
|
46
|
+
mock(owner, :fish).returns(5)
|
47
|
+
topic.fish == 5
|
48
|
+
end
|
49
|
+
|
50
|
+
should "redirect a setter (that has a corresponding getter)" do
|
51
|
+
mock(owner, :fish=).with(5).returns(5)
|
52
|
+
topic.fish(5) == 5
|
53
|
+
end
|
54
|
+
|
55
|
+
should "redirect a (non-setter) method with args" do
|
56
|
+
mock(owner).add_cheese(1, 2).returns(99)
|
57
|
+
topic.add_cheese(1, 2) == 99
|
58
|
+
end
|
59
|
+
|
60
|
+
should "redirect a block" do
|
61
|
+
mock(owner).add_peas(1).yields(:knees)
|
62
|
+
yielded = nil
|
63
|
+
topic.add_peas(1) do |arg|
|
64
|
+
yielded = arg
|
65
|
+
end
|
66
|
+
yielded == :knees
|
67
|
+
end
|
68
|
+
|
69
|
+
should "instance_eval when given a block on the constructor (.new)" do
|
70
|
+
mock(owner).frog(5)
|
71
|
+
Releasy::DSLWrapper.new owner do
|
72
|
+
frog 5
|
73
|
+
end
|
74
|
+
true
|
75
|
+
end
|
76
|
+
|
77
|
+
asserts(".wrap is an alias for .new without a block") { Releasy::DSLWrapper.wrap(owner).is_a? Releasy::DSLWrapper }
|
78
|
+
asserts(".wrap is an alias for .new given a block") { (Releasy::DSLWrapper.wrap(owner) {}).is_a? Releasy::DSLWrapper }
|
79
|
+
end
|
@@ -0,0 +1,122 @@
|
|
1
|
+
require File.expand_path("../../teststrap", File.dirname(__FILE__))
|
2
|
+
|
3
|
+
folder = File.join(output_path, "test_app_0_1_SOURCE")
|
4
|
+
|
5
|
+
def md5_created(extension)
|
6
|
+
file = "#{File.join(output_path, "test_app_0_1_SOURCE")}#{extension}.MD5"
|
7
|
+
asserts("MD5 file created") { File.exists?(file) }
|
8
|
+
asserts("MD5 file contents sensible") { File.read(file) =~ /^[0-9a-f]{32}$/ }
|
9
|
+
end
|
10
|
+
|
11
|
+
_output_path = output_path # Needed to get to work in the DSLWrapper.
|
12
|
+
context "Source in all formats" do
|
13
|
+
setup do
|
14
|
+
Releasy::Project.new do
|
15
|
+
name "Test App"
|
16
|
+
version "0.1"
|
17
|
+
files source_files
|
18
|
+
output_path _output_path
|
19
|
+
verbose
|
20
|
+
create_md5s
|
21
|
+
|
22
|
+
add_build :source do
|
23
|
+
add_archive :dmg
|
24
|
+
add_archive :exe
|
25
|
+
add_archive :zip
|
26
|
+
add_archive :"7z"
|
27
|
+
end
|
28
|
+
|
29
|
+
add_archive :tar_gz
|
30
|
+
add_archive :tar_bz2
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
teardown do
|
35
|
+
Rake::Task.clear
|
36
|
+
Dir.chdir $original_path
|
37
|
+
end
|
38
|
+
|
39
|
+
hookup do
|
40
|
+
Dir.chdir project_path
|
41
|
+
end
|
42
|
+
|
43
|
+
helper(:contents_description) { /#{source_files.size} files, 4 folders/m }
|
44
|
+
|
45
|
+
active_builders_valid
|
46
|
+
|
47
|
+
context "tasks" do
|
48
|
+
tasks = [
|
49
|
+
[ :Task, "package", %w[package:source] ],
|
50
|
+
[ :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
|
+
[ :Task, "package:source:dmg", ["#{folder}.dmg"] ],
|
52
|
+
[ :Task, "package:source:7z", ["#{folder}.7z"] ],
|
53
|
+
[ :Task, "package:source:exe", ["#{folder}.exe"] ],
|
54
|
+
[ :Task, "package:source:tar_gz", ["#{folder}.tar.gz"] ],
|
55
|
+
[ :Task, "package:source:tar_bz2", ["#{folder}.tar.bz2"] ],
|
56
|
+
[ :Task, "package:source:zip", ["#{folder}.zip"] ],
|
57
|
+
|
58
|
+
[ :Task, "build", %w[build:source] ],
|
59
|
+
[ :Task, "build:source", [folder] ],
|
60
|
+
|
61
|
+
[ :FileCreationTask, '..', [] ],
|
62
|
+
[ :FileCreationTask, output_path, [] ], # byproduct of using #directory
|
63
|
+
[ :FileCreationTask, folder, source_files ],
|
64
|
+
[ :FileTask, "#{folder}.dmg", [folder] ],
|
65
|
+
[ :FileTask, "#{folder}.7z", [folder] ],
|
66
|
+
[ :FileTask, "#{folder}.exe", [folder] ],
|
67
|
+
[ :FileTask, "#{folder}.tar.gz", [folder] ],
|
68
|
+
[ :FileTask, "#{folder}.tar.bz2", [folder] ],
|
69
|
+
[ :FileTask, "#{folder}.zip", [folder] ],
|
70
|
+
]
|
71
|
+
|
72
|
+
test_tasks tasks
|
73
|
+
end
|
74
|
+
|
75
|
+
if osx_platform?
|
76
|
+
# TODO: Test this better?
|
77
|
+
context "dmg" do
|
78
|
+
hookup { Rake::Task["package:source:dmg"].invoke }
|
79
|
+
|
80
|
+
asserts("archive created") { File.size("#{folder}.dmg") > 0}
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
context ".exe" do
|
85
|
+
hookup { Rake::Task["package:source:exe"].invoke }
|
86
|
+
|
87
|
+
asserts("archive created") { File.size("#{folder}.exe") > 0}
|
88
|
+
md5_created ".exe"
|
89
|
+
end
|
90
|
+
|
91
|
+
context ".tar.gz" do
|
92
|
+
hookup { Rake::Task["package:source:tar_gz"].invoke }
|
93
|
+
|
94
|
+
asserts("archive created") { File.size("#{folder}.tar.gz") > 0}
|
95
|
+
asserts("archive contains expected files") { `7z x -so -bd -tgzip #{folder}.tar.gz | 7z l -si -bd -ttar` =~ contents_description }
|
96
|
+
md5_created ".tar.gz"
|
97
|
+
end
|
98
|
+
|
99
|
+
context ".tar.bz2" do
|
100
|
+
hookup { Rake::Task["package:source:tar_bz2"].invoke }
|
101
|
+
|
102
|
+
asserts("archive created") { File.size("#{folder}.tar.bz2") > 0}
|
103
|
+
asserts("archive contains expected files") { `7z x -so -bd -tbzip2 #{folder}.tar.bz2 | 7z l -si -bd -ttar` =~ contents_description }
|
104
|
+
md5_created ".tar.bz2"
|
105
|
+
end
|
106
|
+
|
107
|
+
context ".zip" do
|
108
|
+
hookup { Rake::Task["package:source:zip"].invoke }
|
109
|
+
|
110
|
+
asserts("archive created") { File.size("#{folder}.zip") > 0}
|
111
|
+
asserts("archive contains expected files") { `7z l -bd -tzip #{folder}.zip` =~ contents_description }
|
112
|
+
md5_created ".zip"
|
113
|
+
end
|
114
|
+
|
115
|
+
context ".7z" do
|
116
|
+
hookup { Rake::Task["package:source:7z"].invoke }
|
117
|
+
|
118
|
+
asserts("archive created") { File.size("#{folder}.7z") > 0}
|
119
|
+
asserts("archive contains expected files") { `7z l -bd -t7z #{folder}.7z` =~ contents_description }
|
120
|
+
md5_created ".7z"
|
121
|
+
end
|
122
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require File.expand_path("../../teststrap", File.dirname(__FILE__))
|
2
|
+
|
3
|
+
context Releasy::Mixins::Register do
|
4
|
+
setup do
|
5
|
+
module RegisterTest
|
6
|
+
extend Releasy::Mixins::Register
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
asserts(:[], :blue).nil
|
11
|
+
asserts(:has_type?, :blue).equals false
|
12
|
+
asserts(:types).same_elements []
|
13
|
+
asserts(:values).same_elements []
|
14
|
+
|
15
|
+
hookup do
|
16
|
+
unless defined? NotInModule
|
17
|
+
class NotInModule; TYPE = :wibbly; end
|
18
|
+
class RegisterTest::Untyped; end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
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
|
+
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
|
+
|
26
|
+
context "with registered classes (blue and red frogs)" do
|
27
|
+
setup do
|
28
|
+
module Frogs
|
29
|
+
extend Releasy::Mixins::Register
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
hookup do
|
34
|
+
unless defined? Frogs::BlueFrog
|
35
|
+
class Frogs::BlueFrog
|
36
|
+
TYPE = :blue # Type must be defined before registering.
|
37
|
+
Frogs.register self
|
38
|
+
end
|
39
|
+
|
40
|
+
class Frogs::RedFrog
|
41
|
+
TYPE = :red # Type must be defined before registering.
|
42
|
+
Frogs.register self
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
asserts(:[], :blue).equals { Frogs::BlueFrog }
|
48
|
+
asserts(:has_type?, :blue).equals true
|
49
|
+
asserts(:types).same_elements [:blue, :red]
|
50
|
+
asserts(:values).same_elements { [Frogs::BlueFrog, Frogs::RedFrog] }
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,198 @@
|
|
1
|
+
require File.expand_path("../teststrap", File.dirname(__FILE__))
|
2
|
+
|
3
|
+
# Change directory into the project, since that is where we work from normally.
|
4
|
+
|
5
|
+
# @author Bil Bas (Spooner)
|
6
|
+
context Releasy::Project do
|
7
|
+
teardown do
|
8
|
+
Rake::Task.clear
|
9
|
+
Dir.chdir $original_path
|
10
|
+
end
|
11
|
+
|
12
|
+
hookup do
|
13
|
+
Dir.chdir project_path
|
14
|
+
end
|
15
|
+
|
16
|
+
context "default" do
|
17
|
+
setup { Releasy::Project.new }
|
18
|
+
|
19
|
+
# Defaults are mostly nil.
|
20
|
+
asserts(:name).nil
|
21
|
+
asserts(:underscored_name).nil
|
22
|
+
asserts(:version).nil
|
23
|
+
asserts(:executable).nil
|
24
|
+
asserts(:files).empty
|
25
|
+
asserts(:files).kind_of Rake::FileList
|
26
|
+
asserts(:exposed_files).empty
|
27
|
+
asserts(:exposed_files).kind_of Rake::FileList
|
28
|
+
asserts(:verbose?).equals true
|
29
|
+
asserts(:links).equals Hash.new
|
30
|
+
asserts(:create_md5s?).equals false
|
31
|
+
|
32
|
+
asserts(:to_s).equals "<Releasy::Project>"
|
33
|
+
asserts(:output_path).equals "pkg"
|
34
|
+
asserts(:folder_base).equals "pkg/" # Would be more, but dependent on name.
|
35
|
+
|
36
|
+
asserts("attempting to generate tasks without any outputs") { topic.send :generate_tasks }.raises Releasy::ConfigError, /must specify at least one valid output/i
|
37
|
+
|
38
|
+
asserts(:active_builders).empty
|
39
|
+
asserts(:add_build, :source).kind_of Releasy::Builders::Source
|
40
|
+
asserts(:active_builders).size 1
|
41
|
+
asserts(:add_build, :source).raises(Releasy::ConfigError, /already have output :source/i)
|
42
|
+
asserts(:add_build, :unknown).raises(ArgumentError, /unsupported output/i)
|
43
|
+
|
44
|
+
asserts("active_archivers") { topic.send(:active_archivers, topic.send(:active_builders).first) }.empty
|
45
|
+
asserts(:add_archive, :zip).kind_of Releasy::Archivers::Zip
|
46
|
+
asserts("active_archivers") { topic.send(:active_archivers, topic.send(:active_builders).first) }.size 1
|
47
|
+
asserts(:add_archive, :zip).raises(Releasy::ConfigError, /already have archive format :zip/i)
|
48
|
+
asserts(:add_archive, :unknown).raises(ArgumentError, /unsupported archive/i)
|
49
|
+
|
50
|
+
context "#verbose" do
|
51
|
+
hookup { topic.quiet }
|
52
|
+
hookup { topic.verbose }
|
53
|
+
asserts(:verbose?).equals true
|
54
|
+
end
|
55
|
+
|
56
|
+
context "#quiet" do
|
57
|
+
hookup { topic.verbose }
|
58
|
+
hookup { topic.quiet }
|
59
|
+
asserts(:verbose?).equals false
|
60
|
+
end
|
61
|
+
|
62
|
+
context "#create_md5s" do
|
63
|
+
hookup { topic.create_md5s }
|
64
|
+
asserts(:create_md5s?).equals true
|
65
|
+
end
|
66
|
+
|
67
|
+
context "#files" do
|
68
|
+
hookup { topic.files = ["fish.rb"] }
|
69
|
+
asserts(:files).size 1
|
70
|
+
asserts(:files).kind_of Rake::FileList
|
71
|
+
end
|
72
|
+
|
73
|
+
context "#exposed_files" do
|
74
|
+
hookup { topic.exposed_files = "fish.rb" }
|
75
|
+
asserts(:exposed_files).size 1
|
76
|
+
asserts(:exposed_files).kind_of Rake::FileList
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
context "defined" do
|
81
|
+
setup do
|
82
|
+
Releasy::Project.new do
|
83
|
+
name "Test Project - (2a)"
|
84
|
+
version "v0.1.5"
|
85
|
+
|
86
|
+
add_archive :"7z"
|
87
|
+
add_archive :zip
|
88
|
+
|
89
|
+
add_build :source
|
90
|
+
add_build :osx_app do
|
91
|
+
add_archive :tar_gz do
|
92
|
+
extension "tgz"
|
93
|
+
end
|
94
|
+
wrapper Dir["../wrappers/gosu-mac-wrapper-*.tar.gz"].first
|
95
|
+
url "org.url.app"
|
96
|
+
end
|
97
|
+
add_build :windows_standalone do
|
98
|
+
exclude_encoding
|
99
|
+
end
|
100
|
+
|
101
|
+
files source_files
|
102
|
+
|
103
|
+
add_link "www.frog.com", "Frog"
|
104
|
+
add_link "www2.fish.com", "Fish"
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
asserts(:to_s).equals %[<Releasy::Project Test Project - (2a) v0.1.5>]
|
109
|
+
asserts(:name).equals "Test Project - (2a)"
|
110
|
+
asserts(:underscored_name).equals "test_project_2a"
|
111
|
+
asserts(:version).equals "v0.1.5"
|
112
|
+
asserts("file") { topic.files.to_a }.same_elements source_files
|
113
|
+
asserts(:underscored_version).equals "v0_1_5"
|
114
|
+
asserts(:executable).equals "bin/test_project_2a"
|
115
|
+
asserts(:folder_base).equals "pkg/test_project_2a_v0_1_5"
|
116
|
+
asserts(:links).equals "www.frog.com" => "Frog", "www2.fish.com" => "Fish"
|
117
|
+
|
118
|
+
asserts(:active_builders).size(Gem.win_platform? ? 3 : 2)
|
119
|
+
asserts("source active_archivers") { topic.send(:active_archivers, topic.send(:active_builders).find {|b| b.type == :source }) }.size 2
|
120
|
+
asserts("osx app active_archivers") { topic.send(:active_archivers, topic.send(:active_builders).find {|b| b.type == :osx_app }) }.size 3
|
121
|
+
if Gem.win_platform?
|
122
|
+
asserts("Windows standalone active_archivers") { topic.send(:active_archivers, topic.send(:active_builders).find {|b| b.type == :windows_standalone }) }.size 2
|
123
|
+
end
|
124
|
+
|
125
|
+
asserts "add_build yields an instance_eval-ed Releasy::DSLWrapper" do
|
126
|
+
correct = false
|
127
|
+
topic.add_build :windows_folder do
|
128
|
+
correct = (is_a?(Releasy::DSLWrapper) and owner.is_a?(Releasy::Builders::WindowsFolder))
|
129
|
+
end
|
130
|
+
correct
|
131
|
+
end
|
132
|
+
|
133
|
+
asserts "add_archive yields an instance_eval-ed Releasy::DSLWrapper" do
|
134
|
+
correct = false
|
135
|
+
topic.add_archive :tar_gz do
|
136
|
+
correct = (is_a?(Releasy::DSLWrapper) and owner.is_a?(Releasy::Archivers::TarGzip))
|
137
|
+
end
|
138
|
+
correct
|
139
|
+
end
|
140
|
+
|
141
|
+
context "#generate_archive_tasks" do
|
142
|
+
asserts(:generate_archive_tasks).equals { topic }
|
143
|
+
|
144
|
+
should "call generate_tasks on all archivers" do
|
145
|
+
topic.send(:active_builders).each do |builder|
|
146
|
+
topic.send(:active_archivers, builder).each {|a| mock(a).generate_tasks(builder.type.to_s.sub('_', ':'), builder.send(:folder)) }
|
147
|
+
end
|
148
|
+
topic.send :generate_archive_tasks
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
context "#generate_tasks" do
|
153
|
+
asserts(:generate_tasks).equals { topic }
|
154
|
+
|
155
|
+
should "call generate_tasks on all builders" do
|
156
|
+
topic.send(:active_builders) {|b| mock(b).generate_tasks }
|
157
|
+
topic.send :generate_tasks
|
158
|
+
end
|
159
|
+
|
160
|
+
should "call #generate_archive_tasks" do
|
161
|
+
mock(topic).generate_archive_tasks
|
162
|
+
topic.send :generate_tasks
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
context "defined with Object#tap-like syntax" do
|
167
|
+
setup do
|
168
|
+
Releasy::Project.new do |p|
|
169
|
+
p.name = "Test Project - (2a)"
|
170
|
+
p.version = "v0.1.5"
|
171
|
+
|
172
|
+
p.add_archive :"7z"
|
173
|
+
p.add_archive :zip
|
174
|
+
|
175
|
+
p.add_build :source
|
176
|
+
p.add_build :osx_app do |b|
|
177
|
+
b.add_archive :tar_gz do |a|
|
178
|
+
a.extension = ".tgz"
|
179
|
+
end
|
180
|
+
b.wrapper = Dir["../wrappers/gosu-mac-wrapper-*.tar.gz"].first
|
181
|
+
b.url = "org.url.app"
|
182
|
+
end
|
183
|
+
p.add_build :windows_standalone do |b|
|
184
|
+
b.exclude_encoding
|
185
|
+
end
|
186
|
+
|
187
|
+
p.files = source_files
|
188
|
+
|
189
|
+
p.add_link "www.frog.com", "Frog"
|
190
|
+
p.add_link "www2.fish.com", "Fish"
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
# Just needed to test that the project was passing into the block.
|
195
|
+
asserts(:name).equals "Test Project - (2a)"
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|