buildr-as3 0.2.19 → 0.2.20.pre
Sign up to get free protection for your applications and to get access to all the features.
- data/.rspec +1 -0
- data/Gemfile +5 -1
- data/Rakefile +19 -11
- data/VERSION +1 -1
- data/buildr-as3.gemspec +36 -10
- data/lib/buildr/as3/compiler.rb +3 -1
- data/lib/buildr/as3/compiler/aircompc.rb +5 -3
- data/lib/buildr/as3/compiler/airmxmlc.rb +5 -3
- data/lib/buildr/as3/compiler/base.rb +19 -14
- data/lib/buildr/as3/compiler/compc.rb +11 -2
- data/lib/buildr/as3/compiler/mxmlc.rb +11 -2
- data/lib/buildr/as3/compiler/task.rb +32 -1
- data/lib/buildr/as3/test/flexunit4.rb +1 -1
- data/lib/buildr/as3/toolkits/flexsdk.rb +21 -0
- data/rake/jeweler.rb +17 -0
- data/rake/jeweler_prerelease_tasks.rb +50 -0
- data/rake/pre_release_gemspec.rb +80 -0
- data/rake/pre_release_to_git.rb +59 -0
- data/spec/as3/compiler/aircompc_spec.rb +160 -0
- data/spec/as3/compiler/airmxmlc_spec.rb +158 -0
- data/spec/as3/compiler/compc_spec.rb +160 -0
- data/spec/as3/compiler/mxmlc_spec.rb +160 -0
- data/spec/as3/compiler/task_spec.rb +66 -0
- data/spec/as3/project_spec.rb +53 -0
- data/spec/sandbox.rb +201 -0
- data/spec/spec_helper.rb +376 -0
- metadata +73 -23
- data/test/helper.rb +0 -18
- data/test/test_buildr_as3.rb +0 -7
@@ -0,0 +1,80 @@
|
|
1
|
+
class Jeweler
|
2
|
+
module Commands
|
3
|
+
class PreReleaseGemspec
|
4
|
+
attr_accessor :gemspec, :version, :repo, :output, :gemspec_helper, :base_dir
|
5
|
+
|
6
|
+
def initialize(attributes = {})
|
7
|
+
self.output = $stdout
|
8
|
+
|
9
|
+
attributes.each_pair do |key, value|
|
10
|
+
send("#{key}=", value)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def run
|
15
|
+
unless clean_staging_area?
|
16
|
+
system "git status"
|
17
|
+
raise "Unclean staging area! Be sure to commit or .gitignore everything first. See `git status` above."
|
18
|
+
end
|
19
|
+
|
20
|
+
repo.checkout('develop')
|
21
|
+
|
22
|
+
regenerate_gemspec!
|
23
|
+
commit_gemspec! if gemspec_changed?
|
24
|
+
|
25
|
+
output.puts "Pushing develop to origin"
|
26
|
+
repo.push
|
27
|
+
end
|
28
|
+
|
29
|
+
def clean_staging_area?
|
30
|
+
# surprisingly simpler than ruby-git
|
31
|
+
`git ls-files --deleted --modified --others --exclude-standard` == ""
|
32
|
+
end
|
33
|
+
|
34
|
+
def commit_gemspec!
|
35
|
+
gemspec_gitpath = working_subdir.join(gemspec_helper.path)
|
36
|
+
repo.add(gemspec_gitpath.to_s)
|
37
|
+
output.puts "Committing #{gemspec_gitpath}"
|
38
|
+
repo.commit "Regenerate gemspec for version #{version}"
|
39
|
+
end
|
40
|
+
|
41
|
+
def regenerate_gemspec!
|
42
|
+
gemspec_helper.update_version(version)
|
43
|
+
gemspec_helper.write
|
44
|
+
end
|
45
|
+
|
46
|
+
def gemspec_changed?
|
47
|
+
# OMGHAX. ruby-git status always ends up being 'M', so let's do it a crazy way
|
48
|
+
system "git status -s #{working_subdir.join(gemspec_helper.path)} | grep #{working_subdir.join(gemspec_helper.path)} > /dev/null 2>/dev/null"
|
49
|
+
end
|
50
|
+
|
51
|
+
def gemspec_helper
|
52
|
+
@gemspec_helper ||= Jeweler::GemSpecHelper.new(self.gemspec, self.base_dir)
|
53
|
+
end
|
54
|
+
|
55
|
+
def working_subdir
|
56
|
+
return @working_subdir if @working_subdir
|
57
|
+
cwd = base_dir_path
|
58
|
+
@working_subdir = cwd.relative_path_from(Pathname.new(repo.dir.path))
|
59
|
+
@working_subdir
|
60
|
+
end
|
61
|
+
|
62
|
+
def base_dir_path
|
63
|
+
Pathname.new(base_dir).realpath
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.build_for(jeweler)
|
67
|
+
command = self.new
|
68
|
+
|
69
|
+
command.base_dir = jeweler.base_dir
|
70
|
+
command.gemspec = jeweler.gemspec
|
71
|
+
command.version = jeweler.version
|
72
|
+
command.repo = jeweler.repo
|
73
|
+
command.output = jeweler.output
|
74
|
+
command.gemspec_helper = jeweler.gemspec_helper
|
75
|
+
|
76
|
+
command
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
class Jeweler
|
2
|
+
module Commands
|
3
|
+
class PreReleaseToGit
|
4
|
+
attr_accessor :gemspec, :version, :repo, :output, :gemspec_helper, :base_dir
|
5
|
+
|
6
|
+
def initialize(attributes = {})
|
7
|
+
self.output = $stdout
|
8
|
+
|
9
|
+
attributes.each_pair do |key, value|
|
10
|
+
send("#{key}=", value)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def run
|
15
|
+
unless clean_staging_area?
|
16
|
+
system "git status"
|
17
|
+
raise "Unclean staging area! Be sure to commit or .gitignore everything first. See `git status` above."
|
18
|
+
end
|
19
|
+
|
20
|
+
repo.checkout('develop')
|
21
|
+
repo.push
|
22
|
+
|
23
|
+
if release_not_tagged?
|
24
|
+
output.puts "Tagging #{release_tag}"
|
25
|
+
repo.add_tag(release_tag)
|
26
|
+
|
27
|
+
output.puts "Pushing #{release_tag} to origin"
|
28
|
+
repo.push('origin', release_tag)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def clean_staging_area?
|
33
|
+
`git ls-files --deleted --modified --others --exclude-standard` == ""
|
34
|
+
end
|
35
|
+
|
36
|
+
def release_tag
|
37
|
+
"v#{version}"
|
38
|
+
end
|
39
|
+
|
40
|
+
def release_not_tagged?
|
41
|
+
tag = repo.tag(release_tag) rescue nil
|
42
|
+
tag.nil?
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.build_for(jeweler)
|
46
|
+
command = self.new
|
47
|
+
|
48
|
+
command.base_dir = jeweler.base_dir
|
49
|
+
command.gemspec = jeweler.gemspec
|
50
|
+
command.version = jeweler.version
|
51
|
+
command.repo = jeweler.repo
|
52
|
+
command.output = jeweler.output
|
53
|
+
command.gemspec_helper = jeweler.gemspec_helper
|
54
|
+
|
55
|
+
command
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,160 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'spec_helper'))
|
2
|
+
|
3
|
+
describe Buildr::AS3::Compiler::AirCompc do
|
4
|
+
|
5
|
+
it 'should not identify itself from source directories' do
|
6
|
+
write 'src/main/java/com/example/Test.as', 'package com.example{ class Test {} }'
|
7
|
+
define('foo').compile.compiler.should_not eql(:aircompc)
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should report the language as :actionscript' do
|
11
|
+
define('foo').compile.using(:aircompc).language.should eql(:actionscript)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should set the target directory to target/bin' do
|
15
|
+
define 'foo' do
|
16
|
+
lambda { compile.using(:aircompc) }.should change { compile.target.to_s }.to(File.expand_path('target/bin'))
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should not override existing target directory' do
|
21
|
+
define 'foo' do
|
22
|
+
compile.into('classes')
|
23
|
+
lambda { compile.using(:aircompc) }.should_not change { compile.target }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should not change existing list of sources' do
|
28
|
+
define 'foo' do
|
29
|
+
compile.from('sources')
|
30
|
+
lambda { compile.using(:aircompc) }.should_not change { compile.sources }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
after do
|
35
|
+
Buildr.options.debug = nil
|
36
|
+
ENV.delete "debug"
|
37
|
+
ENV.delete "DEBUG"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
describe "Buildr::AS3::Compiler::AirCompc compiler options" do
|
44
|
+
|
45
|
+
def compile_task
|
46
|
+
@compile_task ||= define('foo').compile.using( :aircompc, :flexsdk => FlexSDK.new("4.5.0.20967") )
|
47
|
+
end
|
48
|
+
|
49
|
+
def flex_sdk
|
50
|
+
compile_task.options.flexsdk
|
51
|
+
end
|
52
|
+
|
53
|
+
def output
|
54
|
+
compile_task.options.output
|
55
|
+
end
|
56
|
+
|
57
|
+
def target
|
58
|
+
compile_task.target
|
59
|
+
end
|
60
|
+
|
61
|
+
def dependencies
|
62
|
+
compile_task.as3_dependencies
|
63
|
+
end
|
64
|
+
|
65
|
+
def sources
|
66
|
+
compile_task.sources
|
67
|
+
end
|
68
|
+
|
69
|
+
def aircompc_args
|
70
|
+
compiler.send(:compiler_args,dependencies,flex_sdk,output,sources)
|
71
|
+
end
|
72
|
+
|
73
|
+
def compiler
|
74
|
+
compile_task.instance_eval { @compiler }
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'should set warnings option to true by default' do
|
78
|
+
compile_task.options.warnings.should be_true
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'should set debug option to true by default' do
|
82
|
+
compile_task.options.debug.should be_true
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'should set debug option to false based on Buildr.options' do
|
86
|
+
Buildr.options.debug = false
|
87
|
+
compile_task.options.debug.should be_false
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'should set debug option to false based on debug environment variable' do
|
91
|
+
ENV['debug'] = 'no'
|
92
|
+
compile_task.options.debug.should be_false
|
93
|
+
end
|
94
|
+
|
95
|
+
it 'should set debug option to false based on DEBUG environment variable' do
|
96
|
+
ENV['DEBUG'] = 'no'
|
97
|
+
compile_task.options.debug.should be_false
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'should use -debug=true argument when debug option is true' do
|
101
|
+
compile_task.using(:debug=>true)
|
102
|
+
aircompc_args.should include('-debug=true')
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'should not use -debug=true argument when debug option is false' do
|
106
|
+
compile_task.using(:debug=>false)
|
107
|
+
aircompc_args.should_not include('-debug=true')
|
108
|
+
end
|
109
|
+
|
110
|
+
it 'should define CONFIG::debug,true when debug option is true' do
|
111
|
+
compile_task.using(:debug=>true)
|
112
|
+
aircompc_args.should include('-define+=CONFIG::debug,true')
|
113
|
+
end
|
114
|
+
|
115
|
+
it 'should define CONFIG::debug,false when debug option is false' do
|
116
|
+
compile_task.using(:debug=>false)
|
117
|
+
aircompc_args.should include('-define+=CONFIG::debug,false')
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'should use -warnings=true argument when warnings option is true' do
|
121
|
+
compile_task.using(:warnings=>true)
|
122
|
+
aircompc_args.should_not include('-warnings=false')
|
123
|
+
end
|
124
|
+
|
125
|
+
it 'should not use -warnings=true argument when warnings option is false' do
|
126
|
+
compile_task.using(:warnings=>false)
|
127
|
+
aircompc_args.should include('-warnings=false')
|
128
|
+
end
|
129
|
+
|
130
|
+
it 'should point to the correct compiler jar' do
|
131
|
+
compiler.instance_eval{ compiler_jar }.should eql( flex_sdk.compc_jar )
|
132
|
+
end
|
133
|
+
|
134
|
+
it 'should identify itself as an air compiler' do
|
135
|
+
compiler.instance_eval{ air }.should eql( true )
|
136
|
+
end
|
137
|
+
|
138
|
+
it "should use +configname=air ever" do
|
139
|
+
aircompc_args.should include('+configname=air')
|
140
|
+
end
|
141
|
+
|
142
|
+
it "should use air config file by default" do
|
143
|
+
aircompc_args.should include(flex_sdk.air_config)
|
144
|
+
end
|
145
|
+
|
146
|
+
it "should not use flex config file by default" do
|
147
|
+
aircompc_args.should_not include(flex_sdk.flex_config)
|
148
|
+
end
|
149
|
+
|
150
|
+
it "should not identify itself as a test task when it's not" do
|
151
|
+
compiler.send(:is_test,sources,target,dependencies).should eql(false)
|
152
|
+
end
|
153
|
+
|
154
|
+
after do
|
155
|
+
Buildr.options.debug = nil
|
156
|
+
ENV.delete "debug"
|
157
|
+
ENV.delete "DEBUG"
|
158
|
+
end
|
159
|
+
|
160
|
+
end
|
@@ -0,0 +1,158 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'spec_helper'))
|
2
|
+
|
3
|
+
describe Buildr::AS3::Compiler::AirMxmlc do
|
4
|
+
|
5
|
+
it 'should not identify itself from source directories' do
|
6
|
+
write 'src/main/java/com/example/Test.as', 'package com.example{ class Test {} }'
|
7
|
+
define('foo').compile.compiler.should_not eql(:airmxmlc)
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should report the language as :actionscript' do
|
11
|
+
define('foo').compile.using(:airmxmlc).language.should eql(:actionscript)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should set the target directory to target/bin' do
|
15
|
+
define 'foo' do
|
16
|
+
lambda { compile.using(:airmxmlc) }.should change { compile.target.to_s }.to(File.expand_path('target/bin'))
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should not override existing target directory' do
|
21
|
+
define 'foo' do
|
22
|
+
compile.into('classes')
|
23
|
+
lambda { compile.using(:airmxmlc) }.should_not change { compile.target }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should not change existing list of sources' do
|
28
|
+
define 'foo' do
|
29
|
+
compile.from('sources')
|
30
|
+
lambda { compile.using(:airmxmlc) }.should_not change { compile.sources }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
after do
|
35
|
+
Buildr.options.debug = nil
|
36
|
+
ENV.delete "debug"
|
37
|
+
ENV.delete "DEBUG"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "Buildr::AS3::Compiler::AirMxmlc compiler options" do
|
42
|
+
|
43
|
+
def compile_task
|
44
|
+
@compile_task ||= define('foo').compile.using( :airmxmlc, :flexsdk => FlexSDK.new("4.5.0.20967") )
|
45
|
+
end
|
46
|
+
|
47
|
+
def flex_sdk
|
48
|
+
compile_task.options.flexsdk
|
49
|
+
end
|
50
|
+
|
51
|
+
def output
|
52
|
+
compile_task.options.output
|
53
|
+
end
|
54
|
+
|
55
|
+
def target
|
56
|
+
compile_task.target
|
57
|
+
end
|
58
|
+
|
59
|
+
def dependencies
|
60
|
+
compile_task.as3_dependencies
|
61
|
+
end
|
62
|
+
|
63
|
+
def sources
|
64
|
+
compile_task.sources
|
65
|
+
end
|
66
|
+
|
67
|
+
def airmxmlc_args
|
68
|
+
compiler.send(:compiler_args,dependencies,flex_sdk,output,sources)
|
69
|
+
end
|
70
|
+
|
71
|
+
def compiler
|
72
|
+
compile_task.instance_eval { @compiler }
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'should set warnings option to true by default' do
|
76
|
+
compile_task.options.warnings.should be_true
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'should set debug option to true by default' do
|
80
|
+
compile_task.options.debug.should be_true
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'should set debug option to false based on Buildr.options' do
|
84
|
+
Buildr.options.debug = false
|
85
|
+
compile_task.options.debug.should be_false
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'should set debug option to false based on debug environment variable' do
|
89
|
+
ENV['debug'] = 'no'
|
90
|
+
compile_task.options.debug.should be_false
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'should set debug option to false based on DEBUG environment variable' do
|
94
|
+
ENV['DEBUG'] = 'no'
|
95
|
+
compile_task.options.debug.should be_false
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'should use -debug=true argument when debug option is true' do
|
99
|
+
compile_task.using(:debug=>true)
|
100
|
+
airmxmlc_args.should include('-debug=true')
|
101
|
+
end
|
102
|
+
|
103
|
+
it 'should not use -debug=true argument when debug option is false' do
|
104
|
+
compile_task.using(:debug=>false)
|
105
|
+
airmxmlc_args.should_not include('-debug=true')
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'should define CONFIG::debug,true when debug option is true' do
|
109
|
+
compile_task.using(:debug=>true)
|
110
|
+
airmxmlc_args.should include('-define+=CONFIG::debug,true')
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'should define CONFIG::debug,false when debug option is false' do
|
114
|
+
compile_task.using(:debug=>false)
|
115
|
+
airmxmlc_args.should include('-define+=CONFIG::debug,false')
|
116
|
+
end
|
117
|
+
|
118
|
+
it 'should use -warnings=true argument when warnings option is true' do
|
119
|
+
compile_task.using(:warnings=>true)
|
120
|
+
airmxmlc_args.should_not include('-warnings=false')
|
121
|
+
end
|
122
|
+
|
123
|
+
it 'should not use -warnings=true argument when warnings option is false' do
|
124
|
+
compile_task.using(:warnings=>false)
|
125
|
+
airmxmlc_args.should include('-warnings=false')
|
126
|
+
end
|
127
|
+
|
128
|
+
it 'should point to the correct compiler jar' do
|
129
|
+
compiler.instance_eval{ compiler_jar }.should eql( flex_sdk.mxmlc_jar )
|
130
|
+
end
|
131
|
+
|
132
|
+
it 'should identify itself as an air compiler' do
|
133
|
+
compiler.instance_eval{ air }.should eql( true )
|
134
|
+
end
|
135
|
+
|
136
|
+
it "should use +configname=air ever" do
|
137
|
+
airmxmlc_args.should include('+configname=air')
|
138
|
+
end
|
139
|
+
|
140
|
+
it "should use air config file by default" do
|
141
|
+
airmxmlc_args.should include(flex_sdk.air_config)
|
142
|
+
end
|
143
|
+
|
144
|
+
it "should not use flex config file by default" do
|
145
|
+
airmxmlc_args.should_not include(flex_sdk.flex_config)
|
146
|
+
end
|
147
|
+
|
148
|
+
it "should not identify itself as a test task when it's not" do
|
149
|
+
compiler.send(:is_test,sources,target,dependencies).should eql(false)
|
150
|
+
end
|
151
|
+
|
152
|
+
after do
|
153
|
+
Buildr.options.debug = nil
|
154
|
+
ENV.delete "debug"
|
155
|
+
ENV.delete "DEBUG"
|
156
|
+
end
|
157
|
+
|
158
|
+
end
|