scan 0.5.2 → 0.6.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e45976649b2e9fd5eb6c7dec135c9972d14fc49a
4
- data.tar.gz: a750b23c56d56e7918c200f242ba3452cac5bcaa
3
+ metadata.gz: 7e3a58da282847da8eefa3e93ca6d62e8e3792fe
4
+ data.tar.gz: 270b1fff06f780483705fcadd5c1de5e45226052
5
5
  SHA512:
6
- metadata.gz: aa2e8fbdc5593c33e9beb4fabb2cec95dbb9a5482a7584fce1c07800eb415bee302a3e77318ea2965316662a9fdd695fdbc76945be2cd6c52771f3fe75328071
7
- data.tar.gz: 1474af4717f5c30f7d10fadd0cce22a3d678728f0e5ad63a1aad05c7add87781de40071c679511da125bbf1d2966e514ee15c8962211c2c2ab3e71d3a334176c
6
+ metadata.gz: e90d79dbf59e8c027d88d1b6608bf8f205875ec40f7acc1b358ffd043679702d9367fef38a8b2ca244285d054701cf1144a8784708f59ae37b7ddfe9c1c85c44
7
+ data.tar.gz: 0a4cc906623c4eecbff1550be6beb86b4d1cc52f3885e63f6a64cc5f0a061345c9264dfd6f7ecdac08f325b1e55b829250fdf6e6352038217fba6bb1f2a33a20
data/README.md CHANGED
@@ -1,24 +1,24 @@
1
1
  <h3 align="center">
2
- <a href="https://github.com/fastlane/fastlane">
3
- <img src="assets/fastlane.png" width="150" />
2
+ <a href="https://github.com/fastlane/fastlane/tree/master/fastlane">
3
+ <img src="../fastlane/assets/fastlane.png" width="150" />
4
4
  <br />
5
5
  fastlane
6
6
  </a>
7
7
  </h3>
8
8
  <p align="center">
9
- <a href="https://github.com/fastlane/deliver">deliver</a> &bull;
10
- <a href="https://github.com/fastlane/snapshot">snapshot</a> &bull;
11
- <a href="https://github.com/fastlane/frameit">frameit</a> &bull;
12
- <a href="https://github.com/fastlane/pem">pem</a> &bull;
13
- <a href="https://github.com/fastlane/sigh">sigh</a> &bull;
14
- <a href="https://github.com/fastlane/produce">produce</a> &bull;
15
- <a href="https://github.com/fastlane/cert">cert</a> &bull;
16
- <a href="https://github.com/fastlane/spaceship">spaceship</a> &bull;
17
- <a href="https://github.com/fastlane/pilot">pilot</a> &bull;
9
+ <a href="https://github.com/fastlane/fastlane/tree/master/deliver">deliver</a> &bull;
10
+ <a href="https://github.com/fastlane/fastlane/tree/master/snapshot">snapshot</a> &bull;
11
+ <a href="https://github.com/fastlane/fastlane/tree/master/frameit">frameit</a> &bull;
12
+ <a href="https://github.com/fastlane/fastlane/tree/master/pem">pem</a> &bull;
13
+ <a href="https://github.com/fastlane/fastlane/tree/master/sigh">sigh</a> &bull;
14
+ <a href="https://github.com/fastlane/fastlane/tree/master/produce">produce</a> &bull;
15
+ <a href="https://github.com/fastlane/fastlane/tree/master/cert">cert</a> &bull;
16
+ <a href="https://github.com/fastlane/fastlane/tree/master/spaceship">spaceship</a> &bull;
17
+ <a href="https://github.com/fastlane/fastlane/tree/master/pilot">pilot</a> &bull;
18
18
  <a href="https://github.com/fastlane/boarding">boarding</a> &bull;
19
- <a href="https://github.com/fastlane/gym">gym</a> &bull;
19
+ <a href="https://github.com/fastlane/fastlane/tree/master/gym">gym</a> &bull;
20
20
  <b>scan</b> &bull;
21
- <a href="https://github.com/fastlane/match">match</a>
21
+ <a href="https://github.com/fastlane/fastlane/tree/master/match">match</a>
22
22
  </p>
23
23
  -------
24
24
 
@@ -30,9 +30,9 @@ scan
30
30
  ============
31
31
 
32
32
  [![Twitter: @FastlaneTools](https://img.shields.io/badge/contact-@FastlaneTools-blue.svg?style=flat)](https://twitter.com/FastlaneTools)
33
- [![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://github.com/fastlane/scan/blob/master/LICENSE)
33
+ [![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://github.com/fastlane/fastlane/blob/master/scan/LICENSE)
34
34
  [![Gem](https://img.shields.io/gem/v/scan.svg?style=flat)](http://rubygems.org/gems/scan)
35
- [![Build Status](https://img.shields.io/travis/fastlane/scan/master.svg?style=flat)](https://travis-ci.org/fastlane/scan)
35
+ [![Build Status](https://img.shields.io/circleci/project/fastlane/fastlane/master.svg?style=flat)](https://circleci.com/gh/fastlane/fastlane)
36
36
 
37
37
  ###### The easiest way to run tests of your iOS and Mac app
38
38
 
@@ -40,16 +40,16 @@ Get in contact with the developer on Twitter: [@FastlaneTools](https://twitter.c
40
40
 
41
41
  -------
42
42
  <p align="center">
43
- <a href="#whats-scan">Features</a> &bull;
44
- <a href="#installation">Installation</a> &bull;
45
- <a href="#usage">Usage</a> &bull;
46
- <a href="#tips">Tips</a> &bull;
43
+ <a href="#whats-scan">Features</a> &bull;
44
+ <a href="#installation">Installation</a> &bull;
45
+ <a href="#usage">Usage</a> &bull;
46
+ <a href="#tips">Tips</a> &bull;
47
47
  <a href="#need-help">Need help?</a>
48
48
  </p>
49
49
 
50
50
  -------
51
51
 
52
- <h5 align="center"><code>scan</code> is part of <a href="https://fastlane.tools">fastlane</a>: connect all deployment tools into one streamlined workflow.</h5>
52
+ <h5 align="center"><code>scan</code> is part of <a href="https://fastlane.tools">fastlane</a>: The easiest way to automate building and releasing your iOS and Android apps.</h5>
53
53
 
54
54
  # What's scan?
55
55
 
@@ -112,7 +112,7 @@ scan
112
112
  :bullettrain_side: | Don't remember any complicated build commands, just `scan`
113
113
  :wrench: | Easy and dynamic configuration using parameters and environment variables
114
114
  :loudspeaker: | Beautiful slack notifications of the test results
115
- :floppy_disk: | Store common build settings in a `Scanfile`
115
+ :floppy_disk: | Store common build settings in a `Scanfile`
116
116
  :outbox_tray: | The raw `xcodebuild` outputs are stored in `~/Library/Logs/scan`
117
117
  :computer: | Supports both iOS and Mac applications
118
118
  :man: | Automatically switches to the [travis formatter](https://github.com/kattrali/xcpretty-travis-formatter) when running on Travis
@@ -167,7 +167,7 @@ output_types "html"
167
167
 
168
168
  # Automating the whole process
169
169
 
170
- `scan` works great together with [fastlane](https://fastlane.tools), which connects all deployment tools into one streamlined workflow.
170
+ `scan` works great together with [fastlane](https://fastlane.tools), which connects all deployment tools into one streamlined workflow.
171
171
 
172
172
  Using `fastlane` you can define a configuration like
173
173
 
@@ -177,24 +177,24 @@ lane :test do
177
177
  end
178
178
  ```
179
179
 
180
- For more information visit the [fastlane GitHub page](https://github.com/fastlane/fastlane).
180
+ For more information visit the [fastlane GitHub page](https://github.com/fastlane/fastlane/tree/master/fastlane).
181
181
 
182
182
 
183
183
  # Tips
184
184
  ## [`fastlane`](https://fastlane.tools) Toolchain
185
185
 
186
- - [`fastlane`](https://fastlane.tools): Connect all deployment tools into one streamlined workflow
187
- - [`deliver`](https://github.com/fastlane/deliver): Upload screenshots, metadata and your app to the App Store
188
- - [`snapshot`](https://github.com/fastlane/snapshot): Automate taking localized screenshots of your iOS app on every device
189
- - [`frameit`](https://github.com/fastlane/frameit): Quickly put your screenshots into the right device frames
190
- - [`pem`](https://github.com/fastlane/pem): Automatically generate and renew your push notification profiles
191
- - [`produce`](https://github.com/fastlane/produce): Create new iOS apps on iTunes Connect and Dev Portal using the command line
192
- - [`cert`](https://github.com/fastlane/cert): Automatically create and maintain iOS code signing certificates
193
- - [`spaceship`](https://github.com/fastlane/spaceship): Ruby library to access the Apple Dev Center and iTunes Connect
194
- - [`pilot`](https://github.com/fastlane/pilot): The best way to manage your TestFlight testers and builds from your terminal
195
- - [`boarding`](https://github.com/fastlane/boarding): The easiest way to invite your TestFlight beta testers
196
- - [`gym`](https://github.com/fastlane/gym): Building your iOS apps has never been easier
197
- - [`match`](https://github.com/fastlane/match): Easily sync your certificates and profiles across your team using git
186
+ - [`fastlane`](https://fastlane.tools): The easiest way to automate building and releasing your iOS and Android apps
187
+ - [`deliver`](https://github.com/fastlane/fastlane/tree/master/deliver): Upload screenshots, metadata and your app to the App Store
188
+ - [`snapshot`](https://github.com/fastlane/fastlane/tree/master/snapshot): Automate taking localized screenshots of your iOS app on every device
189
+ - [`frameit`](https://github.com/fastlane/fastlane/tree/master/frameit): Quickly put your screenshots into the right device frames
190
+ - [`pem`](https://github.com/fastlane/fastlane/tree/master/pem): Automatically generate and renew your push notification profiles
191
+ - [`produce`](https://github.com/fastlane/fastlane/tree/master/produce): Create new iOS apps on iTunes Connect and Dev Portal using the command line
192
+ - [`cert`](https://github.com/fastlane/fastlane/tree/master/cert): Automatically create and maintain iOS code signing certificates
193
+ - [`spaceship`](https://github.com/fastlane/fastlane/tree/master/spaceship): Ruby library to access the Apple Dev Center and iTunes Connect
194
+ - [`pilot`](https://github.com/fastlane/fastlane/tree/master/pilot): The best way to manage your TestFlight testers and builds from your terminal
195
+ - [`boarding`](https://github.com/fastlane/boarding): The easiest way to invite your TestFlight beta testers
196
+ - [`gym`](https://github.com/fastlane/fastlane/tree/master/gym): Building your iOS apps has never been easier
197
+ - [`match`](https://github.com/fastlane/fastlane/tree/master/match): Easily sync your certificates and profiles across your team using git
198
198
 
199
199
  ##### [Like this tool? Be the first to know about updates and new fastlane tools](https://tinyletter.com/krausefx)
200
200
 
@@ -202,7 +202,7 @@ For more information visit the [fastlane GitHub page](https://github.com/fastlan
202
202
  Please submit an issue on GitHub and provide information about your setup
203
203
 
204
204
  # Code of Conduct
205
- Help us keep `scan` open and inclusive. Please read and follow our [Code of Conduct](https://github.com/fastlane/code-of-conduct).
205
+ Help us keep `scan` open and inclusive. Please read and follow our [Code of Conduct](https://github.com/fastlane/fastlane/blob/master/CODE_OF_CONDUCT.md).
206
206
 
207
207
  # License
208
208
  This project is licensed under the terms of the MIT license. See the LICENSE file.
@@ -27,7 +27,7 @@ module Scan
27
27
  program :description, Scan::DESCRIPTION
28
28
  program :help, "Author", "Felix Krause <scan@krausefx.com>"
29
29
  program :help, "Website", "https://fastlane.tools"
30
- program :help, "GitHub", "https://github.com/fastlane/scan"
30
+ program :help, "GitHub", "https://github.com/fastlane/fastlane/tree/master/scan"
31
31
  program :help_formatter, :compact
32
32
 
33
33
  global_option("--verbose") { $verbose = true }
@@ -48,10 +48,10 @@ module Scan
48
48
  c.action do |_args, options|
49
49
  containing = (Helper.fastlane_enabled? ? 'fastlane' : '.')
50
50
  path = File.join(containing, Scan.scanfile_name)
51
- raise "Scanfile already exists".yellow if File.exist?(path)
51
+ UI.user_error!("Scanfile already exists").yellow if File.exist?(path)
52
52
  template = File.read("#{Helper.gem_path('scan')}/lib/assets/ScanfileTemplate")
53
53
  File.write(path, template)
54
- Helper.log.info "Successfully created '#{path}'. Open the file using a code editor.".green
54
+ UI.success("Successfully created '#{path}'. Open the file using a code editor.")
55
55
  end
56
56
  end
57
57
 
@@ -50,7 +50,7 @@ module Scan
50
50
  Scan.device = found
51
51
  return
52
52
  else
53
- Helper.log.error "Couldn't find simulator '#{config[:device]}' - falling back to default simulator".red
53
+ UI.error("Couldn't find simulator '#{config[:device]}' - falling back to default simulator")
54
54
  end
55
55
  end
56
56
 
@@ -64,7 +64,7 @@ module Scan
64
64
 
65
65
  Scan.device = found
66
66
 
67
- raise "No simulators found".red unless Scan.device
67
+ UI.user_error!("No simulators found") unless Scan.device
68
68
  end
69
69
 
70
70
  def self.default_device_tvos
@@ -81,7 +81,7 @@ module Scan
81
81
  Scan.device = found
82
82
  return
83
83
  else
84
- Helper.log.error "Couldn't find simulator '#{config[:device]}' - falling back to default simulator".red
84
+ UI.error("Couldn't find simulator '#{config[:device]}' - falling back to default simulator")
85
85
  end
86
86
  end
87
87
 
@@ -95,16 +95,16 @@ module Scan
95
95
 
96
96
  Scan.device = found
97
97
 
98
- raise "No simulators found".red unless Scan.device
98
+ UI.user_error!("No simulators found") unless Scan.device
99
99
  end
100
100
 
101
101
  # Is it an iOS device or a Mac?
102
102
  def self.detect_destination
103
103
  if Scan.config[:destination]
104
- Helper.log.info "It's not recommended to set the `destination` value directly".yellow
105
- Helper.log.info "Instead use the other options available in `scan --help`".yellow
106
- Helper.log.info "Using your value '#{Scan.config[:destination]}' for now".yellow
107
- Helper.log.info "because I trust you know what you're doing...".yellow
104
+ UI.important("It's not recommended to set the `destination` value directly")
105
+ UI.important("Instead use the other options available in `scan --help`")
106
+ UI.important("Using your value '#{Scan.config[:destination]}' for now")
107
+ UI.important("because I trust you know what you're doing...")
108
108
  return
109
109
  end
110
110
 
@@ -21,7 +21,7 @@ module Scan
21
21
  print "For more information visit this stackoverflow answer:"
22
22
  print "https://stackoverflow.com/a/17031697/445598"
23
23
  when /Testing failed/
24
- raise "Error building the application - see the log above".red
24
+ UI.user_error!("Error building the application - see the log above")
25
25
  when /Executed/
26
26
  # this is *really* important:
27
27
  # we don't want to raise an exception here
@@ -29,14 +29,14 @@ module Scan
29
29
  # after parsing the actual test results
30
30
  return
31
31
  end
32
- raise "Error building/testing the application - see the log above".red
32
+ UI.user_error!("Error building/testing the application - see the log above")
33
33
  end
34
34
 
35
35
  private
36
36
 
37
37
  # Just to make things easier
38
38
  def print(text)
39
- Helper.log.error text.red
39
+ UI.error(text)
40
40
  end
41
41
  end
42
42
  end
data/lib/scan/options.rb CHANGED
@@ -14,9 +14,9 @@ module Scan
14
14
  description: "Path the workspace file",
15
15
  verify_block: proc do |value|
16
16
  v = File.expand_path(value.to_s)
17
- raise "Workspace file not found at path '#{v}'".red unless File.exist?(v)
18
- raise "Workspace file invalid".red unless File.directory?(v)
19
- raise "Workspace file is not a workspace, must end with .xcworkspace".red unless v.include?(".xcworkspace")
17
+ UI.user_error!("Workspace file not found at path '#{v}'") unless File.exist?(v)
18
+ UI.user_error!("Workspace file invalid") unless File.directory?(v)
19
+ UI.user_error!("Workspace file is not a workspace, must end with .xcworkspace") unless v.include?(".xcworkspace")
20
20
  end),
21
21
  FastlaneCore::ConfigItem.new(key: :project,
22
22
  short_option: "-p",
@@ -25,9 +25,9 @@ module Scan
25
25
  description: "Path the project file",
26
26
  verify_block: proc do |value|
27
27
  v = File.expand_path(value.to_s)
28
- raise "Project file not found at path '#{v}'".red unless File.exist?(v)
29
- raise "Project file invalid".red unless File.directory?(v)
30
- raise "Project file is not a project file, must end with .xcodeproj".red unless v.include?(".xcodeproj")
28
+ UI.user_error!("Project file not found at path '#{v}'") unless File.exist?(v)
29
+ UI.user_error!("Project file invalid") unless File.directory?(v)
30
+ UI.user_error!("Project file is not a project file, must end with .xcodeproj") unless v.include?(".xcodeproj")
31
31
  end),
32
32
  FastlaneCore::ConfigItem.new(key: :device,
33
33
  short_option: "-a",
@@ -53,6 +53,7 @@ module Scan
53
53
  FastlaneCore::ConfigItem.new(key: :skip_build,
54
54
  description: "Should skip debug build before test build?",
55
55
  short_option: "-r",
56
+ env_name: "SCAN_SKIP_BUILD",
56
57
  is_string: false,
57
58
  default_value: false),
58
59
  FastlaneCore::ConfigItem.new(key: :output_directory,
@@ -66,7 +67,7 @@ module Scan
66
67
  description: "Define how the output should look like (standard, basic or rspec)",
67
68
  optional: true,
68
69
  verify_block: proc do |value|
69
- raise "Invalid output_style #{value}".red unless ['standard', 'basic', "rspec"].include?(value)
70
+ UI.user_error!("Invalid output_style #{value}") unless ['standard', 'basic', "rspec"].include?(value)
70
71
  end),
71
72
  FastlaneCore::ConfigItem.new(key: :output_types,
72
73
  short_option: "-f",
@@ -78,6 +79,11 @@ module Scan
78
79
  env_name: "SCAN_BUILDLOG_PATH",
79
80
  description: "The directory were to store the raw log",
80
81
  default_value: "~/Library/Logs/scan"),
82
+ FastlaneCore::ConfigItem.new(key: :formatter,
83
+ short_option: "-n",
84
+ env_name: "SCAN_FORMATTER",
85
+ description: "A custom xcpretty formatter to use",
86
+ optional: true),
81
87
  FastlaneCore::ConfigItem.new(key: :derived_data_path,
82
88
  short_option: "-j",
83
89
  env_name: "SCAN_DERIVED_DATA_PATH",
@@ -121,7 +127,7 @@ module Scan
121
127
  description: "Use an extra XCCONFIG file to build your app",
122
128
  optional: true,
123
129
  verify_block: proc do |value|
124
- raise "File not found at path '#{File.expand_path(value)}'".red unless File.exist?(value)
130
+ UI.user_error!("File not found at path '#{File.expand_path(value)}'") unless File.exist?(value)
125
131
  end),
126
132
  FastlaneCore::ConfigItem.new(key: :slack_url,
127
133
  short_option: "-i",
@@ -129,13 +135,18 @@ module Scan
129
135
  description: "Create an Incoming WebHook for your Slack group to post results there",
130
136
  optional: true,
131
137
  verify_block: proc do |value|
132
- raise "Invalid URL, must start with https://" unless value.start_with? "https://"
138
+ UI.user_error!("Invalid URL, must start with https://") unless value.start_with? "https://"
133
139
  end),
134
140
  FastlaneCore::ConfigItem.new(key: :slack_channel,
135
141
  short_option: "-e",
136
142
  env_name: "SCAN_SLACK_CHANNEL",
137
143
  description: "#channel or @username",
138
144
  optional: true),
145
+ FastlaneCore::ConfigItem.new(key: :slack_message,
146
+ short_option: "-m",
147
+ env_name: "SCAN_SLACK_MESSAGE",
148
+ description: "The message included with each message posted to slack",
149
+ optional: true),
139
150
  FastlaneCore::ConfigItem.new(key: :skip_slack,
140
151
  description: "Don't publish to slack, even when an URL is given",
141
152
  is_string: false,
@@ -2,15 +2,22 @@ module Scan
2
2
  class ReportCollector
3
3
  SUPPORTED = %w(html junit json-compilation-database)
4
4
 
5
+ # Intialize with values from Scan.config matching these param names
6
+ def initialize(open_report, output_types, output_directory)
7
+ @open_report = open_report
8
+ @output_types = output_types
9
+ @output_directory = output_directory
10
+ end
11
+
5
12
  def parse_raw_file(path)
6
- raise "Couldn't find file at path '#{path}'".red unless File.exist?(path)
13
+ UI.user_error!("Couldn't find file at path '#{path}'") unless File.exist?(path)
7
14
 
8
15
  commands = generate_commands(path)
9
16
  commands.each do |output_path, command|
10
17
  system(command)
11
- Helper.log.info("Successfully generated report at '#{output_path}'".green)
18
+ UI.success("Successfully generated report at '#{output_path}'")
12
19
 
13
- if Scan.config[:open_report] and output_path.end_with?(".html")
20
+ if @open_report and output_path.end_with?(".html")
14
21
  # Open the HTML file
15
22
  `open --hide '#{output_path}'`
16
23
  end
@@ -19,7 +26,7 @@ module Scan
19
26
 
20
27
  # Returns a hash containg the resulting path as key and the command as value
21
28
  def generate_commands(path, types: nil, output_file_name: nil)
22
- types ||= Scan.config[:output_types]
29
+ types ||= @output_types
23
30
  types = types.split(",") if types.kind_of?(String) # might already be an array when passed via fastlane
24
31
  commands = {}
25
32
 
@@ -27,12 +34,12 @@ module Scan
27
34
  type = raw.strip
28
35
 
29
36
  unless SUPPORTED.include?(type)
30
- Helper.log.error "Couldn't find reporter '#{type}', available #{SUPPORTED.join(', ')}"
37
+ UI.error("Couldn't find reporter '#{type}', available #{SUPPORTED.join(', ')}")
31
38
  next
32
39
  end
33
40
 
34
41
  file_name = "report.#{type}"
35
- output_path = output_file_name || File.join(File.expand_path(Scan.config[:output_directory]), file_name)
42
+ output_path = output_file_name || File.join(File.expand_path(@output_directory), file_name)
36
43
  parts = ["cat '#{path}' | "]
37
44
  parts << "xcpretty"
38
45
  parts << "--report #{type}"
data/lib/scan/runner.rb CHANGED
@@ -43,9 +43,14 @@ module Scan
43
43
  # First, generate a JUnit report to get the number of tests
44
44
  require 'tempfile'
45
45
  output_file = Tempfile.new("junit_report")
46
- cmd = ReportCollector.new.generate_commands(TestCommandGenerator.xcodebuild_log_path,
47
- types: 'junit',
48
- output_file_name: output_file.path).values.last
46
+
47
+ report_collector = ReportCollector.new(Scan.config[:open_report],
48
+ Scan.config[:output_types],
49
+ Scan.config[:output_directory])
50
+
51
+ cmd = report_collector.generate_commands(TestCommandGenerator.xcodebuild_log_path,
52
+ types: 'junit',
53
+ output_file_name: output_file.path).values.last
49
54
  system(cmd)
50
55
 
51
56
  result = TestResultParser.new.parse_result(output_file.read)
@@ -66,7 +71,7 @@ module Scan
66
71
  })
67
72
  puts ""
68
73
 
69
- ReportCollector.new.parse_raw_file(TestCommandGenerator.xcodebuild_log_path)
74
+ report_collector.parse_raw_file(TestCommandGenerator.xcodebuild_log_path)
70
75
 
71
76
  UI.user_error!("Test execution failed. Exit status: #{tests_exit_status}") unless tests_exit_status == 0
72
77
  UI.user_error!("Tests failed") unless result[:failures] == 0
@@ -16,6 +16,13 @@ module Scan
16
16
 
17
17
  attachments = []
18
18
 
19
+ if Scan.config[:slack_message]
20
+ attachments << {
21
+ text: Scan.config[:slack_message].to_s,
22
+ color: "good"
23
+ }
24
+ end
25
+
19
26
  attachments << {
20
27
  text: "Build Errors: #{results[:build_errors] || 0}",
21
28
  color: results[:build_errors].to_i > 0 ? "danger" : "good",
@@ -43,9 +50,9 @@ module Scan
43
50
  attachments: attachments
44
51
 
45
52
  if result.code.to_i == 200
46
- Helper.log.info 'Successfully sent Slack notification'.green
53
+ UI.success('Successfully sent Slack notification')
47
54
  else
48
- Helper.log.error result.to_s.red
55
+ UI.error(result.to_s)
49
56
  end
50
57
  end
51
58
  end
@@ -23,7 +23,7 @@ module Scan
23
23
  def project_path_array
24
24
  proj = Scan.project.xcodebuild_parameters
25
25
  return proj if proj.count > 0
26
- raise "No project/workspace found"
26
+ UI.user_error!("No project/workspace found")
27
27
  end
28
28
 
29
29
  def options
@@ -63,9 +63,11 @@ module Scan
63
63
  # During building we just show the output in the terminal
64
64
  # Check out the ReportCollector class for more xcpretty things
65
65
  formatter = []
66
- if ENV.key?("TRAVIS")
66
+ if Scan.config[:formatter]
67
+ formatter << "-f `#{Scan.config[:formatter]}`"
68
+ elsif ENV.key?("TRAVIS")
67
69
  formatter << "-f `xcpretty-travis-formatter`"
68
- Helper.log.info "Automatically switched to Travis formatter".green
70
+ UI.success("Automatically switched to Travis formatter")
69
71
  end
70
72
 
71
73
  if Helper.colors_disabled?
@@ -13,7 +13,7 @@ module Scan
13
13
  failures: failures
14
14
  }
15
15
  else
16
- Helper.log.error "Couldn't parse the number of tests from the output".red
16
+ UI.error("Couldn't parse the number of tests from the output")
17
17
  return {}
18
18
  end
19
19
  end
data/lib/scan/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Scan
2
- VERSION = "0.5.2"
2
+ VERSION = "0.6.0"
3
3
  DESCRIPTION = "The easiest way to run tests of your iOS and Mac app"
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Krause
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-03 00:00:00.000000000 Z
11
+ date: 2016-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fastlane_core
@@ -134,14 +134,14 @@ dependencies:
134
134
  requirements:
135
135
  - - "~>"
136
136
  - !ruby/object:Gem::Version
137
- version: 0.35.1
137
+ version: 0.38.0
138
138
  type: :development
139
139
  prerelease: false
140
140
  version_requirements: !ruby/object:Gem::Requirement
141
141
  requirements:
142
142
  - - "~>"
143
143
  - !ruby/object:Gem::Version
144
- version: 0.35.1
144
+ version: 0.38.0
145
145
  - !ruby/object:Gem::Dependency
146
146
  name: rspec
147
147
  requirement: !ruby/object:Gem::Requirement
@@ -156,6 +156,20 @@ dependencies:
156
156
  - - "~>"
157
157
  - !ruby/object:Gem::Version
158
158
  version: 3.1.0
159
+ - !ruby/object:Gem::Dependency
160
+ name: rspec_junit_formatter
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: 0.2.3
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: 0.2.3
159
173
  - !ruby/object:Gem::Dependency
160
174
  name: pry
161
175
  requirement: !ruby/object:Gem::Requirement