Class: Scan::TestCommandGenerator
- Inherits:
-
Object
- Object
- Scan::TestCommandGenerator
- Defined in:
- lib/scan/test_command_generator.rb
Overview
Responsible for building the fully working xcodebuild command
Class Method Summary collapse
- .actions ⇒ Object
-
.build_path ⇒ Object
The path to set the Derived Data to.
-
.destination ⇒ Object
Generate destination parameters.
- .generate ⇒ Object
- .options ⇒ Object
- .pipe ⇒ Object
- .prefix ⇒ Object
-
.project_path_array ⇒ Array
Path to the project or workspace as parameter This will also include the scheme (if given).
- .result_bundle_path ⇒ Object
- .suffix ⇒ Object
-
.xcodebuild_log_path ⇒ Object
Store the raw file.
Class Method Details
.actions ⇒ Object
46 47 48 49 50 51 52 53 54 55 |
# File 'lib/scan/test_command_generator.rb', line 46 def actions config = Scan.config actions = [] actions << :clean if config[:clean] actions << :build unless config[:skip_build] actions << :test actions end |
.build_path ⇒ Object
The path to set the Derived Data to
112 113 114 115 116 117 118 119 120 |
# File 'lib/scan/test_command_generator.rb', line 112 def build_path unless Scan.cache[:build_path] day = Time.now.strftime("%F") # e.g. 2015-08-07 Scan.cache[:build_path] = File.("~/Library/Developer/Xcode/Archives/#{day}/") FileUtils.mkdir_p Scan.cache[:build_path] end Scan.cache[:build_path] end |
.destination ⇒ Object
Generate destination parameters
104 105 106 107 108 109 |
# File 'lib/scan/test_command_generator.rb', line 104 def destination unless Scan.cache[:destination] Scan.cache[:destination] = [*Scan.config[:destination]].map { |dst| "-destination '#{dst}'" }.join(' ') end Scan.cache[:destination] end |
.generate ⇒ Object
5 6 7 8 9 10 11 12 13 14 |
# File 'lib/scan/test_command_generator.rb', line 5 def generate parts = prefix parts << "env NSUnbufferedIO=YES xcodebuild" parts += parts += actions parts += suffix parts += pipe parts end |
.options ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/scan/test_command_generator.rb', line 29 def config = Scan.config = [] += project_path_array << "-sdk '#{config[:sdk]}'" if config[:sdk] << destination # generated in `detect_values` << "-derivedDataPath '#{config[:derived_data_path]}'" if config[:derived_data_path] << "-resultBundlePath '#{result_bundle_path}'" if config[:result_bundle] << "-enableCodeCoverage YES" if config[:code_coverage] << "-enableAddressSanitizer YES" if config[:address_sanitizer] << "-xcconfig '#{config[:xcconfig]}'" if config[:xcconfig] << config[:xcargs] if config[:xcargs] end |
.pipe ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/scan/test_command_generator.rb', line 62 def pipe # During building we just show the output in the terminal # Check out the ReportCollector class for more xcpretty things pipe = ["| tee '#{xcodebuild_log_path}'"] if Scan.config[:output_style] == 'raw' return pipe end formatter = [] if Scan.config[:formatter] formatter << "-f `#{Scan.config[:formatter]}`" elsif ENV.key?("TRAVIS") formatter << "-f `xcpretty-travis-formatter`" UI.success("Automatically switched to Travis formatter") end if Helper.colors_disabled? formatter << "--no-color" end if Scan.config[:output_style] == 'basic' formatter << "--no-utf" end if Scan.config[:output_style] == 'rspec' formatter << "--test" end return pipe << ["| xcpretty #{formatter.join(' ')}"] end |
.prefix ⇒ Object
16 17 18 |
# File 'lib/scan/test_command_generator.rb', line 16 def prefix ["set -o pipefail &&"] end |
.project_path_array ⇒ Array
Path to the project or workspace as parameter This will also include the scheme (if given)
23 24 25 26 27 |
# File 'lib/scan/test_command_generator.rb', line 23 def project_path_array proj = Scan.project.xcodebuild_parameters return proj if proj.count > 0 UI.user_error!("No project/workspace found") end |
.result_bundle_path ⇒ Object
122 123 124 125 126 127 |
# File 'lib/scan/test_command_generator.rb', line 122 def result_bundle_path unless Scan.cache[:result_bundle_path] Scan.cache[:result_bundle_path] = File.join(Scan.config[:output_directory], Scan.config[:scheme]) + ".test_result" end return Scan.cache[:result_bundle_path] end |
.suffix ⇒ Object
57 58 59 60 |
# File 'lib/scan/test_command_generator.rb', line 57 def suffix suffix = [] suffix end |
.xcodebuild_log_path ⇒ Object
Store the raw file
95 96 97 98 99 100 101 |
# File 'lib/scan/test_command_generator.rb', line 95 def xcodebuild_log_path file_name = "#{Scan.project.app_name}-#{Scan.config[:scheme]}.log" containing = File.(Scan.config[:buildlog_path]) FileUtils.mkdir_p(containing) return File.join(containing, file_name) end |