yolo 1.2.0 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/yolo/tasks/ios/release.rb +37 -15
- data/lib/yolo/tools/git.rb +2 -1
- data/spec/config/install_spec.rb +1 -0
- data/spec/config/settings_spec.rb +17 -0
- data/spec/deployment/base_deployer_spec.rb +1 -0
- data/spec/deployment/ota_spec.rb +7 -0
- data/spec/deployment/test_flight_spec.rb +1 -0
- data/spec/notify/email_spec.rb +17 -1
- data/spec/notify/ios/ota_email_spec.rb +1 -0
- data/spec/spec_helper.rb +0 -1
- data/spec/tasks/base_task_spec.rb +1 -0
- data/spec/tasks/ios/build_spec.rb +1 -0
- data/spec/tasks/ios/calabash_spec.rb +1 -0
- data/spec/tasks/ios/coverage_spec.rb +1 -0
- data/spec/tasks/ios/ocunit_spec.rb +1 -0
- data/spec/tasks/ios/release_spec.rb +1 -0
- data/spec/tools/git_spec.rb +45 -2
- data/spec/tools/ios/calabash_spec.rb +1 -0
- data/spec/tools/ios/coverage_spec.rb +1 -0
- data/spec/tools/ios/ipa_spec.rb +1 -0
- data/spec/tools/ios/release_notes_spec.rb +1 -0
- data/spec/tools/ios/xcode_spec.rb +1 -0
- metadata +2 -2
@@ -37,9 +37,10 @@ module Yolo
|
|
37
37
|
def app_path
|
38
38
|
files = []
|
39
39
|
Find.find(@xcode.build_path) do |path|
|
40
|
-
files << path if path =~
|
40
|
+
files << path if path =~ /\/Build\/Products\/.*-iphoneos\/#{name}\.app$/
|
41
41
|
end
|
42
|
-
files.sort_by { |filename| File.mtime(filename)}.last # get the latest
|
42
|
+
path = files.sort_by { |filename| File.mtime(filename)}.last # get the latest
|
43
|
+
path
|
43
44
|
end
|
44
45
|
|
45
46
|
#
|
@@ -118,24 +119,45 @@ module Yolo
|
|
118
119
|
# @param ipa_path [String] The full path to the IPA file to deploy
|
119
120
|
#
|
120
121
|
def deploy(ipa_path)
|
122
|
+
klass = deploy_class_from_string "#{self.deployment.to_s}"
|
123
|
+
if klass
|
124
|
+
klass.deploy(ipa_path, options) do |url, password|
|
125
|
+
send_notification(url, password)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
#
|
131
|
+
# Sends a notificaiton email from a deployment
|
132
|
+
# @param url [String] The URL which the build has been deplyed too
|
133
|
+
# @param password [String] The password required to install the build
|
134
|
+
#
|
135
|
+
# @return [type] [description]
|
136
|
+
def send_notification(url, password)
|
137
|
+
if url
|
138
|
+
mail_options = {
|
139
|
+
:to => self.mail_to,
|
140
|
+
:ota_url => url,
|
141
|
+
:subject => "New #{name} build: #{version}",
|
142
|
+
:title => name
|
143
|
+
}
|
144
|
+
mail_options[:ota_password] = password if password
|
145
|
+
@emailer.send(mail_options)
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
#
|
150
|
+
# Initlizes an object from a deployment string
|
151
|
+
# @param string [String] the deployment class name string
|
152
|
+
#
|
153
|
+
# @return [Object] an object of type specified in the paramater
|
154
|
+
def deploy_class_from_string(string)
|
121
155
|
klass = Object.const_get("Yolo").const_get("Deployment").const_get("#{self.deployment.to_s}").new
|
122
156
|
unless klass
|
123
157
|
@error_formatter.deployment_class_error(self.deployment.to_s)
|
124
158
|
return
|
125
159
|
end
|
126
|
-
|
127
|
-
klass.deploy(ipa_path, options) do |url, password|
|
128
|
-
if url
|
129
|
-
mail_options = {
|
130
|
-
:to => self.mail_to,
|
131
|
-
:ota_url => url,
|
132
|
-
:subject => "New #{name} build: #{version}",
|
133
|
-
:title => name
|
134
|
-
}
|
135
|
-
mail_options[:ota_password] = password if password
|
136
|
-
@emailer.send(mail_options)
|
137
|
-
end
|
138
|
-
end
|
160
|
+
klass
|
139
161
|
end
|
140
162
|
|
141
163
|
#
|
data/lib/yolo/tools/git.rb
CHANGED
data/spec/config/install_spec.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'yolo'
|
2
3
|
|
3
4
|
describe Yolo::Config::Settings do
|
4
5
|
|
@@ -47,6 +48,12 @@ describe Yolo::Config::Settings do
|
|
47
48
|
File.stub(:open)
|
48
49
|
File.stub(:exist?){true}
|
49
50
|
File.stub(:directory?){true}
|
51
|
+
@yaml = {
|
52
|
+
"deployment" => {
|
53
|
+
"api_token" => nil,
|
54
|
+
"team_token" => nil
|
55
|
+
}
|
56
|
+
}
|
50
57
|
end
|
51
58
|
|
52
59
|
it "should add an api token if missing" do
|
@@ -62,6 +69,16 @@ describe Yolo::Config::Settings do
|
|
62
69
|
Yolo::Config::Settings.instance.update_config
|
63
70
|
@yaml["deployment"]["team_token"].should eq("example")
|
64
71
|
end
|
72
|
+
|
73
|
+
it "should write the new config file to disk" do
|
74
|
+
YAML.stub(:load_file){@yaml}
|
75
|
+
file = mock(File)
|
76
|
+
file.stub(:write)
|
77
|
+
File.stub(:open).and_yield(file)
|
78
|
+
|
79
|
+
file.should_receive(:write)
|
80
|
+
Yolo::Config::Settings.instance.update_config
|
81
|
+
end
|
65
82
|
end
|
66
83
|
|
67
84
|
describe "when asked for settings" do
|
data/spec/deployment/ota_spec.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'yolo'
|
2
3
|
|
3
4
|
describe Yolo::Deployment::OTA do
|
4
5
|
|
@@ -90,6 +91,12 @@ describe Yolo::Deployment::OTA do
|
|
90
91
|
@ota.upload_complete("json")
|
91
92
|
end
|
92
93
|
|
94
|
+
it "should not continue if json parsing fails" do
|
95
|
+
JSON.stub(:parse){nil}
|
96
|
+
@error_formatter.should_receive(:deploy_failed)
|
97
|
+
@ota.upload_complete("json")
|
98
|
+
end
|
99
|
+
|
93
100
|
it "should parse the response" do
|
94
101
|
@ota.deploy("test", nil) do |url, password|
|
95
102
|
password.should eq("test_password")
|
data/spec/notify/email_spec.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'yolo'
|
2
3
|
|
3
4
|
describe Yolo::Notify::Email do
|
4
5
|
|
@@ -6,6 +7,9 @@ describe Yolo::Notify::Email do
|
|
6
7
|
Yolo::Formatters::ErrorFormatter.any_instance.stub(:puts)
|
7
8
|
Yolo::Formatters::ProgressFormatter.any_instance.stub(:puts)
|
8
9
|
|
10
|
+
@error_formatter = mock(Yolo::Formatters::ErrorFormatter)
|
11
|
+
Yolo::Formatters::ErrorFormatter.stub(:new){@error_formatter}
|
12
|
+
|
9
13
|
@settings = Yolo::Config::Settings
|
10
14
|
@settings.any_instance.stub(:mail_host){"test_host"}
|
11
15
|
@settings.any_instance.stub(:mail_from){"test_from"}
|
@@ -13,7 +17,6 @@ describe Yolo::Notify::Email do
|
|
13
17
|
@settings.any_instance.stub(:mail_account){"test_account"}
|
14
18
|
@settings.any_instance.stub(:mail_password){"test_password"}
|
15
19
|
@email = Yolo::Notify::Email.new
|
16
|
-
@email.stub(:body){"test body"}
|
17
20
|
@email.to = "test_to"
|
18
21
|
end
|
19
22
|
|
@@ -37,6 +40,10 @@ describe Yolo::Notify::Email do
|
|
37
40
|
it "should load a password" do
|
38
41
|
@email.password.should eq("test_password")
|
39
42
|
end
|
43
|
+
|
44
|
+
it "should return an empty body" do
|
45
|
+
@email.body({}).should eq("")
|
46
|
+
end
|
40
47
|
end
|
41
48
|
|
42
49
|
describe "when sending" do
|
@@ -47,6 +54,7 @@ describe Yolo::Notify::Email do
|
|
47
54
|
@smtp.stub(:send_message)
|
48
55
|
@smtp.stub(:enable_starttls)
|
49
56
|
@options = {}
|
57
|
+
@email.stub(:body){"test body"}
|
50
58
|
end
|
51
59
|
|
52
60
|
describe "with an account" do
|
@@ -65,6 +73,7 @@ describe Yolo::Notify::Email do
|
|
65
73
|
before do
|
66
74
|
@smtp.stub(:start).and_yield(@smtp)
|
67
75
|
@email.account = nil
|
76
|
+
@email.stub(:body){"test body"}
|
68
77
|
end
|
69
78
|
|
70
79
|
it "should not send with tls" do
|
@@ -76,6 +85,12 @@ describe Yolo::Notify::Email do
|
|
76
85
|
@smtp.should_receive(:send_message).with("test body", "test_from", "test_to")
|
77
86
|
@email.send(@options)
|
78
87
|
end
|
88
|
+
|
89
|
+
it "should output an error if missing details" do
|
90
|
+
@email.server = nil
|
91
|
+
@error_formatter.should_receive(:missing_email_details)
|
92
|
+
@email.send(@options)
|
93
|
+
end
|
79
94
|
end
|
80
95
|
|
81
96
|
describe "and loading options" do
|
@@ -83,6 +98,7 @@ describe Yolo::Notify::Email do
|
|
83
98
|
before do
|
84
99
|
@email.to = "test_to"
|
85
100
|
@email.send(@options)
|
101
|
+
@email.stub(:body){"test body"}
|
86
102
|
end
|
87
103
|
|
88
104
|
it "should load a server if missing" do
|
data/spec/spec_helper.rb
CHANGED
data/spec/tools/git_spec.rb
CHANGED
@@ -1,14 +1,19 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'yolo'
|
2
3
|
|
3
4
|
describe Yolo::Tools::Git do
|
4
5
|
|
5
6
|
before do
|
6
|
-
@git = Yolo::Tools::Git.new
|
7
|
-
@git.project_name = "test"
|
8
7
|
YAML.stub!(:load_file){{}}
|
9
8
|
Yolo::Formatters::ProgressFormatter.any_instance.stub(:puts)
|
10
9
|
end
|
11
10
|
|
11
|
+
before(:each) do
|
12
|
+
@git = Yolo::Tools::Git.new
|
13
|
+
@git.project_name = "test"
|
14
|
+
File.any_instance.stub(:write)
|
15
|
+
end
|
16
|
+
|
12
17
|
describe "when checking for new commits" do
|
13
18
|
before do
|
14
19
|
@git.stub(:update_commit)
|
@@ -25,6 +30,11 @@ describe Yolo::Tools::Git do
|
|
25
30
|
Yolo::Tools::Git.any_instance.stub(:latest_commit){"old"}
|
26
31
|
@git.has_new_commit("").should eq(false)
|
27
32
|
end
|
33
|
+
|
34
|
+
it "yaml tag should be empty if no project is set" do
|
35
|
+
@git.project_name = nil
|
36
|
+
@git.instance_eval{yaml_tag}.should eq("")
|
37
|
+
end
|
28
38
|
end
|
29
39
|
|
30
40
|
describe "when checking for new tags" do
|
@@ -43,6 +53,11 @@ describe Yolo::Tools::Git do
|
|
43
53
|
Yolo::Tools::Git.any_instance.stub(:latest_tag){"old"}
|
44
54
|
@git.has_new_tag("").should eq(false)
|
45
55
|
end
|
56
|
+
|
57
|
+
it "yaml commit should be empty if no project is set" do
|
58
|
+
@git.project_name = nil
|
59
|
+
@git.instance_eval{yaml_commit}.should eq("")
|
60
|
+
end
|
46
61
|
end
|
47
62
|
|
48
63
|
describe "when updating tags and commits" do
|
@@ -71,6 +86,20 @@ describe Yolo::Tools::Git do
|
|
71
86
|
@git.instance_eval{yaml_commit}.should match("new commit")
|
72
87
|
end
|
73
88
|
|
89
|
+
it "should overwrite the existing tag" do
|
90
|
+
@yaml = {"test" => {"tag" => "v1.2"}}
|
91
|
+
@git.instance_variable_set(:@yaml, @yaml)
|
92
|
+
@git.instance_eval{update_tag("new tag")}
|
93
|
+
@yaml["test"]["tag"].should eq("new tag")
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should overwrite the existing commit" do
|
97
|
+
@yaml = {"test" => {"commit" => "1234567891023"}}
|
98
|
+
@git.instance_variable_set(:@yaml, @yaml)
|
99
|
+
@git.instance_eval{update_commit("new commit")}
|
100
|
+
@yaml["test"]["commit"].should eq("new commit")
|
101
|
+
end
|
102
|
+
|
74
103
|
end
|
75
104
|
|
76
105
|
describe "when saving data" do
|
@@ -96,6 +125,20 @@ describe Yolo::Tools::Git do
|
|
96
125
|
@git.instance_eval{latest_tag}.should eq("v1.0")
|
97
126
|
end
|
98
127
|
|
128
|
+
it "should not get invalid tags" do
|
129
|
+
@log = ""
|
130
|
+
@log.stub(:scan){}
|
131
|
+
@git.stub(:log){@log}
|
132
|
+
@git.instance_eval{latest_tag}.should eq("")
|
133
|
+
end
|
134
|
+
|
135
|
+
it "should not get invalid commits" do
|
136
|
+
@log = ""
|
137
|
+
@log.stub(:scan){[]}
|
138
|
+
@git.stub(:log){@log}
|
139
|
+
@git.instance_eval{latest_commit}.should eq("")
|
140
|
+
end
|
141
|
+
|
99
142
|
it "should ignore jenkins tags" do
|
100
143
|
@git.stub(:log){"tag: jenkins-tag, head, tag: v1.3.1, master"}
|
101
144
|
@git.instance_eval{latest_tag}.should_not eq("jenkins-tag")
|
data/spec/tools/ios/ipa_spec.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yolo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-05-
|
12
|
+
date: 2013-05-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: xcodebuild-rb
|