xcodebuild-rb 0.1.0
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/LICENSE +19 -0
- data/README.md +59 -0
- data/bin/rbxcb +3 -0
- data/lib/xcode_build.rb +27 -0
- data/lib/xcode_build/build_action.rb +72 -0
- data/lib/xcode_build/build_step.rb +47 -0
- data/lib/xcode_build/formatters.rb +6 -0
- data/lib/xcode_build/formatters/progress_formatter.rb +99 -0
- data/lib/xcode_build/output_translator.rb +82 -0
- data/lib/xcode_build/reporter.rb +22 -0
- data/lib/xcode_build/reporting/build_reporting.rb +61 -0
- data/lib/xcode_build/reporting/clean_reporting.rb +59 -0
- data/lib/xcode_build/tasks/build_task.rb +84 -0
- data/lib/xcode_build/translations.rb +20 -0
- data/lib/xcode_build/translations/building.rb +101 -0
- data/lib/xcode_build/translations/cleaning.rb +96 -0
- data/lib/xcode_build/utilities/colorize.rb +45 -0
- data/lib/xcodebuild.rb +1 -0
- data/spec/build_task_spec.rb +142 -0
- data/spec/output_translator_spec.rb +52 -0
- data/spec/reporting/build_reporting_spec.rb +305 -0
- data/spec/reporting/clean_reporting_spec.rb +276 -0
- data/spec/spec_helper.rb +31 -0
- data/spec/translations/building_translations_spec.rb +167 -0
- data/spec/translations/cleaning_translations_spec.rb +144 -0
- metadata +164 -0
@@ -0,0 +1,144 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe XcodeBuild::OutputTranslator do
|
4
|
+
let(:delegate) { mock('delegate', :respond_to? => true) }
|
5
|
+
let(:translator) { XcodeBuild::OutputTranslator.new(delegate, ignore_global_translations: true) }
|
6
|
+
let(:translation) { translator.translations[0] }
|
7
|
+
|
8
|
+
before do
|
9
|
+
translator.use_translation XcodeBuild::Translations::Cleaning
|
10
|
+
|
11
|
+
delegate_should_respond_to(:beginning_translation_of_line)
|
12
|
+
delegate.stub(:beginning_translation_of_line).and_return(true)
|
13
|
+
|
14
|
+
translator.should have(1).translations
|
15
|
+
end
|
16
|
+
|
17
|
+
context "before it detects that a build has started" do
|
18
|
+
it "reports that it is not cleaning" do
|
19
|
+
translation.should_not be_cleaning
|
20
|
+
end
|
21
|
+
|
22
|
+
it "notifies the delegate of the start of a clean with the default configuration" do
|
23
|
+
delegate.should_receive(:clean_started).with(
|
24
|
+
target: "ExampleProject",
|
25
|
+
project: "ExampleProject",
|
26
|
+
configuration: "Release",
|
27
|
+
default: true
|
28
|
+
)
|
29
|
+
translator << "=== CLEAN NATIVE TARGET ExampleProject OF PROJECT ExampleProject WITH THE DEFAULT CONFIGURATION (Release) ==="
|
30
|
+
end
|
31
|
+
|
32
|
+
it "notifies the delegate of the start of a clean with a non-default configuration" do
|
33
|
+
delegate.should_receive(:clean_started).with(
|
34
|
+
target: "ExampleProject",
|
35
|
+
project: "ExampleProject",
|
36
|
+
configuration: "Debug",
|
37
|
+
default: false
|
38
|
+
)
|
39
|
+
translator << "=== CLEAN NATIVE TARGET ExampleProject OF PROJECT ExampleProject WITH THE CONFIGURATION Debug ==="
|
40
|
+
end
|
41
|
+
|
42
|
+
it "treats :clean_started as a required delegate message and raise if it doesn't respond" do
|
43
|
+
delegate_should_not_respond_to(:clean_started)
|
44
|
+
-> {
|
45
|
+
translator << "=== CLEAN NATIVE TARGET ExampleProject OF PROJECT ExampleProject WITH THE CONFIGURATION Debug ==="
|
46
|
+
|
47
|
+
}.should raise_error(XcodeBuild::OutputTranslator::MissingDelegateMethodError)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
context "once a clean start has been detected" do
|
52
|
+
before do
|
53
|
+
translation.stub(:cleaning?).and_return(true)
|
54
|
+
end
|
55
|
+
|
56
|
+
it "notifies the delegate of a single clean step" do
|
57
|
+
delegate.should_receive(:clean_step).with(
|
58
|
+
type: "Clean.Remove",
|
59
|
+
arguments: ["clean", "build/Release-iphoneos/ExampleProject.app"]
|
60
|
+
)
|
61
|
+
translator << "\n"
|
62
|
+
translator << "Clean.Remove clean build/Release-iphoneos/ExampleProject.app"
|
63
|
+
end
|
64
|
+
|
65
|
+
it "notifies the delegate when the clean failed" do
|
66
|
+
delegate.should_receive(:clean_failed)
|
67
|
+
translator << "\n\n\n"
|
68
|
+
translator << "** CLEAN FAILED **"
|
69
|
+
end
|
70
|
+
|
71
|
+
it "treats :clean_failed as a required delegate message and raise if it doesn't respond" do
|
72
|
+
delegate_should_not_respond_to(:clean_failed)
|
73
|
+
-> {
|
74
|
+
translator << "** CLEAN FAILED **"
|
75
|
+
|
76
|
+
}.should raise_error(XcodeBuild::OutputTranslator::MissingDelegateMethodError)
|
77
|
+
end
|
78
|
+
|
79
|
+
it "notifies the delegate when the clean succeeded" do
|
80
|
+
delegate.should_receive(:clean_succeeded)
|
81
|
+
translator << "\n\n\n"
|
82
|
+
translator << "** CLEAN SUCCEEDED **"
|
83
|
+
end
|
84
|
+
|
85
|
+
it "treats :clean_succeeded as a required delegate message and raise if it doesn't respond" do
|
86
|
+
delegate_should_not_respond_to(:clean_succeeded)
|
87
|
+
-> {
|
88
|
+
translator << "** CLEAN SUCCEEDED **"
|
89
|
+
|
90
|
+
}.should raise_error(XcodeBuild::OutputTranslator::MissingDelegateMethodError)
|
91
|
+
end
|
92
|
+
|
93
|
+
it "notifies the delegate of clean step failures" do
|
94
|
+
delegate.should_receive(:clean_step_failed).with(
|
95
|
+
type: "Clean.Remove",
|
96
|
+
arguments: ["clean", "build/Release-iphoneos/ExampleProject.app"]
|
97
|
+
)
|
98
|
+
translator << "The following build commands failed:"
|
99
|
+
translator << "\tClean.Remove clean build/Release-iphoneos/ExampleProject.app"
|
100
|
+
translator << "(1 failure)"
|
101
|
+
end
|
102
|
+
|
103
|
+
it "treats :clean_step_failed as an optional delegate message" do
|
104
|
+
delegate_should_not_respond_to(:clean_step_failed)
|
105
|
+
delegate.should_not_receive(:clean_step_failed)
|
106
|
+
translator << "The following build commands failed:"
|
107
|
+
translator << "\tClean.Remove clean build/Release-iphoneos/ExampleProject.app"
|
108
|
+
translator << "(1 failure)"
|
109
|
+
end
|
110
|
+
|
111
|
+
it "notifies the delegate of errors for different clean steps" do
|
112
|
+
delegate.should_receive(:clean_error_detected).with(
|
113
|
+
message: "Error Domain=NSCocoaErrorDomain Code=513 ExampleProject couldn't be removed"
|
114
|
+
)
|
115
|
+
|
116
|
+
translator << "Clean.Remove clean build/Release-iphoneos/ExampleProject.app"
|
117
|
+
translator << "error: Error Domain=NSCocoaErrorDomain Code=513 ExampleProject couldn't be removed"
|
118
|
+
translator << "Command builtin-rm failed with exit code -1"
|
119
|
+
translator << ""
|
120
|
+
end
|
121
|
+
|
122
|
+
it "notifies the delegate of multiple errors for the same clean step" do
|
123
|
+
delegate.should_receive(:clean_error_detected).with(
|
124
|
+
message: "Error Domain=NSCocoaErrorDomain Code=513 ExampleProject couldn't be removed"
|
125
|
+
).twice
|
126
|
+
|
127
|
+
translator << "Clean.Remove clean build/Release-iphoneos/ExampleProject.app"
|
128
|
+
translator << "error: Error Domain=NSCocoaErrorDomain Code=513 ExampleProject couldn't be removed"
|
129
|
+
translator << "error: Error Domain=NSCocoaErrorDomain Code=513 ExampleProject couldn't be removed"
|
130
|
+
translator << "Command builtin-rm failed with exit code -1"
|
131
|
+
translator << ""
|
132
|
+
end
|
133
|
+
|
134
|
+
it "treats :clean_error_detected as an optional delegate message" do
|
135
|
+
delegate_should_not_respond_to(:clean_error_detected)
|
136
|
+
delegate.should_not_receive(:clean_error_detected)
|
137
|
+
|
138
|
+
translator << "Clean.Remove clean build/Release-iphoneos/ExampleProject.app"
|
139
|
+
translator << "error: Error Domain=NSCocoaErrorDomain Code=513 ExampleProject couldn't be removed"
|
140
|
+
translator << "Command builtin-rm failed with exit code -1"
|
141
|
+
translator << ""
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
metadata
ADDED
@@ -0,0 +1,164 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: xcodebuild-rb
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Luke Redpath
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-01-30 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: state_machine
|
16
|
+
requirement: &2154406900 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.1.2
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *2154406900
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rspec
|
27
|
+
requirement: &2154406500 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *2154406500
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rake
|
38
|
+
requirement: &2154405960 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 0.9.2.2
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *2154405960
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rdoc
|
49
|
+
requirement: &2154405460 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.12'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *2154405460
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: guard-rspec
|
60
|
+
requirement: &2154405080 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *2154405080
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: growl
|
71
|
+
requirement: &2154404620 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *2154404620
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: timecop
|
82
|
+
requirement: &2154404200 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *2154404200
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: chronic
|
93
|
+
requirement: &2154403780 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
type: :development
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *2154403780
|
102
|
+
description:
|
103
|
+
email: luke@lukeredpath.co.uk
|
104
|
+
executables:
|
105
|
+
- rbxcb
|
106
|
+
extensions: []
|
107
|
+
extra_rdoc_files:
|
108
|
+
- README.md
|
109
|
+
files:
|
110
|
+
- LICENSE
|
111
|
+
- README.md
|
112
|
+
- bin/rbxcb
|
113
|
+
- spec/build_task_spec.rb
|
114
|
+
- spec/output_translator_spec.rb
|
115
|
+
- spec/reporting/build_reporting_spec.rb
|
116
|
+
- spec/reporting/clean_reporting_spec.rb
|
117
|
+
- spec/spec_helper.rb
|
118
|
+
- spec/translations/building_translations_spec.rb
|
119
|
+
- spec/translations/cleaning_translations_spec.rb
|
120
|
+
- lib/xcode_build/build_action.rb
|
121
|
+
- lib/xcode_build/build_step.rb
|
122
|
+
- lib/xcode_build/formatters/progress_formatter.rb
|
123
|
+
- lib/xcode_build/formatters.rb
|
124
|
+
- lib/xcode_build/output_translator.rb
|
125
|
+
- lib/xcode_build/reporter.rb
|
126
|
+
- lib/xcode_build/reporting/build_reporting.rb
|
127
|
+
- lib/xcode_build/reporting/clean_reporting.rb
|
128
|
+
- lib/xcode_build/tasks/build_task.rb
|
129
|
+
- lib/xcode_build/translations/building.rb
|
130
|
+
- lib/xcode_build/translations/cleaning.rb
|
131
|
+
- lib/xcode_build/translations.rb
|
132
|
+
- lib/xcode_build/utilities/colorize.rb
|
133
|
+
- lib/xcode_build.rb
|
134
|
+
- lib/xcodebuild.rb
|
135
|
+
homepage: http://github.com/lukeredpath/xcodebuild-rb
|
136
|
+
licenses: []
|
137
|
+
post_install_message:
|
138
|
+
rdoc_options:
|
139
|
+
- --main
|
140
|
+
- README.md
|
141
|
+
require_paths:
|
142
|
+
- lib
|
143
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
144
|
+
none: false
|
145
|
+
requirements:
|
146
|
+
- - ! '>='
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
version: '0'
|
149
|
+
segments:
|
150
|
+
- 0
|
151
|
+
hash: -953845023481219688
|
152
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
158
|
+
requirements: []
|
159
|
+
rubyforge_project:
|
160
|
+
rubygems_version: 1.8.11
|
161
|
+
signing_key:
|
162
|
+
specification_version: 3
|
163
|
+
summary: Build Xcode projects using Rake
|
164
|
+
test_files: []
|