danger-xcode_summary 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +59 -26
  3. data/README.md +9 -0
  4. data/lib/xcode_summary/gem_version.rb +1 -1
  5. data/lib/xcode_summary/plugin.rb +90 -15
  6. data/spec/fixtures/retried_tests.xcresult/Data/data.0~0luACsaLuIGsrHaW1p2r5kZFHAc8zIEhwg3hljPljHFBXD5-SNyct3RGkRlOfxfzboO40eJl793H-Tr3h9EAnQ== +0 -0
  7. data/spec/fixtures/retried_tests.xcresult/Data/data.0~2pBphMrRyBCZZCQggyI4Mn6_j-5CLweK-fa0nWOCa9lJ8r2Wc2mBQ8pFJcC_WkgbosHOTBZ2Yy0aDHgIxltNhg== +0 -0
  8. data/spec/fixtures/retried_tests.xcresult/Data/data.0~4VqMqsI5lOfxRppnud6-VDWcNsU8J7VgFCJfW2dXPwOcAkvU-I8Um5yp9n0Zv6nr3VmcxYggaVMDFfR0U_vjKw== +1 -0
  9. data/spec/fixtures/retried_tests.xcresult/Data/data.0~6_4s3J3j6iod0lxP9aqno8ppJVQAboTeoRYyEul58CXo86xYCi8pMJ9rHByVMLh_8_pFHLJ84UVbwjzR9-yKJQ== +0 -0
  10. data/spec/fixtures/retried_tests.xcresult/Data/data.0~7TAYIP6c6qLbBBpUWOkRobtgM8Dwhgtv1BfKhhuXyB04LXXo7xzeG8s9t-nSiFKxphDdrBsMR3b7bJ3nIsyQfQ== +0 -0
  11. data/spec/fixtures/retried_tests.xcresult/Data/data.0~AkR51mFgewGZrXJm8i7esSQXBXifwrpYLzKq3l8xgLBbfsS1SQ4_5rYhhT-vYUSck7Oo8HJfkbYh_otWeamddQ== +0 -0
  12. data/spec/fixtures/retried_tests.xcresult/Data/data.0~Bk5mUKvVX2jK4C69s0yWQYPcBzOHtcyxHZjMB0csj0hQkVYZoQiPgpOIv0JCLeZ0gGqi54r7InqzVWLe8KHQyg== +0 -0
  13. data/spec/fixtures/retried_tests.xcresult/Data/data.0~EObm8N_XU7PQfhT0KV0IDp8cdjLRxeiEzO4iRRL1uLGJ3-aWi2gzbiTirY0YgI2Nu0H_c9zSOiHTo3OLExQu2w== +0 -0
  14. data/spec/fixtures/retried_tests.xcresult/Data/data.0~FwJhpRUoZfeezopc-2WEkr7iOGkIvwRKVZ8DGttanmSmq7WBjG20njudVR2jo_3tgkLJv-VW0-2f0u6wludedg== +0 -0
  15. data/spec/fixtures/retried_tests.xcresult/Data/data.0~NWytdFolCFUA176MXDzt3mcbzNx-2oVk7o_X_aHPVaiVTu7JzoBqHXkbDAsdAofZzu-9mSfqH0o197rdBY5tXA== +0 -0
  16. data/spec/fixtures/retried_tests.xcresult/Data/data.0~UBgiphVm2gD00ZBzLvEnuJS_2F-O68r2wpLN7o5fbRd1_UsLtwHcLlSKKjqWjZicrPVbTGAxRfNTpTsJHMvbQA== +1 -0
  17. data/spec/fixtures/retried_tests.xcresult/Data/data.0~WMfxWcCJxmkDc00Zf0P29xnenUcbJx__4iIpthhfBJ8e_jac_0gHtk22ayhcGD2HCSB9JujMC4vIqM6TneeVoA== +0 -0
  18. data/spec/fixtures/retried_tests.xcresult/Data/data.0~XOTNmYsiCcpoBO03zDqHCWwjrSvR3eUQs6UpT6Kf1nnnCwIGPyE7V8mmhdIj_Q_LAiZ6V2Dg2yuokSxbPRQh1A== +0 -0
  19. data/spec/fixtures/retried_tests.xcresult/Data/data.0~XjY1NAMlBNNXx2x4kaNnnHVvyd-05qYvt_gFwZ_qr8nxLg4pZ4kMC53s1UoAViAinoulecAXPwNHqpZRXrxfdw== +0 -0
  20. data/spec/fixtures/retried_tests.xcresult/Data/data.0~YzBTrEOWvBXh61aRmHfgmZu7Tm4pa2z3vA-A_IvbOAArX2KXaGmpTw9iDh3YF3ZDo0YjowcIr4yV246QnT16oQ== +0 -0
  21. data/spec/fixtures/retried_tests.xcresult/Data/data.0~Z-Oh-YLJpLLjZW_x8QoW2C0TqUCkucMvz_3RSUka5A43tmMXPHaSZ3upggVoekq1wochTCgFBZvlDtRKE-fskQ== +0 -0
  22. data/spec/fixtures/retried_tests.xcresult/Data/data.0~ZHfywaPAA7U78e-22pL7lgXUX9rBLtghDd7MrFeZKeETeHclHkuB27rKQuO2pkgO2hQX4DwEuZRPGLDgVpl96Q== +0 -0
  23. data/spec/fixtures/retried_tests.xcresult/Data/data.0~ayVpOf4cK2rqJzLW027OOVx43mVDXe99HGYiI_NTs3J0uerkI5Nq9gc4Nj_plsk-YuePLmze9sD54mj-pI7h7A== +0 -0
  24. data/spec/fixtures/retried_tests.xcresult/Data/data.0~gKfzfZNhFP2gL41g_K-hxakNHViOQ6ZZRMBPHLNXxuYgKjsLWEIoX1sIz89fF3XzhJeZ4qvgnvyaIkwwec-FCA== +0 -0
  25. data/spec/fixtures/retried_tests.xcresult/Data/data.0~gYI8rXqcpirfmZGzJuvAHGJu8yR78R9nCqbF0WQ_cUN9KQT1RquQoo_3SQTNK8k1S381IyAYEMKSqAYKAf9COw== +0 -0
  26. data/spec/fixtures/retried_tests.xcresult/Data/data.0~gtKHyEv1rzm_90tQQvx75fofuhqF3wNTWQ3tldt2rDIJXQBnR-B_J5l1C-WcFHXLoweIEIuj0tJFNjrVZ3vEvg== +1 -0
  27. data/spec/fixtures/retried_tests.xcresult/Data/data.0~i2d7Elkfo19989jX-6iI4uwg4fXQGZjmG-nyGQnfMYLTqmq23roNf8bf1fgYhM4DSSQPo0deWCFpdzKwLETcig== +0 -0
  28. data/spec/fixtures/retried_tests.xcresult/Data/data.0~jPJioAFmuXiRUotjEJqw4j8nDnEuO6QOdJFPNA6kVP8Nm-tU6rUs-Q8OglTeLEtWv8cGFiHOhnAn7M5R10fXzQ== +0 -0
  29. data/spec/fixtures/retried_tests.xcresult/Data/data.0~oRMi0sbQLktfDDDGUS-SqBKpdDiD6HCztVES_ShfGr0KVcYENoIq7y9oUSDWL5B_P2gkdtWG8JEsJLxPbdWOZA== +0 -0
  30. data/spec/fixtures/retried_tests.xcresult/Data/data.0~r3y1K6zs0Qq8JJIiol3B_pECoVfq_KHDSMUZDI4q-GfZ2wUj5Px08tL__pTotA0eeh332MvqT10WpiAXLW1Rog== +0 -0
  31. data/spec/fixtures/retried_tests.xcresult/Data/data.0~v_A5wH3VW6s3x7CVlbsEepkPwqUJt1aQgh2wnWM6Zxl3jX6p9pGBqw_myDIcQb-nA2ixaNyIU_dOHyDutVDYTw== +0 -0
  32. data/spec/fixtures/retried_tests.xcresult/Data/data.0~z_wmXPdlWnK_JUivaLITHoevREPJvj-SGgrsiDdJ682HXYlrBgDWwM2e4dUp1eskOwfELzhot0BJZBz-PVwF7w== +0 -0
  33. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~0luACsaLuIGsrHaW1p2r5kZFHAc8zIEhwg3hljPljHFBXD5-SNyct3RGkRlOfxfzboO40eJl793H-Tr3h9EAnQ== +0 -0
  34. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~2pBphMrRyBCZZCQggyI4Mn6_j-5CLweK-fa0nWOCa9lJ8r2Wc2mBQ8pFJcC_WkgbosHOTBZ2Yy0aDHgIxltNhg== +0 -0
  35. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~4VqMqsI5lOfxRppnud6-VDWcNsU8J7VgFCJfW2dXPwOcAkvU-I8Um5yp9n0Zv6nr3VmcxYggaVMDFfR0U_vjKw== +0 -0
  36. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~6_4s3J3j6iod0lxP9aqno8ppJVQAboTeoRYyEul58CXo86xYCi8pMJ9rHByVMLh_8_pFHLJ84UVbwjzR9-yKJQ== +0 -0
  37. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~7TAYIP6c6qLbBBpUWOkRobtgM8Dwhgtv1BfKhhuXyB04LXXo7xzeG8s9t-nSiFKxphDdrBsMR3b7bJ3nIsyQfQ== +0 -0
  38. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~AkR51mFgewGZrXJm8i7esSQXBXifwrpYLzKq3l8xgLBbfsS1SQ4_5rYhhT-vYUSck7Oo8HJfkbYh_otWeamddQ== +0 -0
  39. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~Bk5mUKvVX2jK4C69s0yWQYPcBzOHtcyxHZjMB0csj0hQkVYZoQiPgpOIv0JCLeZ0gGqi54r7InqzVWLe8KHQyg== +0 -0
  40. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~EObm8N_XU7PQfhT0KV0IDp8cdjLRxeiEzO4iRRL1uLGJ3-aWi2gzbiTirY0YgI2Nu0H_c9zSOiHTo3OLExQu2w== +0 -0
  41. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~FwJhpRUoZfeezopc-2WEkr7iOGkIvwRKVZ8DGttanmSmq7WBjG20njudVR2jo_3tgkLJv-VW0-2f0u6wludedg== +0 -0
  42. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~NWytdFolCFUA176MXDzt3mcbzNx-2oVk7o_X_aHPVaiVTu7JzoBqHXkbDAsdAofZzu-9mSfqH0o197rdBY5tXA== +0 -0
  43. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~UBgiphVm2gD00ZBzLvEnuJS_2F-O68r2wpLN7o5fbRd1_UsLtwHcLlSKKjqWjZicrPVbTGAxRfNTpTsJHMvbQA== +0 -0
  44. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~WMfxWcCJxmkDc00Zf0P29xnenUcbJx__4iIpthhfBJ8e_jac_0gHtk22ayhcGD2HCSB9JujMC4vIqM6TneeVoA== +0 -0
  45. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~XOTNmYsiCcpoBO03zDqHCWwjrSvR3eUQs6UpT6Kf1nnnCwIGPyE7V8mmhdIj_Q_LAiZ6V2Dg2yuokSxbPRQh1A== +0 -0
  46. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~XjY1NAMlBNNXx2x4kaNnnHVvyd-05qYvt_gFwZ_qr8nxLg4pZ4kMC53s1UoAViAinoulecAXPwNHqpZRXrxfdw== +0 -0
  47. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~YzBTrEOWvBXh61aRmHfgmZu7Tm4pa2z3vA-A_IvbOAArX2KXaGmpTw9iDh3YF3ZDo0YjowcIr4yV246QnT16oQ== +0 -0
  48. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~Z-Oh-YLJpLLjZW_x8QoW2C0TqUCkucMvz_3RSUka5A43tmMXPHaSZ3upggVoekq1wochTCgFBZvlDtRKE-fskQ== +0 -0
  49. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~ZHfywaPAA7U78e-22pL7lgXUX9rBLtghDd7MrFeZKeETeHclHkuB27rKQuO2pkgO2hQX4DwEuZRPGLDgVpl96Q== +0 -0
  50. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~ayVpOf4cK2rqJzLW027OOVx43mVDXe99HGYiI_NTs3J0uerkI5Nq9gc4Nj_plsk-YuePLmze9sD54mj-pI7h7A== +0 -0
  51. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~gKfzfZNhFP2gL41g_K-hxakNHViOQ6ZZRMBPHLNXxuYgKjsLWEIoX1sIz89fF3XzhJeZ4qvgnvyaIkwwec-FCA== +0 -0
  52. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~gYI8rXqcpirfmZGzJuvAHGJu8yR78R9nCqbF0WQ_cUN9KQT1RquQoo_3SQTNK8k1S381IyAYEMKSqAYKAf9COw== +0 -0
  53. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~gtKHyEv1rzm_90tQQvx75fofuhqF3wNTWQ3tldt2rDIJXQBnR-B_J5l1C-WcFHXLoweIEIuj0tJFNjrVZ3vEvg== +0 -0
  54. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~i2d7Elkfo19989jX-6iI4uwg4fXQGZjmG-nyGQnfMYLTqmq23roNf8bf1fgYhM4DSSQPo0deWCFpdzKwLETcig== +0 -0
  55. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~jPJioAFmuXiRUotjEJqw4j8nDnEuO6QOdJFPNA6kVP8Nm-tU6rUs-Q8OglTeLEtWv8cGFiHOhnAn7M5R10fXzQ== +0 -0
  56. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~oRMi0sbQLktfDDDGUS-SqBKpdDiD6HCztVES_ShfGr0KVcYENoIq7y9oUSDWL5B_P2gkdtWG8JEsJLxPbdWOZA== +0 -0
  57. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~r3y1K6zs0Qq8JJIiol3B_pECoVfq_KHDSMUZDI4q-GfZ2wUj5Px08tL__pTotA0eeh332MvqT10WpiAXLW1Rog== +0 -0
  58. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~v_A5wH3VW6s3x7CVlbsEepkPwqUJt1aQgh2wnWM6Zxl3jX6p9pGBqw_myDIcQb-nA2ixaNyIU_dOHyDutVDYTw== +0 -0
  59. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~z_wmXPdlWnK_JUivaLITHoevREPJvj-SGgrsiDdJ682HXYlrBgDWwM2e4dUp1eskOwfELzhot0BJZBz-PVwF7w== +0 -0
  60. data/spec/fixtures/retried_tests.xcresult/Info.plist +29 -0
  61. data/spec/fixtures/retried_tests.xcresult/database.sqlite3 +0 -0
  62. data/spec/xcode_summary_spec.rb +59 -0
  63. metadata +114 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7f25343e3fe6e71f252e63e5874c5663ebf9b51ee797891a152cd7e2af4d1ebc
4
- data.tar.gz: 22b537f085e5d3c7665b84de1b9eca6b1209fb718149470fd3cf7a1bf6a23bd9
3
+ metadata.gz: a90d7103da94409a508fd372294d52c0bc1ca3d78b3874d1baf3d6c629e11dfc
4
+ data.tar.gz: 8709afbecba017f845f265ddba3a2f785883c2e8f87926409e3aeeb662be47e3
5
5
  SHA512:
6
- metadata.gz: 2110fe068bad96009dd912161fa6ef43eeda1e05ba47453ef81b07cc2821c4c0455b3b3d0ef91cb593fc3df166669e55a602a20a4bc6d34905f070571bae31d0
7
- data.tar.gz: 071fcaecbf8488ce2b59efdc02eb778d2230283c97de53117155232c5ab8ad2f7bc0c14e4f749bd0d0f4648a8a115f3a4040ab28b2bebf83693ebc71be5d6bae
6
+ metadata.gz: f98b8dbae2e9c71542347c9081d29ab706bcad5903627ee1f6b0df173ef08284de846db6872f4ac6be79e93cc3b11e779f2220b9fc38e67e01b67fbfc5b6066b
7
+ data.tar.gz: 191e169f0d003088b73ffc514817a6c22f590bb24279e8aa4fa47f082116d36fba0ef0dfba7e063388abf4c1a2ce0cb60cfdc5efe2d35e483e1e6d81595f916c
data/Gemfile.lock CHANGED
@@ -1,44 +1,63 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- danger-xcode_summary (1.4.0)
4
+ danger-xcode_summary (1.5.0)
5
5
  danger-plugin-api (~> 1.0)
6
6
  xcresult (~> 0.2.2)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
+ activesupport (8.0.2.1)
12
+ base64
13
+ benchmark (>= 0.3)
14
+ bigdecimal
15
+ concurrent-ruby (~> 1.0, >= 1.3.1)
16
+ connection_pool (>= 2.2.5)
17
+ drb
18
+ i18n (>= 1.6, < 2)
19
+ logger (>= 1.4.2)
20
+ minitest (>= 5.1)
21
+ securerandom (>= 0.3)
22
+ tzinfo (~> 2.0, >= 2.0.5)
23
+ uri (>= 0.13.1)
11
24
  addressable (2.8.7)
12
25
  public_suffix (>= 2.0.2, < 7.0)
13
26
  ast (2.4.3)
14
27
  base64 (0.3.0)
28
+ benchmark (0.4.1)
29
+ bigdecimal (3.2.2)
15
30
  claide (1.1.0)
16
31
  claide-plugins (0.9.2)
17
32
  cork
18
33
  nap
19
34
  open4 (~> 1.3)
20
35
  coderay (1.1.3)
21
- colored2 (3.1.2)
22
- cork (0.3.0)
23
- colored2 (~> 3.1)
24
- danger (9.5.1)
36
+ colored (1.2)
37
+ colored2 (4.0.3)
38
+ concurrent-ruby (1.3.5)
39
+ connection_pool (2.5.3)
40
+ cork (0.2.0)
41
+ colored (~> 1.2)
42
+ danger (9.5.3)
25
43
  base64 (~> 0.2)
26
44
  claide (~> 1.0)
27
45
  claide-plugins (>= 0.9.2)
28
- colored2 (~> 3.1)
46
+ colored2 (>= 3.1, < 5)
29
47
  cork (~> 0.1)
30
48
  faraday (>= 0.9.0, < 3.0)
31
49
  faraday-http-cache (~> 2.0)
32
- git (~> 1.13)
33
- kramdown (~> 2.3)
50
+ git (>= 1.13, < 3.0)
51
+ kramdown (>= 2.5.1, < 3.0)
34
52
  kramdown-parser-gfm (~> 1.0)
35
53
  octokit (>= 4.0)
36
54
  pstore (~> 0.1)
37
- terminal-table (>= 1, < 4)
55
+ terminal-table (>= 1, < 5)
38
56
  danger-plugin-api (1.0.0)
39
57
  danger (> 2.0)
40
58
  diff-lcs (1.6.2)
41
- faraday (2.13.1)
59
+ drb (2.2.3)
60
+ faraday (2.13.4)
42
61
  faraday-net_http (>= 2.0, < 3.5)
43
62
  json
44
63
  logger
@@ -47,9 +66,12 @@ GEM
47
66
  faraday-net_http (3.4.1)
48
67
  net-http (>= 0.5.0)
49
68
  ffi (1.17.2)
50
- formatador (1.1.0)
51
- git (1.19.1)
69
+ formatador (1.2.0)
70
+ reline
71
+ git (2.3.3)
72
+ activesupport (>= 5.0)
52
73
  addressable (~> 2.8)
74
+ process_executer (~> 1.1)
53
75
  rchardet (~> 1.8)
54
76
  guard (2.19.1)
55
77
  formatador (>= 0.2.4)
@@ -67,7 +89,10 @@ GEM
67
89
  guard (~> 2.1)
68
90
  guard-compat (~> 1.1)
69
91
  rspec (>= 2.99.0, < 4.0)
70
- json (2.12.2)
92
+ i18n (1.14.7)
93
+ concurrent-ruby (~> 1.0)
94
+ io-console (0.8.1)
95
+ json (2.13.2)
71
96
  kramdown (2.5.1)
72
97
  rexml (>= 3.3.9)
73
98
  kramdown-parser-gfm (1.1.0)
@@ -78,8 +103,9 @@ GEM
78
103
  rb-fsevent (~> 0.10, >= 0.10.3)
79
104
  rb-inotify (~> 0.9, >= 0.9.10)
80
105
  logger (1.7.0)
81
- lumberjack (1.2.10)
106
+ lumberjack (1.4.0)
82
107
  method_source (1.1.0)
108
+ minitest (5.25.5)
83
109
  nap (1.1.0)
84
110
  nenv (0.3.0)
85
111
  net-http (0.6.0)
@@ -91,12 +117,13 @@ GEM
91
117
  faraday (>= 1, < 3)
92
118
  sawyer (~> 0.9)
93
119
  open4 (1.3.4)
94
- ostruct (0.6.1)
120
+ ostruct (0.6.3)
95
121
  parallel (1.27.0)
96
- parser (3.3.8.0)
122
+ parser (3.3.9.0)
97
123
  ast (~> 2.4.1)
98
124
  racc
99
125
  prism (1.4.0)
126
+ process_executer (1.3.0)
100
127
  pry (0.15.2)
101
128
  coderay (~> 1.1)
102
129
  method_source (~> 1.0)
@@ -109,13 +136,15 @@ GEM
109
136
  rb-inotify (0.11.1)
110
137
  ffi (~> 1.0)
111
138
  rchardet (1.9.0)
112
- regexp_parser (2.10.0)
139
+ regexp_parser (2.11.2)
140
+ reline (0.6.2)
141
+ io-console (~> 0.5)
113
142
  rexml (3.4.1)
114
143
  rspec (3.13.1)
115
144
  rspec-core (~> 3.13.0)
116
145
  rspec-expectations (~> 3.13.0)
117
146
  rspec-mocks (~> 3.13.0)
118
- rspec-core (3.13.4)
147
+ rspec-core (3.13.5)
119
148
  rspec-support (~> 3.13.0)
120
149
  rspec-expectations (3.13.5)
121
150
  diff-lcs (>= 1.2.0, < 2.0)
@@ -123,8 +152,8 @@ GEM
123
152
  rspec-mocks (3.13.5)
124
153
  diff-lcs (>= 1.2.0, < 2.0)
125
154
  rspec-support (~> 3.13.0)
126
- rspec-support (3.13.4)
127
- rubocop (1.76.1)
155
+ rspec-support (3.13.5)
156
+ rubocop (1.80.0)
128
157
  json (~> 2.3)
129
158
  language_server-protocol (~> 3.17.0.2)
130
159
  lint_roller (~> 1.1.0)
@@ -132,20 +161,24 @@ GEM
132
161
  parser (>= 3.3.0.2)
133
162
  rainbow (>= 2.2.2, < 4.0)
134
163
  regexp_parser (>= 2.9.3, < 3.0)
135
- rubocop-ast (>= 1.45.0, < 2.0)
164
+ rubocop-ast (>= 1.46.0, < 2.0)
136
165
  ruby-progressbar (~> 1.7)
137
166
  unicode-display_width (>= 2.4.0, < 4.0)
138
- rubocop-ast (1.45.1)
167
+ rubocop-ast (1.46.0)
139
168
  parser (>= 3.3.7.2)
140
169
  prism (~> 1.4)
141
170
  ruby-progressbar (1.13.0)
142
171
  sawyer (0.9.2)
143
172
  addressable (>= 2.3.5)
144
173
  faraday (>= 0.17.3, < 3)
174
+ securerandom (0.4.1)
145
175
  shellany (0.0.1)
146
- terminal-table (1.6.0)
147
- thor (1.3.2)
148
- unicode-display_width (3.1.4)
176
+ terminal-table (4.0.0)
177
+ unicode-display_width (>= 1.1.1, < 4)
178
+ thor (1.4.0)
179
+ tzinfo (2.0.6)
180
+ concurrent-ruby (~> 1.0)
181
+ unicode-display_width (3.1.5)
149
182
  unicode-emoji (~> 4.0, >= 4.0.4)
150
183
  unicode-emoji (4.0.4)
151
184
  uri (1.0.3)
@@ -169,4 +202,4 @@ DEPENDENCIES
169
202
  yard
170
203
 
171
204
  BUNDLED WITH
172
- 2.3.0
205
+ 2.4.22
data/README.md CHANGED
@@ -128,6 +128,15 @@ xcode_summary.inline_mode = true
128
128
  xcode_summary.report 'MyApp.xcresult'
129
129
  ```
130
130
 
131
+ You can use `ignore_retried_tests` to intelligently handle retried unit tests.
132
+ When enabled, if a test fails but succeeds on retry, the failure will be ignored and not reported as an error.
133
+
134
+ ```ruby
135
+ # Ignore test failures that succeeded on retry
136
+ xcode_summary.ignore_retried_tests = true
137
+ xcode_summary.report 'MyApp.xcresult'
138
+ ```
139
+
131
140
  You can use `strict` to reporting errors as warnings thereby don't block merge PR.
132
141
 
133
142
  ```ruby
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module XcodeSummary
4
- VERSION = '1.4.0'
4
+ VERSION = '1.5.0'
5
5
  end
@@ -88,6 +88,13 @@ module Danger
88
88
  # @return [Boolean]
89
89
  attr_accessor :collapse_parallelized_tests
90
90
 
91
+ # Defines if retried unit tests should be handled intelligently.
92
+ # When enabled, if a test fails but succeeds on retry, the failure will be ignored.
93
+ # Defaults to `false`
94
+ # @param [Boolean] value
95
+ # @return [Boolean]
96
+ attr_accessor :ignore_retried_tests
97
+
91
98
  # rubocop:disable Lint/DuplicateMethods
92
99
  def project_root
93
100
  root = @project_root || Dir.pwd
@@ -131,6 +138,10 @@ module Danger
131
138
  @collapse_parallelized_tests || false
132
139
  end
133
140
 
141
+ def ignore_retried_tests
142
+ @ignore_retried_tests || false
143
+ end
144
+
134
145
  # Pick a Dangerfile plugin for a chosen request_source and cache it
135
146
  # based on https://github.com/danger/danger/blob/master/lib/danger/plugin_support/plugin.rb#L31
136
147
  #
@@ -148,6 +159,9 @@ module Danger
148
159
  def report(file_path)
149
160
  if File.exist?(file_path)
150
161
  xcode_summary = XCResult::Parser.new(path: file_path)
162
+ if ignore_retried_tests
163
+ @successfully_retried_test_identifiers = extract_all_successfully_retried_test_identifiers(xcode_summary)
164
+ end
151
165
  format_summary(xcode_summary)
152
166
  else
153
167
  fail 'summary file not found'
@@ -161,6 +175,9 @@ module Danger
161
175
  def warning_error_count(file_path)
162
176
  if File.exist?(file_path)
163
177
  xcode_summary = XCResult::Parser.new(path: file_path)
178
+ if ignore_retried_tests
179
+ @successfully_retried_test_identifiers = extract_all_successfully_retried_test_identifiers(xcode_summary)
180
+ end
164
181
  warning_count = 0
165
182
  error_count = 0
166
183
  xcode_summary.actions_invocation_record.actions.each do |action|
@@ -176,6 +193,38 @@ module Danger
176
193
 
177
194
  private
178
195
 
196
+ def filter_retried_tests(subtests)
197
+ return subtests unless ignore_retried_tests
198
+
199
+ subtests_without_retry_attempt = subtests.group_by(&:identifier).values.map do |group|
200
+ if group.length > 1 && group.any? { |subtest| subtest.test_status == 'Success' }
201
+ group.reject { |subtest| subtest.test_status == 'Failure' }
202
+ else
203
+ group
204
+ end
205
+ end
206
+ subtests_without_retry_attempt.flatten
207
+ end
208
+
209
+ def create_test_run_data(action_test_object, test_summary)
210
+ subtests = action_test_object.all_subtests
211
+ subtests_duration = subtests.map(&:duration).sum
212
+
213
+ subtests = filter_retried_tests(subtests)
214
+
215
+ failed_tests_count = subtests.reject { |test| test.test_status == 'Success' }.count
216
+ expected_failed_tests_count = subtests.select { |test| test.test_status == 'Expected Failure' }.count
217
+
218
+ {
219
+ target_name: test_summary.target_name,
220
+ test_count: subtests.count,
221
+ failed_tests_count: failed_tests_count,
222
+ expected_failed_tests_count: expected_failed_tests_count,
223
+ tests_duration: subtests_duration,
224
+ action_duration: action_test_object.duration
225
+ }
226
+ end
227
+
179
228
  def format_summary(xcode_summary)
180
229
  messages(xcode_summary).each { |s| message(s, sticky: sticky_summary) }
181
230
  all_warnings = []
@@ -226,20 +275,7 @@ module Danger
226
275
  summary.testable_summaries.map do |test_summary|
227
276
  test_summary.tests.filter_map do |action_test_object|
228
277
  if action_test_object.instance_of? XCResult::ActionTestSummaryGroup
229
- subtests = action_test_object.all_subtests
230
- subtests_duration = subtests.map(&:duration).sum
231
-
232
- failed_tests_count = subtests.reject { |test| test.test_status == 'Success' }.count
233
- expected_failed_tests_count = subtests.select { |test| test.test_status == 'Expected Failure' }.count
234
-
235
- {
236
- target_name: test_summary.target_name,
237
- test_count: subtests.count,
238
- failed_tests_count: failed_tests_count,
239
- expected_failed_tests_count: expected_failed_tests_count,
240
- tests_duration: subtests_duration,
241
- action_duration: action_test_object.duration
242
- }
278
+ create_test_run_data(action_test_object, test_summary)
243
279
  end
244
280
  end
245
281
  end
@@ -306,19 +342,58 @@ module Danger
306
342
  Result.new(format_warning(result), result.location)
307
343
  end
308
344
 
345
+ successfully_retried_test_identifiers = @successfully_retried_test_identifiers || []
309
346
  test_failures = [
310
347
  action.action_result.issues.test_failure_summaries,
311
348
  action.build_result.issues.test_failure_summaries
312
349
  ].flatten.compact.map do |summary|
350
+ if ignore_retried_tests &&
351
+ successfully_retried_test_identifiers.include?(sanitized_test_case_name(summary.test_case_name))
352
+ next
353
+ end
354
+
313
355
  result = Result.new(summary.message, parse_location(summary.document_location_in_creating_workspace))
314
356
  Result.new(format_test_failure(result, summary.producing_target, summary.test_case_name),
315
357
  result.location)
316
358
  end
317
359
 
318
- results = (errors + test_failures).uniq.reject { |result| result.message.nil? }
360
+ results = (errors + test_failures).compact.uniq.reject { |result| result.message.nil? }
319
361
  results.delete_if(&ignored_results)
320
362
  end
321
363
 
364
+ def extract_all_successfully_retried_test_identifiers(xcode_summary)
365
+ successfully_retried_test_identifiers = []
366
+ xcode_summary.action_test_plan_summaries.each do |test_plan_summaries|
367
+ test_plan_summaries.summaries.each do |summary|
368
+ summary.testable_summaries.each do |testable_summary|
369
+ testable_summary.tests.each do |test|
370
+ next unless test.instance_of? XCResult::ActionTestSummaryGroup
371
+
372
+ test.all_subtests.group_by(&:identifier).each do |identifier, subtests|
373
+ contain_success = subtests.any? { |subtest| subtest.test_status == 'Success' }
374
+ if subtests.length > 1 && contain_success
375
+ successfully_retried_test_identifiers << identifier
376
+ end
377
+ end
378
+ end
379
+ end
380
+ end
381
+ end
382
+ successfully_retried_test_identifiers
383
+ end
384
+
385
+ def sanitized_test_case_name(test_case_name)
386
+ # Clean test_case_name to match identifier format
387
+ # Sanitize for Swift by replacing "." for "/"
388
+ # Sanitize for Objective-C by removing "-", "[", "]", and replacing " " for ?/
389
+ test_case_name
390
+ .tr('.', '/')
391
+ .tr('-', '')
392
+ .tr('[', '')
393
+ .tr(']', '')
394
+ .tr(' ', '/')
395
+ end
396
+
322
397
  def parse_location(document_location)
323
398
  return nil if document_location&.url.nil?
324
399
 
@@ -0,0 +1,29 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>dateCreated</key>
6
+ <date>2025-08-22T14:06:34Z</date>
7
+ <key>externalLocations</key>
8
+ <array/>
9
+ <key>rootId</key>
10
+ <dict>
11
+ <key>hash</key>
12
+ <string>0~r3y1K6zs0Qq8JJIiol3B_pECoVfq_KHDSMUZDI4q-GfZ2wUj5Px08tL__pTotA0eeh332MvqT10WpiAXLW1Rog==</string>
13
+ </dict>
14
+ <key>storage</key>
15
+ <dict>
16
+ <key>backend</key>
17
+ <string>fileBacked2</string>
18
+ <key>compression</key>
19
+ <string>standard</string>
20
+ </dict>
21
+ <key>version</key>
22
+ <dict>
23
+ <key>major</key>
24
+ <integer>3</integer>
25
+ <key>minor</key>
26
+ <integer>53</integer>
27
+ </dict>
28
+ </dict>
29
+ </plist>
@@ -314,6 +314,65 @@ module Danger
314
314
  end
315
315
  end
316
316
 
317
+ # Test retried tests functionality
318
+ describe 'with retried tests' do
319
+ before do
320
+ @dangerfile = testing_dangerfile
321
+ @xcode_summary = @dangerfile.xcode_summary
322
+ @xcode_summary.env.request_source.pr_json = JSON.parse(File.read('spec/fixtures/pr_json.json'))
323
+ @xcode_summary.project_root = '/Users/marcelofabri/SwiftLint/'
324
+ end
325
+
326
+ context 'with ignore_retried_tests enabled' do
327
+ before do
328
+ @xcode_summary.ignore_retried_tests = true
329
+ end
330
+
331
+ it 'ignores test failures that succeeded on retry' do
332
+ @xcode_summary.report('spec/fixtures/retried_tests.xcresult')
333
+ # The retried test should not show up as an error since it ultimately succeeded
334
+ expect(@dangerfile.status_report[:errors]).to eq []
335
+ end
336
+
337
+ it 'shows test summary with retry information' do
338
+ @xcode_summary.test_summary = true
339
+ @xcode_summary.report('spec/fixtures/retried_tests.xcresult')
340
+ # The test summary should still show execution information
341
+ expect(@dangerfile.status_report[:messages].length).to eq 1
342
+ expect(@dangerfile.status_report[:messages].first).to match('retried-testTests: Executed 2 tests, with 0 failures (0 expected) in 0.158 (0.158) seconds')
343
+ end
344
+
345
+ it 'shows no error count' do
346
+ result = @xcode_summary.warning_error_count('spec/fixtures/retried_tests.xcresult')
347
+ expect(result).to eq '{"warnings":0,"errors":0}'
348
+ end
349
+
350
+ it 'defaults to false' do
351
+ # Create a fresh instance to test default value
352
+ fresh_dangerfile = testing_dangerfile
353
+ fresh_xcode_summary = fresh_dangerfile.xcode_summary
354
+ expect(fresh_xcode_summary.ignore_retried_tests).to eq false
355
+ end
356
+ end
357
+
358
+ context 'with ignore_retried_tests disabled' do
359
+ before do
360
+ @xcode_summary.ignore_retried_tests = false
361
+ end
362
+
363
+ it 'still reports test failures even if they succeeded on retry' do
364
+ @xcode_summary.report('spec/fixtures/retried_tests.xcresult')
365
+ # With retry filtering disabled, failed tests should still be reported
366
+ expect(@dangerfile.status_report[:errors].length).to eq 1
367
+ end
368
+
369
+ it 'count retry as error' do
370
+ result = @xcode_summary.warning_error_count('spec/fixtures/retried_tests.xcresult')
371
+ expect(result).to eq '{"warnings":0,"errors":1}'
372
+ end
373
+ end
374
+ end
375
+
317
376
  # Second environment with different request_source
318
377
  describe 'with bitbucket request_source' do
319
378
  before do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: danger-xcode_summary
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Diogo Tridapalli
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2025-06-17 00:00:00.000000000 Z
12
+ date: 2025-08-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: danger-plugin-api
@@ -178,6 +178,62 @@ files:
178
178
  - spec/fixtures/build_error.xcresult/Data/refs.0~sMF2ys5sALLwuAv5pBXjiul46mqlgymNeLHDD_y99cE5gPqv8vL-IHIBlpnlNYSO4VvKHlaNafxanp-NDJTh-A==
179
179
  - spec/fixtures/build_error.xcresult/Info.plist
180
180
  - spec/fixtures/pr_json.json
181
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~0luACsaLuIGsrHaW1p2r5kZFHAc8zIEhwg3hljPljHFBXD5-SNyct3RGkRlOfxfzboO40eJl793H-Tr3h9EAnQ==
182
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~2pBphMrRyBCZZCQggyI4Mn6_j-5CLweK-fa0nWOCa9lJ8r2Wc2mBQ8pFJcC_WkgbosHOTBZ2Yy0aDHgIxltNhg==
183
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~4VqMqsI5lOfxRppnud6-VDWcNsU8J7VgFCJfW2dXPwOcAkvU-I8Um5yp9n0Zv6nr3VmcxYggaVMDFfR0U_vjKw==
184
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~6_4s3J3j6iod0lxP9aqno8ppJVQAboTeoRYyEul58CXo86xYCi8pMJ9rHByVMLh_8_pFHLJ84UVbwjzR9-yKJQ==
185
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~7TAYIP6c6qLbBBpUWOkRobtgM8Dwhgtv1BfKhhuXyB04LXXo7xzeG8s9t-nSiFKxphDdrBsMR3b7bJ3nIsyQfQ==
186
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~AkR51mFgewGZrXJm8i7esSQXBXifwrpYLzKq3l8xgLBbfsS1SQ4_5rYhhT-vYUSck7Oo8HJfkbYh_otWeamddQ==
187
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~Bk5mUKvVX2jK4C69s0yWQYPcBzOHtcyxHZjMB0csj0hQkVYZoQiPgpOIv0JCLeZ0gGqi54r7InqzVWLe8KHQyg==
188
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~EObm8N_XU7PQfhT0KV0IDp8cdjLRxeiEzO4iRRL1uLGJ3-aWi2gzbiTirY0YgI2Nu0H_c9zSOiHTo3OLExQu2w==
189
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~FwJhpRUoZfeezopc-2WEkr7iOGkIvwRKVZ8DGttanmSmq7WBjG20njudVR2jo_3tgkLJv-VW0-2f0u6wludedg==
190
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~NWytdFolCFUA176MXDzt3mcbzNx-2oVk7o_X_aHPVaiVTu7JzoBqHXkbDAsdAofZzu-9mSfqH0o197rdBY5tXA==
191
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~UBgiphVm2gD00ZBzLvEnuJS_2F-O68r2wpLN7o5fbRd1_UsLtwHcLlSKKjqWjZicrPVbTGAxRfNTpTsJHMvbQA==
192
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~WMfxWcCJxmkDc00Zf0P29xnenUcbJx__4iIpthhfBJ8e_jac_0gHtk22ayhcGD2HCSB9JujMC4vIqM6TneeVoA==
193
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~XOTNmYsiCcpoBO03zDqHCWwjrSvR3eUQs6UpT6Kf1nnnCwIGPyE7V8mmhdIj_Q_LAiZ6V2Dg2yuokSxbPRQh1A==
194
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~XjY1NAMlBNNXx2x4kaNnnHVvyd-05qYvt_gFwZ_qr8nxLg4pZ4kMC53s1UoAViAinoulecAXPwNHqpZRXrxfdw==
195
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~YzBTrEOWvBXh61aRmHfgmZu7Tm4pa2z3vA-A_IvbOAArX2KXaGmpTw9iDh3YF3ZDo0YjowcIr4yV246QnT16oQ==
196
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~Z-Oh-YLJpLLjZW_x8QoW2C0TqUCkucMvz_3RSUka5A43tmMXPHaSZ3upggVoekq1wochTCgFBZvlDtRKE-fskQ==
197
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~ZHfywaPAA7U78e-22pL7lgXUX9rBLtghDd7MrFeZKeETeHclHkuB27rKQuO2pkgO2hQX4DwEuZRPGLDgVpl96Q==
198
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~ayVpOf4cK2rqJzLW027OOVx43mVDXe99HGYiI_NTs3J0uerkI5Nq9gc4Nj_plsk-YuePLmze9sD54mj-pI7h7A==
199
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~gKfzfZNhFP2gL41g_K-hxakNHViOQ6ZZRMBPHLNXxuYgKjsLWEIoX1sIz89fF3XzhJeZ4qvgnvyaIkwwec-FCA==
200
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~gYI8rXqcpirfmZGzJuvAHGJu8yR78R9nCqbF0WQ_cUN9KQT1RquQoo_3SQTNK8k1S381IyAYEMKSqAYKAf9COw==
201
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~gtKHyEv1rzm_90tQQvx75fofuhqF3wNTWQ3tldt2rDIJXQBnR-B_J5l1C-WcFHXLoweIEIuj0tJFNjrVZ3vEvg==
202
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~i2d7Elkfo19989jX-6iI4uwg4fXQGZjmG-nyGQnfMYLTqmq23roNf8bf1fgYhM4DSSQPo0deWCFpdzKwLETcig==
203
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~jPJioAFmuXiRUotjEJqw4j8nDnEuO6QOdJFPNA6kVP8Nm-tU6rUs-Q8OglTeLEtWv8cGFiHOhnAn7M5R10fXzQ==
204
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~oRMi0sbQLktfDDDGUS-SqBKpdDiD6HCztVES_ShfGr0KVcYENoIq7y9oUSDWL5B_P2gkdtWG8JEsJLxPbdWOZA==
205
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~r3y1K6zs0Qq8JJIiol3B_pECoVfq_KHDSMUZDI4q-GfZ2wUj5Px08tL__pTotA0eeh332MvqT10WpiAXLW1Rog==
206
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~v_A5wH3VW6s3x7CVlbsEepkPwqUJt1aQgh2wnWM6Zxl3jX6p9pGBqw_myDIcQb-nA2ixaNyIU_dOHyDutVDYTw==
207
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~z_wmXPdlWnK_JUivaLITHoevREPJvj-SGgrsiDdJ682HXYlrBgDWwM2e4dUp1eskOwfELzhot0BJZBz-PVwF7w==
208
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~0luACsaLuIGsrHaW1p2r5kZFHAc8zIEhwg3hljPljHFBXD5-SNyct3RGkRlOfxfzboO40eJl793H-Tr3h9EAnQ==
209
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~2pBphMrRyBCZZCQggyI4Mn6_j-5CLweK-fa0nWOCa9lJ8r2Wc2mBQ8pFJcC_WkgbosHOTBZ2Yy0aDHgIxltNhg==
210
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~4VqMqsI5lOfxRppnud6-VDWcNsU8J7VgFCJfW2dXPwOcAkvU-I8Um5yp9n0Zv6nr3VmcxYggaVMDFfR0U_vjKw==
211
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~6_4s3J3j6iod0lxP9aqno8ppJVQAboTeoRYyEul58CXo86xYCi8pMJ9rHByVMLh_8_pFHLJ84UVbwjzR9-yKJQ==
212
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~7TAYIP6c6qLbBBpUWOkRobtgM8Dwhgtv1BfKhhuXyB04LXXo7xzeG8s9t-nSiFKxphDdrBsMR3b7bJ3nIsyQfQ==
213
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~AkR51mFgewGZrXJm8i7esSQXBXifwrpYLzKq3l8xgLBbfsS1SQ4_5rYhhT-vYUSck7Oo8HJfkbYh_otWeamddQ==
214
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~Bk5mUKvVX2jK4C69s0yWQYPcBzOHtcyxHZjMB0csj0hQkVYZoQiPgpOIv0JCLeZ0gGqi54r7InqzVWLe8KHQyg==
215
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~EObm8N_XU7PQfhT0KV0IDp8cdjLRxeiEzO4iRRL1uLGJ3-aWi2gzbiTirY0YgI2Nu0H_c9zSOiHTo3OLExQu2w==
216
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~FwJhpRUoZfeezopc-2WEkr7iOGkIvwRKVZ8DGttanmSmq7WBjG20njudVR2jo_3tgkLJv-VW0-2f0u6wludedg==
217
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~NWytdFolCFUA176MXDzt3mcbzNx-2oVk7o_X_aHPVaiVTu7JzoBqHXkbDAsdAofZzu-9mSfqH0o197rdBY5tXA==
218
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~UBgiphVm2gD00ZBzLvEnuJS_2F-O68r2wpLN7o5fbRd1_UsLtwHcLlSKKjqWjZicrPVbTGAxRfNTpTsJHMvbQA==
219
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~WMfxWcCJxmkDc00Zf0P29xnenUcbJx__4iIpthhfBJ8e_jac_0gHtk22ayhcGD2HCSB9JujMC4vIqM6TneeVoA==
220
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~XOTNmYsiCcpoBO03zDqHCWwjrSvR3eUQs6UpT6Kf1nnnCwIGPyE7V8mmhdIj_Q_LAiZ6V2Dg2yuokSxbPRQh1A==
221
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~XjY1NAMlBNNXx2x4kaNnnHVvyd-05qYvt_gFwZ_qr8nxLg4pZ4kMC53s1UoAViAinoulecAXPwNHqpZRXrxfdw==
222
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~YzBTrEOWvBXh61aRmHfgmZu7Tm4pa2z3vA-A_IvbOAArX2KXaGmpTw9iDh3YF3ZDo0YjowcIr4yV246QnT16oQ==
223
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~Z-Oh-YLJpLLjZW_x8QoW2C0TqUCkucMvz_3RSUka5A43tmMXPHaSZ3upggVoekq1wochTCgFBZvlDtRKE-fskQ==
224
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~ZHfywaPAA7U78e-22pL7lgXUX9rBLtghDd7MrFeZKeETeHclHkuB27rKQuO2pkgO2hQX4DwEuZRPGLDgVpl96Q==
225
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~ayVpOf4cK2rqJzLW027OOVx43mVDXe99HGYiI_NTs3J0uerkI5Nq9gc4Nj_plsk-YuePLmze9sD54mj-pI7h7A==
226
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~gKfzfZNhFP2gL41g_K-hxakNHViOQ6ZZRMBPHLNXxuYgKjsLWEIoX1sIz89fF3XzhJeZ4qvgnvyaIkwwec-FCA==
227
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~gYI8rXqcpirfmZGzJuvAHGJu8yR78R9nCqbF0WQ_cUN9KQT1RquQoo_3SQTNK8k1S381IyAYEMKSqAYKAf9COw==
228
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~gtKHyEv1rzm_90tQQvx75fofuhqF3wNTWQ3tldt2rDIJXQBnR-B_J5l1C-WcFHXLoweIEIuj0tJFNjrVZ3vEvg==
229
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~i2d7Elkfo19989jX-6iI4uwg4fXQGZjmG-nyGQnfMYLTqmq23roNf8bf1fgYhM4DSSQPo0deWCFpdzKwLETcig==
230
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~jPJioAFmuXiRUotjEJqw4j8nDnEuO6QOdJFPNA6kVP8Nm-tU6rUs-Q8OglTeLEtWv8cGFiHOhnAn7M5R10fXzQ==
231
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~oRMi0sbQLktfDDDGUS-SqBKpdDiD6HCztVES_ShfGr0KVcYENoIq7y9oUSDWL5B_P2gkdtWG8JEsJLxPbdWOZA==
232
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~r3y1K6zs0Qq8JJIiol3B_pECoVfq_KHDSMUZDI4q-GfZ2wUj5Px08tL__pTotA0eeh332MvqT10WpiAXLW1Rog==
233
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~v_A5wH3VW6s3x7CVlbsEepkPwqUJt1aQgh2wnWM6Zxl3jX6p9pGBqw_myDIcQb-nA2ixaNyIU_dOHyDutVDYTw==
234
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~z_wmXPdlWnK_JUivaLITHoevREPJvj-SGgrsiDdJ682HXYlrBgDWwM2e4dUp1eskOwfELzhot0BJZBz-PVwF7w==
235
+ - spec/fixtures/retried_tests.xcresult/Info.plist
236
+ - spec/fixtures/retried_tests.xcresult/database.sqlite3
181
237
  - spec/fixtures/swiftlint.xcresult/Data/data.0~0-xWm2AiZ5I3ekRhpAO8g4-GGm1rZIaTIaO2e60GD8nRSProBd-a_Yc1i7HKUd7bcVhfz2trCFFjRoELo2Srsw==
182
238
  - spec/fixtures/swiftlint.xcresult/Data/data.0~0OZeLqccmhzjAKAPA0eS1xbrEYM0PXX1u6A91vWH_ALTk8ho004_4kSNB9wC5XH28w-WgXxARYsmR5za20WacA==
183
239
  - spec/fixtures/swiftlint.xcresult/Data/data.0~0S6H6SLQKxWYgRYf_D_1IY-6QHDo-BsTnbSwsmikZV81avlhu5M1VAH-NOUVMY64xcmrqOJTvhE3NuQQTem2Cw==
@@ -335,6 +391,62 @@ test_files:
335
391
  - spec/fixtures/build_error.xcresult/Data/refs.0~sMF2ys5sALLwuAv5pBXjiul46mqlgymNeLHDD_y99cE5gPqv8vL-IHIBlpnlNYSO4VvKHlaNafxanp-NDJTh-A==
336
392
  - spec/fixtures/build_error.xcresult/Info.plist
337
393
  - spec/fixtures/pr_json.json
394
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~0luACsaLuIGsrHaW1p2r5kZFHAc8zIEhwg3hljPljHFBXD5-SNyct3RGkRlOfxfzboO40eJl793H-Tr3h9EAnQ==
395
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~2pBphMrRyBCZZCQggyI4Mn6_j-5CLweK-fa0nWOCa9lJ8r2Wc2mBQ8pFJcC_WkgbosHOTBZ2Yy0aDHgIxltNhg==
396
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~4VqMqsI5lOfxRppnud6-VDWcNsU8J7VgFCJfW2dXPwOcAkvU-I8Um5yp9n0Zv6nr3VmcxYggaVMDFfR0U_vjKw==
397
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~6_4s3J3j6iod0lxP9aqno8ppJVQAboTeoRYyEul58CXo86xYCi8pMJ9rHByVMLh_8_pFHLJ84UVbwjzR9-yKJQ==
398
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~7TAYIP6c6qLbBBpUWOkRobtgM8Dwhgtv1BfKhhuXyB04LXXo7xzeG8s9t-nSiFKxphDdrBsMR3b7bJ3nIsyQfQ==
399
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~AkR51mFgewGZrXJm8i7esSQXBXifwrpYLzKq3l8xgLBbfsS1SQ4_5rYhhT-vYUSck7Oo8HJfkbYh_otWeamddQ==
400
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~Bk5mUKvVX2jK4C69s0yWQYPcBzOHtcyxHZjMB0csj0hQkVYZoQiPgpOIv0JCLeZ0gGqi54r7InqzVWLe8KHQyg==
401
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~EObm8N_XU7PQfhT0KV0IDp8cdjLRxeiEzO4iRRL1uLGJ3-aWi2gzbiTirY0YgI2Nu0H_c9zSOiHTo3OLExQu2w==
402
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~FwJhpRUoZfeezopc-2WEkr7iOGkIvwRKVZ8DGttanmSmq7WBjG20njudVR2jo_3tgkLJv-VW0-2f0u6wludedg==
403
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~NWytdFolCFUA176MXDzt3mcbzNx-2oVk7o_X_aHPVaiVTu7JzoBqHXkbDAsdAofZzu-9mSfqH0o197rdBY5tXA==
404
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~UBgiphVm2gD00ZBzLvEnuJS_2F-O68r2wpLN7o5fbRd1_UsLtwHcLlSKKjqWjZicrPVbTGAxRfNTpTsJHMvbQA==
405
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~WMfxWcCJxmkDc00Zf0P29xnenUcbJx__4iIpthhfBJ8e_jac_0gHtk22ayhcGD2HCSB9JujMC4vIqM6TneeVoA==
406
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~XOTNmYsiCcpoBO03zDqHCWwjrSvR3eUQs6UpT6Kf1nnnCwIGPyE7V8mmhdIj_Q_LAiZ6V2Dg2yuokSxbPRQh1A==
407
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~XjY1NAMlBNNXx2x4kaNnnHVvyd-05qYvt_gFwZ_qr8nxLg4pZ4kMC53s1UoAViAinoulecAXPwNHqpZRXrxfdw==
408
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~YzBTrEOWvBXh61aRmHfgmZu7Tm4pa2z3vA-A_IvbOAArX2KXaGmpTw9iDh3YF3ZDo0YjowcIr4yV246QnT16oQ==
409
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~Z-Oh-YLJpLLjZW_x8QoW2C0TqUCkucMvz_3RSUka5A43tmMXPHaSZ3upggVoekq1wochTCgFBZvlDtRKE-fskQ==
410
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~ZHfywaPAA7U78e-22pL7lgXUX9rBLtghDd7MrFeZKeETeHclHkuB27rKQuO2pkgO2hQX4DwEuZRPGLDgVpl96Q==
411
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~ayVpOf4cK2rqJzLW027OOVx43mVDXe99HGYiI_NTs3J0uerkI5Nq9gc4Nj_plsk-YuePLmze9sD54mj-pI7h7A==
412
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~gKfzfZNhFP2gL41g_K-hxakNHViOQ6ZZRMBPHLNXxuYgKjsLWEIoX1sIz89fF3XzhJeZ4qvgnvyaIkwwec-FCA==
413
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~gYI8rXqcpirfmZGzJuvAHGJu8yR78R9nCqbF0WQ_cUN9KQT1RquQoo_3SQTNK8k1S381IyAYEMKSqAYKAf9COw==
414
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~gtKHyEv1rzm_90tQQvx75fofuhqF3wNTWQ3tldt2rDIJXQBnR-B_J5l1C-WcFHXLoweIEIuj0tJFNjrVZ3vEvg==
415
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~i2d7Elkfo19989jX-6iI4uwg4fXQGZjmG-nyGQnfMYLTqmq23roNf8bf1fgYhM4DSSQPo0deWCFpdzKwLETcig==
416
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~jPJioAFmuXiRUotjEJqw4j8nDnEuO6QOdJFPNA6kVP8Nm-tU6rUs-Q8OglTeLEtWv8cGFiHOhnAn7M5R10fXzQ==
417
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~oRMi0sbQLktfDDDGUS-SqBKpdDiD6HCztVES_ShfGr0KVcYENoIq7y9oUSDWL5B_P2gkdtWG8JEsJLxPbdWOZA==
418
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~r3y1K6zs0Qq8JJIiol3B_pECoVfq_KHDSMUZDI4q-GfZ2wUj5Px08tL__pTotA0eeh332MvqT10WpiAXLW1Rog==
419
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~v_A5wH3VW6s3x7CVlbsEepkPwqUJt1aQgh2wnWM6Zxl3jX6p9pGBqw_myDIcQb-nA2ixaNyIU_dOHyDutVDYTw==
420
+ - spec/fixtures/retried_tests.xcresult/Data/data.0~z_wmXPdlWnK_JUivaLITHoevREPJvj-SGgrsiDdJ682HXYlrBgDWwM2e4dUp1eskOwfELzhot0BJZBz-PVwF7w==
421
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~0luACsaLuIGsrHaW1p2r5kZFHAc8zIEhwg3hljPljHFBXD5-SNyct3RGkRlOfxfzboO40eJl793H-Tr3h9EAnQ==
422
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~2pBphMrRyBCZZCQggyI4Mn6_j-5CLweK-fa0nWOCa9lJ8r2Wc2mBQ8pFJcC_WkgbosHOTBZ2Yy0aDHgIxltNhg==
423
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~4VqMqsI5lOfxRppnud6-VDWcNsU8J7VgFCJfW2dXPwOcAkvU-I8Um5yp9n0Zv6nr3VmcxYggaVMDFfR0U_vjKw==
424
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~6_4s3J3j6iod0lxP9aqno8ppJVQAboTeoRYyEul58CXo86xYCi8pMJ9rHByVMLh_8_pFHLJ84UVbwjzR9-yKJQ==
425
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~7TAYIP6c6qLbBBpUWOkRobtgM8Dwhgtv1BfKhhuXyB04LXXo7xzeG8s9t-nSiFKxphDdrBsMR3b7bJ3nIsyQfQ==
426
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~AkR51mFgewGZrXJm8i7esSQXBXifwrpYLzKq3l8xgLBbfsS1SQ4_5rYhhT-vYUSck7Oo8HJfkbYh_otWeamddQ==
427
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~Bk5mUKvVX2jK4C69s0yWQYPcBzOHtcyxHZjMB0csj0hQkVYZoQiPgpOIv0JCLeZ0gGqi54r7InqzVWLe8KHQyg==
428
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~EObm8N_XU7PQfhT0KV0IDp8cdjLRxeiEzO4iRRL1uLGJ3-aWi2gzbiTirY0YgI2Nu0H_c9zSOiHTo3OLExQu2w==
429
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~FwJhpRUoZfeezopc-2WEkr7iOGkIvwRKVZ8DGttanmSmq7WBjG20njudVR2jo_3tgkLJv-VW0-2f0u6wludedg==
430
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~NWytdFolCFUA176MXDzt3mcbzNx-2oVk7o_X_aHPVaiVTu7JzoBqHXkbDAsdAofZzu-9mSfqH0o197rdBY5tXA==
431
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~UBgiphVm2gD00ZBzLvEnuJS_2F-O68r2wpLN7o5fbRd1_UsLtwHcLlSKKjqWjZicrPVbTGAxRfNTpTsJHMvbQA==
432
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~WMfxWcCJxmkDc00Zf0P29xnenUcbJx__4iIpthhfBJ8e_jac_0gHtk22ayhcGD2HCSB9JujMC4vIqM6TneeVoA==
433
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~XOTNmYsiCcpoBO03zDqHCWwjrSvR3eUQs6UpT6Kf1nnnCwIGPyE7V8mmhdIj_Q_LAiZ6V2Dg2yuokSxbPRQh1A==
434
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~XjY1NAMlBNNXx2x4kaNnnHVvyd-05qYvt_gFwZ_qr8nxLg4pZ4kMC53s1UoAViAinoulecAXPwNHqpZRXrxfdw==
435
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~YzBTrEOWvBXh61aRmHfgmZu7Tm4pa2z3vA-A_IvbOAArX2KXaGmpTw9iDh3YF3ZDo0YjowcIr4yV246QnT16oQ==
436
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~Z-Oh-YLJpLLjZW_x8QoW2C0TqUCkucMvz_3RSUka5A43tmMXPHaSZ3upggVoekq1wochTCgFBZvlDtRKE-fskQ==
437
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~ZHfywaPAA7U78e-22pL7lgXUX9rBLtghDd7MrFeZKeETeHclHkuB27rKQuO2pkgO2hQX4DwEuZRPGLDgVpl96Q==
438
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~ayVpOf4cK2rqJzLW027OOVx43mVDXe99HGYiI_NTs3J0uerkI5Nq9gc4Nj_plsk-YuePLmze9sD54mj-pI7h7A==
439
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~gKfzfZNhFP2gL41g_K-hxakNHViOQ6ZZRMBPHLNXxuYgKjsLWEIoX1sIz89fF3XzhJeZ4qvgnvyaIkwwec-FCA==
440
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~gYI8rXqcpirfmZGzJuvAHGJu8yR78R9nCqbF0WQ_cUN9KQT1RquQoo_3SQTNK8k1S381IyAYEMKSqAYKAf9COw==
441
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~gtKHyEv1rzm_90tQQvx75fofuhqF3wNTWQ3tldt2rDIJXQBnR-B_J5l1C-WcFHXLoweIEIuj0tJFNjrVZ3vEvg==
442
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~i2d7Elkfo19989jX-6iI4uwg4fXQGZjmG-nyGQnfMYLTqmq23roNf8bf1fgYhM4DSSQPo0deWCFpdzKwLETcig==
443
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~jPJioAFmuXiRUotjEJqw4j8nDnEuO6QOdJFPNA6kVP8Nm-tU6rUs-Q8OglTeLEtWv8cGFiHOhnAn7M5R10fXzQ==
444
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~oRMi0sbQLktfDDDGUS-SqBKpdDiD6HCztVES_ShfGr0KVcYENoIq7y9oUSDWL5B_P2gkdtWG8JEsJLxPbdWOZA==
445
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~r3y1K6zs0Qq8JJIiol3B_pECoVfq_KHDSMUZDI4q-GfZ2wUj5Px08tL__pTotA0eeh332MvqT10WpiAXLW1Rog==
446
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~v_A5wH3VW6s3x7CVlbsEepkPwqUJt1aQgh2wnWM6Zxl3jX6p9pGBqw_myDIcQb-nA2ixaNyIU_dOHyDutVDYTw==
447
+ - spec/fixtures/retried_tests.xcresult/Data/refs.0~z_wmXPdlWnK_JUivaLITHoevREPJvj-SGgrsiDdJ682HXYlrBgDWwM2e4dUp1eskOwfELzhot0BJZBz-PVwF7w==
448
+ - spec/fixtures/retried_tests.xcresult/Info.plist
449
+ - spec/fixtures/retried_tests.xcresult/database.sqlite3
338
450
  - spec/fixtures/swiftlint.xcresult/Data/data.0~0-xWm2AiZ5I3ekRhpAO8g4-GGm1rZIaTIaO2e60GD8nRSProBd-a_Yc1i7HKUd7bcVhfz2trCFFjRoELo2Srsw==
339
451
  - spec/fixtures/swiftlint.xcresult/Data/data.0~0OZeLqccmhzjAKAPA0eS1xbrEYM0PXX1u6A91vWH_ALTk8ho004_4kSNB9wC5XH28w-WgXxARYsmR5za20WacA==
340
452
  - spec/fixtures/swiftlint.xcresult/Data/data.0~0S6H6SLQKxWYgRYf_D_1IY-6QHDo-BsTnbSwsmikZV81avlhu5M1VAH-NOUVMY64xcmrqOJTvhE3NuQQTem2Cw==