danger-xcode_summary 1.3.1 → 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 (66) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/Gemfile.lock +99 -53
  4. data/README.md +13 -0
  5. data/danger-xcode_summary.gemspec +3 -3
  6. data/lib/xcode_summary/gem_version.rb +1 -1
  7. data/lib/xcode_summary/plugin.rb +136 -14
  8. data/spec/fixtures/retried_tests.xcresult/Data/data.0~0luACsaLuIGsrHaW1p2r5kZFHAc8zIEhwg3hljPljHFBXD5-SNyct3RGkRlOfxfzboO40eJl793H-Tr3h9EAnQ== +0 -0
  9. data/spec/fixtures/retried_tests.xcresult/Data/data.0~2pBphMrRyBCZZCQggyI4Mn6_j-5CLweK-fa0nWOCa9lJ8r2Wc2mBQ8pFJcC_WkgbosHOTBZ2Yy0aDHgIxltNhg== +0 -0
  10. data/spec/fixtures/retried_tests.xcresult/Data/data.0~4VqMqsI5lOfxRppnud6-VDWcNsU8J7VgFCJfW2dXPwOcAkvU-I8Um5yp9n0Zv6nr3VmcxYggaVMDFfR0U_vjKw== +1 -0
  11. data/spec/fixtures/retried_tests.xcresult/Data/data.0~6_4s3J3j6iod0lxP9aqno8ppJVQAboTeoRYyEul58CXo86xYCi8pMJ9rHByVMLh_8_pFHLJ84UVbwjzR9-yKJQ== +0 -0
  12. data/spec/fixtures/retried_tests.xcresult/Data/data.0~7TAYIP6c6qLbBBpUWOkRobtgM8Dwhgtv1BfKhhuXyB04LXXo7xzeG8s9t-nSiFKxphDdrBsMR3b7bJ3nIsyQfQ== +0 -0
  13. data/spec/fixtures/retried_tests.xcresult/Data/data.0~AkR51mFgewGZrXJm8i7esSQXBXifwrpYLzKq3l8xgLBbfsS1SQ4_5rYhhT-vYUSck7Oo8HJfkbYh_otWeamddQ== +0 -0
  14. data/spec/fixtures/retried_tests.xcresult/Data/data.0~Bk5mUKvVX2jK4C69s0yWQYPcBzOHtcyxHZjMB0csj0hQkVYZoQiPgpOIv0JCLeZ0gGqi54r7InqzVWLe8KHQyg== +0 -0
  15. data/spec/fixtures/retried_tests.xcresult/Data/data.0~EObm8N_XU7PQfhT0KV0IDp8cdjLRxeiEzO4iRRL1uLGJ3-aWi2gzbiTirY0YgI2Nu0H_c9zSOiHTo3OLExQu2w== +0 -0
  16. data/spec/fixtures/retried_tests.xcresult/Data/data.0~FwJhpRUoZfeezopc-2WEkr7iOGkIvwRKVZ8DGttanmSmq7WBjG20njudVR2jo_3tgkLJv-VW0-2f0u6wludedg== +0 -0
  17. data/spec/fixtures/retried_tests.xcresult/Data/data.0~NWytdFolCFUA176MXDzt3mcbzNx-2oVk7o_X_aHPVaiVTu7JzoBqHXkbDAsdAofZzu-9mSfqH0o197rdBY5tXA== +0 -0
  18. data/spec/fixtures/retried_tests.xcresult/Data/data.0~UBgiphVm2gD00ZBzLvEnuJS_2F-O68r2wpLN7o5fbRd1_UsLtwHcLlSKKjqWjZicrPVbTGAxRfNTpTsJHMvbQA== +1 -0
  19. data/spec/fixtures/retried_tests.xcresult/Data/data.0~WMfxWcCJxmkDc00Zf0P29xnenUcbJx__4iIpthhfBJ8e_jac_0gHtk22ayhcGD2HCSB9JujMC4vIqM6TneeVoA== +0 -0
  20. data/spec/fixtures/retried_tests.xcresult/Data/data.0~XOTNmYsiCcpoBO03zDqHCWwjrSvR3eUQs6UpT6Kf1nnnCwIGPyE7V8mmhdIj_Q_LAiZ6V2Dg2yuokSxbPRQh1A== +0 -0
  21. data/spec/fixtures/retried_tests.xcresult/Data/data.0~XjY1NAMlBNNXx2x4kaNnnHVvyd-05qYvt_gFwZ_qr8nxLg4pZ4kMC53s1UoAViAinoulecAXPwNHqpZRXrxfdw== +0 -0
  22. data/spec/fixtures/retried_tests.xcresult/Data/data.0~YzBTrEOWvBXh61aRmHfgmZu7Tm4pa2z3vA-A_IvbOAArX2KXaGmpTw9iDh3YF3ZDo0YjowcIr4yV246QnT16oQ== +0 -0
  23. data/spec/fixtures/retried_tests.xcresult/Data/data.0~Z-Oh-YLJpLLjZW_x8QoW2C0TqUCkucMvz_3RSUka5A43tmMXPHaSZ3upggVoekq1wochTCgFBZvlDtRKE-fskQ== +0 -0
  24. data/spec/fixtures/retried_tests.xcresult/Data/data.0~ZHfywaPAA7U78e-22pL7lgXUX9rBLtghDd7MrFeZKeETeHclHkuB27rKQuO2pkgO2hQX4DwEuZRPGLDgVpl96Q== +0 -0
  25. data/spec/fixtures/retried_tests.xcresult/Data/data.0~ayVpOf4cK2rqJzLW027OOVx43mVDXe99HGYiI_NTs3J0uerkI5Nq9gc4Nj_plsk-YuePLmze9sD54mj-pI7h7A== +0 -0
  26. data/spec/fixtures/retried_tests.xcresult/Data/data.0~gKfzfZNhFP2gL41g_K-hxakNHViOQ6ZZRMBPHLNXxuYgKjsLWEIoX1sIz89fF3XzhJeZ4qvgnvyaIkwwec-FCA== +0 -0
  27. data/spec/fixtures/retried_tests.xcresult/Data/data.0~gYI8rXqcpirfmZGzJuvAHGJu8yR78R9nCqbF0WQ_cUN9KQT1RquQoo_3SQTNK8k1S381IyAYEMKSqAYKAf9COw== +0 -0
  28. data/spec/fixtures/retried_tests.xcresult/Data/data.0~gtKHyEv1rzm_90tQQvx75fofuhqF3wNTWQ3tldt2rDIJXQBnR-B_J5l1C-WcFHXLoweIEIuj0tJFNjrVZ3vEvg== +1 -0
  29. data/spec/fixtures/retried_tests.xcresult/Data/data.0~i2d7Elkfo19989jX-6iI4uwg4fXQGZjmG-nyGQnfMYLTqmq23roNf8bf1fgYhM4DSSQPo0deWCFpdzKwLETcig== +0 -0
  30. data/spec/fixtures/retried_tests.xcresult/Data/data.0~jPJioAFmuXiRUotjEJqw4j8nDnEuO6QOdJFPNA6kVP8Nm-tU6rUs-Q8OglTeLEtWv8cGFiHOhnAn7M5R10fXzQ== +0 -0
  31. data/spec/fixtures/retried_tests.xcresult/Data/data.0~oRMi0sbQLktfDDDGUS-SqBKpdDiD6HCztVES_ShfGr0KVcYENoIq7y9oUSDWL5B_P2gkdtWG8JEsJLxPbdWOZA== +0 -0
  32. data/spec/fixtures/retried_tests.xcresult/Data/data.0~r3y1K6zs0Qq8JJIiol3B_pECoVfq_KHDSMUZDI4q-GfZ2wUj5Px08tL__pTotA0eeh332MvqT10WpiAXLW1Rog== +0 -0
  33. data/spec/fixtures/retried_tests.xcresult/Data/data.0~v_A5wH3VW6s3x7CVlbsEepkPwqUJt1aQgh2wnWM6Zxl3jX6p9pGBqw_myDIcQb-nA2ixaNyIU_dOHyDutVDYTw== +0 -0
  34. data/spec/fixtures/retried_tests.xcresult/Data/data.0~z_wmXPdlWnK_JUivaLITHoevREPJvj-SGgrsiDdJ682HXYlrBgDWwM2e4dUp1eskOwfELzhot0BJZBz-PVwF7w== +0 -0
  35. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~0luACsaLuIGsrHaW1p2r5kZFHAc8zIEhwg3hljPljHFBXD5-SNyct3RGkRlOfxfzboO40eJl793H-Tr3h9EAnQ== +0 -0
  36. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~2pBphMrRyBCZZCQggyI4Mn6_j-5CLweK-fa0nWOCa9lJ8r2Wc2mBQ8pFJcC_WkgbosHOTBZ2Yy0aDHgIxltNhg== +0 -0
  37. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~4VqMqsI5lOfxRppnud6-VDWcNsU8J7VgFCJfW2dXPwOcAkvU-I8Um5yp9n0Zv6nr3VmcxYggaVMDFfR0U_vjKw== +0 -0
  38. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~6_4s3J3j6iod0lxP9aqno8ppJVQAboTeoRYyEul58CXo86xYCi8pMJ9rHByVMLh_8_pFHLJ84UVbwjzR9-yKJQ== +0 -0
  39. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~7TAYIP6c6qLbBBpUWOkRobtgM8Dwhgtv1BfKhhuXyB04LXXo7xzeG8s9t-nSiFKxphDdrBsMR3b7bJ3nIsyQfQ== +0 -0
  40. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~AkR51mFgewGZrXJm8i7esSQXBXifwrpYLzKq3l8xgLBbfsS1SQ4_5rYhhT-vYUSck7Oo8HJfkbYh_otWeamddQ== +0 -0
  41. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~Bk5mUKvVX2jK4C69s0yWQYPcBzOHtcyxHZjMB0csj0hQkVYZoQiPgpOIv0JCLeZ0gGqi54r7InqzVWLe8KHQyg== +0 -0
  42. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~EObm8N_XU7PQfhT0KV0IDp8cdjLRxeiEzO4iRRL1uLGJ3-aWi2gzbiTirY0YgI2Nu0H_c9zSOiHTo3OLExQu2w== +0 -0
  43. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~FwJhpRUoZfeezopc-2WEkr7iOGkIvwRKVZ8DGttanmSmq7WBjG20njudVR2jo_3tgkLJv-VW0-2f0u6wludedg== +0 -0
  44. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~NWytdFolCFUA176MXDzt3mcbzNx-2oVk7o_X_aHPVaiVTu7JzoBqHXkbDAsdAofZzu-9mSfqH0o197rdBY5tXA== +0 -0
  45. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~UBgiphVm2gD00ZBzLvEnuJS_2F-O68r2wpLN7o5fbRd1_UsLtwHcLlSKKjqWjZicrPVbTGAxRfNTpTsJHMvbQA== +0 -0
  46. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~WMfxWcCJxmkDc00Zf0P29xnenUcbJx__4iIpthhfBJ8e_jac_0gHtk22ayhcGD2HCSB9JujMC4vIqM6TneeVoA== +0 -0
  47. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~XOTNmYsiCcpoBO03zDqHCWwjrSvR3eUQs6UpT6Kf1nnnCwIGPyE7V8mmhdIj_Q_LAiZ6V2Dg2yuokSxbPRQh1A== +0 -0
  48. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~XjY1NAMlBNNXx2x4kaNnnHVvyd-05qYvt_gFwZ_qr8nxLg4pZ4kMC53s1UoAViAinoulecAXPwNHqpZRXrxfdw== +0 -0
  49. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~YzBTrEOWvBXh61aRmHfgmZu7Tm4pa2z3vA-A_IvbOAArX2KXaGmpTw9iDh3YF3ZDo0YjowcIr4yV246QnT16oQ== +0 -0
  50. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~Z-Oh-YLJpLLjZW_x8QoW2C0TqUCkucMvz_3RSUka5A43tmMXPHaSZ3upggVoekq1wochTCgFBZvlDtRKE-fskQ== +0 -0
  51. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~ZHfywaPAA7U78e-22pL7lgXUX9rBLtghDd7MrFeZKeETeHclHkuB27rKQuO2pkgO2hQX4DwEuZRPGLDgVpl96Q== +0 -0
  52. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~ayVpOf4cK2rqJzLW027OOVx43mVDXe99HGYiI_NTs3J0uerkI5Nq9gc4Nj_plsk-YuePLmze9sD54mj-pI7h7A== +0 -0
  53. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~gKfzfZNhFP2gL41g_K-hxakNHViOQ6ZZRMBPHLNXxuYgKjsLWEIoX1sIz89fF3XzhJeZ4qvgnvyaIkwwec-FCA== +0 -0
  54. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~gYI8rXqcpirfmZGzJuvAHGJu8yR78R9nCqbF0WQ_cUN9KQT1RquQoo_3SQTNK8k1S381IyAYEMKSqAYKAf9COw== +0 -0
  55. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~gtKHyEv1rzm_90tQQvx75fofuhqF3wNTWQ3tldt2rDIJXQBnR-B_J5l1C-WcFHXLoweIEIuj0tJFNjrVZ3vEvg== +0 -0
  56. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~i2d7Elkfo19989jX-6iI4uwg4fXQGZjmG-nyGQnfMYLTqmq23roNf8bf1fgYhM4DSSQPo0deWCFpdzKwLETcig== +0 -0
  57. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~jPJioAFmuXiRUotjEJqw4j8nDnEuO6QOdJFPNA6kVP8Nm-tU6rUs-Q8OglTeLEtWv8cGFiHOhnAn7M5R10fXzQ== +0 -0
  58. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~oRMi0sbQLktfDDDGUS-SqBKpdDiD6HCztVES_ShfGr0KVcYENoIq7y9oUSDWL5B_P2gkdtWG8JEsJLxPbdWOZA== +0 -0
  59. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~r3y1K6zs0Qq8JJIiol3B_pECoVfq_KHDSMUZDI4q-GfZ2wUj5Px08tL__pTotA0eeh332MvqT10WpiAXLW1Rog== +0 -0
  60. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~v_A5wH3VW6s3x7CVlbsEepkPwqUJt1aQgh2wnWM6Zxl3jX6p9pGBqw_myDIcQb-nA2ixaNyIU_dOHyDutVDYTw== +0 -0
  61. data/spec/fixtures/retried_tests.xcresult/Data/refs.0~z_wmXPdlWnK_JUivaLITHoevREPJvj-SGgrsiDdJ682HXYlrBgDWwM2e4dUp1eskOwfELzhot0BJZBz-PVwF7w== +0 -0
  62. data/spec/fixtures/retried_tests.xcresult/Info.plist +29 -0
  63. data/spec/fixtures/retried_tests.xcresult/database.sqlite3 +0 -0
  64. data/spec/spec_helper.rb +2 -2
  65. data/spec/xcode_summary_spec.rb +113 -0
  66. metadata +120 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ba01bb92755852ab528ad3721b607d41ed61963d221d337a064fb8e54743871b
4
- data.tar.gz: 7378e516f2a5c98751997ac1e1fbdb2305805ff8a7d3bc6485a98a53e6a0deda
3
+ metadata.gz: a90d7103da94409a508fd372294d52c0bc1ca3d78b3874d1baf3d6c629e11dfc
4
+ data.tar.gz: 8709afbecba017f845f265ddba3a2f785883c2e8f87926409e3aeeb662be47e3
5
5
  SHA512:
6
- metadata.gz: 1d48beaddc39c86f9393d1f276d55ec9293b86abb3261f47d148dedf3c46b6a706cd98b1e1ee3f3a67ef6a01206d1d9e58c1ce23952e303809a331813f62dda4
7
- data.tar.gz: ee27dafbd6f3915058dd04d0c5ec966ac0b6113fb61c4668e9c504a16a10eef0c418ce98ca10b8c3ff7e9f875ac25afec991eba54b984947c034f21127cc9d53
6
+ metadata.gz: f98b8dbae2e9c71542347c9081d29ab706bcad5903627ee1f6b0df173ef08284de846db6872f4ac6be79e93cc3b11e779f2220b9fc38e67e01b67fbfc5b6066b
7
+ data.tar.gz: 191e169f0d003088b73ffc514817a6c22f590bb24279e8aa4fa47f082116d36fba0ef0dfba7e063388abf4c1a2ce0cb60cfdc5efe2d35e483e1e6d81595f916c
data/.rubocop.yml CHANGED
@@ -24,7 +24,7 @@ Style/ClassAndModuleChildren:
24
24
  Enabled: false
25
25
 
26
26
  Metrics/AbcSize:
27
- Max: 60
27
+ Max: 66
28
28
 
29
29
  # The %w might be confusing for new users
30
30
  Style/WordArray:
data/Gemfile.lock CHANGED
@@ -1,58 +1,86 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- danger-xcode_summary (1.3.1)
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
- ast (2.4.2)
26
+ ast (2.4.3)
27
+ base64 (0.3.0)
28
+ benchmark (0.4.1)
29
+ bigdecimal (3.2.2)
14
30
  claide (1.1.0)
15
31
  claide-plugins (0.9.2)
16
32
  cork
17
33
  nap
18
34
  open4 (~> 1.3)
19
35
  coderay (1.1.3)
20
- colored2 (3.1.2)
21
- cork (0.3.0)
22
- colored2 (~> 3.1)
23
- danger (9.5.0)
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)
43
+ base64 (~> 0.2)
24
44
  claide (~> 1.0)
25
45
  claide-plugins (>= 0.9.2)
26
- colored2 (~> 3.1)
46
+ colored2 (>= 3.1, < 5)
27
47
  cork (~> 0.1)
28
48
  faraday (>= 0.9.0, < 3.0)
29
49
  faraday-http-cache (~> 2.0)
30
- git (~> 1.13)
31
- kramdown (~> 2.3)
50
+ git (>= 1.13, < 3.0)
51
+ kramdown (>= 2.5.1, < 3.0)
32
52
  kramdown-parser-gfm (~> 1.0)
33
53
  octokit (>= 4.0)
34
- terminal-table (>= 1, < 4)
54
+ pstore (~> 0.1)
55
+ terminal-table (>= 1, < 5)
35
56
  danger-plugin-api (1.0.0)
36
57
  danger (> 2.0)
37
- diff-lcs (1.5.1)
38
- faraday (2.11.0)
39
- faraday-net_http (>= 2.0, < 3.4)
58
+ diff-lcs (1.6.2)
59
+ drb (2.2.3)
60
+ faraday (2.13.4)
61
+ faraday-net_http (>= 2.0, < 3.5)
62
+ json
40
63
  logger
41
64
  faraday-http-cache (2.5.1)
42
65
  faraday (>= 0.8)
43
- faraday-net_http (3.3.0)
44
- net-http
45
- ffi (1.17.0)
46
- formatador (1.1.0)
47
- git (1.19.1)
66
+ faraday-net_http (3.4.1)
67
+ net-http (>= 0.5.0)
68
+ ffi (1.17.2)
69
+ formatador (1.2.0)
70
+ reline
71
+ git (2.3.3)
72
+ activesupport (>= 5.0)
48
73
  addressable (~> 2.8)
74
+ process_executer (~> 1.1)
49
75
  rchardet (~> 1.8)
50
- guard (2.18.1)
76
+ guard (2.19.1)
51
77
  formatador (>= 0.2.4)
52
78
  listen (>= 2.7, < 4.0)
79
+ logger (~> 1.6)
53
80
  lumberjack (>= 1.0.12, < 2.0)
54
81
  nenv (~> 0.1)
55
82
  notiffany (~> 0.0)
83
+ ostruct (~> 0.6)
56
84
  pry (>= 0.13.0)
57
85
  shellany (~> 0.0)
58
86
  thor (>= 0.18.1)
@@ -61,81 +89,99 @@ GEM
61
89
  guard (~> 2.1)
62
90
  guard-compat (~> 1.1)
63
91
  rspec (>= 2.99.0, < 4.0)
64
- json (2.7.2)
65
- kramdown (2.4.0)
66
- rexml
92
+ i18n (1.14.7)
93
+ concurrent-ruby (~> 1.0)
94
+ io-console (0.8.1)
95
+ json (2.13.2)
96
+ kramdown (2.5.1)
97
+ rexml (>= 3.3.9)
67
98
  kramdown-parser-gfm (1.1.0)
68
99
  kramdown (~> 2.0)
69
- language_server-protocol (3.17.0.3)
100
+ language_server-protocol (3.17.0.5)
101
+ lint_roller (1.1.0)
70
102
  listen (3.9.0)
71
103
  rb-fsevent (~> 0.10, >= 0.10.3)
72
104
  rb-inotify (~> 0.9, >= 0.9.10)
73
- logger (1.6.1)
74
- lumberjack (1.2.10)
105
+ logger (1.7.0)
106
+ lumberjack (1.4.0)
75
107
  method_source (1.1.0)
108
+ minitest (5.25.5)
76
109
  nap (1.1.0)
77
110
  nenv (0.3.0)
78
- net-http (0.4.1)
111
+ net-http (0.6.0)
79
112
  uri
80
113
  notiffany (0.1.3)
81
114
  nenv (~> 0.1)
82
115
  shellany (~> 0.0)
83
- octokit (9.1.0)
116
+ octokit (10.0.0)
84
117
  faraday (>= 1, < 3)
85
118
  sawyer (~> 0.9)
86
119
  open4 (1.3.4)
87
- parallel (1.26.3)
88
- parser (3.3.5.0)
120
+ ostruct (0.6.3)
121
+ parallel (1.27.0)
122
+ parser (3.3.9.0)
89
123
  ast (~> 2.4.1)
90
124
  racc
91
- pry (0.14.2)
125
+ prism (1.4.0)
126
+ process_executer (1.3.0)
127
+ pry (0.15.2)
92
128
  coderay (~> 1.1)
93
129
  method_source (~> 1.0)
94
- public_suffix (6.0.1)
130
+ pstore (0.2.0)
131
+ public_suffix (6.0.2)
95
132
  racc (1.8.1)
96
133
  rainbow (3.1.1)
97
- rake (13.2.1)
134
+ rake (13.3.0)
98
135
  rb-fsevent (0.11.2)
99
136
  rb-inotify (0.11.1)
100
137
  ffi (~> 1.0)
101
- rchardet (1.8.0)
102
- regexp_parser (2.9.2)
103
- rexml (3.3.7)
104
- rspec (3.13.0)
138
+ rchardet (1.9.0)
139
+ regexp_parser (2.11.2)
140
+ reline (0.6.2)
141
+ io-console (~> 0.5)
142
+ rexml (3.4.1)
143
+ rspec (3.13.1)
105
144
  rspec-core (~> 3.13.0)
106
145
  rspec-expectations (~> 3.13.0)
107
146
  rspec-mocks (~> 3.13.0)
108
- rspec-core (3.13.1)
147
+ rspec-core (3.13.5)
109
148
  rspec-support (~> 3.13.0)
110
- rspec-expectations (3.13.2)
149
+ rspec-expectations (3.13.5)
111
150
  diff-lcs (>= 1.2.0, < 2.0)
112
151
  rspec-support (~> 3.13.0)
113
- rspec-mocks (3.13.1)
152
+ rspec-mocks (3.13.5)
114
153
  diff-lcs (>= 1.2.0, < 2.0)
115
154
  rspec-support (~> 3.13.0)
116
- rspec-support (3.13.1)
117
- rubocop (1.66.1)
155
+ rspec-support (3.13.5)
156
+ rubocop (1.80.0)
118
157
  json (~> 2.3)
119
- language_server-protocol (>= 3.17.0)
158
+ language_server-protocol (~> 3.17.0.2)
159
+ lint_roller (~> 1.1.0)
120
160
  parallel (~> 1.10)
121
161
  parser (>= 3.3.0.2)
122
162
  rainbow (>= 2.2.2, < 4.0)
123
- regexp_parser (>= 2.4, < 3.0)
124
- rubocop-ast (>= 1.32.2, < 2.0)
163
+ regexp_parser (>= 2.9.3, < 3.0)
164
+ rubocop-ast (>= 1.46.0, < 2.0)
125
165
  ruby-progressbar (~> 1.7)
126
- unicode-display_width (>= 2.4.0, < 3.0)
127
- rubocop-ast (1.32.2)
128
- parser (>= 3.3.1.0)
166
+ unicode-display_width (>= 2.4.0, < 4.0)
167
+ rubocop-ast (1.46.0)
168
+ parser (>= 3.3.7.2)
169
+ prism (~> 1.4)
129
170
  ruby-progressbar (1.13.0)
130
171
  sawyer (0.9.2)
131
172
  addressable (>= 2.3.5)
132
173
  faraday (>= 0.17.3, < 3)
174
+ securerandom (0.4.1)
133
175
  shellany (0.0.1)
134
- terminal-table (3.0.2)
135
- unicode-display_width (>= 1.1.1, < 3)
136
- thor (1.3.2)
137
- unicode-display_width (2.5.0)
138
- uri (0.13.1)
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)
182
+ unicode-emoji (~> 4.0, >= 4.0.4)
183
+ unicode-emoji (4.0.4)
184
+ uri (1.0.3)
139
185
  xcresult (0.2.2)
140
186
  yard (0.9.37)
141
187
 
@@ -156,4 +202,4 @@ DEPENDENCIES
156
202
  yard
157
203
 
158
204
  BUNDLED WITH
159
- 2.3.0
205
+ 2.4.22
data/README.md CHANGED
@@ -107,6 +107,10 @@ xcode_summary.ignored_results { |result|
107
107
  }
108
108
 
109
109
  xcode_summary.report 'MyApp.xcresult'
110
+
111
+ # When `true`, collapses parallelized test runs of the same target into one line.
112
+ # Defaults to `false`.
113
+ xcode_summary.collapse_parallelized_tests = true
110
114
  ```
111
115
 
112
116
  You can use `ignores_warnings` to supress warnings and shows only errors.
@@ -124,6 +128,15 @@ xcode_summary.inline_mode = true
124
128
  xcode_summary.report 'MyApp.xcresult'
125
129
  ```
126
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
+
127
140
  You can use `strict` to reporting errors as warnings thereby don't block merge PR.
128
141
 
129
142
  ```ruby
@@ -3,7 +3,7 @@
3
3
  lib = File.expand_path('lib', __dir__)
4
4
 
5
5
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
6
- require 'xcode_summary/gem_version.rb'
6
+ require 'xcode_summary/gem_version'
7
7
 
8
8
  Gem::Specification.new do |spec|
9
9
  spec.name = 'danger-xcode_summary'
@@ -21,10 +21,10 @@ Gem::Specification.new do |spec|
21
21
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
22
22
  spec.require_paths = ['lib']
23
23
 
24
- spec.required_ruby_version = ">= 2.4.0"
24
+ spec.required_ruby_version = '>= 2.4.0'
25
25
 
26
+ spec.add_dependency 'danger-plugin-api', '~> 1.0'
26
27
  spec.add_dependency 'xcresult', '~> 0.2.2'
27
- spec.add_runtime_dependency 'danger-plugin-api', '~> 1.0'
28
28
 
29
29
  # General ruby development
30
30
  spec.add_development_dependency 'bundler', '>= 2.2.10'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module XcodeSummary
4
- VERSION = '1.3.1'
4
+ VERSION = '1.5.0'
5
5
  end
@@ -82,6 +82,19 @@ module Danger
82
82
  # @return [Boolean]
83
83
  attr_accessor :strict
84
84
 
85
+ # Defines if parallelized test runs from the same target should be collapsed into one message.
86
+ # Defaults to `false`
87
+ # @param [Boolean] value
88
+ # @return [Boolean]
89
+ attr_accessor :collapse_parallelized_tests
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
+
85
98
  # rubocop:disable Lint/DuplicateMethods
86
99
  def project_root
87
100
  root = @project_root || Dir.pwd
@@ -106,7 +119,7 @@ module Danger
106
119
  end
107
120
 
108
121
  def test_summary
109
- @test_summary.nil? ? true : @test_summary
122
+ @test_summary.nil? || @test_summary
110
123
  end
111
124
 
112
125
  def inline_mode
@@ -118,7 +131,15 @@ module Danger
118
131
  end
119
132
 
120
133
  def strict
121
- @strict.nil? ? true : @strict
134
+ @strict.nil? || @strict
135
+ end
136
+
137
+ def collapse_parallelized_tests
138
+ @collapse_parallelized_tests || false
139
+ end
140
+
141
+ def ignore_retried_tests
142
+ @ignore_retried_tests || false
122
143
  end
123
144
 
124
145
  # Pick a Dangerfile plugin for a chosen request_source and cache it
@@ -138,6 +159,9 @@ module Danger
138
159
  def report(file_path)
139
160
  if File.exist?(file_path)
140
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
141
165
  format_summary(xcode_summary)
142
166
  else
143
167
  fail 'summary file not found'
@@ -151,6 +175,9 @@ module Danger
151
175
  def warning_error_count(file_path)
152
176
  if File.exist?(file_path)
153
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
154
181
  warning_count = 0
155
182
  error_count = 0
156
183
  xcode_summary.actions_invocation_record.actions.each do |action|
@@ -166,6 +193,38 @@ module Danger
166
193
 
167
194
  private
168
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
+
169
228
  def format_summary(xcode_summary)
170
229
  messages(xcode_summary).each { |s| message(s, sticky: sticky_summary) }
171
230
  all_warnings = []
@@ -211,26 +270,50 @@ module Danger
211
270
 
212
271
  def messages(xcode_summary)
213
272
  if test_summary
214
- test_messages = xcode_summary.action_test_plan_summaries.map do |test_plan_summaries|
273
+ test_runs = xcode_summary.action_test_plan_summaries.map do |test_plan_summaries|
215
274
  test_plan_summaries.summaries.map do |summary|
216
275
  summary.testable_summaries.map do |test_summary|
217
276
  test_summary.tests.filter_map do |action_test_object|
218
277
  if action_test_object.instance_of? XCResult::ActionTestSummaryGroup
219
- subtests = action_test_object.all_subtests
220
- subtests_duration = subtests.map(&:duration).sum
221
- test_text_infix = subtests.count == 1 ? 'test' : 'tests'
222
- failed_tests_count = subtests.reject { |test| test.test_status == 'Success' }.count
223
- expected_failed_tests_count = subtests.select { |test| test.test_status == 'Expected Failure' }.count
224
-
225
- "#{test_summary.target_name}: Executed #{subtests.count} #{test_text_infix}, " \
226
- "with #{failed_tests_count} failures (#{expected_failed_tests_count} expected) in " \
227
- "#{subtests_duration.round(3)} (#{action_test_object.duration.round(3)}) seconds"
278
+ create_test_run_data(action_test_object, test_summary)
228
279
  end
229
280
  end
230
281
  end
231
282
  end
232
283
  end
233
- test_messages.flatten.uniq.compact.map(&:strip)
284
+
285
+ flattened_test_runs = test_runs.flatten.uniq.compact
286
+
287
+ if collapse_parallelized_tests
288
+ test_runs_by_target = flattened_test_runs.group_by { |test_run| test_run[:target_name] }
289
+ flattened_test_runs = test_runs_by_target.map do |target_name, test_runs|
290
+ test_runs.reduce do |acc, test_run|
291
+ acc.merge(
292
+ test_count: acc[:test_count] + test_run[:test_count],
293
+ failed_tests_count: acc[:failed_tests_count] + test_run[:failed_tests_count],
294
+ expected_failed_tests_count: acc[:expected_failed_tests_count] + test_run[:expected_failed_tests_count],
295
+ tests_duration: acc[:tests_duration] + test_run[:tests_duration],
296
+ action_duration: acc[:action_duration] + test_run[:action_duration]
297
+ )
298
+ end
299
+ end
300
+ end
301
+
302
+ test_messages = flattened_test_runs.map do |test_run|
303
+ target_name = test_run[:target_name]
304
+ test_count = test_run[:test_count]
305
+ failed_tests_count = test_run[:failed_tests_count]
306
+ expected_failed_tests_count = test_run[:expected_failed_tests_count]
307
+ subtests_duration = test_run[:tests_duration]
308
+ action_duration = test_run[:action_duration]
309
+ test_text_infix = test_count == 1 ? 'test' : 'tests'
310
+
311
+ "#{target_name}: Executed #{test_count} #{test_text_infix}, " \
312
+ "with #{failed_tests_count} failures (#{expected_failed_tests_count} expected) in " \
313
+ "#{subtests_duration.round(3)} (#{action_duration.round(3)}) seconds"
314
+ end
315
+
316
+ test_messages.map(&:strip)
234
317
  else
235
318
  []
236
319
  end
@@ -259,19 +342,58 @@ module Danger
259
342
  Result.new(format_warning(result), result.location)
260
343
  end
261
344
 
345
+ successfully_retried_test_identifiers = @successfully_retried_test_identifiers || []
262
346
  test_failures = [
263
347
  action.action_result.issues.test_failure_summaries,
264
348
  action.build_result.issues.test_failure_summaries
265
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
+
266
355
  result = Result.new(summary.message, parse_location(summary.document_location_in_creating_workspace))
267
356
  Result.new(format_test_failure(result, summary.producing_target, summary.test_case_name),
268
357
  result.location)
269
358
  end
270
359
 
271
- results = (errors + test_failures).uniq.reject { |result| result.message.nil? }
360
+ results = (errors + test_failures).compact.uniq.reject { |result| result.message.nil? }
272
361
  results.delete_if(&ignored_results)
273
362
  end
274
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
+
275
397
  def parse_location(document_location)
276
398
  return nil if document_location&.url.nil?
277
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>
data/spec/spec_helper.rb CHANGED
@@ -2,8 +2,8 @@
2
2
 
3
3
  require 'pathname'
4
4
  ROOT = Pathname.new(File.expand_path('..', __dir__))
5
- $LOAD_PATH.unshift("#{ROOT}lib".to_s)
6
- $LOAD_PATH.unshift("#{ROOT}spec".to_s)
5
+ $LOAD_PATH.unshift("#{ROOT}lib")
6
+ $LOAD_PATH.unshift("#{ROOT}spec")
7
7
 
8
8
  require 'bundler/setup'
9
9
  require 'pry'
@@ -257,6 +257,119 @@ module Danger
257
257
  expect(result).to eq '{"warnings":21,"errors":3}'
258
258
  end
259
259
  end
260
+
261
+ context 'with collapse_parallelized_tests' do
262
+ context 'enabled' do
263
+ before do
264
+ @xcode_summary.collapse_parallelized_tests = true
265
+ end
266
+
267
+ it 'collapses test runs from the same target' do
268
+ # Allow for message receiving testing
269
+ allow(@xcode_summary).to receive(:message).and_call_original
270
+ @xcode_summary.report('spec/fixtures/swiftlint.xcresult')
271
+
272
+ # Ensure that the plugin received a call to message with the combined test results
273
+ expect(@xcode_summary).to have_received(:message).with(/SwiftLintFrameworkTests: Executed .* tests/m, sticky: false)
274
+
275
+ # The standard test case should only show one message per target, even with parallelized tests
276
+ expect(@dangerfile.status_report[:messages].length).to eq(1)
277
+ end
278
+ end
279
+
280
+ context 'disabled' do
281
+ before do
282
+ @xcode_summary.collapse_parallelized_tests = false
283
+ end
284
+
285
+ it 'shows individual test runs for each target' do
286
+ @xcode_summary.report('spec/fixtures/swiftlint.xcresult')
287
+
288
+ # We know from the existing tests that the standard behavior should match
289
+ # the test in the "summary" context, with one test run per message
290
+ expect(@dangerfile.status_report[:messages]).to eq [
291
+ 'SwiftLintFrameworkTests: Executed 540 tests, with 1 failures (0 expected) in 114.029 (27.922) seconds'
292
+ ]
293
+ end
294
+ end
295
+
296
+ context 'with default value' do
297
+ it 'defaults to disabled behavior' do
298
+ # Don't set collapse_parallelized_tests to test the default
299
+ # Reset any test_summary setting to ensure clean state
300
+ @xcode_summary.test_summary = true
301
+
302
+ @xcode_summary.report('spec/fixtures/swiftlint.xcresult')
303
+
304
+ # Default should match the disabled behavior
305
+ expect(@dangerfile.status_report[:messages]).to eq [
306
+ 'SwiftLintFrameworkTests: Executed 540 tests, with 1 failures (0 expected) in 114.029 (27.922) seconds'
307
+ ]
308
+
309
+ # Verify the default value is false
310
+ expect(@xcode_summary.collapse_parallelized_tests).to eq(false)
311
+ end
312
+ end
313
+ end
314
+ end
315
+ end
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
260
373
  end
261
374
  end
262
375
 
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.3.1
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Diogo Tridapalli
@@ -9,36 +9,36 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2024-09-04 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
- name: xcresult
15
+ name: danger-plugin-api
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: 0.2.2
20
+ version: '1.0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: 0.2.2
27
+ version: '1.0'
28
28
  - !ruby/object:Gem::Dependency
29
- name: danger-plugin-api
29
+ name: xcresult
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '1.0'
34
+ version: 0.2.2
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '1.0'
41
+ version: 0.2.2
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: bundler
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -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==