b0VIM 8.1u8Ø^ªXÞ.joshJoshs-Mac-mini.local~josh/Projects/fastlane/fastlane/scan/lib/scan/test_command_generator.rbutf-8 3210#"! UtpXS]adíiXÉȼz]L7ðÙﮢš™Šmed0ý ½ ¢ r N    Ô ¹ ¸ ¥ g - ñ ¥ N  ª  Á · D ÅIÌË|ZÌ>4è´³fFÍTSE=<,ýÓÒ®‡FÛ¸·©¡ ‘rji8¨ “’ end end end suffix suffix = [] def suffix end actions end actions << :test actions << :build unle end suffix suffix = [] def s end suffix suffix = [] def suffix end actions end actions << :test actions << :build unless config[:skip_build] else actions << "test-without-building" elsif config[:test_without_building] || config[:xctestrun] actions << "build-for-testing" if config[:build_for_testing] actions << :clean if config[:clean] actions = [] config = Scan.config def actions end options options += config[:skip_testing].map { |test_id| "-skip-testing:#{test_id.shellescape}" } if config[:skip_testing] options += config[:only_testing].map { |test_id| "-only-testing:#{test_id.shellescape}" } if config[:only_testing] # they are present at all # detect_values will ensure that these values are present as Arrays if options << config[:xcargs] if config[:xcargs] options << "-xctestrun '#{config[:xctestrun]}'" if config[:xctestrun] end options += config[:skip_test_configurations].map { |name| "-skip-test-configuration '#{name}'" } if config[:skip_test_configurations] options += config[:only_test_configurations].map { |name| "-only-test-configuration '#{name}'" } if config[:only_test_configurations] # they are present at all # detect_values will ensure that these values are present as Arrays if options << "-testPlan '#{config[:testplan]}'" if config[:testplan] if FastlaneCore::Helper.xcode_at_least?(11) options << "-enableThreadSanitizer #{config[:thread_sanitizer] ? 'YES' : 'NO'}" unless config[:thread_sanitizer].nil? options << "-enableAddressSanitizer #{config[:address_sanitizer] ? 'YES' : 'NO'}" unless config[:address_sanitizer].nil? options << "-enableCodeCoverage #{config[:code_coverage] ? 'YES' : 'NO'}" unless config[:code_coverage].nil? end options << "-disable-concurrent-testing" if config[:disable_concurrent_testing] options << "-maximum-concurrent-test-simulator-destinations #{config[:max_concurrent_simulators]}" if config[:max_concurrent_simulators] options << "-parallel-testing-worker-count #{config[:concurrent_workers]}" if config[:concurrent_workers] if FastlaneCore::Helper.xcode_at_least?(10) options << "-resultBundlePath '#{result_bundle_path}'" if config[:result_bundle] options << "-toolchain '#{config[:toolchain]}'" if config[:toolchain] options << destination # generated in `detect_values` options << "-sdk '#{config[:sdk]}'" if config[:sdk] options += project_path_array unless config[:xctestrun] options = [] config = Scan.config def options # rubocop:disable Metrics/PerceivedComplexity end UI.user_error!("No project/workspace found") return proj if proj.count > 0 proj = Scan.project.xcodebuild_parameters def project_path_array # @return [Array] The array with all the components to join # This will also include the scheme (if given) # Path to the project or workspace as parameter end ["set -o pipefail &&"] def prefix end parts parts += pipe parts += suffix parts += actions parts += options parts << Scan.config[:xcodebuild_command] parts = prefix def generate class TestCommandGenerator # Responsible for building the fully working xcodebuild commandmodule Scanrequire_relative 'xcpretty_reporter_options_generator'ad5SóÃÂs_UT? ܪk_/ù ¸ ® ­ Œ j ` _ 0    Ö ¸ ® ­ I ä V í   Ê p ÿ÷öÝÁ^ùøÊÂÁ›‡añçÈÀ¿•‚]%$Æh`_D¼gF!æܯ§¡œend end end return Scan.cache[:result_bundle_path] end Scan.cache[:result_bundle_path] = path end FileUtils.remove_dir(path) if File.directory?(path) path = File.join(Scan.config[:output_directory], Scan.config[:scheme]) + ext ext = FastlaneCore::Helper.xcode_version.to_i >= 11 ? '.xcresult' : '.test_result' unless Scan.cache[:result_bundle_path] def result_bundle_path end Scan.cache[:build_path] end FileUtils.mkdir_p(Scan.cache[:build_path]) Scan.cache[:build_path] = File.expand_path("~/Library/Developer/Xcode/Archives/#{day}/") day = Time.now.strftime("%F") # e.g. 2015-08-07 unless Scan.cache[:build_path] def build_path # The path to set the Derived Data to end Scan.cache[:destination] end Scan.cache[:destination] = [*Scan.config[:destination]].map { |dst| "-destination '#{dst}'" }.join(' ') unless Scan.cache[:destination] def destination # Generate destination parameters end return File.join(containing, file_name) FileUtils.mkdir_p(containing) containing = File.expand_path(Scan.config[:buildlog_path]) file_name = "#{Scan.config[:app_name] || Scan.project.app_name}-#{Scan.config[:scheme]}.log" def xcodebuild_log_path # Store the raw file end return pipe << "| xcpretty #{formatter.join(' ')} #{reporter_options.join(' ')} #{reporter_xcpretty_args}" reporter_xcpretty_args = @reporter_options_generator.generate_xcpretty_args_options reporter_options = @reporter_options_generator.generate_reporter_options Scan.config[:xcpretty_args]) Scan.config[:use_clang_report_name], Scan.config[:output_directory], Scan.config[:output_files] || Scan.config[:custom_report_file_name], Scan.config[:output_types], @reporter_options_generator = XCPrettyReporterOptionsGenerator.new(Scan.config[:open_report], end formatter << "--test" if Scan.config[:output_style] == 'rspec' end formatter << "--no-utf" if Scan.config[:output_style] == 'basic' end formatter << "--no-color" if Helper.colors_disabled? end UI.success("Automatically switched to Travis formatter") formatter << "-f `xcpretty-travis-formatter`" elsif FastlaneCore::Env.truthy?("TRAVIS") end formatter << "-f `#{custom_formatter}`" else formatter << "-f '#{custom_formatter}'" if custom_formatter.end_with?(".rb") if (custom_formatter = Scan.config[:formatter]) formatter = [] end return pipe if Scan.config[:disable_xcpretty] || Scan.config[:output_style] == 'raw' pipe = ["| tee '#{xcodebuild_log_path}'"] def pipe