releasy 0.2.0rc1
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/.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
|