lib/xcpretty/parser.rb in xcpretty-0.2.3 vs lib/xcpretty/parser.rb in xcpretty-0.2.4
- old
+ new
@@ -96,16 +96,16 @@
# @regex Captured groups
# $1 = file
# $2 = test_suite
# $3 = test_case
# $4 = reason
- TEST_FAILURE_MATCHER = /^\s*(.+:\d+):\serror:\s[\+\-]\[(.*)\s(.*)\]\s:(?:\s'.*'\s\[FAILED\],)?\s(.*)/
+ FAILING_TEST_MATCHER = /^\s*(.+:\d+):\serror:\s[\+\-]\[(.*)\s(.*)\]\s:(?:\s'.*'\s\[FAILED\],)?\s(.*)/
# @regex Captured groups
# $1 = file
# $2 = reason
- TEST_UI_FAILURE_MATCHER = /Assertion\sFailure:\s(.+:\d+):\s(.*)/
+ UI_FAILING_TEST_MATCHER = /^\s{4}t = \s+\d+\.\d+s\s+Assertion Failure: (.*:\d+): (.*)$/
# @regex Captured groups
# $1 = dsym
GENERATE_DSYM_MATCHER = /^GenerateDSYMFile \/.*\/(.*\.dSYM)/
@@ -121,28 +121,28 @@
# @regex Captured groups
# $1 = suite
# $2 = test_case
# $3 = time
- FAILING_TEST_MATCHER = /^\s*Test Case\s'-\[(.*)\s(.*)\]'\sfailed\s\((\d*\.\d{3})\sseconds\)/
+ TEST_CASE_PASSED_MATCHER = /^\s*Test Case\s'-\[(.*)\s(.*)\]'\spassed\s\((\d*\.\d{3})\sseconds\)/
+
# @regex Captured groups
# $1 = suite
# $2 = test_case
- # $3 = time
- PASSING_TEST_MATCHER = /^\s*Test Case\s'-\[(.*)\s(.*)\]'\spassed\s\((\d*\.\d{3})\sseconds\)/
+ TEST_CASE_STARTED_MATCHER = /^Test Case '-\[(.*) (.*)\]' started.$/
# @regex Captured groups
# $1 = suite
# $2 = test_case
- PENDING_TEST_MATCHER = /^Test Case\s'-\[(.*)\s(.*)PENDING\]'\spassed/
+ TEST_CASE_PENDING_MATCHER = /^Test Case\s'-\[(.*)\s(.*)PENDING\]'\spassed/
# @regex Captured groups
# $1 = suite
# $2 = test_case
# $3 = time
- MEASURING_TEST_MATCHER = /^[^:]*:[^:]*:\sTest Case\s'-\[(.*)\s(.*)\]'\smeasured\s\[Time,\sseconds\]\saverage:\s(\d*\.\d{3}),/
+ TEST_CASE_MEASURED_MATCHER = /^[^:]*:[^:]*:\sTest Case\s'-\[(.*)\s(.*)\]'\smeasured\s\[Time,\sseconds\]\saverage:\s(\d*\.\d{3}),/
PHASE_SUCCESS_MATCHER = /^\*\*\s(.*)\sSUCCEEDED\s\*\*/
# @regex Captured groups
# $1 = script_name
@@ -174,11 +174,11 @@
TESTS_RUN_COMPLETION_MATCHER = /^\s*Test Suite '(?:.*\/)?(.*[ox]ctest.*)' (finished|passed|failed) at (.*)/
# @regex Captured groups
# $1 = suite
# $2 = time
- TESTS_RUN_START_MATCHER = /^\s*Test Suite '(?:.*\/)?(.*[ox]ctest.*)' started at(.*)/
+ TEST_SUITE_STARTED_MATCHER = /^\s*Test Suite '(?:.*\/)?(.*[ox]ctest.*)' started at(.*)/
# @regex Captured groups
# $1 test suite name
TEST_SUITE_START_MATCHER = /^\s*Test Suite '(.*)' started at/
@@ -209,10 +209,14 @@
LD_WARNING_MATCHER = /^(ld: )warning: (.*)/
# @regex Captured groups
# $1 = whole warning
GENERIC_WARNING_MATCHER = /^warning:\s(.*)$/
+
+ # @regex Captured groups
+ # $1 = whole warning
+ WILL_NOT_BE_CODE_SIGNED_MATCHER = /^(.* will not be code signed because .*)$/
end
module Errors
# @regex Captured groups
# $1 = whole error
@@ -221,20 +225,28 @@
# @regex Captured groups
# $1 = whole error
CODESIGN_ERROR_MATCHER = /^(Code\s?Sign error:.*)$/
# @regex Captured groups
+ # $1 = whole error
+ CODE_SIGNING_REQUIRED_MATCHER = /^(Code signing is required for product type .* in SDK .*)$/
+
+ # @regex Captured groups
# $1 = file_path
# $2 = file_name
# $3 = reason
COMPILE_ERROR_MATCHER = /^(\/.+\/(.*):.*:.*):\s(?:fatal\s)?error:\s(.*)$/
# @regex Captured groups
# $1 cursor (with whitespaces and tildes)
CURSOR_MATCHER = /^([\s~]*\^[\s~]*)$/
# @regex Captured groups
+ # $1 = whole message
+ PROFILE_DOESNT_SUPPORT_OR_INCLUDE = /^(Provisioning profile .* doesn't .*)$/
+
+ # @regex Captured groups
# $1 = whole error.
# it varies a lot, not sure if it makes sense to catch everything separately
FATAL_ERROR_MATCHER = /^(fatal error:.*)$/
# @regex Captured groups
@@ -316,10 +328,12 @@
formatter.format_codesign($1)
when CODESIGN_MATCHER
formatter.format_codesign($1)
when CODESIGN_ERROR_MATCHER
formatter.format_error($1)
+ when CODE_SIGNING_REQUIRED_MATCHER
+ formatter.format_error($1)
when COMPILE_MATCHER
formatter.format_compile($2, $1)
when COMPILE_COMMAND_MATCHER
formatter.format_compile_command($1, $2)
when COMPILE_XIB_MATCHER
@@ -330,13 +344,17 @@
formatter.format_copy_header_file($1, $2)
when COPY_PLIST_MATCHER
formatter.format_copy_plist_file($1, $2)
when CPRESOURCE_MATCHER
formatter.format_cpresource($1)
+ when PROFILE_DOESNT_SUPPORT_OR_INCLUDE
+ formatter.format_error($1)
when EXECUTED_MATCHER
format_summary_if_needed(text)
- when TEST_FAILURE_MATCHER
+ when UI_FAILING_TEST_MATCHER
+ formatter.format_failing_test(@test_suite, @test_case, $2, $1)
+ when FAILING_TEST_MATCHER
formatter.format_failing_test($2, $3, $4, $1)
when FATAL_ERROR_MATCHER
formatter.format_error($1)
when FILE_MISSING_ERROR_MATCHER
formatter.format_file_missing_error($1, $2)
@@ -348,21 +366,15 @@
formatter.format_error($1)
when LIBTOOL_MATCHER
formatter.format_libtool($1)
when LINKING_MATCHER
formatter.format_linking($1, $2, $3)
- when MEASURING_TEST_MATCHER
+ when TEST_CASE_MEASURED_MATCHER
formatter.format_measuring_test($1, $2, $3)
- when PENDING_TEST_MATCHER
+ when TEST_CASE_PENDING_MATCHER
formatter.format_pending_test($1, $2)
- when FAILING_TEST_MATCHER
- if @current_assertion_failure
- formatter.format_failing_test($1, $2, @current_assertion_failure[:reason], @current_assertion_failure[:file])
- else
- formatter.format_failing_test($1, $2, '', '')
- end
- when PASSING_TEST_MATCHER
+ when TEST_CASE_PASSED_MATCHER
formatter.format_passing_test($1, $2, $3)
when PODS_ERROR_MATCHER
formatter.format_error($1)
when PROCESS_INFO_PLIST_MATCHER
formatter.format_process_info_plist(*unescaped($2, $1))
@@ -378,11 +390,11 @@
formatter.format_preprocess($1)
when PBXCP_MATCHER
formatter.format_pbxcp($1)
when TESTS_RUN_COMPLETION_MATCHER
formatter.format_test_run_finished($1, $3)
- when TESTS_RUN_START_MATCHER
+ when TEST_SUITE_STARTED_MATCHER
formatter.format_test_run_started($1)
when TEST_SUITE_START_MATCHER
formatter.format_test_suite_started($1)
when TIFFUTIL_MATCHER
formatter.format_tiffutil($1)
@@ -394,40 +406,34 @@
formatter.format_write_auxiliary_files
when SHELL_COMMAND_MATCHER
formatter.format_shell_command($1, $2)
when GENERIC_WARNING_MATCHER
formatter.format_warning($1)
+ when WILL_NOT_BE_CODE_SIGNED_MATCHER
+ formatter.format_will_not_be_code_signed($1)
else
""
end
end
private
def update_test_state(text)
case text
- when TESTS_RUN_START_MATCHER
+ when TEST_SUITE_STARTED_MATCHER
@tests_done = false
@formatted_summary = false
@failures = {}
- @assertion_failure = []
- @current_assertion_failure = {}
+ when TEST_CASE_STARTED_MATCHER
+ @test_suite = $1
+ @test_case = $2
when TESTS_RUN_COMPLETION_MATCHER
@tests_done = true
- when TEST_UI_FAILURE_MATCHER
- @current_assertion_failure = {
- file: $1,
- reason: $2
- }
when FAILING_TEST_MATCHER
- if @current_assertion_failure
- store_failure(@current_assertion_failure[:file], $1, $2, @current_assertion_failure[:reason])
- else
- store_failure(nil, $1, $2, '')
- end
- when TEST_FAILURE_MATCHER
- store_failure($1, $2, $3, $4)
+ store_failure(file: $1, test_suite: $2, test_case: $3, reason: $4)
+ when UI_FAILING_TEST_MATCHER
+ store_failure(file: $1, test_suite: @test_suite, test_case: @test_case, reason: $2)
end
end
# @ return Hash { :file_name, :file_path, :reason, :line }
def update_error_state(text)
@@ -541,11 +547,11 @@
def reset_linker_format_state
@linker_failure = nil
@formatting_linker_failure = false
end
- def store_failure(file, test_suite, test_case, reason)
+ def store_failure(file: nil, test_suite: nil, test_case: nil, reason: nil)
failures_per_suite[test_suite] ||= []
failures_per_suite[test_suite] << {
file_path: file,
reason: reason,
test_case: test_case
@@ -571,5 +577,6 @@
escaped_values.map { |v| v.delete('\\') }
end
end
end
+