├── .gitignore ├── .rspec ├── .rubocop.yml ├── .travis.yml ├── Gemfile ├── LICENSE ├── README.md ├── Rakefile ├── bin └── xcpretty-json-formatter ├── lib └── json_formatter.rb ├── spec ├── fixtures │ ├── raw_kiwi_compilation_fail.json │ ├── raw_kiwi_compilation_fail.log │ ├── raw_kiwi_fail.json │ ├── raw_kiwi_fail.log │ ├── raw_specta_fail.json │ ├── raw_specta_fail.log │ ├── xcodebuild.json │ ├── xcodebuild.log │ ├── xcodebuild_multitest.json │ └── xcodebuild_multitest.log ├── formatter_spec.rb └── spec_helper.rb └── xcpretty-json-formatter.gemspec /.gitignore: -------------------------------------------------------------------------------- 1 | /.bundle/ 2 | /.yardoc 3 | /Gemfile.lock 4 | /_yardoc/ 5 | /coverage/ 6 | /doc/ 7 | /pkg/ 8 | /spec/reports/ 9 | /tmp/ 10 | build 11 | -------------------------------------------------------------------------------- /.rspec: -------------------------------------------------------------------------------- 1 | --format documentation 2 | --color 3 | -------------------------------------------------------------------------------- /.rubocop.yml: -------------------------------------------------------------------------------- 1 | # kind_of? is a good way to check a type 2 | Style/ClassCheck: 3 | EnforcedStyle: kind_of? 4 | 5 | # It's better to be more explicit about the type 6 | Style/BracesAroundHashParameters: 7 | Enabled: false 8 | 9 | # specs sometimes have useless assignments, which is fine 10 | Lint/UselessAssignment: 11 | Exclude: 12 | - '**/spec/**/*' 13 | 14 | # HoundCI doesn't like this rule 15 | Style/DotPosition: 16 | Enabled: false 17 | 18 | # Cop supports --auto-correct. 19 | Lint/UnusedBlockArgument: 20 | Enabled: false 21 | 22 | # We want to allow class Fastlane::Class 23 | Style/ClassAndModuleChildren: 24 | Enabled: false 25 | 26 | Metrics/AbcSize: 27 | Max: 60 28 | 29 | Metrics/BlockLength: 30 | Exclude: 31 | - '**/spec/**/*' 32 | 33 | # The %w might be confusing for new users 34 | Style/WordArray: 35 | MinSize: 19 36 | 37 | # raise and fail are both okay 38 | Style/SignalException: 39 | Enabled: false 40 | 41 | # Better too much 'return' than one missing 42 | Style/RedundantReturn: 43 | Enabled: false 44 | 45 | # Having if in the same line might not always be good 46 | Style/IfUnlessModifier: 47 | Enabled: false 48 | 49 | # Configuration parameters: CountComments. 50 | Metrics/ClassLength: 51 | Max: 320 52 | 53 | Metrics/CyclomaticComplexity: 54 | Max: 17 55 | 56 | # Configuration parameters: AllowURI, URISchemes. 57 | Metrics/LineLength: 58 | Max: 120 59 | 60 | # Configuration parameters: CountKeywordArgs. 61 | Metrics/ParameterLists: 62 | Max: 10 63 | 64 | Metrics/PerceivedComplexity: 65 | Max: 18 66 | 67 | # Sometimes it's easier to read without guards 68 | Style/GuardClause: 69 | Enabled: false 70 | 71 | # something = if something_else 72 | # that's confusing 73 | Style/ConditionalAssignment: 74 | Enabled: false 75 | 76 | # Better to have too much self than missing a self 77 | Style/RedundantSelf: 78 | Enabled: false 79 | 80 | Metrics/MethodLength: 81 | Max: 60 82 | 83 | # We're not there yet 84 | Style/Documentation: 85 | Enabled: false 86 | 87 | # Adds complexity 88 | Style/IfInsideElse: 89 | Enabled: false 90 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: ruby 2 | cache: 3 | directories: 4 | - bundle 5 | 6 | rvm: 7 | - 2.0 8 | - 2.1.3 9 | - 2.3.1 10 | 11 | before_install: gem install bundler -v 1.12.5 12 | 13 | script: 14 | - bundle exec rake spec 15 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | # Specify your gem's dependencies in xcpretty-danger-formatter.gemspec 4 | gemspec 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Marcelo Fabri 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # XCPretty JSON Formatter 2 | 3 | [![License](http://img.shields.io/badge/license-MIT-green.svg?style=flat)](LICENSE.txt) 4 | [![Gem](https://img.shields.io/gem/v/xcpretty-json-formatter.svg?style=flat)](http://rubygems.org/gems/xcpretty-json-formatter) 5 | [![Build Status](https://travis-ci.org/marcelofabri/xcpretty-json-formatter.svg?branch=master)](https://travis-ci.org/marcelofabri/xcpretty-json-formatter) 6 | 7 | Custom formatter for [xcpretty](https://github.com/supermarin/xcpretty) that saves on a JSON file all the errors, warnings and test failures, so you can process them easily later. 8 | 9 | ## Installation 10 | 11 | This formatter is distributed via RubyGems, and depends on a version of `xcpretty` >= 0.0.7 (when custom formatters were introduced). Run: 12 | 13 | gem install xcpretty-json-formatter 14 | 15 | ## Usage 16 | 17 | Specify `xcpretty-json-formatter` as a custom formatter to `xcpretty`: 18 | 19 | ```bash 20 | #!/bin/bash 21 | 22 | xcodebuild | xcpretty -f `xcpretty-json-formatter` 23 | ``` 24 | 25 | By default, `xcpretty-json-formatter` writes the result in `build/reports/errors.json`, but you can change that with an environment variable: 26 | 27 | ```bash 28 | #!/bin/bash 29 | 30 | xcodebuild | XCPRETTY_JSON_FILE_OUTPUT=result.json xcpretty -f `xcpretty-json-formatter` 31 | ``` 32 | 33 | ## Output format 34 | 35 | You can check some example JSONs in the [fixtures folder](spec/fixtures). 36 | 37 | ## Thanks 38 | 39 | * [Marin Usalj](http://github.com/supermarin) and [Delisa Mason](http://github.com/kattrali) for creating [xcpretty](https://github.com/supermarin/xcpretty). 40 | * [Delisa Mason](http://github.com/kattrali) for creating [xcpretty-travis-formatter](https://github.com/kattrali/xcpretty-travis-formatter), which I used as a guide. 41 | 42 | ## Contributing 43 | 44 | Bug reports and pull requests are welcome on GitHub at https://github.com/marcelofabri/xcpretty-json-formatter. 45 | 46 | 47 | ## License 48 | 49 | The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT). 50 | 51 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | require 'bundler/gem_tasks' 2 | require 'rspec/core/rake_task' 3 | require 'rubocop/rake_task' 4 | 5 | RSpec::Core::RakeTask.new(:specs) 6 | 7 | task default: :spec 8 | 9 | task :spec do 10 | Rake::Task['specs'].invoke 11 | Rake::Task['rubocop'].invoke 12 | end 13 | 14 | desc 'Run RuboCop on the lib/specs directory' 15 | RuboCop::RakeTask.new(:rubocop) do |task| 16 | task.patterns = ['lib/**/*.rb', 'spec/**/*.rb'] 17 | end 18 | -------------------------------------------------------------------------------- /bin/xcpretty-json-formatter: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | print File.expand_path('../../lib/json_formatter.rb', __FILE__) 4 | -------------------------------------------------------------------------------- /lib/json_formatter.rb: -------------------------------------------------------------------------------- 1 | require 'fileutils' 2 | require 'json' 3 | 4 | class JSONFormatter < XCPretty::Simple 5 | FILE_PATH = 'build/reports/errors.json'.freeze 6 | 7 | def initialize(use_unicode, colorize) 8 | super 9 | @warnings = [] 10 | @ld_warnings = [] 11 | @compile_warnings = [] 12 | @errors = [] 13 | @compile_errors = [] 14 | @file_missing_errors = [] 15 | @undefined_symbols_errors = [] 16 | @duplicate_symbols_errors = [] 17 | @failures = {} 18 | @tests_summary_messages = [] 19 | end 20 | 21 | def format_ld_warning(message) 22 | @ld_warnings << message 23 | write_to_file_if_needed 24 | super 25 | end 26 | 27 | def format_warning(message) 28 | @warnings << message 29 | write_to_file_if_needed 30 | super 31 | end 32 | 33 | def format_compile_warning(file_name, file_path, reason, line, cursor) 34 | @compile_warnings << { 35 | file_name: file_name, 36 | file_path: file_path, 37 | reason: reason, 38 | line: line, 39 | cursor: cursor 40 | } 41 | write_to_file_if_needed 42 | super 43 | end 44 | 45 | def format_error(message) 46 | @errors << message 47 | write_to_file_if_needed 48 | super 49 | end 50 | 51 | def format_compile_error(file, file_path, reason, line, cursor) 52 | @compile_errors << { 53 | file_name: file, 54 | file_path: file_path, 55 | reason: reason, 56 | line: line, 57 | cursor: cursor 58 | } 59 | write_to_file_if_needed 60 | super 61 | end 62 | 63 | def format_file_missing_error(reason, file_path) 64 | @file_missing_errors << { 65 | file_path: file_path, 66 | reason: reason 67 | } 68 | write_to_file_if_needed 69 | super 70 | end 71 | 72 | def format_undefined_symbols(message, symbol, reference) 73 | @undefined_symbols_errors = { 74 | message: message, 75 | symbol: symbol, 76 | reference: reference 77 | } 78 | write_to_file_if_needed 79 | super 80 | end 81 | 82 | def format_duplicate_symbols(message, file_paths) 83 | @duplicate_symbols_errors = { 84 | message: message, 85 | file_paths: file_paths 86 | } 87 | write_to_file_if_needed 88 | super 89 | end 90 | 91 | def format_test_summary(message, failures_per_suite) 92 | @failures.merge!(failures_per_suite) 93 | @tests_summary_messages << message 94 | write_to_file_if_needed 95 | super 96 | end 97 | 98 | def finish 99 | write_to_file 100 | super 101 | end 102 | 103 | def json_output 104 | { 105 | warnings: @warnings, 106 | ld_warnings: @ld_warnings, 107 | compile_warnings: @compile_warnings, 108 | errors: @errors, 109 | compile_errors: @compile_errors, 110 | file_missing_errors: @file_missing_errors, 111 | undefined_symbols_errors: @undefined_symbols_errors, 112 | duplicate_symbols_errors: @duplicate_symbols_errors, 113 | tests_failures: @failures, 114 | tests_summary_messages: @tests_summary_messages 115 | } 116 | end 117 | 118 | def write_to_file_if_needed 119 | write_to_file unless XCPretty::Formatter.method_defined? :finish 120 | end 121 | 122 | def write_to_file 123 | file_name = ENV['XCPRETTY_JSON_FILE_OUTPUT'] || FILE_PATH 124 | dirname = File.dirname(file_name) 125 | FileUtils.mkdir_p dirname 126 | 127 | File.open(file_name, 'w') do |io| 128 | io.write(JSON.pretty_generate(json_output)) 129 | end 130 | end 131 | end 132 | 133 | JSONFormatter 134 | -------------------------------------------------------------------------------- /spec/fixtures/raw_kiwi_compilation_fail.json: -------------------------------------------------------------------------------- 1 | { 2 | "warnings": [ 3 | 4 | ], 5 | "ld_warnings": [ 6 | 7 | ], 8 | "compile_warnings": [ 9 | 10 | ], 11 | "errors": [ 12 | 13 | ], 14 | "compile_errors": [ 15 | { 16 | "file_name": "NSNumber+ObjectiveSugar.m", 17 | "file_path": "/Users/musalj/code/OSS/ObjectiveSugar/Classes/NSNumber+ObjectiveSugar.m:26:5", 18 | "reason": "use of undeclared identifier 'trololo'", 19 | "line": " trololo", 20 | "cursor": " ^" 21 | }, 22 | { 23 | "file_name": "NSNumber+ObjectiveSugar.m", 24 | "file_path": "/Users/musalj/code/OSS/ObjectiveSugar/Classes/NSNumber+ObjectiveSugar.m:47:12", 25 | "reason": "returning 'float' from a function with incompatible result type 'NSNumber *'", 26 | "line": " return (self.floatValue * 60);", 27 | "cursor": " ^~~~~~~~~~~~~~~~~~~~~~" 28 | } 29 | ], 30 | "file_missing_errors": [ 31 | 32 | ], 33 | "undefined_symbols_errors": [ 34 | 35 | ], 36 | "duplicate_symbols_errors": [ 37 | 38 | ], 39 | "tests_failures": { 40 | }, 41 | "tests_summary_messages": [ 42 | 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /spec/fixtures/raw_kiwi_compilation_fail.log: -------------------------------------------------------------------------------- 1 | Build settings from command line: 2 | SDKROOT = iphonesimulator7.0 3 | 4 | === BUILD TARGET Pods-ObjectiveSugarTests-Kiwi OF PROJECT Pods WITH CONFIGURATION Debug === 5 | 6 | Check dependencies 7 | 8 | === BUILD TARGET Pods-ObjectiveSugar OF PROJECT Pods WITH CONFIGURATION Debug === 9 | 10 | Check dependencies 11 | 12 | CompileC /Users/musalj/Library/Developer/Xcode/DerivedData/ObjectiveSugar-ayzdhqmmwtqgysdpznmovjlupqjy/Build/Intermediates/Pods.build/Debug-iphonesimulator/Pods-ObjectiveSugar.build/Objects-normal/i386/NSNumber+ObjectiveSugar.o /Users/musalj/code/OSS/ObjectiveSugar/Classes/NSNumber+ObjectiveSugar.m normal i386 objective-c com.apple.compilers.llvm.clang.1_0.compiler 13 | cd /Users/musalj/code/OSS/ObjectiveSugar/Example/Pods 14 | setenv LANG en_US.US-ASCII 15 | setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/Users/musalj/code/go/bin:/Users/musalj/.rbenv/shims:/Users/musalj/.rbenv/bin:/usr/local/share/npm/bin:/usr/local/bin:/Library/Python/2.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" 16 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective-c -arch i386 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -std=gnu99 -fmodules -fmodules-cache-path=/Users/musalj/Library/Developer/Xcode/DerivedData/ModuleCache -Wno-trigraphs -fpascal-strings -O0 -Wno-missing-field-initializers -Wno-missing-prototypes -Werror=return-type -Wno-implicit-atomic-properties -Werror=deprecated-objc-isa-usage -Werror=objc-root-class -Wno-receiver-is-weak -Wno-arc-repeated-use-of-weak -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wshorten-64-to-32 -Wpointer-sign -Wno-newline-eof -Wno-selector -Wno-strict-selector-match -Wundeclared-selector -Wno-deprecated-implementations -DDEBUG=1 -DCOCOAPODS=1 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk -fexceptions -fasm-blocks -fstrict-aliasing -Wprotocol -Wdeprecated-declarations -g -Wno-sign-conversion -fobjc-abi-version=2 -fobjc-legacy-dispatch -mios-simulator-version-min=5.0 -iquote /Users/musalj/Library/Developer/Xcode/DerivedData/ObjectiveSugar-ayzdhqmmwtqgysdpznmovjlupqjy/Build/Intermediates/Pods.build/Debug-iphonesimulator/Pods-ObjectiveSugar.build/Pods-ObjectiveSugar-generated-files.hmap -I/Users/musalj/Library/Developer/Xcode/DerivedData/ObjectiveSugar-ayzdhqmmwtqgysdpznmovjlupqjy/Build/Intermediates/Pods.build/Debug-iphonesimulator/Pods-ObjectiveSugar.build/Pods-ObjectiveSugar-own-target-headers.hmap -I/Users/musalj/Library/Developer/Xcode/DerivedData/ObjectiveSugar-ayzdhqmmwtqgysdpznmovjlupqjy/Build/Intermediates/Pods.build/Debug-iphonesimulator/Pods-ObjectiveSugar.build/Pods-ObjectiveSugar-all-target-headers.hmap -iquote /Users/musalj/Library/Developer/Xcode/DerivedData/ObjectiveSugar-ayzdhqmmwtqgysdpznmovjlupqjy/Build/Intermediates/Pods.build/Debug-iphonesimulator/Pods-ObjectiveSugar.build/Pods-ObjectiveSugar-project-headers.hmap -I/Users/musalj/Library/Developer/Xcode/DerivedData/ObjectiveSugar-ayzdhqmmwtqgysdpznmovjlupqjy/Build/Products/Debug-iphonesimulator/include -I/Users/musalj/code/OSS/ObjectiveSugar/Example/Pods/BuildHeaders -I/Users/musalj/code/OSS/ObjectiveSugar/Example/Pods/BuildHeaders/ObjectiveSugar -I/Users/musalj/code/OSS/ObjectiveSugar/Example/Pods/Headers -I/Users/musalj/code/OSS/ObjectiveSugar/Example/Pods/Headers/Kiwi -I/Users/musalj/code/OSS/ObjectiveSugar/Example/Pods/Headers/ObjectiveSugar -I/Users/musalj/Library/Developer/Xcode/DerivedData/ObjectiveSugar-ayzdhqmmwtqgysdpznmovjlupqjy/Build/Intermediates/Pods.build/Debug-iphonesimulator/Pods-ObjectiveSugar.build/DerivedSources/i386 -I/Users/musalj/Library/Developer/Xcode/DerivedData/ObjectiveSugar-ayzdhqmmwtqgysdpznmovjlupqjy/Build/Intermediates/Pods.build/Debug-iphonesimulator/Pods-ObjectiveSugar.build/DerivedSources -F/Users/musalj/Library/Developer/Xcode/DerivedData/ObjectiveSugar-ayzdhqmmwtqgysdpznmovjlupqjy/Build/Products/Debug-iphonesimulator -include /Users/musalj/Library/Developer/Xcode/DerivedData/ObjectiveSugar-ayzdhqmmwtqgysdpznmovjlupqjy/Build/Intermediates/PrecompiledHeaders/Pods-ObjectiveSugar-prefix-fbehxvikzshezadcwuseekuhbnus/Pods-ObjectiveSugar-prefix.pch -MMD -MT dependencies -MF /Users/musalj/Library/Developer/Xcode/DerivedData/ObjectiveSugar-ayzdhqmmwtqgysdpznmovjlupqjy/Build/Intermediates/Pods.build/Debug-iphonesimulator/Pods-ObjectiveSugar.build/Objects-normal/i386/NSNumber+ObjectiveSugar.d --serialize-diagnostics /Users/musalj/Library/Developer/Xcode/DerivedData/ObjectiveSugar-ayzdhqmmwtqgysdpznmovjlupqjy/Build/Intermediates/Pods.build/Debug-iphonesimulator/Pods-ObjectiveSugar.build/Objects-normal/i386/NSNumber+ObjectiveSugar.dia -c /Users/musalj/code/OSS/ObjectiveSugar/Classes/NSNumber+ObjectiveSugar.m -o /Users/musalj/Library/Developer/Xcode/DerivedData/ObjectiveSugar-ayzdhqmmwtqgysdpznmovjlupqjy/Build/Intermediates/Pods.build/Debug-iphonesimulator/Pods-ObjectiveSugar.build/Objects-normal/i386/NSNumber+ObjectiveSugar.o 17 | /Users/musalj/code/OSS/ObjectiveSugar/Classes/NSNumber+ObjectiveSugar.m:26:5: error: use of undeclared identifier 'trololo' 18 | trololo 19 | ^ 20 | /Users/musalj/code/OSS/ObjectiveSugar/Classes/NSNumber+ObjectiveSugar.m:47:12: error: returning 'float' from a function with incompatible result type 'NSNumber *' 21 | return (self.floatValue * 60); 22 | ^~~~~~~~~~~~~~~~~~~~~~ 23 | 2 errors generated. 24 | 25 | -------------------------------------------------------------------------------- /spec/fixtures/raw_kiwi_fail.json: -------------------------------------------------------------------------------- 1 | { 2 | "warnings": [ 3 | 4 | ], 5 | "ld_warnings": [ 6 | 7 | ], 8 | "compile_warnings": [ 9 | 10 | ], 11 | "errors": [ 12 | 13 | ], 14 | "compile_errors": [ 15 | 16 | ], 17 | "file_missing_errors": [ 18 | 19 | ], 20 | "undefined_symbols_errors": [ 21 | 22 | ], 23 | "duplicate_symbols_errors": [ 24 | 25 | ], 26 | "tests_failures": { 27 | "FindersAndCreators": [ 28 | { 29 | "file_path": "/Users/musalj/code/OSS/ObjectiveRecord/Example/SampleProjectTests/FindersAndCreatorsTests.m:111", 30 | "reason": "expected subject to equal \"Luca\", got \"John\"", 31 | "test_case": "FindCreateSaveDeleteSpecs_Finders_FindsTheFirstMatch" 32 | } 33 | ], 34 | "MappingsTests": [ 35 | { 36 | "file_path": "/Users/musalj/code/OSS/ObjectiveRecord/Example/SampleProjectTests/MappingsTests.m:61", 37 | "reason": "expected subject to equal 24, got 25", 38 | "test_case": "Mappings_UsesMappedValuesWhenCreating" 39 | }, 40 | { 41 | "file_path": "/Users/musalj/code/OSS/ObjectiveRecord/Example/SampleProjectTests/MappingsTests.m:82", 42 | "reason": "expected subject to equal \"Alice\", got \"Bob\"", 43 | "test_case": "Mappings_UsesMappingsInFindOrCreate" 44 | } 45 | ] 46 | }, 47 | "tests_summary_messages": [ 48 | "Executed 48 tests, with 3 failures (3 unexpected) in 0.471 (0.487) seconds\n" 49 | ] 50 | } 51 | -------------------------------------------------------------------------------- /spec/fixtures/raw_specta_fail.json: -------------------------------------------------------------------------------- 1 | { 2 | "warnings": [ 3 | 4 | ], 5 | "ld_warnings": [ 6 | 7 | ], 8 | "compile_warnings": [ 9 | 10 | ], 11 | "errors": [ 12 | 13 | ], 14 | "compile_errors": [ 15 | 16 | ], 17 | "file_missing_errors": [ 18 | 19 | ], 20 | "undefined_symbols_errors": [ 21 | 22 | ], 23 | "duplicate_symbols_errors": [ 24 | 25 | ], 26 | "tests_failures": { 27 | "RACTupleSpec": [ 28 | { 29 | "file_path": "/Users/musalj/code/OSS/ReactiveCocoa/ReactiveCocoaFramework/ReactiveCocoaTests/RACTupleSpec.m:28", 30 | "reason": "expected: foobar, got: seoitns", 31 | "test_case": "RACTupleUnpack_should_unpack_multiple_values" 32 | } 33 | ] 34 | }, 35 | "tests_summary_messages": [ 36 | "Executed 922 tests, with 1 failure (0 unexpected) in 6.436 (6.743) seconds\n" 37 | ] 38 | } 39 | -------------------------------------------------------------------------------- /spec/fixtures/xcodebuild.json: -------------------------------------------------------------------------------- 1 | { 2 | "warnings": [ 3 | "Capabilities that require entitlements from \"SampleProject/SampleProject.entitlements\" may not function in the Simulator because none of the valid provisioning profiles allowed the specified entitlements: com.apple.security.application-groups, keychain-access-groups." 4 | ], 5 | "ld_warnings": [ 6 | 7 | ], 8 | "compile_warnings": [ 9 | 10 | ], 11 | "errors": [ 12 | 13 | ], 14 | "compile_errors": [ 15 | 16 | ], 17 | "file_missing_errors": [ 18 | 19 | ], 20 | "undefined_symbols_errors": [ 21 | 22 | ], 23 | "duplicate_symbols_errors": [ 24 | 25 | ], 26 | "tests_failures": { 27 | }, 28 | "tests_summary_messages": [ 29 | "\t Executed 165 tests, with 0 failures (0 unexpected) in 6.036 (6.050) seconds\n" 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /spec/fixtures/xcodebuild.log: -------------------------------------------------------------------------------- 1 | Build settings from command line: 2 | SDKROOT = iphonesimulator8.1 3 | 4 | === BUILD TARGET Pods-CocoaLumberjack OF PROJECT Pods WITH CONFIGURATION Debug === 5 | 6 | Check dependencies 7 | 8 | === BUILD TARGET Pods-FXKeychain OF PROJECT Pods WITH CONFIGURATION Debug === 9 | Check dependencies 10 | 11 | === BUILD TARGET Pods-AFNetworking OF PROJECT Pods WITH CONFIGURATION Debug === 12 | 13 | Check dependencies 14 | 15 | === BUILD TARGET Pods-Amplitude-iOS OF PROJECT Pods WITH CONFIGURATION Debug === 16 | 17 | Check dependencies 18 | 19 | === BUILD TARGET Pods-LGBluetooth OF PROJECT Pods WITH CONFIGURATION Debug === 20 | Check dependencies 21 | 22 | === BUILD TARGET Pods-NSJSONSerialization-NSNullRemoval OF PROJECT Pods WITH CONFIGURATION Debug === 23 | Check dependencies 24 | 25 | === BUILD TARGET Pods-SHSProtoBuf OF PROJECT Pods WITH CONFIGURATION Debug === 26 | Check dependencies 27 | 28 | === BUILD TARGET Pods-YapDatabase OF PROJECT Pods WITH CONFIGURATION Debug === 29 | Check dependencies 30 | 31 | === BUILD TARGET Pods-Tests-Kiwi OF PROJECT Pods WITH CONFIGURATION Debug === 32 | Check dependencies 33 | 34 | === BUILD TARGET Pods-Tests-Nocilla OF PROJECT Pods WITH CONFIGURATION Debug === 35 | 36 | Check dependencies 37 | 38 | === BUILD TARGET Pods-SampleProject OF PROJECT Pods WITH CONFIGURATION Debug === 39 | 40 | Check dependencies 41 | 42 | === BUILD TARGET Pods OF PROJECT Pods WITH CONFIGURATION Debug === 43 | 44 | Check dependencies 45 | 46 | === BUILD TARGET SampleProject OF PROJECT SampleProject WITH CONFIGURATION Debug === 47 | Check dependencies 48 | warning: Capabilities that require entitlements from "SampleProject/SampleProject.entitlements" may not function in the Simulator because none of the valid provisioning profiles allowed the specified entitlements: com.apple.security.application-groups, keychain-access-groups. 49 | 50 | PhaseScriptExecution Check\ Pods\ Manifest.lock /opt/Xcode/DerivedData/SampleProject-fffumrorrfhhkpgupnvlzctyfpiu/Build/Intermediates/SampleProject.build/Debug-iphonesimulator/SampleProject.build/Script-D18FF329A03342899A990024.sh 51 | cd /opt/Code/SampleProject/Example 52 | /bin/sh -c /opt/Xcode/DerivedData/SampleProject-fffumrorrfhhkpgupnvlzctyfpiu/Build/Intermediates/SampleProject.build/Debug-iphonesimulator/SampleProject.build/Script-D18FF329A03342899A990024.sh 53 | 54 | PhaseScriptExecution Copy\ Pods\ Resources /opt/Xcode/DerivedData/SampleProject-fffumrorrfhhkpgupnvlzctyfpiu/Build/Intermediates/SampleProject.build/Debug-iphonesimulator/SampleProject.build/Script-D3D575F0BE0B4D6BA2A59B93.sh 55 | cd /opt/Code/SampleProject/Example 56 | /bin/sh -c /opt/Xcode/DerivedData/SampleProject-fffumrorrfhhkpgupnvlzctyfpiu/Build/Intermediates/SampleProject.build/Debug-iphonesimulator/SampleProject.build/Script-D3D575F0BE0B4D6BA2A59B93.sh 57 | building file list ... done 58 | 59 | sent 29 bytes received 20 bytes 98.00 bytes/sec 60 | total size is 0 speedup is 0.00 61 | /* com.apple.actool.compilation-results */ 62 | 63 | 64 | === BUILD TARGET Pods-Tests OF PROJECT Pods WITH CONFIGURATION Debug === 65 | 66 | Check dependencies 67 | 68 | === BUILD TARGET Tests OF PROJECT SampleProject WITH CONFIGURATION Debug === 69 | 70 | Check dependencies 71 | 72 | PhaseScriptExecution Check\ Pods\ Manifest.lock /opt/Xcode/DerivedData/SampleProject-fffumrorrfhhkpgupnvlzctyfpiu/Build/Intermediates/SampleProject.build/Debug-iphonesimulator/Tests.build/Script-F59D15D8C16B46BEBDEA3249.sh 73 | cd /opt/Code/SampleProject/Example 74 | /bin/sh -c /opt/Xcode/DerivedData/SampleProject-fffumrorrfhhkpgupnvlzctyfpiu/Build/Intermediates/SampleProject.build/Debug-iphonesimulator/Tests.build/Script-F59D15D8C16B46BEBDEA3249.sh 75 | 76 | PhaseScriptExecution Copy\ Pods\ Resources /opt/Xcode/DerivedData/SampleProject-fffumrorrfhhkpgupnvlzctyfpiu/Build/Intermediates/SampleProject.build/Debug-iphonesimulator/Tests.build/Script-3CDE065A6A6849B1B9986C77.sh 77 | cd /opt/Code/SampleProject/Example 78 | /bin/sh -c /opt/Xcode/DerivedData/SampleProject-fffumrorrfhhkpgupnvlzctyfpiu/Build/Intermediates/SampleProject.build/Debug-iphonesimulator/Tests.build/Script-3CDE065A6A6849B1B9986C77.sh 79 | building file list ... done 80 | 81 | sent 29 bytes received 20 bytes 98.00 bytes/sec 82 | total size is 0 speedup is 0.00 83 | /* com.apple.actool.compilation-results */ 84 | 85 | 86 | Test Suite 'All tests' started at 2014-11-18 01:15:48 +0000 87 | Test Suite 'Tests.xctest' started at 2014-11-18 01:15:48 +0000 88 | Test Suite 'XYZAPISignalsSpec' started at 2014-11-18 01:15:48 +0000 89 | Test Case '-[XYZAPISignalsSpec XYZAPISignals_signalsWithCompletion_MakesAGETRequest]' started. 90 | 2014-11-17 17:15:49.157 SampleProject[95307:60b] + 'XYZAPISignals, +signalsWithCompletion:, makes a GET request' [PASSED] 91 | Test Case '-[XYZAPISignalsSpec XYZAPISignals_signalsWithCompletion_MakesAGETRequest]' passed (0.198 seconds). 92 | Test Case '-[XYZAPISignalsSpec XYZAPISignals_signalsWithCompletion_TheAPICallSucceeds_InvokesTheCompletionBlock]' started. 93 | 2014-11-17 17:15:49.261 SampleProject[95307:60b] + 'XYZAPISignals, +signalsWithCompletion:, the API call succeeds, invokes the completion block' [PASSED] 94 | Test Case '-[XYZAPISignalsSpec XYZAPISignals_signalsWithCompletion_TheAPICallSucceeds_InvokesTheCompletionBlock]' passed (0.103 seconds). 95 | Test Case '-[XYZAPISignalsSpec XYZAPISignals_signalsWithCompletion_TheAPICallSucceeds_FormatsSignalDataAsAnArray]' started. 96 | 2014-11-17 17:15:49.364 SampleProject[95307:60b] + 'XYZAPISignals, +signalsWithCompletion:, the API call succeeds, formats signal data as an array' [PASSED] 97 | Test Case '-[XYZAPISignalsSpec XYZAPISignals_signalsWithCompletion_TheAPICallSucceeds_FormatsSignalDataAsAnArray]' passed (0.103 seconds). 98 | Test Case '-[XYZAPISignalsSpec XYZAPISignals_signalsWithCompletion_TheAPICallSucceeds_PreservesTheOrderingOfSignals]' started. 99 | 2014-11-17 17:15:49.568 SampleProject[95307:60b] + 'XYZAPISignals, +signalsWithCompletion:, the API call succeeds, preserves the ordering of signals' [PASSED] 100 | Test Case '-[XYZAPISignalsSpec XYZAPISignals_signalsWithCompletion_TheAPICallSucceeds_PreservesTheOrderingOfSignals]' passed (0.204 seconds). 101 | Test Case '-[XYZAPISignalsSpec XYZAPISignals_signalsWithCompletion_TheAPICallSucceeds_SetsRepeatDays]' started. 102 | 2014-11-17 17:15:49.671 SampleProject[95307:60b] + 'XYZAPISignals, +signalsWithCompletion:, the API call succeeds, sets repeat days' [PASSED] 103 | Test Case '-[XYZAPISignalsSpec XYZAPISignals_signalsWithCompletion_TheAPICallSucceeds_SetsRepeatDays]' passed (0.103 seconds). 104 | Test Case '-[XYZAPISignalsSpec XYZAPISignals_signalsWithCompletion_TheAPICallSucceeds_SetsEditable]' started. 105 | 2014-11-17 17:15:49.875 SampleProject[95307:60b] + 'XYZAPISignals, +signalsWithCompletion:, the API call succeeds, sets editable' [PASSED] 106 | Test Case '-[XYZAPISignalsSpec XYZAPISignals_signalsWithCompletion_TheAPICallSucceeds_SetsEditable]' passed (0.205 seconds). 107 | Test Case '-[XYZAPISignalsSpec XYZAPISignals_signalsWithCompletion_TheAPICallFails_InvokesTheCompletionBlock]' started. 108 | 2014-11-17 17:15:49.978 SampleProject[95307:60b] + 'XYZAPISignals, +signalsWithCompletion:, the API call fails, invokes the completion block' [PASSED] 109 | Test Case '-[XYZAPISignalsSpec XYZAPISignals_signalsWithCompletion_TheAPICallFails_InvokesTheCompletionBlock]' passed (0.103 seconds). 110 | Test Case '-[XYZAPISignalsSpec XYZAPISignals_signalsWithCompletion_TheAPICallFails_SetsTheCompletionBlockErrorParameter]' started. 111 | 2014-11-17 17:15:50.081 SampleProject[95307:60b] + 'XYZAPISignals, +signalsWithCompletion:, the API call fails, sets the completion block error parameter' [PASSED] 112 | Test Case '-[XYZAPISignalsSpec XYZAPISignals_signalsWithCompletion_TheAPICallFails_SetsTheCompletionBlockErrorParameter]' passed (0.103 seconds). 113 | Test Case '-[XYZAPISignalsSpec XYZAPISignals_setSignalswithCompletion_MakesAPOSTRequest]' started. 114 | 2014-11-17 17:15:50.083 SampleProject[95307:60b] + 'XYZAPISignals, +setSignals:withCompletion:, makes a POST request' [PASSED] 115 | Test Case '-[XYZAPISignalsSpec XYZAPISignals_setSignalswithCompletion_MakesAPOSTRequest]' passed (0.001 seconds). 116 | Test Case '-[XYZAPISignalsSpec XYZAPISignals_setSignalswithCompletion_TheAPICallSucceeds_InvokesTheCompletionBlock]' started. 117 | 2014-11-17 17:15:50.186 SampleProject[95307:60b] + 'XYZAPISignals, +setSignals:withCompletion:, the API call succeeds, invokes the completion block' [PASSED] 118 | Test Case '-[XYZAPISignalsSpec XYZAPISignals_setSignalswithCompletion_TheAPICallSucceeds_InvokesTheCompletionBlock]' passed (0.103 seconds). 119 | Test Case '-[XYZAPISignalsSpec XYZAPISignals_setSignalswithCompletion_TheAPICallFails_InvokesTheCompletionBlock]' started. 120 | 2014-11-17 17:15:50.289 SampleProject[95307:60b] + 'XYZAPISignals, +setSignals:withCompletion:, the API call fails, invokes the completion block' [PASSED] 121 | Test Case '-[XYZAPISignalsSpec XYZAPISignals_setSignalswithCompletion_TheAPICallFails_InvokesTheCompletionBlock]' passed (0.103 seconds). 122 | Test Case '-[XYZAPISignalsSpec XYZAPISignals_setSignalswithCompletion_TheAPICallFails_SetsTheCompletionBlockErrorParameter]' started. 123 | 2014-11-17 17:15:50.392 SampleProject[95307:60b] + 'XYZAPISignals, +setSignals:withCompletion:, the API call fails, sets the completion block error parameter' [PASSED] 124 | Test Case '-[XYZAPISignalsSpec XYZAPISignals_setSignalswithCompletion_TheAPICallFails_SetsTheCompletionBlockErrorParameter]' passed (0.104 seconds). 125 | Test Suite 'XYZAPISignalsSpec' passed at 2014-11-18 01:15:50 +0000. 126 | Executed 12 tests, with 0 failures (0 unexpected) in 1.433 (1.434) seconds 127 | Test Suite 'XYZAPIClientSpec' started at 2014-11-18 01:15:50 +0000 128 | Test Case '-[XYZAPIClientSpec XYZAPIClient_urlEncode_UrlEncodingEncodesSpaces]' started. 129 | 2014-11-17 17:15:50.397 SampleProject[95307:60b] + 'XYZAPIClient, +urlEncode:, url encoding encodes spaces' [PASSED] 130 | Test Case '-[XYZAPIClientSpec XYZAPIClient_urlEncode_UrlEncodingEncodesSpaces]' passed (0.004 seconds). 131 | Test Case '-[XYZAPIClientSpec XYZAPIClient_urlEncode_UrlEncodingDoesNotDestroyAnd]' started. 132 | 2014-11-17 17:15:50.399 SampleProject[95307:60b] + 'XYZAPIClient, +urlEncode:, url encoding does not destroy ? and &' [PASSED] 133 | Test Case '-[XYZAPIClientSpec XYZAPIClient_urlEncode_UrlEncodingDoesNotDestroyAnd]' passed (0.001 seconds). 134 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_GETparameterscompletion_SendsAGETRequest]' started. 135 | 2014-11-17 17:15:50.400 SampleProject[95307:60b] + 'XYZAPIClient, Making HTTP requests, GET:parameters:completion:, sends a GET request' [PASSED] 136 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_GETparameterscompletion_SendsAGETRequest]' passed (0.001 seconds). 137 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_GETparameterscompletion_InvokesTheCompletionBlockOnSuccess]' started. 138 | 2014-11-17 17:15:50.503 SampleProject[95307:60b] + 'XYZAPIClient, Making HTTP requests, GET:parameters:completion:, invokes the completion block on success' [PASSED] 139 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_GETparameterscompletion_InvokesTheCompletionBlockOnSuccess]' passed (0.103 seconds). 140 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_GETparameterscompletion_InvokesTheCompletionBlockOnFailure]' started. 141 | 2014-11-17 17:15:50.606 SampleProject[95307:60b] + 'XYZAPIClient, Making HTTP requests, GET:parameters:completion:, invokes the completion block on failure' [PASSED] 142 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_GETparameterscompletion_InvokesTheCompletionBlockOnFailure]' passed (0.103 seconds). 143 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_POSTparameterscompletion_SendsAPOSTRequest]' started. 144 | 2014-11-17 17:15:50.608 SampleProject[95307:60b] + 'XYZAPIClient, Making HTTP requests, POST:parameters:completion:, sends a POST request' [PASSED] 145 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_POSTparameterscompletion_SendsAPOSTRequest]' passed (0.001 seconds). 146 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_POSTparameterscompletion_InvokesTheCompletionBlockOnSuccess]' started. 147 | 2014-11-17 17:15:50.710 SampleProject[95307:60b] + 'XYZAPIClient, Making HTTP requests, POST:parameters:completion:, invokes the completion block on success' [PASSED] 148 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_POSTparameterscompletion_InvokesTheCompletionBlockOnSuccess]' passed (0.103 seconds). 149 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_POSTparameterscompletion_InvokesTheCompletionBlockOnFailure]' started. 150 | 2014-11-17 17:15:50.813 SampleProject[95307:60b] + 'XYZAPIClient, Making HTTP requests, POST:parameters:completion:, invokes the completion block on failure' [PASSED] 151 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_POSTparameterscompletion_InvokesTheCompletionBlockOnFailure]' passed (0.103 seconds). 152 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_PUTparameterscompletion_SendsAPUTRequest]' started. 153 | 2014-11-17 17:15:50.815 SampleProject[95307:60b] + 'XYZAPIClient, Making HTTP requests, PUT:parameters:completion:, sends a PUT request' [PASSED] 154 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_PUTparameterscompletion_SendsAPUTRequest]' passed (0.001 seconds). 155 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_PUTparameterscompletion_InvokesTheCompletionBlockOnSuccess]' started. 156 | 2014-11-17 17:15:50.918 SampleProject[95307:60b] + 'XYZAPIClient, Making HTTP requests, PUT:parameters:completion:, invokes the completion block on success' [PASSED] 157 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_PUTparameterscompletion_InvokesTheCompletionBlockOnSuccess]' passed (0.103 seconds). 158 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_PUTparameterscompletion_InvokesTheCompletionBlockOnFailure]' started. 159 | 2014-11-17 17:15:51.021 SampleProject[95307:60b] + 'XYZAPIClient, Making HTTP requests, PUT:parameters:completion:, invokes the completion block on failure' [PASSED] 160 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_PUTparameterscompletion_InvokesTheCompletionBlockOnFailure]' passed (0.103 seconds). 161 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_PATCHparameterscompletion_SendsAPATCHRequest]' started. 162 | 2014-11-17 17:15:51.023 SampleProject[95307:60b] + 'XYZAPIClient, Making HTTP requests, PATCH:parameters:completion:, sends a PATCH request' [PASSED] 163 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_PATCHparameterscompletion_SendsAPATCHRequest]' passed (0.001 seconds). 164 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_PATCHparameterscompletion_InvokesTheCompletionBlockOnSuccess]' started. 165 | 2014-11-17 17:15:51.126 SampleProject[95307:60b] + 'XYZAPIClient, Making HTTP requests, PATCH:parameters:completion:, invokes the completion block on success' [PASSED] 166 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_PATCHparameterscompletion_InvokesTheCompletionBlockOnSuccess]' passed (0.103 seconds). 167 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_PATCHparameterscompletion_InvokesTheCompletionBlockOnFailure]' started. 168 | 2014-11-17 17:15:51.229 SampleProject[95307:60b] + 'XYZAPIClient, Making HTTP requests, PATCH:parameters:completion:, invokes the completion block on failure' [PASSED] 169 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_PATCHparameterscompletion_InvokesTheCompletionBlockOnFailure]' passed (0.103 seconds). 170 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_DELETEparameterscompletion_SendsADELETERequest]' started. 171 | 2014-11-17 17:15:51.230 SampleProject[95307:60b] + 'XYZAPIClient, Making HTTP requests, DELETE:parameters:completion:, sends a DELETE request' [PASSED] 172 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_DELETEparameterscompletion_SendsADELETERequest]' passed (0.001 seconds). 173 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_DELETEparameterscompletion_InvokesTheCompletionBlockOnSuccess]' started. 174 | 2014-11-17 17:15:51.333 SampleProject[95307:60b] + 'XYZAPIClient, Making HTTP requests, DELETE:parameters:completion:, invokes the completion block on success' [PASSED] 175 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_DELETEparameterscompletion_InvokesTheCompletionBlockOnSuccess]' passed (0.103 seconds). 176 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_DELETEparameterscompletion_InvokesTheCompletionBlockOnFailure]' started. 177 | 2014-11-17 17:15:51.436 SampleProject[95307:60b] + 'XYZAPIClient, Making HTTP requests, DELETE:parameters:completion:, invokes the completion block on failure' [PASSED] 178 | Test Case '-[XYZAPIClientSpec XYZAPIClient_MakingHTTPRequests_DELETEparameterscompletion_InvokesTheCompletionBlockOnFailure]' passed (0.103 seconds). 179 | Test Case '-[XYZAPIClientSpec XYZAPIClient_NSNullValuesAreRetrievedFromAPIRequests_RemovesNSNullValuesAndKeys]' started. 180 | 2014-11-17 17:15:51.438 SampleProject[95307:60b] + 'XYZAPIClient, NSNull values are retrieved from API requests, removes NSNull values and keys' [PASSED] 181 | Test Case '-[XYZAPIClientSpec XYZAPIClient_NSNullValuesAreRetrievedFromAPIRequests_RemovesNSNullValuesAndKeys]' passed (0.002 seconds). 182 | Test Case '-[XYZAPIClientSpec XYZAPIClient_NSNullValuesAreRetrievedFromAPIRequests_RemovesNestedNSNullValuesAndKeys]' started. 183 | 2014-11-17 17:15:51.440 SampleProject[95307:60b] + 'XYZAPIClient, NSNull values are retrieved from API requests, removes nested NSNull values and keys' [PASSED] 184 | Test Case '-[XYZAPIClientSpec XYZAPIClient_NSNullValuesAreRetrievedFromAPIRequests_RemovesNestedNSNullValuesAndKeys]' passed (0.002 seconds). 185 | Test Case '-[XYZAPIClientSpec XYZAPIClient_NSNullValuesAreRetrievedFromAPIRequests_RemovesNSNullValuesFromArrays]' started. 186 | 2014-11-17 17:15:51.441 SampleProject[95307:60b] + 'XYZAPIClient, NSNull values are retrieved from API requests, removes NSNull values from arrays' [PASSED] 187 | Test Case '-[XYZAPIClientSpec XYZAPIClient_NSNullValuesAreRetrievedFromAPIRequests_RemovesNSNullValuesFromArrays]' passed (0.002 seconds). 188 | Test Suite 'XYZAPIClientSpec' passed at 2014-11-18 01:15:51 +0000. 189 | Executed 20 tests, with 0 failures (0 unexpected) in 1.048 (1.049) seconds 190 | Test Suite 'XYZAPIDeviceSpec' started at 2014-11-18 01:15:51 +0000 191 | Test Case '-[XYZAPIDeviceSpec XYZAPIDevice_GetPairedDevices_ShouldReturnEmptyArray]' started. 192 | 2014-11-17 17:15:51.557 SampleProject[95307:60b] + 'XYZAPIDevice, + getPairedDevices, should return empty array' [PASSED] 193 | Test Case '-[XYZAPIDeviceSpec XYZAPIDevice_GetPairedDevices_ShouldReturnEmptyArray]' passed (0.116 seconds). 194 | Test Case '-[XYZAPIDeviceSpec XYZAPIDevice_DevicesFromRawResponse_ShouldReturnAnEmptyArray]' started. 195 | 2014-11-17 17:15:51.560 SampleProject[95307:60b] + 'XYZAPIDevice, + devicesFromRawResponse, should return an empty array' [PASSED] 196 | Test Case '-[XYZAPIDeviceSpec XYZAPIDevice_DevicesFromRawResponse_ShouldReturnAnEmptyArray]' passed (0.001 seconds). 197 | Test Case '-[XYZAPIDeviceSpec XYZAPIDevice_DevicesFromRawResponse_ShouldReturn1XYZDeviceObject]' started. 198 | 2014-11-17 17:15:51.561 SampleProject[95307:60b] + 'XYZAPIDevice, + devicesFromRawResponse, should return 1 XYZDevice object' [PASSED] 199 | Test Case '-[XYZAPIDeviceSpec XYZAPIDevice_DevicesFromRawResponse_ShouldReturn1XYZDeviceObject]' passed (0.001 seconds). 200 | Test Case '-[XYZAPIDeviceSpec XYZAPIDevice_DevicesFromRawResponse_Last_updatedAndFirmwareVersionShouldBeSet]' started. 201 | 2014-11-17 17:15:51.562 SampleProject[95307:60b] + 'XYZAPIDevice, + devicesFromRawResponse, last_updated and firmware version should be set' [PASSED] 202 | Test Case '-[XYZAPIDeviceSpec XYZAPIDevice_DevicesFromRawResponse_Last_updatedAndFirmwareVersionShouldBeSet]' passed (0.001 seconds). 203 | Test Case '-[XYZAPIDeviceSpec XYZAPIDevice_UnregisterDevices_unregisterAccessorycompletion_ShouldReturnErrorWithInvalidArgumentError]' started. 204 | 2014-11-17 17:15:51.767 SampleProject[95307:60b] + 'XYZAPIDevice, unregister devices, +unregisterAccessory:completion, should return error with invalid argument error' [PASSED] 205 | Test Case '-[XYZAPIDeviceSpec XYZAPIDevice_UnregisterDevices_unregisterAccessorycompletion_ShouldReturnErrorWithInvalidArgumentError]' passed (0.205 seconds). 206 | Test Case '-[XYZAPIDeviceSpec XYZAPIDevice_UnregisterDevices_unregisterAccessorycompletion_ShouldReturnWithNoError]' started. 207 | 2014-11-17 17:15:51.871 SampleProject[95307:60b] + 'XYZAPIDevice, unregister devices, +unregisterAccessory:completion, should return with no error' [PASSED] 208 | Test Case '-[XYZAPIDeviceSpec XYZAPIDevice_UnregisterDevices_unregisterAccessorycompletion_ShouldReturnWithNoError]' passed (0.103 seconds). 209 | Test Case '-[XYZAPIDeviceSpec XYZAPIDevice_UnregisterDevices_unregisterHardwarecompletion_ShouldReturnErrorWithInvalidArgumentError]' started. 210 | 2014-11-17 17:15:52.075 SampleProject[95307:60b] + 'XYZAPIDevice, unregister devices, +unregisterHardware:completion, should return error with invalid argument error' [PASSED] 211 | Test Case '-[XYZAPIDeviceSpec XYZAPIDevice_UnregisterDevices_unregisterHardwarecompletion_ShouldReturnErrorWithInvalidArgumentError]' passed (0.204 seconds). 212 | Test Case '-[XYZAPIDeviceSpec XYZAPIDevice_UnregisterDevices_unregisterHardwarecompletion_ShouldReturnWithNoError]' started. 213 | 2014-11-17 17:15:52.178 SampleProject[95307:60b] + 'XYZAPIDevice, unregister devices, +unregisterHardware:completion, should return with no error' [PASSED] 214 | Test Case '-[XYZAPIDeviceSpec XYZAPIDevice_UnregisterDevices_unregisterHardwarecompletion_ShouldReturnWithNoError]' passed (0.104 seconds). 215 | Test Suite 'XYZAPIDeviceSpec' passed at 2014-11-18 01:15:52 +0000. 216 | Executed 8 tests, with 0 failures (0 unexpected) in 0.737 (0.737) seconds 217 | Test Suite 'XYZAPIInsightSpec' started at 2014-11-18 01:15:52 +0000 218 | Test Case '-[XYZAPIInsightSpec XYZAPIInsight_insightsFromResponse_ReturnsNil_IfResponseIsNotAnArray]' started. 219 | 2014-11-17 17:15:52.181 SampleProject[95307:60b] + 'XYZAPIInsight, +insightsFromResponse:, returns nil, if response is not an array' [PASSED] 220 | Test Case '-[XYZAPIInsightSpec XYZAPIInsight_insightsFromResponse_ReturnsNil_IfResponseIsNotAnArray]' passed (0.001 seconds). 221 | Test Case '-[XYZAPIInsightSpec XYZAPIInsight_insightsFromResponse_ReturnsAnEmptyArray_IfResponseIsAnEmptyArray]' started. 222 | 2014-11-17 17:15:52.182 SampleProject[95307:60b] + 'XYZAPIInsight, +insightsFromResponse:, returns an empty array, if response is an empty array' [PASSED] 223 | Test Case '-[XYZAPIInsightSpec XYZAPIInsight_insightsFromResponse_ReturnsAnEmptyArray_IfResponseIsAnEmptyArray]' passed (0.001 seconds). 224 | Test Case '-[XYZAPIInsightSpec XYZAPIInsight_insightsFromResponse_ReturnsAnArrayWithAXYZInsightObject_WithProperResponse]' started. 225 | 2014-11-17 17:15:52.184 SampleProject[95307:60b] + 'XYZAPIInsight, +insightsFromResponse:, returns an array with a XYZInsight object, with proper response' [PASSED] 226 | Test Case '-[XYZAPIInsightSpec XYZAPIInsight_insightsFromResponse_ReturnsAnArrayWithAXYZInsightObject_WithProperResponse]' passed (0.001 seconds). 227 | Test Case '-[XYZAPIInsightSpec XYZAPIInsight_getInsights_CallbackShouldBeMade]' started. 228 | 2014-11-17 17:15:52.287 SampleProject[95307:60b] + 'XYZAPIInsight, +getInsights:, callback should be made' [PASSED] 229 | Test Case '-[XYZAPIInsightSpec XYZAPIInsight_getInsights_CallbackShouldBeMade]' passed (0.105 seconds). 230 | Test Suite 'XYZAPIInsightSpec' passed at 2014-11-18 01:15:52 +0000. 231 | Executed 4 tests, with 0 failures (0 unexpected) in 0.108 (0.108) seconds 232 | Test Suite 'XYZAPINotificationSpec' started at 2014-11-18 01:15:52 +0000 233 | Test Case '-[XYZAPINotificationSpec XYZAPINotification_RegisterForRemoteNotificationsWithTokenDatacompletion_SendsAPOSTRequest]' started. 234 | 2014-11-17 17:15:52.290 SampleProject[95307:60b] + 'XYZAPINotification, registerForRemoteNotificationsWithTokenData:completion:, sends a POST request' [PASSED] 235 | Test Case '-[XYZAPINotificationSpec XYZAPINotification_RegisterForRemoteNotificationsWithTokenDatacompletion_SendsAPOSTRequest]' passed (0.002 seconds). 236 | Test Case '-[XYZAPINotificationSpec XYZAPINotification_RegisterForRemoteNotificationsWithTokenDatacompletion_InvokesTheCompletionBlock]' started. 237 | 2014-11-17 17:15:52.393 SampleProject[95307:60b] + 'XYZAPINotification, registerForRemoteNotificationsWithTokenData:completion:, invokes the completion block' [PASSED] 238 | Test Case '-[XYZAPINotificationSpec XYZAPINotification_RegisterForRemoteNotificationsWithTokenDatacompletion_InvokesTheCompletionBlock]' passed (0.103 seconds). 239 | Test Case '-[XYZAPINotificationSpec XYZAPINotification_RegisterForRemoteNotificationsWithTokenDatacompletion_IncludesTheOSInTheRequest]' started. 240 | 2014-11-17 17:15:52.496 SampleProject[95307:60b] + 'XYZAPINotification, registerForRemoteNotificationsWithTokenData:completion:, includes the OS in the request' [PASSED] 241 | Test Case '-[XYZAPINotificationSpec XYZAPINotification_RegisterForRemoteNotificationsWithTokenDatacompletion_IncludesTheOSInTheRequest]' passed (0.103 seconds). 242 | Test Case '-[XYZAPINotificationSpec XYZAPINotification_RegisterForRemoteNotificationsWithTokenDatacompletion_IncludesTheOSVersionInTheRequest]' started. 243 | 2014-11-17 17:15:52.599 SampleProject[95307:60b] + 'XYZAPINotification, registerForRemoteNotificationsWithTokenData:completion:, includes the OS version in the request' [PASSED] 244 | Test Case '-[XYZAPINotificationSpec XYZAPINotification_RegisterForRemoteNotificationsWithTokenDatacompletion_IncludesTheOSVersionInTheRequest]' passed (0.103 seconds). 245 | Test Case '-[XYZAPINotificationSpec XYZAPINotification_RegisterForRemoteNotificationsWithTokenDatacompletion_IncludesTheAppVersionInTheRequest]' started. 246 | 2014-11-17 17:15:52.702 SampleProject[95307:60b] + 'XYZAPINotification, registerForRemoteNotificationsWithTokenData:completion:, includes the app version in the request' [PASSED] 247 | Test Case '-[XYZAPINotificationSpec XYZAPINotification_RegisterForRemoteNotificationsWithTokenDatacompletion_IncludesTheAppVersionInTheRequest]' passed (0.103 seconds). 248 | Test Case '-[XYZAPINotificationSpec XYZAPINotification_RegisterForRemoteNotificationsWithTokenDatacompletion_IncludesTheTokenInTheRequest]' started. 249 | 2014-11-17 17:15:52.805 SampleProject[95307:60b] + 'XYZAPINotification, registerForRemoteNotificationsWithTokenData:completion:, includes the token in the request' [PASSED] 250 | Test Case '-[XYZAPINotificationSpec XYZAPINotification_RegisterForRemoteNotificationsWithTokenDatacompletion_IncludesTheTokenInTheRequest]' passed (0.104 seconds). 251 | Test Suite 'XYZAPINotificationSpec' passed at 2014-11-18 01:15:52 +0000. 252 | Executed 6 tests, with 0 failures (0 unexpected) in 0.518 (0.518) seconds 253 | Test Suite 'XYZAPIQuestionsSpec' started at 2014-11-18 01:15:52 +0000 254 | Test Case '-[XYZAPIQuestionsSpec XYZAPIQuestionsSpec_questionFromDict_ProperQuestionDictShouldCreateAProperXYZQuestionObject]' started. 255 | 2014-11-17 17:15:52.808 SampleProject[95307:60b] + 'XYZAPIQuestionsSpec, +questionFromDict:, proper question dict should create a proper XYZQuestion object' [PASSED] 256 | Test Case '-[XYZAPIQuestionsSpec XYZAPIQuestionsSpec_questionFromDict_ProperQuestionDictShouldCreateAProperXYZQuestionObject]' passed (0.002 seconds). 257 | Test Case '-[XYZAPIQuestionsSpec XYZAPIQuestionsSpec_answersFromReponseArray_AnArrayOfChoicesFromTheServerShouldReturnAnArrayOfXYZAnswerObjects]' started. 258 | 2014-11-17 17:15:52.810 SampleProject[95307:60b] + 'XYZAPIQuestionsSpec, +answersFromReponseArray:, an array of choices from the server should return an array of XYZAnswer objects' [PASSED] 259 | Test Case '-[XYZAPIQuestionsSpec XYZAPIQuestionsSpec_answersFromReponseArray_AnArrayOfChoicesFromTheServerShouldReturnAnArrayOfXYZAnswerObjects]' passed (0.001 seconds). 260 | Test Case '-[XYZAPIQuestionsSpec XYZAPIQuestionsSpec_questionsFromResponse_AnArrayOfQuestionsFromServerShouldGenerateAnArrayOfXYZQuestionObjects]' started. 261 | 2014-11-17 17:15:52.811 SampleProject[95307:60b] + 'XYZAPIQuestionsSpec, +questionsFromResponse:, an array of questions from server should generate an array of XYZQuestion objects' [PASSED] 262 | Test Case '-[XYZAPIQuestionsSpec XYZAPIQuestionsSpec_questionsFromResponse_AnArrayOfQuestionsFromServerShouldGenerateAnArrayOfXYZQuestionObjects]' passed (0.001 seconds). 263 | Test Case '-[XYZAPIQuestionsSpec XYZAPIQuestionsSpec_skipQuestioncompletion_ShouldCallbackWithAnErrorOfInvalidArgumentWithNoQuestionPassed]' started. 264 | 2014-11-17 17:15:52.913 SampleProject[95307:60b] + 'XYZAPIQuestionsSpec, +skipQuestion:completion, should callback with an error of invalid argument with no question passed' [PASSED] 265 | Test Case '-[XYZAPIQuestionsSpec XYZAPIQuestionsSpec_skipQuestioncompletion_ShouldCallbackWithAnErrorOfInvalidArgumentWithNoQuestionPassed]' passed (0.103 seconds). 266 | Test Case '-[XYZAPIQuestionsSpec XYZAPIQuestionsSpec_skipQuestioncompletion_ShouldCallbackWithAnErrorOfInvalidArgumentWithNoQuestionIdSet]' started. 267 | 2014-11-17 17:15:53.016 SampleProject[95307:60b] + 'XYZAPIQuestionsSpec, +skipQuestion:completion, should callback with an error of invalid argument with no question id set' [PASSED] 268 | Test Case '-[XYZAPIQuestionsSpec XYZAPIQuestionsSpec_skipQuestioncompletion_ShouldCallbackWithAnErrorOfInvalidArgumentWithNoQuestionIdSet]' passed (0.103 seconds). 269 | Test Suite 'XYZAPIQuestionsSpec' passed at 2014-11-18 01:15:53 +0000. 270 | Executed 5 tests, with 0 failures (0 unexpected) in 0.210 (0.210) seconds 271 | Test Suite 'XYZAPITimeZoneSpec' started at 2014-11-18 01:15:53 +0000 272 | Test Case '-[XYZAPITimeZoneSpec XYZAPITimeZone_SetCurrentTimeZone_ShouldCallCompletionBlock]' started. 273 | 2014-11-17 17:15:53.121 SampleProject[95307:60b] + 'XYZAPITimeZone, + setCurrentTimeZone, should call completion block' [PASSED] 274 | Test Case '-[XYZAPITimeZoneSpec XYZAPITimeZone_SetCurrentTimeZone_ShouldCallCompletionBlock]' passed (0.105 seconds). 275 | Test Suite 'XYZAPITimeZoneSpec' passed at 2014-11-18 01:15:53 +0000. 276 | Executed 1 test, with 0 failures (0 unexpected) in 0.105 (0.105) seconds 277 | Test Suite 'XYZAPIaccountSpec' started at 2014-11-18 01:15:53 +0000 278 | Test Case '-[XYZAPIaccountSpec XYZAPIAccount_accountFromResponse_IfResponseIsNotADictionary_ShouldBeNil]' started. 279 | 2014-11-17 17:15:53.123 SampleProject[95307:60b] + 'XYZAPIAccount, +accountFromResponse:, if response is not a dictionary, should be nil' [PASSED] 280 | Test Case '-[XYZAPIaccountSpec XYZAPIAccount_accountFromResponse_IfResponseIsNotADictionary_ShouldBeNil]' passed (0.001 seconds). 281 | Test Case '-[XYZAPIaccountSpec XYZAPIAccount_accountFromResponse_IfResponseIsADictionary_AccountShouldBeInstantiated]' started. 282 | 2014-11-17 17:15:53.125 SampleProject[95307:60b] + 'XYZAPIAccount, +accountFromResponse:, if response is a dictionary, account should be instantiated' [PASSED] 283 | Test Case '-[XYZAPIaccountSpec XYZAPIAccount_accountFromResponse_IfResponseIsADictionary_AccountShouldBeInstantiated]' passed (0.001 seconds). 284 | Test Case '-[XYZAPIaccountSpec XYZAPIAccount_accountFromResponse_IfResponseContainsNullValue_CorrespondingPropertyShouldBeNil]' started. 285 | 2014-11-17 17:15:53.126 SampleProject[95307:60b] + 'XYZAPIAccount, +accountFromResponse:, if response contains null value, corresponding property should be nil' [PASSED] 286 | Test Case '-[XYZAPIaccountSpec XYZAPIAccount_accountFromResponse_IfResponseContainsNullValue_CorrespondingPropertyShouldBeNil]' passed (0.001 seconds). 287 | Test Case '-[XYZAPIaccountSpec XYZAPIAccount_accountFromResponse_BirthdateReturnedAsMillisShouldBeProperlyFormatted]' started. 288 | 2014-11-17 17:15:53.127 SampleProject[95307:60b] + 'XYZAPIAccount, +accountFromResponse:, birthdate returned as millis should be properly formatted' [PASSED] 289 | Test Case '-[XYZAPIaccountSpec XYZAPIAccount_accountFromResponse_BirthdateReturnedAsMillisShouldBeProperlyFormatted]' passed (0.001 seconds). 290 | Test Case '-[XYZAPIaccountSpec XYZAPIAccount_dictionaryValue_MakeSureAccountIdIsNotSetInTheDictionarySinceItWillFailTheRequest]' started. 291 | 2014-11-17 17:15:53.128 SampleProject[95307:60b] + 'XYZAPIAccount, +dictionaryValue:, make sure account id is not set in the dictionary since it will fail the request' [PASSED] 292 | Test Case '-[XYZAPIaccountSpec XYZAPIAccount_dictionaryValue_MakeSureAccountIdIsNotSetInTheDictionarySinceItWillFailTheRequest]' passed (0.001 seconds). 293 | Test Case '-[XYZAPIaccountSpec XYZAPIAccount_dictionaryValue_IfValueInAccountObjectIsNil_DictionaryDoesNotContainKey]' started. 294 | 2014-11-17 17:15:53.129 SampleProject[95307:60b] + 'XYZAPIAccount, +dictionaryValue:, if value in account object is nil, dictionary does not contain key' [PASSED] 295 | Test Case '-[XYZAPIaccountSpec XYZAPIAccount_dictionaryValue_IfValueInAccountObjectIsNil_DictionaryDoesNotContainKey]' passed (0.001 seconds). 296 | Test Case '-[XYZAPIaccountSpec XYZAPIAccount_dictionaryValue_MakeSureGenderIsProperlyConverted]' started. 297 | 2014-11-17 17:15:53.130 SampleProject[95307:60b] + 'XYZAPIAccount, +dictionaryValue:, make sure gender is properly converted' [PASSED] 298 | Test Case '-[XYZAPIaccountSpec XYZAPIAccount_dictionaryValue_MakeSureGenderIsProperlyConverted]' passed (0.001 seconds). 299 | Test Suite 'XYZAPIaccountSpec' passed at 2014-11-18 01:15:53 +0000. 300 | Executed 7 tests, with 0 failures (0 unexpected) in 0.008 (0.009) seconds 301 | Test Suite 'XYZSignalSpec' started at 2014-11-18 01:15:53 +0000 302 | Test Case '-[XYZSignalSpec XYZSignal_createDefaultSignal_CreatesAValidSignal]' started. 303 | 2014-11-17 17:15:53.136 SampleProject[95307:60b] + 'XYZSignal, +createDefaultSignal, creates a valid signal' [PASSED] 304 | Test Case '-[XYZSignalSpec XYZSignal_createDefaultSignal_CreatesAValidSignal]' passed (0.049 seconds). 305 | Test Case '-[XYZSignalSpec XYZSignal_initWithDictionary_SetsTheActivationState]' started. 306 | 2014-11-17 17:15:53.184 SampleProject[95307:60b] + 'XYZSignal, -initWithDictionary:, sets the activation state' [PASSED] 307 | Test Case '-[XYZSignalSpec XYZSignal_initWithDictionary_SetsTheActivationState]' passed (0.023 seconds). 308 | Test Case '-[XYZSignalSpec XYZSignal_initWithDictionary_SetsTheHour]' started. 309 | 2014-11-17 17:15:53.207 SampleProject[95307:60b] + 'XYZSignal, -initWithDictionary:, sets the hour' [PASSED] 310 | Test Case '-[XYZSignalSpec XYZSignal_initWithDictionary_SetsTheHour]' passed (0.026 seconds). 311 | Test Case '-[XYZSignalSpec XYZSignal_initWithDictionary_SetsTheMinute]' started. 312 | 2014-11-17 17:15:53.234 SampleProject[95307:60b] + 'XYZSignal, -initWithDictionary:, sets the minute' [PASSED] 313 | Test Case '-[XYZSignalSpec XYZSignal_initWithDictionary_SetsTheMinute]' passed (0.027 seconds). 314 | Test Case '-[XYZSignalSpec XYZSignal_initWithDictionary_SetsTheSoundName]' started. 315 | 2014-11-17 17:15:53.260 SampleProject[95307:60b] + 'XYZSignal, -initWithDictionary:, sets the sound name' [PASSED] 316 | Test Case '-[XYZSignalSpec XYZSignal_initWithDictionary_SetsTheSoundName]' passed (0.026 seconds). 317 | Test Case '-[XYZSignalSpec XYZSignal_initWithDictionary_SetsTheSoundName_2]' started. 318 | 2014-11-17 17:15:53.288 SampleProject[95307:60b] + 'XYZSignal, -initWithDictionary:, sets the sound name' [PASSED] 319 | Test Case '-[XYZSignalSpec XYZSignal_initWithDictionary_SetsTheSoundName_2]' passed (0.028 seconds). 320 | Test Case '-[XYZSignalSpec XYZSignal_initWithDictionary_SetsTheEditableState]' started. 321 | 2014-11-17 17:15:53.314 SampleProject[95307:60b] + 'XYZSignal, -initWithDictionary:, sets the editable state' [PASSED] 322 | Test Case '-[XYZSignalSpec XYZSignal_initWithDictionary_SetsTheEditableState]' passed (0.031 seconds). 323 | Test Case '-[XYZSignalSpec XYZSignal_initWithDictionary_SetsTheSmartSignalState]' started. 324 | 2014-11-17 17:15:53.347 SampleProject[95307:60b] + 'XYZSignal, -initWithDictionary:, sets the smart signal state' [PASSED] 325 | Test Case '-[XYZSignalSpec XYZSignal_initWithDictionary_SetsTheSmartSignalState]' passed (0.034 seconds). 326 | Test Case '-[XYZSignalSpec XYZSignal_initWithDictionary_SetsTheRepeatDays]' started. 327 | 2014-11-17 17:15:53.381 SampleProject[95307:60b] + 'XYZSignal, -initWithDictionary:, sets the repeat days' [PASSED] 328 | Test Case '-[XYZSignalSpec XYZSignal_initWithDictionary_SetsTheRepeatDays]' passed (0.035 seconds). 329 | Test Case '-[XYZSignalSpec XYZSignal_RepeatFlags_ASingleDayWillBeRepeated_AcceptsASingleDay]' started. 330 | 2014-11-17 17:15:53.416 SampleProject[95307:60b] + 'XYZSignal, - repeatFlags, a single day will be repeated, accepts a single day' [PASSED] 331 | Test Case '-[XYZSignalSpec XYZSignal_RepeatFlags_ASingleDayWillBeRepeated_AcceptsASingleDay]' passed (0.019 seconds). 332 | Test Case '-[XYZSignalSpec XYZSignal_RepeatFlags_ASingleDayWillBeRepeated_DoesNotIncludeExcludedDays]' started. 333 | 2014-11-17 17:15:53.434 SampleProject[95307:60b] + 'XYZSignal, - repeatFlags, a single day will be repeated, does not include excluded days' [PASSED] 334 | Test Case '-[XYZSignalSpec XYZSignal_RepeatFlags_ASingleDayWillBeRepeated_DoesNotIncludeExcludedDays]' passed (0.029 seconds). 335 | Test Case '-[XYZSignalSpec XYZSignal_RepeatFlags_MultipleDaysWillBeRepeated_DoesNotIncludeExcludedDays]' started. 336 | 2014-11-17 17:15:53.464 SampleProject[95307:60b] + 'XYZSignal, - repeatFlags, multiple days will be repeated, does not include excluded days' [PASSED] 337 | Test Case '-[XYZSignalSpec XYZSignal_RepeatFlags_MultipleDaysWillBeRepeated_DoesNotIncludeExcludedDays]' passed (0.021 seconds). 338 | Test Case '-[XYZSignalSpec XYZSignal_RepeatFlags_MultipleDaysWillBeRepeated_IncludesIncludedDays]' started. 339 | 2014-11-17 17:15:53.484 SampleProject[95307:60b] + 'XYZSignal, - repeatFlags, multiple days will be repeated, includes included days' [PASSED] 340 | Test Case '-[XYZSignalSpec XYZSignal_RepeatFlags_MultipleDaysWillBeRepeated_IncludesIncludedDays]' passed (0.026 seconds). 341 | Test Case '-[XYZSignalSpec XYZSignal_IncrementSignalTimeByMinutes_MinutesDoNotRollOverToADifferentHour_UpdatesTheNumberOfMinutes]' started. 342 | 2014-11-17 17:15:53.510 SampleProject[95307:60b] + 'XYZSignal, - incrementSignalTimeByMinutes:, minutes do not roll over to a different hour, updates the number of minutes' [PASSED] 343 | Test Case '-[XYZSignalSpec XYZSignal_IncrementSignalTimeByMinutes_MinutesDoNotRollOverToADifferentHour_UpdatesTheNumberOfMinutes]' passed (0.023 seconds). 344 | Test Case '-[XYZSignalSpec XYZSignal_IncrementSignalTimeByMinutes_MinutesRollOverToADifferenHour_UpdatesTheNumberOfMinutes]' started. 345 | 2014-11-17 17:15:53.534 SampleProject[95307:60b] + 'XYZSignal, - incrementSignalTimeByMinutes:, minutes roll over to a differen hour, updates the number of minutes' [PASSED] 346 | Test Case '-[XYZSignalSpec XYZSignal_IncrementSignalTimeByMinutes_MinutesRollOverToADifferenHour_UpdatesTheNumberOfMinutes]' passed (0.029 seconds). 347 | Test Case '-[XYZSignalSpec XYZSignal_IncrementSignalTimeByMinutes_MinutesRollOverToADifferenHour_UpdatesTheNumberOfHours]' started. 348 | 2014-11-17 17:15:53.563 SampleProject[95307:60b] + 'XYZSignal, - incrementSignalTimeByMinutes:, minutes roll over to a differen hour, updates the number of hours' [PASSED] 349 | Test Case '-[XYZSignalSpec XYZSignal_IncrementSignalTimeByMinutes_MinutesRollOverToADifferenHour_UpdatesTheNumberOfHours]' passed (0.020 seconds). 350 | Test Case '-[XYZSignalSpec XYZSignal_IncrementSignalTimeByMinutes_MinutesAndHoursRollForwardToADifferentDay_UpdatesTheNumberOfMinutes]' started. 351 | 2014-11-17 17:15:53.582 SampleProject[95307:60b] + 'XYZSignal, - incrementSignalTimeByMinutes:, minutes and hours roll forward to a different day, updates the number of minutes' [PASSED] 352 | Test Case '-[XYZSignalSpec XYZSignal_IncrementSignalTimeByMinutes_MinutesAndHoursRollForwardToADifferentDay_UpdatesTheNumberOfMinutes]' passed (0.025 seconds). 353 | Test Case '-[XYZSignalSpec XYZSignal_IncrementSignalTimeByMinutes_MinutesAndHoursRollForwardToADifferentDay_UpdatesTheNumberOfHours]' started. 354 | 2014-11-17 17:15:53.607 SampleProject[95307:60b] + 'XYZSignal, - incrementSignalTimeByMinutes:, minutes and hours roll forward to a different day, updates the number of hours' [PASSED] 355 | Test Case '-[XYZSignalSpec XYZSignal_IncrementSignalTimeByMinutes_MinutesAndHoursRollForwardToADifferentDay_UpdatesTheNumberOfHours]' passed (0.024 seconds). 356 | Test Case '-[XYZSignalSpec XYZSignal_IncrementSignalTimeByMinutes_MinutesAndHoursRollBackwardToADifferentDay_UpdatesTheNumberOfMinutes]' started. 357 | 2014-11-17 17:15:53.631 SampleProject[95307:60b] + 'XYZSignal, - incrementSignalTimeByMinutes:, minutes and hours roll backward to a different day, updates the number of minutes' [PASSED] 358 | Test Case '-[XYZSignalSpec XYZSignal_IncrementSignalTimeByMinutes_MinutesAndHoursRollBackwardToADifferentDay_UpdatesTheNumberOfMinutes]' passed (0.030 seconds). 359 | Test Case '-[XYZSignalSpec XYZSignal_IncrementSignalTimeByMinutes_MinutesAndHoursRollBackwardToADifferentDay_UpdatesTheNumberOfHours]' started. 360 | 2014-11-17 17:15:53.660 SampleProject[95307:60b] + 'XYZSignal, - incrementSignalTimeByMinutes:, minutes and hours roll backward to a different day, updates the number of hours' [PASSED] 361 | Test Case '-[XYZSignalSpec XYZSignal_IncrementSignalTimeByMinutes_MinutesAndHoursRollBackwardToADifferentDay_UpdatesTheNumberOfHours]' passed (0.025 seconds). 362 | Test Case '-[XYZSignalSpec XYZSignal_IncrementSignalTimeByMinutes_MinutesRollBackwardsLessThanAnHour_UpdatesTheMinutes]' started. 363 | 2014-11-17 17:15:53.688 SampleProject[95307:60b] + 'XYZSignal, - incrementSignalTimeByMinutes:, minutes roll backwards less than an hour, updates the minutes' [PASSED] 364 | Test Case '-[XYZSignalSpec XYZSignal_IncrementSignalTimeByMinutes_MinutesRollBackwardsLessThanAnHour_UpdatesTheMinutes]' passed (0.021 seconds). 365 | Test Case '-[XYZSignalSpec XYZSignal_IncrementSignalTimeByMinutes_MinutesRollBackwardsLessThanAnHour_UpdatesTheHour]' started. 366 | 2014-11-17 17:15:53.708 SampleProject[95307:60b] + 'XYZSignal, - incrementSignalTimeByMinutes:, minutes roll backwards less than an hour, updates the hour' [PASSED] 367 | Test Case '-[XYZSignalSpec XYZSignal_IncrementSignalTimeByMinutes_MinutesRollBackwardsLessThanAnHour_UpdatesTheHour]' passed (0.020 seconds). 368 | Test Case '-[XYZSignalSpec XYZSignal_IsSaved_AnSignalIsUnsaved_IsFalse]' started. 369 | 2014-11-17 17:15:53.728 SampleProject[95307:60b] + 'XYZSignal, - isSaved, an signal is unsaved, is false' [PASSED] 370 | Test Case '-[XYZSignalSpec XYZSignal_IsSaved_AnSignalIsUnsaved_IsFalse]' passed (0.034 seconds). 371 | Test Case '-[XYZSignalSpec XYZSignal_IsSaved_AnSignalIsSaved_IsTrue]' started. 372 | 2014-11-17 17:15:53.762 SampleProject[95307:60b] + 'XYZSignal, - isSaved, an signal is saved, is true' [PASSED] 373 | Test Case '-[XYZSignalSpec XYZSignal_IsSaved_AnSignalIsSaved_IsTrue]' passed (0.026 seconds). 374 | Test Case '-[XYZSignalSpec XYZSignal_IsSaved_AnSignalIsSaved_AnSignalIsDeleted_IsFalse]' started. 375 | 2014-11-17 17:15:53.790 SampleProject[95307:60b] + 'XYZSignal, - isSaved, an signal is saved, an signal is deleted, is false' [PASSED] 376 | Test Case '-[XYZSignalSpec XYZSignal_IsSaved_AnSignalIsSaved_AnSignalIsDeleted_IsFalse]' passed (0.032 seconds). 377 | Test Case '-[XYZSignalSpec XYZSignal_SavedSignals_IsInitiallyEmpty]' started. 378 | 2014-11-17 17:15:53.820 SampleProject[95307:60b] + 'XYZSignal, + savedSignals, is initially empty' [PASSED] 379 | Test Case '-[XYZSignalSpec XYZSignal_SavedSignals_IsInitiallyEmpty]' passed (0.029 seconds). 380 | Test Case '-[XYZSignalSpec XYZSignal_SavedSignals_AnSignalIsSaved_ReturnsTheSavedSignal]' started. 381 | 2014-11-17 17:15:53.851 SampleProject[95307:60b] + 'XYZSignal, + savedSignals, an signal is saved, returns the saved signal' [PASSED] 382 | Test Case '-[XYZSignalSpec XYZSignal_SavedSignals_AnSignalIsSaved_ReturnsTheSavedSignal]' passed (0.035 seconds). 383 | Test Case '-[XYZSignalSpec XYZSignal_SavedSignals_AnSignalIsSaved_AnSignalIsSavedAgain_DoesNotSaveDuplicateSignals]' started. 384 | 2014-11-17 17:15:53.885 SampleProject[95307:60b] + 'XYZSignal, + savedSignals, an signal is saved, an signal is saved again, does not save duplicate signals' [PASSED] 385 | Test Case '-[XYZSignalSpec XYZSignal_SavedSignals_AnSignalIsSaved_AnSignalIsSavedAgain_DoesNotSaveDuplicateSignals]' passed (0.028 seconds). 386 | Test Case '-[XYZSignalSpec XYZSignal_SavedSignals_AnSignalIsSaved_ADifferentSignalIsSaved_SavesSeparateSignals]' started. 387 | 2014-11-17 17:15:53.913 SampleProject[95307:60b] + 'XYZSignal, + savedSignals, an signal is saved, a different signal is saved, saves separate signals' [PASSED] 388 | Test Case '-[XYZSignalSpec XYZSignal_SavedSignals_AnSignalIsSaved_ADifferentSignalIsSaved_SavesSeparateSignals]' passed (0.026 seconds). 389 | Test Case '-[XYZSignalSpec XYZSignal_SavedSignals_AnSignalIsSaved_AnSignalIsDeleted_RemovesTheSignalFromTheStore]' started. 390 | 2014-11-17 17:15:53.939 SampleProject[95307:60b] + 'XYZSignal, + savedSignals, an signal is saved, an signal is deleted, removes the signal from the store' [PASSED] 391 | Test Case '-[XYZSignalSpec XYZSignal_SavedSignals_AnSignalIsSaved_AnSignalIsDeleted_RemovesTheSignalFromTheStore]' passed (0.023 seconds). 392 | Test Suite 'XYZSignalSpec' passed at 2014-11-18 01:15:53 +0000. 393 | Executed 30 tests, with 0 failures (0 unexpected) in 0.826 (0.828) seconds 394 | Test Suite 'XYZHardwareManagerSpec' started at 2014-11-18 01:15:54 +0000 395 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_scanForHardware_ShouldReturnNOWhileInTests]' started. 396 | 2014-11-17 17:15:54.104 SampleProject[95307:60b] + 'XYZHardwareManager, +scanForHardware:, should return NO while in tests' [PASSED] 397 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_scanForHardware_ShouldReturnNOWhileInTests]' passed (0.002 seconds). 398 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_scanForHardwareWithTimeoutcompletion_ShouldReturnNOWhileInTests]' started. 399 | 2014-11-17 17:15:54.105 SampleProject[95307:60b] + 'XYZHardwareManager, +scanForHardwareWithTimeout:completion, should return NO while in tests' [PASSED] 400 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_scanForHardwareWithTimeoutcompletion_ShouldReturnNOWhileInTests]' passed (0.001 seconds). 401 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_enablePairingModesuccessfailure_ShouldFailWithNoHardwareInitialized]' started. 402 | 2014-11-17 17:15:54.106 SampleProject[95307:60b] The platform/hardware doesn't support Bluetooth Low Energy. 403 | 2014-11-17 17:15:54.207 SampleProject[95307:60b] + 'XYZHardwareManager, -enablePairingMode:success:failure, should fail with no hardware initialized' [PASSED] 404 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_enablePairingModesuccessfailure_ShouldFailWithNoHardwareInitialized]' passed (0.103 seconds). 405 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_enablePairingModesuccessfailure_ShouldFailIfHardwareNotInitializedProperly]' started. 406 | 2014-11-17 17:15:54.311 SampleProject[95307:60b] + 'XYZHardwareManager, -enablePairingMode:success:failure, should fail if hardware not initialized properly' [PASSED] 407 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_enablePairingModesuccessfailure_ShouldFailIfHardwareNotInitializedProperly]' passed (0.103 seconds). 408 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_removeOtherPairedDevicesfailure_ShouldFailWithNoHardwareInitialized]' started. 409 | 2014-11-17 17:15:54.414 SampleProject[95307:60b] + 'XYZHardwareManager, -removeOtherPairedDevices:failure:, should fail with no hardware initialized' [PASSED] 410 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_removeOtherPairedDevicesfailure_ShouldFailWithNoHardwareInitialized]' passed (0.103 seconds). 411 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_removeOtherPairedDevicesfailure_ShouldFailIfHardwareNotInitializedProperly]' started. 412 | 2014-11-17 17:15:54.516 SampleProject[95307:60b] + 'XYZHardwareManager, -removeOtherPairedDevices:failure:, should fail if hardware not initialized properly' [PASSED] 413 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_removeOtherPairedDevicesfailure_ShouldFailIfHardwareNotInitializedProperly]' passed (0.104 seconds). 414 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_blePackets_PacketsShouldBeProperlyFormatted]' started. 415 | 2014-11-17 17:15:54.519 SampleProject[95307:60b] + 'XYZHardwareManager, -blePackets:, packets should be properly formatted' [PASSED] 416 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_blePackets_PacketsShouldBeProperlyFormatted]' passed (0.003 seconds). 417 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_messageFromBlePacketserror_ASingleProperlyFormattedPacketShouldReturnAMessage]' started. 418 | 2014-11-17 17:15:54.522 SampleProject[95307:60b] + 'XYZHardwareManager, -messageFromBlePackets:error:, a single properly formatted packet should return a message' [PASSED] 419 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_messageFromBlePacketserror_ASingleProperlyFormattedPacketShouldReturnAMessage]' passed (0.002 seconds). 420 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_messageFromBlePacketserror_AMalformedHelloBlePacketShouldReturnAnError]' started. 421 | 2014-11-17 17:15:54.525 SampleProject[95307:60b] + 'XYZHardwareManager, -messageFromBlePackets:error:, a malformed hello ble packet should return an error' [PASSED] 422 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_messageFromBlePacketserror_AMalformedHelloBlePacketShouldReturnAnError]' passed (0.002 seconds). 423 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_handleResponseUpdateerrorforMessageTypeallPacketstotalPacketssuccessfailure_HandlingAResponseThatHasOnly1PacketShouldReturnSuccess]' started. 424 | 2014-11-17 17:15:54.735 SampleProject[95307:60b] + 'XYZHardwareManager, -handleResponseUpdate:error:forMessageType:allPackets:totalPackets:success:failure, handling a response that has only 1 packet should return success' [PASSED] 425 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_handleResponseUpdateerrorforMessageTypeallPacketstotalPacketssuccessfailure_HandlingAResponseThatHasOnly1PacketShouldReturnSuccess]' passed (0.209 seconds). 426 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_handleResponseUpdateerrorforMessageTypeallPacketstotalPacketssuccessfailure_HandlingAResponseWithErrorShouldInvokeFailureBlock]' started. 427 | 2014-11-17 17:15:54.837 SampleProject[95307:60b] + 'XYZHardwareManager, -handleResponseUpdate:error:forMessageType:allPackets:totalPackets:success:failure, handling a response with error should invoke failure block' [PASSED] 428 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_handleResponseUpdateerrorforMessageTypeallPacketstotalPacketssuccessfailure_HandlingAResponseWithErrorShouldInvokeFailureBlock]' passed (0.102 seconds). 429 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_sendPacketsfromthroughWritersuccessfailure_ShouldFailBecauseTheresNoConnectionToBlePheripheral]' started. 430 | 2014-11-17 17:15:54.939 SampleProject[95307:60b] + 'XYZHardwareManager, -sendPackets:from:throughWriter:success:failure, should fail because there's no connection to ble pheripheral' [PASSED] 431 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_sendPacketsfromthroughWritersuccessfailure_ShouldFailBecauseTheresNoConnectionToBlePheripheral]' passed (0.102 seconds). 432 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_TimeOuts_ShouldCacheTheTimerSoThatItCanBeCancelled]' started. 433 | 2014-11-17 17:15:54.941 SampleProject[95307:60b] + 'XYZHardwareManager, time outs, should cache the timer so that it can be cancelled' [PASSED] 434 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_TimeOuts_ShouldCacheTheTimerSoThatItCanBeCancelled]' passed (0.001 seconds). 435 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_TimeOuts_WhenTimerFires_CallingTimedOut_TimerAndCallbacksShouldBeNil]' started. 436 | 2014-11-17 17:15:54.942 SampleProject[95307:60b] + 'XYZHardwareManager, time outs, when timer fires, calling timedOut:, timer and callbacks should be nil' [PASSED] 437 | Test Case '-[XYZHardwareManagerSpec XYZHardwareManager_TimeOuts_WhenTimerFires_CallingTimedOut_TimerAndCallbacksShouldBeNil]' passed (0.002 seconds). 438 | Test Suite 'XYZHardwareManagerSpec' passed at 2014-11-18 01:15:54 +0000. 439 | Executed 14 tests, with 0 failures (0 unexpected) in 0.840 (0.841) seconds 440 | Test Suite 'XYZSensorSpec' started at 2014-11-18 01:15:54 +0000 441 | Test Case '-[XYZSensorSpec XYZSensor_initWithDictionary_SetsTheName]' started. 442 | 2014-11-17 17:15:54.944 SampleProject[95307:60b] + 'XYZSensor, -initWithDictionary:, sets the name' [PASSED] 443 | Test Case '-[XYZSensorSpec XYZSensor_initWithDictionary_SetsTheName]' passed (0.001 seconds). 444 | Test Case '-[XYZSensorSpec XYZSensor_initWithDictionary_SetsTheValue]' started. 445 | 2014-11-17 17:15:54.945 SampleProject[95307:60b] + 'XYZSensor, -initWithDictionary:, sets the value' [PASSED] 446 | Test Case '-[XYZSensorSpec XYZSensor_initWithDictionary_SetsTheValue]' passed (0.001 seconds). 447 | Test Case '-[XYZSensorSpec XYZSensor_initWithDictionary_SetsTheUnit]' started. 448 | 2014-11-17 17:15:54.946 SampleProject[95307:60b] + 'XYZSensor, -initWithDictionary:, sets the unit' [PASSED] 449 | Test Case '-[XYZSensorSpec XYZSensor_initWithDictionary_SetsTheUnit]' passed (0.001 seconds). 450 | Test Case '-[XYZSensorSpec XYZSensor_initWithDictionary_SetsTheMessage]' started. 451 | 2014-11-17 17:15:54.947 SampleProject[95307:60b] + 'XYZSensor, -initWithDictionary:, sets the message' [PASSED] 452 | Test Case '-[XYZSensorSpec XYZSensor_initWithDictionary_SetsTheMessage]' passed (0.001 seconds). 453 | Test Case '-[XYZSensorSpec XYZSensor_initWithDictionary_SetsTheCondition]' started. 454 | 2014-11-17 17:15:54.948 SampleProject[95307:60b] + 'XYZSensor, -initWithDictionary:, sets the condition' [PASSED] 455 | Test Case '-[XYZSensorSpec XYZSensor_initWithDictionary_SetsTheCondition]' passed (0.001 seconds). 456 | Test Case '-[XYZSensorSpec XYZSensor_initWithDictionary_SetsTheUpdatedDate]' started. 457 | 2014-11-17 17:15:54.949 SampleProject[95307:60b] + 'XYZSensor, -initWithDictionary:, sets the updated date' [PASSED] 458 | Test Case '-[XYZSensorSpec XYZSensor_initWithDictionary_SetsTheUpdatedDate]' passed (0.001 seconds). 459 | Test Suite 'XYZSensorSpec' passed at 2014-11-18 01:15:54 +0000. 460 | Executed 6 tests, with 0 failures (0 unexpected) in 0.006 (0.006) seconds 461 | Test Suite 'XYZServiceQuestionsSpec' started at 2014-11-18 01:15:54 +0000 462 | Test Case '-[XYZServiceQuestionsSpec XYZServiceQuestionsSpec_sharedService_ShouldBeSingleton]' started. 463 | 2014-11-17 17:15:54.950 SampleProject[95307:60b] + 'XYZServiceQuestionsSpec, +sharedService, should be singleton' [PASSED] 464 | Test Case '-[XYZServiceQuestionsSpec XYZServiceQuestionsSpec_sharedService_ShouldBeSingleton]' passed (0.001 seconds). 465 | Test Case '-[XYZServiceQuestionsSpec XYZServiceQuestionsSpec_setQuestionsAskedToday_ShouldSetKeyInNSUserDefaultsTo]' started. 466 | 2014-11-17 17:15:54.958 SampleProject[95307:60b] + 'XYZServiceQuestionsSpec, -setQuestionsAskedToday, should set key in NSUserDefaults to' [PASSED] 467 | Test Case '-[XYZServiceQuestionsSpec XYZServiceQuestionsSpec_setQuestionsAskedToday_ShouldSetKeyInNSUserDefaultsTo]' passed (0.007 seconds). 468 | Test Case '-[XYZServiceQuestionsSpec XYZServiceQuestionsSpec_listenForNewQuestions_IfCallbackIsNilNull_ShouldNotReturnObserver]' started. 469 | 2014-11-17 17:15:54.959 SampleProject[95307:60b] + 'XYZServiceQuestionsSpec, -listenForNewQuestions:, if callback is nil / null, should not return observer' [PASSED] 470 | Test Case '-[XYZServiceQuestionsSpec XYZServiceQuestionsSpec_listenForNewQuestions_IfCallbackIsNilNull_ShouldNotReturnObserver]' passed (0.001 seconds). 471 | Test Case '-[XYZServiceQuestionsSpec XYZServiceQuestionsSpec_listenForNewQuestions_IfCallbackIsNotNil_ObserverShouldNotBeNilEither]' started. 472 | 2014-11-17 17:15:54.960 SampleProject[95307:60b] + 'XYZServiceQuestionsSpec, -listenForNewQuestions:, if callback is not nil, observer should not be nil either' [PASSED] 473 | Test Case '-[XYZServiceQuestionsSpec XYZServiceQuestionsSpec_listenForNewQuestions_IfCallbackIsNotNil_ObserverShouldNotBeNilEither]' passed (0.001 seconds). 474 | Test Case '-[XYZServiceQuestionsSpec XYZServiceQuestionsSpec_stopListening_PassingNilShouldStillBeOK]' started. 475 | 2014-11-17 17:15:54.961 SampleProject[95307:60b] + 'XYZServiceQuestionsSpec, -stopListening:, passing nil should still be OK' [PASSED] 476 | Test Case '-[XYZServiceQuestionsSpec XYZServiceQuestionsSpec_stopListening_PassingNilShouldStillBeOK]' passed (0.001 seconds). 477 | Test Suite 'XYZServiceQuestionsSpec' passed at 2014-11-18 01:15:54 +0000. 478 | Executed 5 tests, with 0 failures (0 unexpected) in 0.012 (0.012) seconds 479 | Test Suite 'XYZSettingsSpec' started at 2014-11-18 01:15:54 +0000 480 | Test Case '-[XYZSettingsSpec XYZSettings_defaults_ShouldReturnValuesManaged]' started. 481 | 2014-11-17 17:15:54.963 SampleProject[95307:60b] + 'XYZSettings, +defaults, should return values managed' [PASSED] 482 | Test Case '-[XYZSettingsSpec XYZSettings_defaults_ShouldReturnValuesManaged]' passed (0.002 seconds). 483 | Test Suite 'XYZSettingsSpec' passed at 2014-11-18 01:15:54 +0000. 484 | Executed 1 test, with 0 failures (0 unexpected) in 0.002 (0.002) seconds 485 | Test Suite 'XYZHardwareAnalysisComponentSpec' started at 2014-11-18 01:15:54 +0000 486 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Initialization_SetsTheServerID]' started. 487 | 2014-11-17 17:15:54.964 SampleProject[95307:60b] + 'XYZHardwareAnalysisComponent, initialization, sets the server ID' [PASSED] 488 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Initialization_SetsTheServerID]' passed (0.001 seconds). 489 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Initialization_SetsTheDateAndTime]' started. 490 | 2014-11-17 17:15:54.965 SampleProject[95307:60b] + 'XYZHardwareAnalysisComponent, initialization, sets the date and time' [PASSED] 491 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Initialization_SetsTheDateAndTime]' passed (0.001 seconds). 492 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Initialization_SetsTheDuration]' started. 493 | 2014-11-17 17:15:54.967 SampleProject[95307:60b] + 'XYZHardwareAnalysisComponent, initialization, sets the duration' [PASSED] 494 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Initialization_SetsTheDuration]' passed (0.001 seconds). 495 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Initialization_SetsTheMessage]' started. 496 | 2014-11-17 17:15:54.968 SampleProject[95307:60b] + 'XYZHardwareAnalysisComponent, initialization, sets the message' [PASSED] 497 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Initialization_SetsTheMessage]' passed (0.001 seconds). 498 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Initialization_SetsTheEventType]' started. 499 | 2014-11-17 17:15:54.969 SampleProject[95307:60b] + 'XYZHardwareAnalysisComponent, initialization, sets the event type' [PASSED] 500 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Initialization_SetsTheEventType]' passed (0.001 seconds). 501 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Initialization_SetsTheDepth]' started. 502 | 2014-11-17 17:15:54.970 SampleProject[95307:60b] + 'XYZHardwareAnalysisComponent, initialization, sets the depth' [PASSED] 503 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Initialization_SetsTheDepth]' passed (0.001 seconds). 504 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Initialization_SetsTheSoundUrl]' started. 505 | 2014-11-17 17:15:54.970 SampleProject[95307:60b] + 'XYZHardwareAnalysisComponent, initialization, sets the sound url' [PASSED] 506 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Initialization_SetsTheSoundUrl]' passed (0.001 seconds). 507 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Initialization_SetsTheSoundDuration]' started. 508 | 2014-11-17 17:15:54.971 SampleProject[95307:60b] + 'XYZHardwareAnalysisComponent, initialization, sets the sound duration' [PASSED] 509 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Initialization_SetsTheSoundDuration]' passed (0.001 seconds). 510 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Serialization_IsSerializable]' started. 511 | 2014-11-17 17:15:54.972 SampleProject[95307:60b] + 'XYZHardwareAnalysisComponent, serialization, is serializable' [PASSED] 512 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Serialization_IsSerializable]' passed (0.001 seconds). 513 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Serialization_HasTheSameServerIDAfterSerialization]' started. 514 | 2014-11-17 17:15:54.974 SampleProject[95307:60b] + 'XYZHardwareAnalysisComponent, serialization, has the same server ID after serialization' [PASSED] 515 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Serialization_HasTheSameServerIDAfterSerialization]' passed (0.002 seconds). 516 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Serialization_HasTheSameDateAfterSerialization]' started. 517 | 2014-11-17 17:15:54.976 SampleProject[95307:60b] + 'XYZHardwareAnalysisComponent, serialization, has the same date after serialization' [PASSED] 518 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Serialization_HasTheSameDateAfterSerialization]' passed (0.001 seconds). 519 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Serialization_HasTheSameMessageAfterSerialization]' started. 520 | 2014-11-17 17:15:54.977 SampleProject[95307:60b] + 'XYZHardwareAnalysisComponent, serialization, has the same message after serialization' [PASSED] 521 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Serialization_HasTheSameMessageAfterSerialization]' passed (0.001 seconds). 522 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Serialization_HasTheSameEventTypeAfterSerialization]' started. 523 | 2014-11-17 17:15:54.979 SampleProject[95307:60b] + 'XYZHardwareAnalysisComponent, serialization, has the same event type after serialization' [PASSED] 524 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Serialization_HasTheSameEventTypeAfterSerialization]' passed (0.001 seconds). 525 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Serialization_HasTheSameDepthAfterSerialization]' started. 526 | 2014-11-17 17:15:54.980 SampleProject[95307:60b] + 'XYZHardwareAnalysisComponent, serialization, has the same depth after serialization' [PASSED] 527 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Serialization_HasTheSameDepthAfterSerialization]' passed (0.002 seconds). 528 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Serialization_HasTheSameSoundURLAfterSerialization]' started. 529 | 2014-11-17 17:15:54.982 SampleProject[95307:60b] + 'XYZHardwareAnalysisComponent, serialization, has the same sound URL after serialization' [PASSED] 530 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Serialization_HasTheSameSoundURLAfterSerialization]' passed (0.001 seconds). 531 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Serialization_HasTheSameSoundURLAfterSerialization_2]' started. 532 | 2014-11-17 17:15:54.983 SampleProject[95307:60b] + 'XYZHardwareAnalysisComponent, serialization, has the same sound URL after serialization' [PASSED] 533 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Serialization_HasTheSameSoundURLAfterSerialization_2]' passed (0.001 seconds). 534 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Updating_UpdatesAnExistingInstanceWithADictionary]' started. 535 | 2014-11-17 17:15:54.984 SampleProject[95307:60b] + 'XYZHardwareAnalysisComponent, updating, updates an existing instance with a dictionary' [PASSED] 536 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Updating_UpdatesAnExistingInstanceWithADictionary]' passed (0.001 seconds). 537 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Updating_DoesNotOverrideFieldsMissingFromADictionary]' started. 538 | 2014-11-17 17:15:54.985 SampleProject[95307:60b] + 'XYZHardwareAnalysisComponent, updating, does not override fields missing from a dictionary' [PASSED] 539 | Test Case '-[XYZHardwareAnalysisComponentSpec XYZHardwareAnalysisComponent_Updating_DoesNotOverrideFieldsMissingFromADictionary]' passed (0.001 seconds). 540 | Test Suite 'XYZHardwareAnalysisComponentSpec' passed at 2014-11-18 01:15:54 +0000. 541 | Executed 18 tests, with 0 failures (0 unexpected) in 0.021 (0.022) seconds 542 | Test Suite 'XYZResultSensorInsightSpec' started at 2014-11-18 01:15:54 +0000 543 | Test Case '-[XYZResultSensorInsightSpec XYZResultSensorInsight_Initialization_SetsTheMessage]' started. 544 | 2014-11-17 17:15:54.987 SampleProject[95307:60b] + 'XYZResultSensorInsight, initialization, sets the message' [PASSED] 545 | Test Case '-[XYZResultSensorInsightSpec XYZResultSensorInsight_Initialization_SetsTheMessage]' passed (0.001 seconds). 546 | Test Case '-[XYZResultSensorInsightSpec XYZResultSensorInsight_Initialization_SetsTheName]' started. 547 | 2014-11-17 17:15:54.989 SampleProject[95307:60b] + 'XYZResultSensorInsight, initialization, sets the name' [PASSED] 548 | Test Case '-[XYZResultSensorInsightSpec XYZResultSensorInsight_Initialization_SetsTheName]' passed (0.001 seconds). 549 | Test Case '-[XYZResultSensorInsightSpec XYZResultSensorInsight_Initialization_SetsTheCondition]' started. 550 | 2014-11-17 17:15:54.990 SampleProject[95307:60b] + 'XYZResultSensorInsight, initialization, sets the condition' [PASSED] 551 | Test Case '-[XYZResultSensorInsightSpec XYZResultSensorInsight_Initialization_SetsTheCondition]' passed (0.001 seconds). 552 | Test Case '-[XYZResultSensorInsightSpec XYZResultSensorInsight_Serialization_IsSerializable]' started. 553 | 2014-11-17 17:15:54.992 SampleProject[95307:60b] + 'XYZResultSensorInsight, serialization, is serializable' [PASSED] 554 | Test Case '-[XYZResultSensorInsightSpec XYZResultSensorInsight_Serialization_IsSerializable]' passed (0.002 seconds). 555 | Test Case '-[XYZResultSensorInsightSpec XYZResultSensorInsight_Serialization_HasTheSameNameAfterSerialization]' started. 556 | 2014-11-17 17:15:54.993 SampleProject[95307:60b] + 'XYZResultSensorInsight, serialization, has the same name after serialization' [PASSED] 557 | Test Case '-[XYZResultSensorInsightSpec XYZResultSensorInsight_Serialization_HasTheSameNameAfterSerialization]' passed (0.001 seconds). 558 | Test Case '-[XYZResultSensorInsightSpec XYZResultSensorInsight_Serialization_HasTheSameMessageAfterSerialization]' started. 559 | 2014-11-17 17:15:54.994 SampleProject[95307:60b] + 'XYZResultSensorInsight, serialization, has the same message after serialization' [PASSED] 560 | Test Case '-[XYZResultSensorInsightSpec XYZResultSensorInsight_Serialization_HasTheSameMessageAfterSerialization]' passed (0.001 seconds). 561 | Test Case '-[XYZResultSensorInsightSpec XYZResultSensorInsight_Serialization_HasTheSameConditionAfterSerialization]' started. 562 | 2014-11-17 17:15:54.995 SampleProject[95307:60b] + 'XYZResultSensorInsight, serialization, has the same condition after serialization' [PASSED] 563 | Test Case '-[XYZResultSensorInsightSpec XYZResultSensorInsight_Serialization_HasTheSameConditionAfterSerialization]' passed (0.001 seconds). 564 | Test Case '-[XYZResultSensorInsightSpec XYZResultSensorInsight_Updating_UpdatesAnExistingInstanceWithADictionary]' started. 565 | 2014-11-17 17:15:54.996 SampleProject[95307:60b] + 'XYZResultSensorInsight, updating, updates an existing instance with a dictionary' [PASSED] 566 | Test Case '-[XYZResultSensorInsightSpec XYZResultSensorInsight_Updating_UpdatesAnExistingInstanceWithADictionary]' passed (0.001 seconds). 567 | Test Case '-[XYZResultSensorInsightSpec XYZResultSensorInsight_Updating_DoesNotOverrideFieldsMissingFromADictionary]' started. 568 | 2014-11-17 17:15:54.997 SampleProject[95307:60b] + 'XYZResultSensorInsight, updating, does not override fields missing from a dictionary' [PASSED] 569 | Test Case '-[XYZResultSensorInsightSpec XYZResultSensorInsight_Updating_DoesNotOverrideFieldsMissingFromADictionary]' passed (0.001 seconds). 570 | Test Suite 'XYZResultSensorInsightSpec' passed at 2014-11-18 01:15:54 +0000. 571 | Executed 9 tests, with 0 failures (0 unexpected) in 0.010 (0.011) seconds 572 | Test Suite 'XYZResultSpec' started at 2014-11-18 01:15:54 +0000 573 | Test Case '-[XYZResultSpec XYZResult_Initialization_PopulatesANewInstanceFromADictionary]' started. 574 | 2014-11-17 17:15:54.998 SampleProject[95307:60b] + 'XYZResult, initialization, populates a new instance from a dictionary' [PASSED] 575 | Test Case '-[XYZResultSpec XYZResult_Initialization_PopulatesANewInstanceFromADictionary]' passed (0.001 seconds). 576 | Test Case '-[XYZResultSpec XYZResult_Initialization_SetsTheDate]' started. 577 | 2014-11-17 17:15:55.000 SampleProject[95307:60b] + 'XYZResult, initialization, sets the date' [PASSED] 578 | Test Case '-[XYZResultSpec XYZResult_Initialization_SetsTheDate]' passed (0.002 seconds). 579 | Test Case '-[XYZResultSpec XYZResult_Initialization_SetsTheScore]' started. 580 | 2014-11-17 17:15:55.001 SampleProject[95307:60b] + 'XYZResult, initialization, sets the score' [PASSED] 581 | Test Case '-[XYZResultSpec XYZResult_Initialization_SetsTheScore]' passed (0.001 seconds). 582 | Test Case '-[XYZResultSpec XYZResult_Initialization_SetsTheSegments]' started. 583 | 2014-11-17 17:15:55.002 SampleProject[95307:60b] + 'XYZResult, initialization, sets the segments' [PASSED] 584 | Test Case '-[XYZResultSpec XYZResult_Initialization_SetsTheSegments]' passed (0.001 seconds). 585 | Test Case '-[XYZResultSpec XYZResult_Initialization_SetsTheInsights]' started. 586 | 2014-11-17 17:15:55.003 SampleProject[95307:60b] + 'XYZResult, initialization, sets the insights' [PASSED] 587 | Test Case '-[XYZResultSpec XYZResult_Initialization_SetsTheInsights]' passed (0.001 seconds). 588 | Test Case '-[XYZResultSpec XYZResult_Serialization_IsSerializable]' started. 589 | 2014-11-17 17:15:55.004 SampleProject[95307:60b] + 'XYZResult, serialization, is serializable' [PASSED] 590 | Test Case '-[XYZResultSpec XYZResult_Serialization_IsSerializable]' passed (0.001 seconds). 591 | Test Case '-[XYZResultSpec XYZResult_Serialization_IsTheSameAfterSerialization]' started. 592 | 2014-11-17 17:15:55.006 SampleProject[95307:60b] + 'XYZResult, serialization, is the same after serialization' [PASSED] 593 | Test Case '-[XYZResultSpec XYZResult_Serialization_IsTheSameAfterSerialization]' passed (0.002 seconds). 594 | Test Case '-[XYZResultSpec XYZResult_Updating_UpdatesAnExistingInstanceWithADictionary]' started. 595 | 2014-11-17 17:15:55.007 SampleProject[95307:60b] + 'XYZResult, updating, updates an existing instance with a dictionary' [PASSED] 596 | Test Case '-[XYZResultSpec XYZResult_Updating_UpdatesAnExistingInstanceWithADictionary]' passed (0.001 seconds). 597 | Test Case '-[XYZResultSpec XYZResult_Updating_DoesNotOverrideFieldsMissingFromADictionary]' started. 598 | 2014-11-17 17:15:55.008 SampleProject[95307:60b] + 'XYZResult, updating, does not override fields missing from a dictionary' [PASSED] 599 | Test Case '-[XYZResultSpec XYZResult_Updating_DoesNotOverrideFieldsMissingFromADictionary]' passed (0.001 seconds). 600 | Test Case '-[XYZResultSpec XYZResult_Updating_UpdatesAllInsights]' started. 601 | 2014-11-17 17:15:55.009 SampleProject[95307:60b] + 'XYZResult, updating, updates all insights' [PASSED] 602 | Test Case '-[XYZResultSpec XYZResult_Updating_UpdatesAllInsights]' passed (0.001 seconds). 603 | Test Suite 'XYZResultSpec' passed at 2014-11-18 01:15:55 +0000. 604 | Executed 10 tests, with 0 failures (0 unexpected) in 0.012 (0.012) seconds 605 | Test Suite 'Tests.xctest' passed at 2014-11-18 01:15:55 +0000. 606 | Executed 165 tests, with 0 failures (0 unexpected) in 6.036 (6.050) seconds 607 | Test Suite 'All tests' passed at 2014-11-18 01:15:55 +0000. 608 | Executed 165 tests, with 0 failures (0 unexpected) in 6.036 (6.051) seconds 609 | ** TEST SUCCEEDED ** -------------------------------------------------------------------------------- /spec/fixtures/xcodebuild_multitest.json: -------------------------------------------------------------------------------- 1 | { 2 | "warnings": [ 3 | 4 | ], 5 | "ld_warnings": [ 6 | 7 | ], 8 | "compile_warnings": [ 9 | 10 | ], 11 | "errors": [ 12 | 13 | ], 14 | "compile_errors": [ 15 | 16 | ], 17 | "file_missing_errors": [ 18 | 19 | ], 20 | "undefined_symbols_errors": [ 21 | 22 | ], 23 | "duplicate_symbols_errors": [ 24 | 25 | ], 26 | "tests_failures": { 27 | "BlackJack_iOS_Failing_Tests.FailingCardTestCase": [ 28 | { 29 | "file_path": "/BlackJack/Framework/Tests/Failing/FailingCardTests.swift:19", 30 | "reason": "XCTAssertEqual failed: (\"13\") is not equal to (\"12\") -", 31 | "test_case": "testAllRankCases" 32 | }, 33 | { 34 | "file_path": "/BlackJack/Framework/Tests/Failing/FailingCardTests.swift:27", 35 | "reason": "XCTAssertEqual failed: (\"4\") is not equal to (\"3\") -", 36 | "test_case": "testAllSuitCases" 37 | } 38 | ], 39 | "BlackJack_Tests.DeckTestCase": [ 40 | { 41 | "file_path": "/BlackJack/Framework/Tests/DeckTests.swift:49", 42 | "reason": "XCTAssertEqual failed: (\"52\") is not equal to (\"51\") -", 43 | "test_case": "testStandardDeck" 44 | } 45 | ], 46 | "BlackJack_Tests.GameTestCase": [ 47 | { 48 | "file_path": "/BlackJack/Framework/Tests/GameTests.swift:23", 49 | "reason": "XCTAssertEqual failed: (\"Dealer\") is not equal to (\"Nooop\") -", 50 | "test_case": "testInitialization" 51 | } 52 | ] 53 | }, 54 | "tests_summary_messages": [ 55 | "\t Executed 3 tests, with 2 failures (0 unexpected) in 0.039 (0.055) seconds\n", 56 | "\t Executed 14 tests, with 2 failures (0 unexpected) in 0.015 (0.025) seconds\n" 57 | ] 58 | } 59 | -------------------------------------------------------------------------------- /spec/fixtures/xcodebuild_multitest.log: -------------------------------------------------------------------------------- 1 | === CLEAN TARGET BlackJack iOS OF PROJECT BlackJack WITH CONFIGURATION Debug === 2 | 3 | Check dependencies 4 | 5 | === CLEAN TARGET BlackJack iOS Tests OF PROJECT BlackJack WITH CONFIGURATION Debug === 6 | 7 | Check dependencies 8 | 9 | === CLEAN TARGET BlackJack iOS Failing Tests OF PROJECT BlackJack WITH CONFIGURATION Debug === 10 | 11 | Check dependencies 12 | 13 | ** CLEAN SUCCEEDED ** 14 | 15 | === BUILD TARGET BlackJack iOS OF PROJECT BlackJack WITH CONFIGURATION Debug === 16 | 17 | Check dependencies 18 | 19 | === BUILD TARGET BlackJack iOS Failing Tests OF PROJECT BlackJack WITH CONFIGURATION Debug === 20 | 21 | Check dependencies 22 | 23 | === BUILD TARGET BlackJack iOS Tests OF PROJECT BlackJack WITH CONFIGURATION Debug === 24 | 25 | Check dependencies 26 | 27 | ** BUILD SUCCEEDED ** 28 | 29 | === BUILD TARGET BlackJack iOS OF PROJECT BlackJack WITH CONFIGURATION Debug === 30 | 31 | Check dependencies 32 | 33 | === BUILD TARGET BlackJack iOS Tests OF PROJECT BlackJack WITH CONFIGURATION Debug === 34 | 35 | Check dependencies 36 | 37 | === BUILD TARGET BlackJack iOS Failing Tests OF PROJECT BlackJack WITH CONFIGURATION Debug === 38 | 39 | Check dependencies 40 | 41 | Test Suite 'All tests' started at 2018-07-26 14:48:08.323 42 | Test Suite 'BlackJack iOS Failing Tests.xctest' started at 2018-07-26 14:48:08.325 43 | Test Suite 'FailingCardTestCase' started at 2018-07-26 14:48:08.327 44 | Test Case '-[BlackJack_iOS_Failing_Tests.FailingCardTestCase testAllRankCases]' started. 45 | /BlackJack/Framework/Tests/Failing/FailingCardTests.swift:19: error: -[BlackJack_iOS_Failing_Tests.FailingCardTestCase testAllRankCases] : XCTAssertEqual failed: ("13") is not equal to ("12") - 46 | Test Case '-[BlackJack_iOS_Failing_Tests.FailingCardTestCase testAllRankCases]' failed (0.026 seconds). 47 | Test Case '-[BlackJack_iOS_Failing_Tests.FailingCardTestCase testAllSuitCases]' started. 48 | /BlackJack/Framework/Tests/Failing/FailingCardTests.swift:27: error: -[BlackJack_iOS_Failing_Tests.FailingCardTestCase testAllSuitCases] : XCTAssertEqual failed: ("4") is not equal to ("3") - 49 | Test Case '-[BlackJack_iOS_Failing_Tests.FailingCardTestCase testAllSuitCases]' failed (0.011 seconds). 50 | Test Case '-[BlackJack_iOS_Failing_Tests.FailingCardTestCase testInitialization]' started. 51 | Test Case '-[BlackJack_iOS_Failing_Tests.FailingCardTestCase testInitialization]' passed (0.002 seconds). 52 | Test Suite 'FailingCardTestCase' failed at 2018-07-26 14:48:08.377. 53 | Executed 3 tests, with 2 failures (0 unexpected) in 0.039 (0.051) seconds 54 | Test Suite 'BlackJack iOS Failing Tests.xctest' failed at 2018-07-26 14:48:08.380. 55 | Executed 3 tests, with 2 failures (0 unexpected) in 0.039 (0.055) seconds 56 | Test Suite 'All tests' failed at 2018-07-26 14:48:08.382. 57 | Executed 3 tests, with 2 failures (0 unexpected) in 0.039 (0.059) seconds 58 | Test Suite 'All tests' started at 2018-07-26 14:48:09.220 59 | Test Suite 'BlackJack Tests.xctest' started at 2018-07-26 14:48:09.221 60 | Test Suite 'CardTestCase' started at 2018-07-26 14:48:09.222 61 | Test Case '-[BlackJack_Tests.CardTestCase testAllRankCases]' started. 62 | Test Case '-[BlackJack_Tests.CardTestCase testAllRankCases]' passed (0.002 seconds). 63 | Test Case '-[BlackJack_Tests.CardTestCase testAllSuitCases]' started. 64 | Test Case '-[BlackJack_Tests.CardTestCase testAllSuitCases]' passed (0.001 seconds). 65 | Test Case '-[BlackJack_Tests.CardTestCase testInitialization]' started. 66 | Test Case '-[BlackJack_Tests.CardTestCase testInitialization]' passed (0.000 seconds). 67 | Test Suite 'CardTestCase' passed at 2018-07-26 14:48:09.226. 68 | Executed 3 tests, with 0 failures (0 unexpected) in 0.003 (0.005) seconds 69 | Test Suite 'DealerTestCase' started at 2018-07-26 14:48:09.227 70 | Test Case '-[BlackJack_Tests.DealerTestCase testDealCards]' started. 71 | Deal Cards 72 | Test Case '-[BlackJack_Tests.DealerTestCase testDealCards]' passed (0.002 seconds). 73 | Test Case '-[BlackJack_Tests.DealerTestCase testInitialization]' started. 74 | Test Case '-[BlackJack_Tests.DealerTestCase testInitialization]' passed (0.001 seconds). 75 | Test Suite 'DealerTestCase' passed at 2018-07-26 14:48:09.230. 76 | Executed 2 tests, with 0 failures (0 unexpected) in 0.003 (0.004) seconds 77 | Test Suite 'DeckTestCase' started at 2018-07-26 14:48:09.231 78 | Test Case '-[BlackJack_Tests.DeckTestCase testInitialization]' started. 79 | Test Case '-[BlackJack_Tests.DeckTestCase testInitialization]' passed (0.001 seconds). 80 | Test Case '-[BlackJack_Tests.DeckTestCase testShuffle]' started. 81 | Test Case '-[BlackJack_Tests.DeckTestCase testShuffle]' passed (0.000 seconds). 82 | Test Case '-[BlackJack_Tests.DeckTestCase testStandardDeck]' started. 83 | /BlackJack/Framework/Tests/DeckTests.swift:49: error: -[BlackJack_Tests.DeckTestCase testStandardDeck] : XCTAssertEqual failed: ("52") is not equal to ("51") - 84 | Test Case '-[BlackJack_Tests.DeckTestCase testStandardDeck]' failed (0.004 seconds). 85 | Test Case '-[BlackJack_Tests.DeckTestCase testTakeCard]' started. 86 | Test Case '-[BlackJack_Tests.DeckTestCase testTakeCard]' passed (0.001 seconds). 87 | Test Suite 'DeckTestCase' failed at 2018-07-26 14:48:09.238. 88 | Executed 4 tests, with 1 failure (0 unexpected) in 0.006 (0.008) seconds 89 | Test Suite 'GameTestCase' started at 2018-07-26 14:48:09.239 90 | Test Case '-[BlackJack_Tests.GameTestCase testInitialization]' started. 91 | /BlackJack/Framework/Tests/GameTests.swift:23: error: -[BlackJack_Tests.GameTestCase testInitialization] : XCTAssertEqual failed: ("Dealer") is not equal to ("Nooop") - 92 | Test Case '-[BlackJack_Tests.GameTestCase testInitialization]' failed (0.002 seconds). 93 | Test Suite 'GameTestCase' failed at 2018-07-26 14:48:09.242. 94 | Executed 1 test, with 1 failure (0 unexpected) in 0.002 (0.002) seconds 95 | Test Suite 'HandTestCase' started at 2018-07-26 14:48:09.242 96 | Test Case '-[BlackJack_Tests.HandTestCase testAddCard]' started. 97 | Test Case '-[BlackJack_Tests.HandTestCase testAddCard]' passed (0.001 seconds). 98 | Test Case '-[BlackJack_Tests.HandTestCase testAddCards]' started. 99 | Test Case '-[BlackJack_Tests.HandTestCase testAddCards]' passed (0.000 seconds). 100 | Test Case '-[BlackJack_Tests.HandTestCase testInitialization]' started. 101 | Test Case '-[BlackJack_Tests.HandTestCase testInitialization]' passed (0.000 seconds). 102 | Test Suite 'HandTestCase' passed at 2018-07-26 14:48:09.245. 103 | Executed 3 tests, with 0 failures (0 unexpected) in 0.001 (0.003) seconds 104 | Test Suite 'PlayerTestCase' started at 2018-07-26 14:48:09.245 105 | Test Case '-[BlackJack_Tests.PlayerTestCase testInitialization]' started. 106 | Test Case '-[BlackJack_Tests.PlayerTestCase testInitialization]' passed (0.000 seconds). 107 | Test Suite 'PlayerTestCase' passed at 2018-07-26 14:48:09.246. 108 | Executed 1 test, with 0 failures (0 unexpected) in 0.000 (0.001) seconds 109 | Test Suite 'BlackJack Tests.xctest' failed at 2018-07-26 14:48:09.246. 110 | Executed 14 tests, with 2 failures (0 unexpected) in 0.015 (0.025) seconds 111 | Test Suite 'All tests' failed at 2018-07-26 14:48:09.247. 112 | Executed 14 tests, with 2 failures (0 unexpected) in 0.015 (0.026) seconds 113 | Generating coverage data... 114 | Failing tests: 115 | FailingCardTestCase.testAllRankCases() 116 | FailingCardTestCase.testAllSuitCases() 117 | DeckTestCase.testStandardDeck() 118 | GameTestCase.testInitialization() 119 | ** TEST FAILED ** -------------------------------------------------------------------------------- /spec/formatter_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | require 'fileutils' 3 | require 'json' 4 | require 'tmpdir' 5 | 6 | describe 'JSONFormatter' do 7 | it 'formats raw_kiwi_compilation_fail' do 8 | verify_file('raw_kiwi_compilation_fail') 9 | end 10 | 11 | it 'formats raw_kiwi_fail' do 12 | verify_file('raw_kiwi_fail') 13 | end 14 | 15 | it 'formats raw_specta_fail' do 16 | verify_file('raw_specta_fail') 17 | end 18 | 19 | it 'formats xcodebuild' do 20 | verify_file('xcodebuild') 21 | end 22 | 23 | it 'formats xcodebuild_multitest' do 24 | verify_file('xcodebuild_multitest') 25 | end 26 | 27 | def verify_file(file) 28 | output = nil 29 | Dir.mktmpdir do |dir| 30 | FileUtils.cp("spec/fixtures/#{file}.log", dir) 31 | Dir.chdir(dir) do 32 | %x(cat #{file}.log | XCPRETTY_JSON_FILE_OUTPUT=result.json bundle exec xcpretty -f `xcpretty-json-formatter`) 33 | output = JSON.parse(File.read('result.json')) 34 | end 35 | end 36 | 37 | expect(output).to eq json_fixture(file) 38 | end 39 | end 40 | -------------------------------------------------------------------------------- /spec/spec_helper.rb: -------------------------------------------------------------------------------- 1 | require 'pathname' 2 | ROOT = Pathname.new(File.expand_path('..', __dir__)) 3 | $LOAD_PATH.unshift((ROOT + 'lib').to_s) 4 | $LOAD_PATH.unshift((ROOT + 'spec').to_s) 5 | 6 | require 'bundler/setup' 7 | 8 | require 'rspec' 9 | 10 | # Use coloured output, it's the best. 11 | RSpec.configure do |config| 12 | config.filter_gems_from_backtrace 'bundler' 13 | config.color = true 14 | config.tty = true 15 | end 16 | 17 | def fixture(file) 18 | File.read("spec/fixtures/#{file}") 19 | end 20 | 21 | def json_fixture(file, parsing = true) 22 | content = fixture("#{file}.json") 23 | content = JSON.parse(content) if parsing 24 | 25 | content 26 | end 27 | -------------------------------------------------------------------------------- /xcpretty-json-formatter.gemspec: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | 3 | Gem::Specification.new do |spec| 4 | spec.name = 'xcpretty-json-formatter' 5 | spec.version = '0.1.1' 6 | spec.authors = ['Marcelo Fabri'] 7 | spec.email = ['me@marcelofabri.com'] 8 | 9 | spec.summary = 'xcpretty custom formatter for JSON output' 10 | spec.description = 'Custom formatter for xcpretty that saves on a JSON file all the errors, warnings and test failures, so you can process them easily later.' 11 | spec.homepage = 'https://github.com/marcelofabri/xcpretty-json-formatter' 12 | spec.license = 'MIT' 13 | 14 | spec.files = [ 15 | 'README.md', 16 | 'LICENSE', 17 | 'lib/json_formatter.rb', 18 | 'bin/xcpretty-json-formatter' 19 | ] 20 | spec.executables = ['xcpretty-json-formatter'] 21 | spec.require_paths = ['lib'] 22 | 23 | spec.add_dependency 'xcpretty', '~> 0.2', '>= 0.0.7' 24 | 25 | spec.add_development_dependency 'bundler', '~> 1.11' 26 | spec.add_development_dependency 'rake', '~> 10.0' 27 | spec.add_development_dependency 'rspec', '~> 3.0' 28 | spec.add_development_dependency 'rubocop', '~> 0.38' 29 | end 30 | --------------------------------------------------------------------------------