danger-xcode_summary 0.5.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (153) hide show
  1. checksums.yaml +5 -5
  2. data/.gitattributes +1 -0
  3. data/.rubocop.yml +6 -6
  4. data/.travis.yml +11 -3
  5. data/Gemfile +2 -0
  6. data/Gemfile.lock +90 -64
  7. data/Guardfile +2 -0
  8. data/README.md +10 -29
  9. data/Rakefile +2 -0
  10. data/danger-xcode_summary.gemspec +7 -4
  11. data/lib/danger_plugin.rb +2 -0
  12. data/lib/danger_xcode_summary.rb +2 -0
  13. data/lib/xcode_summary/gem_version.rb +3 -1
  14. data/lib/xcode_summary/plugin.rb +95 -146
  15. data/spec/fixtures/build_error.xcresult/Data/data.0~8rlpy8Zk2MdRSU0KgHQ-dzLsgOGyu-14Vc-N0xpF5NjTgHQgt3Y2C80SFK9G34F8tFCT42Ddo_9fUgkxBW3O9w== +0 -0
  16. data/spec/fixtures/build_error.xcresult/Data/data.0~IRr5bjJHBy3PCL5WuT9beYwr1YJflTZAOvsiw4f8sjvfJO1N516fkBcRW8rzgz3AkdAAidUfmPabPcZq3iarbA== +0 -0
  17. data/spec/fixtures/build_error.xcresult/Data/data.0~M95TCFtTnRKHBi17FlVGNc2kRMfbb_nRcsKPCf3ttPQyiTHHtDZhXhZ7cyeQ_qQ4zMKPS6y7I0oN4BKz0S4Uwg== +1 -0
  18. data/spec/fixtures/build_error.xcresult/Data/data.0~R8E9aNLCgS5_YXRF2Ugae_CaCFKR0ScZt9yP6r7ov-20PVARt7VwmAHWg2P6EBKQXm2TML95dp7BNnz9vunkBw== +0 -0
  19. data/spec/fixtures/build_error.xcresult/Data/data.0~YHIIkYp8-XSCi9oQYeEXZLa8EYpvUizVzEQGN5YmnJtTfJ4ujBdfy2EVAk8cUl8jtQskdFE84I-7eu59N9_pLA== +1 -0
  20. data/spec/fixtures/build_error.xcresult/Data/data.0~oBktD27DLW9QTHTv0MDsoaN2N6qCqZMwiFJeX7RwARc9fFan5V2awd_aThA9ZdCFTmHTSrdRglfQ5-ry9bJBUQ== +0 -0
  21. data/spec/fixtures/build_error.xcresult/Data/data.0~sMF2ys5sALLwuAv5pBXjiul46mqlgymNeLHDD_y99cE5gPqv8vL-IHIBlpnlNYSO4VvKHlaNafxanp-NDJTh-A== +0 -0
  22. data/spec/fixtures/build_error.xcresult/Data/refs.0~8rlpy8Zk2MdRSU0KgHQ-dzLsgOGyu-14Vc-N0xpF5NjTgHQgt3Y2C80SFK9G34F8tFCT42Ddo_9fUgkxBW3O9w== +0 -0
  23. data/spec/fixtures/build_error.xcresult/Data/refs.0~IRr5bjJHBy3PCL5WuT9beYwr1YJflTZAOvsiw4f8sjvfJO1N516fkBcRW8rzgz3AkdAAidUfmPabPcZq3iarbA== +0 -0
  24. data/spec/fixtures/build_error.xcresult/Data/refs.0~M95TCFtTnRKHBi17FlVGNc2kRMfbb_nRcsKPCf3ttPQyiTHHtDZhXhZ7cyeQ_qQ4zMKPS6y7I0oN4BKz0S4Uwg== +0 -0
  25. data/spec/fixtures/build_error.xcresult/Data/refs.0~R8E9aNLCgS5_YXRF2Ugae_CaCFKR0ScZt9yP6r7ov-20PVARt7VwmAHWg2P6EBKQXm2TML95dp7BNnz9vunkBw== +0 -0
  26. data/spec/fixtures/build_error.xcresult/Data/refs.0~YHIIkYp8-XSCi9oQYeEXZLa8EYpvUizVzEQGN5YmnJtTfJ4ujBdfy2EVAk8cUl8jtQskdFE84I-7eu59N9_pLA== +0 -0
  27. data/spec/fixtures/build_error.xcresult/Data/refs.0~oBktD27DLW9QTHTv0MDsoaN2N6qCqZMwiFJeX7RwARc9fFan5V2awd_aThA9ZdCFTmHTSrdRglfQ5-ry9bJBUQ== +0 -0
  28. data/spec/fixtures/build_error.xcresult/Data/refs.0~sMF2ys5sALLwuAv5pBXjiul46mqlgymNeLHDD_y99cE5gPqv8vL-IHIBlpnlNYSO4VvKHlaNafxanp-NDJTh-A== +0 -0
  29. data/spec/fixtures/build_error.xcresult/Info.plist +29 -0
  30. data/spec/fixtures/pr_json.json +2 -2
  31. data/spec/fixtures/swiftlint.xcresult/Data/data.0~0-xWm2AiZ5I3ekRhpAO8g4-GGm1rZIaTIaO2e60GD8nRSProBd-a_Yc1i7HKUd7bcVhfz2trCFFjRoELo2Srsw== +1 -0
  32. data/spec/fixtures/swiftlint.xcresult/Data/data.0~0OZeLqccmhzjAKAPA0eS1xbrEYM0PXX1u6A91vWH_ALTk8ho004_4kSNB9wC5XH28w-WgXxARYsmR5za20WacA== +0 -0
  33. data/spec/fixtures/swiftlint.xcresult/Data/data.0~0S6H6SLQKxWYgRYf_D_1IY-6QHDo-BsTnbSwsmikZV81avlhu5M1VAH-NOUVMY64xcmrqOJTvhE3NuQQTem2Cw== +1 -0
  34. data/spec/fixtures/swiftlint.xcresult/Data/data.0~2kkEPYCm3NJ7Qa1mJdA2u8iJvxvealDfVga3ndyyZs38sQL36q1IX7MYvrKo4eDbd-nyAQ96ZvSgaqpY4LJS1g== +0 -0
  35. data/spec/fixtures/swiftlint.xcresult/Data/data.0~3_PlvRIvUTDBxcDG2Xfka2hgB7TiNgptAFA36_GXRa52Nvcr0scZcjFMT5dD_zIOEF07s48D6roAaO5Fuhqm4A== +0 -0
  36. data/spec/fixtures/swiftlint.xcresult/Data/data.0~4G0wQRF6xQNh3N32d9TJzcahHXtF9nsz9VnT8U0otA3r2iR598yAPi99CNnJ6RdVZdbjKKM5mOz4wlM-xL99GQ== +0 -0
  37. data/spec/fixtures/swiftlint.xcresult/Data/data.0~4ybc14a0wWeJTE6Wyco_E5GMC4AV1uhumwDmYN_qe_Xatx7ngcL09_ef5aIBySSqpNNu4zcclYpHn9GrlNRuFQ== +1 -0
  38. data/spec/fixtures/swiftlint.xcresult/Data/data.0~6gayYzI1pf7Ae5plNUTUjxPN56sJMCVjiFgbL47tofr0MkqR24pCBQ_WR8ObwxOF1d0CMgO6xzegongDrChlJg== +1 -0
  39. data/spec/fixtures/swiftlint.xcresult/Data/data.0~8IYU0zHEOjhUXKlujKg1LRsjykPpzvWzofthV0L5wC4B7k8gHyaZ-7cZuqFSoPtzJazWCx-EKgYEH2IqJWzfEg== +0 -0
  40. data/spec/fixtures/swiftlint.xcresult/Data/data.0~8sQuTfDcyJlc0Fi-_NLh3a8jvYBs_okTaD87IqdKyCzN32fu0jp6ApVWBgFD38xL2_Q87YDxQ6IxUZv7NNvqow== +1 -0
  41. data/spec/fixtures/swiftlint.xcresult/Data/data.0~CJoU5w7TNA2we8IxsH6JLXhJ2Tgwn4MNMGYzl5g5KiXF8gJQm6HlNTnQ1LSu2ISGxTLCQ9g-epXuzLU5utBfFA== +0 -0
  42. data/spec/fixtures/swiftlint.xcresult/Data/data.0~E-76cUuxKNsc00En6QiGIdNWgUkhPKWbzbY-g7Xs1I8QHEMM8XUyKPxeMCp0ZXs_s4n1v1-sgg4Cr_BgvCBB6Q== +1 -0
  43. data/spec/fixtures/swiftlint.xcresult/Data/data.0~ES9w2o-hBWjCbFGFTzMnh3Y8PpOwPGSGtWZ9X9jy-xdmxdZNKNzsKpz5MRG0TSYYKul6Y0HPDMb6NUx1KCvp1g== +0 -0
  44. data/spec/fixtures/swiftlint.xcresult/Data/data.0~H9Ox0jwnLyzNmCS9JM53xW5lgvG9wCoyFrOocfEMniMt9ZomGQCEAkcpEABl2RAkEJrYWhbW_Rrvy0_m93Jnnw== +0 -0
  45. data/spec/fixtures/swiftlint.xcresult/Data/data.0~LCIporNdr1dPYSczSS8zeRwLlf3Cq-xsjXgA0FzrCLqqpRmUcrJDAa5R7STT0lyZeGi2M13jXHyGZ5rZ7qCrrQ== +0 -0
  46. data/spec/fixtures/swiftlint.xcresult/Data/data.0~LpdFNGBXQ0G_AiEBUv6jWVmPykDLvumWlLqe9FOU9Sautm_uAIUhkdYsC3Ai7CHCV6Ec_A9EgLa5dzbuBuSm0Q== +1 -0
  47. data/spec/fixtures/swiftlint.xcresult/Data/data.0~MPQdxkf7R97XmBRC6k_HRasY3Wpzf6Ji9mPhXyPVbkbZreWJ4iOdeDBLCRqR2Jn_ffDNfJCvU4gSl6NdwqltzA== +0 -0
  48. data/spec/fixtures/swiftlint.xcresult/Data/data.0~Mbg926q5J0cd3yItw2ktYihgAmF3Bs3imeg-AgyGMQYnQx0IUUFlnuY3xldjSVaGFNU4N892Usibic6TZXFbTw== +0 -0
  49. data/spec/fixtures/swiftlint.xcresult/Data/data.0~OZKuCYOwI0z3jDNmJQ-bb0OUCKuFWw1iz9Na6m-M3pOyVRqP09YONvdvG1ezCE57EI5b8Ym9g8hX1ZVZJg124w== +1 -0
  50. data/spec/fixtures/swiftlint.xcresult/Data/data.0~P1yCjbYuC-f-Yp5vY3jDumuu5B5U2_SdjxLObNcTH3XZMXTGlY9I20IlZP6UkWOIIPSr4IYewBY82b4sq82ldw== +0 -0
  51. data/spec/fixtures/swiftlint.xcresult/Data/data.0~PgE51YCf92l9xvNpSiVbHOmsnaRpxz_zGezAUjflsYK7nfGH7YRTDdb1jnNn0WlHUlme8-fO8fPQRJ9n51hfPg== +1 -0
  52. data/spec/fixtures/swiftlint.xcresult/Data/data.0~QLGQgkmvGM1G0GFHWwBAJoAn881RCWKI51niXWwchH2k_1ahgBUMANJWO98yUC5HwqptnBQLC0aoD4GE7Zb3Yg== +1 -0
  53. data/spec/fixtures/swiftlint.xcresult/Data/data.0~QdTITudcOZvjswLWT8gvlQMZHVJJ5yA_GP2ZKrevsgAbABDadn3tsrUH4rbPPD0HZeZVi5oDNPTcqoaMnueJ6A== +0 -0
  54. data/spec/fixtures/swiftlint.xcresult/Data/data.0~TNVRLj0efZi3RNElgmBqJ-AnCofs0p8pnjLDsQw2TMFPfg6driapeVvOlnsFyOS_27P7ZHNiLt2xJ9kiE57VlA== +0 -0
  55. data/spec/fixtures/swiftlint.xcresult/Data/data.0~Vo-bwGSGWiUUFgBwAGdskHUHwVQh0q8hYJmYmmyHI4AVhbtLsMeJQyYvHOuTuPmJcJsX_4bDig3Mg1GPwE9oWw== +1 -0
  56. data/spec/fixtures/swiftlint.xcresult/Data/data.0~YBV5ZYd3le3PYE4Xz7kCb4sj6ZJ25X18ArIVKxMOCZHZ479XzQByz07m8qpm3hIL3oUPozbag-zRSomHuRfKLQ== +1 -0
  57. data/spec/fixtures/swiftlint.xcresult/Data/data.0~ZYx73XhABxgrY0rQpAJbZMCn_MDQFCJimII9c-ninClo_0ZErb0fGcXrX-8AkQ_8ngCyX1YyDzb825PzreCLFg== +0 -0
  58. data/spec/fixtures/swiftlint.xcresult/Data/data.0~_Vk-6Z65ePcSA8pCiCFHA53AP-PRZ6KqdEH_Su2CQbd3QM7P-By063lIn7SyLdlE1ENrRCOL_9VFHwb6Q2de4A== +0 -0
  59. data/spec/fixtures/swiftlint.xcresult/Data/data.0~aBrGz65aeXPVqACvo49xELHeqBawlmly6M_SmRa-iT99yzTiBp2st43mhwZEOVIgvsBEHLkKbH5oQpqjWgkueA== +0 -0
  60. data/spec/fixtures/swiftlint.xcresult/Data/data.0~amieE2Vo8zyuqmVg_XehREgJFzuJaWOzAODZVk_7d1g6p6Y_sPmomY580XqThK7-5nyr3Z3ZX8PBps4zPLU86A== +0 -0
  61. data/spec/fixtures/swiftlint.xcresult/Data/data.0~bC3ChphZGxwicYgFPaTJhJvXLOQJmKnAxXU_qdERqu-B1727kHJX61TfzqMUqRiPUwu5E9r_5RH_xoRYJ2L6gQ== +1 -0
  62. data/spec/fixtures/swiftlint.xcresult/Data/data.0~dKm5kNy23i7r5zU946OFV5V5VysbNcVshgmPE1cDjnTybi4d2hDYQHf5DDhl2cd8blicZGSNT1U56_sMCeKgGA== +0 -0
  63. data/spec/fixtures/swiftlint.xcresult/Data/data.0~fOlw5DSt-BTx_3MEsZueO9WvR0v7M_4Qox6aT8izuwPfWLYDmQLCsC3_Hymzu9pvNdnU-hnLmqI7VHwds0tZJg== +0 -0
  64. data/spec/fixtures/swiftlint.xcresult/Data/data.0~fQN-Kpy21p-A8sCOyS-jK7ytWncDa2hFDzVN8GFtbxfcsSDqHuHlelgGVDfMRGaCjl0_YvECcpxkOXMSCMz-yA== +0 -0
  65. data/spec/fixtures/swiftlint.xcresult/Data/data.0~fg_OE_1GIKhnHZVCf6vX3IBffLrmbWUH4AsgsdCfNDOxp0B_FS01mzFt8QUR8SFpl0wzqzGZLqQjyYhO6RevrQ== +1 -0
  66. data/spec/fixtures/swiftlint.xcresult/Data/data.0~gan-cZ22YZhS_xIHkTo3QDwbZPFY4kFjFla450U2lB0YvYEyKbq78RSwEXNISk5oLbXL4hT7MUx_j9YlvordmQ== +0 -0
  67. data/spec/fixtures/swiftlint.xcresult/Data/data.0~gullQKRfJbsVcDBXIhfPjmm5JnaE0Beei-34BEkBv4R4RAuRHQMSnctdI5JXfKywafaWXcpQiYYRa9ukH7dA8w== +0 -0
  68. data/spec/fixtures/swiftlint.xcresult/Data/data.0~ifHHINpGjhER45qG-5imtXxa30gPYyHpFGHLw-i9F-M4nTjIGxvHkfprtACth9aAoeu7xyBFp9i0NZuPFaK-qQ== +0 -0
  69. data/spec/fixtures/swiftlint.xcresult/Data/data.0~j4nemHY9VBZOlHsEur0YydlrsprTU9r-MZEFaCsZ71qzr_Y2j_wX_zeb8BIyCfQq6WCHDuJGwCvDxYGxFHFKJQ== +1 -0
  70. data/spec/fixtures/swiftlint.xcresult/Data/data.0~jLNWr6BK3vDe2KRCbTLDhymPjtRFa0UT1BKEjXSbv29IXEwjhP4bUKt6LMUdkCtM4FvPlQ8z7YOpAYFoZFSPOA== +0 -0
  71. data/spec/fixtures/swiftlint.xcresult/Data/data.0~jLxEh4TDlOXovDeeA90ahrPFfK6KWCWAM1RveDzpglwOI01s2gFfzKcZ5uuMA4PDXedeCvNf2DqCdKJIcgHnVQ== +1 -0
  72. data/spec/fixtures/swiftlint.xcresult/Data/data.0~lDipbRFZoMGAPyIHXNVPjW96huFRLV5fDc8iChQGTp2D1rW9Y3yat6jqgAUFtF94uKKChvQXQU2YOrKELWTWRQ== +0 -0
  73. data/spec/fixtures/swiftlint.xcresult/Data/data.0~m1Fg2athRJukt11SG2HxPjSj8K7CqPcdkSiJSNtxUGsVPezdEjZT_PPnBkROObmplPJ7SQmO9ccwDfGagdcKLg== +0 -0
  74. data/spec/fixtures/swiftlint.xcresult/Data/data.0~oRMi0sbQLktfDDDGUS-SqBKpdDiD6HCztVES_ShfGr0KVcYENoIq7y9oUSDWL5B_P2gkdtWG8JEsJLxPbdWOZA== +0 -0
  75. data/spec/fixtures/swiftlint.xcresult/Data/data.0~oRai0E4F38qqrWTBu_VggauLdzUNvBJ9uOpjjW4rdru1cdBUSmJsWp7wGRoTaegMas7lrFfF7hqYW76UAkN_Aw== +1 -0
  76. data/spec/fixtures/swiftlint.xcresult/Data/data.0~oc4kwngaTuUPiuwoua8qsQolC7-ZoEhH98wttJsSLjXvqDEIcMSdd0Y06IcfLovOve5P5sgs01gVV9FxgA9Cgg== +0 -0
  77. data/spec/fixtures/swiftlint.xcresult/Data/data.0~pfWL_0E_rKWkISZ_-ykT-jtTq0T1Bs4pRoI0Rvd1L48EF2pJwep6TzEd_f2AXvlBLDYPKU_8b0hRyDco495MuA== +0 -0
  78. data/spec/fixtures/swiftlint.xcresult/Data/data.0~qvKb6_pMbXLkop24YkPLBvBGPB0vTCJVE1x5_F3lvNeXSrkS-aTEVLcbm50ypOEDTvq5lWbE3WCTmiwTrycTtA== +1 -0
  79. data/spec/fixtures/swiftlint.xcresult/Data/data.0~rWtEuNODRlqS4h5IKE2daTjC3jn_FFVbc5AFmP9pWRCMe5Pnl26q-RtgyD_RKEch9v3KhAMX6v_o_6tAvVJqCA== +0 -0
  80. data/spec/fixtures/swiftlint.xcresult/Data/data.0~ryOJ0LA52DIkg1NBt38A9g4laq_cWjst7WaY2GqaYbfcPtErYNGwwseRWOUJ888fdbPpei28zwb3FQmyyY0P7A== +1 -0
  81. data/spec/fixtures/swiftlint.xcresult/Data/data.0~ufMI-FnN2y3q-eI9BtVFtGpA8_fkrqmtH5a6cmoMsFqJdZ7LAFu1X1f-KhV78VbCx3NJFw-Z37YrEEheJ0aoew== +0 -0
  82. data/spec/fixtures/swiftlint.xcresult/Data/data.0~vFXD8mGF6_qQ0OnB0Wcon_YnvTiD4pn7MUywowp2zOVLErpHH1Ub9F67rFgJUj5qH44PC8HGhivGatweCwtA1g== +0 -0
  83. data/spec/fixtures/swiftlint.xcresult/Data/data.0~xgcJ3zOq4tRMu41EmxgQwt9WxpLQm2v2wbY1e8CAQ8EEYhNYnBcMTAFjYWFgIg4LKguSsH1Djbu9dtiDJ6ZXww== +1 -0
  84. data/spec/fixtures/swiftlint.xcresult/Data/data.0~ygm24RJKzu1R3AxMJebgBRXDXv1XqRs_UZUYB9XNRQlwNRqHlLdmUDM2A0c5MZ0rM9Rzk8J6DVpUtgbXCqdEig== +1 -0
  85. data/spec/fixtures/swiftlint.xcresult/Data/data.0~z0TKqUleKKN7fLZIVvFv3iQkQDn9im3HWNWKHBCNC0CrWtbKyMM79u3yFkfV0iz5I-pyszXp3C532_0QdYPUlA== +0 -0
  86. data/spec/fixtures/swiftlint.xcresult/Data/data.0~zs6Rgx87_LJyVnCSv0mqZMG6J9lpsTcTg9rpJsB_IBDSH2MQBeY5mGj-C3dLPzD8HFtKiumJ9EcGo-mGYqnZvQ== +0 -0
  87. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~0-xWm2AiZ5I3ekRhpAO8g4-GGm1rZIaTIaO2e60GD8nRSProBd-a_Yc1i7HKUd7bcVhfz2trCFFjRoELo2Srsw== +0 -0
  88. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~0OZeLqccmhzjAKAPA0eS1xbrEYM0PXX1u6A91vWH_ALTk8ho004_4kSNB9wC5XH28w-WgXxARYsmR5za20WacA== +0 -0
  89. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~0S6H6SLQKxWYgRYf_D_1IY-6QHDo-BsTnbSwsmikZV81avlhu5M1VAH-NOUVMY64xcmrqOJTvhE3NuQQTem2Cw== +0 -0
  90. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~2kkEPYCm3NJ7Qa1mJdA2u8iJvxvealDfVga3ndyyZs38sQL36q1IX7MYvrKo4eDbd-nyAQ96ZvSgaqpY4LJS1g== +0 -0
  91. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~3_PlvRIvUTDBxcDG2Xfka2hgB7TiNgptAFA36_GXRa52Nvcr0scZcjFMT5dD_zIOEF07s48D6roAaO5Fuhqm4A== +0 -0
  92. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~4G0wQRF6xQNh3N32d9TJzcahHXtF9nsz9VnT8U0otA3r2iR598yAPi99CNnJ6RdVZdbjKKM5mOz4wlM-xL99GQ== +0 -0
  93. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~4ybc14a0wWeJTE6Wyco_E5GMC4AV1uhumwDmYN_qe_Xatx7ngcL09_ef5aIBySSqpNNu4zcclYpHn9GrlNRuFQ== +0 -0
  94. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~6gayYzI1pf7Ae5plNUTUjxPN56sJMCVjiFgbL47tofr0MkqR24pCBQ_WR8ObwxOF1d0CMgO6xzegongDrChlJg== +0 -0
  95. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~8IYU0zHEOjhUXKlujKg1LRsjykPpzvWzofthV0L5wC4B7k8gHyaZ-7cZuqFSoPtzJazWCx-EKgYEH2IqJWzfEg== +0 -0
  96. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~8sQuTfDcyJlc0Fi-_NLh3a8jvYBs_okTaD87IqdKyCzN32fu0jp6ApVWBgFD38xL2_Q87YDxQ6IxUZv7NNvqow== +0 -0
  97. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~CJoU5w7TNA2we8IxsH6JLXhJ2Tgwn4MNMGYzl5g5KiXF8gJQm6HlNTnQ1LSu2ISGxTLCQ9g-epXuzLU5utBfFA== +0 -0
  98. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~E-76cUuxKNsc00En6QiGIdNWgUkhPKWbzbY-g7Xs1I8QHEMM8XUyKPxeMCp0ZXs_s4n1v1-sgg4Cr_BgvCBB6Q== +0 -0
  99. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~ES9w2o-hBWjCbFGFTzMnh3Y8PpOwPGSGtWZ9X9jy-xdmxdZNKNzsKpz5MRG0TSYYKul6Y0HPDMb6NUx1KCvp1g== +0 -0
  100. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~H9Ox0jwnLyzNmCS9JM53xW5lgvG9wCoyFrOocfEMniMt9ZomGQCEAkcpEABl2RAkEJrYWhbW_Rrvy0_m93Jnnw== +0 -0
  101. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~LCIporNdr1dPYSczSS8zeRwLlf3Cq-xsjXgA0FzrCLqqpRmUcrJDAa5R7STT0lyZeGi2M13jXHyGZ5rZ7qCrrQ== +0 -0
  102. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~LpdFNGBXQ0G_AiEBUv6jWVmPykDLvumWlLqe9FOU9Sautm_uAIUhkdYsC3Ai7CHCV6Ec_A9EgLa5dzbuBuSm0Q== +0 -0
  103. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~MPQdxkf7R97XmBRC6k_HRasY3Wpzf6Ji9mPhXyPVbkbZreWJ4iOdeDBLCRqR2Jn_ffDNfJCvU4gSl6NdwqltzA== +0 -0
  104. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~Mbg926q5J0cd3yItw2ktYihgAmF3Bs3imeg-AgyGMQYnQx0IUUFlnuY3xldjSVaGFNU4N892Usibic6TZXFbTw== +0 -0
  105. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~OZKuCYOwI0z3jDNmJQ-bb0OUCKuFWw1iz9Na6m-M3pOyVRqP09YONvdvG1ezCE57EI5b8Ym9g8hX1ZVZJg124w== +0 -0
  106. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~P1yCjbYuC-f-Yp5vY3jDumuu5B5U2_SdjxLObNcTH3XZMXTGlY9I20IlZP6UkWOIIPSr4IYewBY82b4sq82ldw== +0 -0
  107. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~PgE51YCf92l9xvNpSiVbHOmsnaRpxz_zGezAUjflsYK7nfGH7YRTDdb1jnNn0WlHUlme8-fO8fPQRJ9n51hfPg== +0 -0
  108. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~QLGQgkmvGM1G0GFHWwBAJoAn881RCWKI51niXWwchH2k_1ahgBUMANJWO98yUC5HwqptnBQLC0aoD4GE7Zb3Yg== +0 -0
  109. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~QdTITudcOZvjswLWT8gvlQMZHVJJ5yA_GP2ZKrevsgAbABDadn3tsrUH4rbPPD0HZeZVi5oDNPTcqoaMnueJ6A== +0 -0
  110. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~TNVRLj0efZi3RNElgmBqJ-AnCofs0p8pnjLDsQw2TMFPfg6driapeVvOlnsFyOS_27P7ZHNiLt2xJ9kiE57VlA== +0 -0
  111. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~Vo-bwGSGWiUUFgBwAGdskHUHwVQh0q8hYJmYmmyHI4AVhbtLsMeJQyYvHOuTuPmJcJsX_4bDig3Mg1GPwE9oWw== +0 -0
  112. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~YBV5ZYd3le3PYE4Xz7kCb4sj6ZJ25X18ArIVKxMOCZHZ479XzQByz07m8qpm3hIL3oUPozbag-zRSomHuRfKLQ== +0 -0
  113. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~ZYx73XhABxgrY0rQpAJbZMCn_MDQFCJimII9c-ninClo_0ZErb0fGcXrX-8AkQ_8ngCyX1YyDzb825PzreCLFg== +0 -0
  114. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~_Vk-6Z65ePcSA8pCiCFHA53AP-PRZ6KqdEH_Su2CQbd3QM7P-By063lIn7SyLdlE1ENrRCOL_9VFHwb6Q2de4A== +0 -0
  115. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~aBrGz65aeXPVqACvo49xELHeqBawlmly6M_SmRa-iT99yzTiBp2st43mhwZEOVIgvsBEHLkKbH5oQpqjWgkueA== +0 -0
  116. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~amieE2Vo8zyuqmVg_XehREgJFzuJaWOzAODZVk_7d1g6p6Y_sPmomY580XqThK7-5nyr3Z3ZX8PBps4zPLU86A== +0 -0
  117. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~bC3ChphZGxwicYgFPaTJhJvXLOQJmKnAxXU_qdERqu-B1727kHJX61TfzqMUqRiPUwu5E9r_5RH_xoRYJ2L6gQ== +0 -0
  118. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~dKm5kNy23i7r5zU946OFV5V5VysbNcVshgmPE1cDjnTybi4d2hDYQHf5DDhl2cd8blicZGSNT1U56_sMCeKgGA== +0 -0
  119. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~fOlw5DSt-BTx_3MEsZueO9WvR0v7M_4Qox6aT8izuwPfWLYDmQLCsC3_Hymzu9pvNdnU-hnLmqI7VHwds0tZJg== +0 -0
  120. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~fQN-Kpy21p-A8sCOyS-jK7ytWncDa2hFDzVN8GFtbxfcsSDqHuHlelgGVDfMRGaCjl0_YvECcpxkOXMSCMz-yA== +0 -0
  121. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~fg_OE_1GIKhnHZVCf6vX3IBffLrmbWUH4AsgsdCfNDOxp0B_FS01mzFt8QUR8SFpl0wzqzGZLqQjyYhO6RevrQ== +0 -0
  122. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~gan-cZ22YZhS_xIHkTo3QDwbZPFY4kFjFla450U2lB0YvYEyKbq78RSwEXNISk5oLbXL4hT7MUx_j9YlvordmQ== +0 -0
  123. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~gullQKRfJbsVcDBXIhfPjmm5JnaE0Beei-34BEkBv4R4RAuRHQMSnctdI5JXfKywafaWXcpQiYYRa9ukH7dA8w== +0 -0
  124. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~ifHHINpGjhER45qG-5imtXxa30gPYyHpFGHLw-i9F-M4nTjIGxvHkfprtACth9aAoeu7xyBFp9i0NZuPFaK-qQ== +0 -0
  125. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~j4nemHY9VBZOlHsEur0YydlrsprTU9r-MZEFaCsZ71qzr_Y2j_wX_zeb8BIyCfQq6WCHDuJGwCvDxYGxFHFKJQ== +0 -0
  126. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~jLNWr6BK3vDe2KRCbTLDhymPjtRFa0UT1BKEjXSbv29IXEwjhP4bUKt6LMUdkCtM4FvPlQ8z7YOpAYFoZFSPOA== +0 -0
  127. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~jLxEh4TDlOXovDeeA90ahrPFfK6KWCWAM1RveDzpglwOI01s2gFfzKcZ5uuMA4PDXedeCvNf2DqCdKJIcgHnVQ== +0 -0
  128. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~lDipbRFZoMGAPyIHXNVPjW96huFRLV5fDc8iChQGTp2D1rW9Y3yat6jqgAUFtF94uKKChvQXQU2YOrKELWTWRQ== +0 -0
  129. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~m1Fg2athRJukt11SG2HxPjSj8K7CqPcdkSiJSNtxUGsVPezdEjZT_PPnBkROObmplPJ7SQmO9ccwDfGagdcKLg== +0 -0
  130. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~oRMi0sbQLktfDDDGUS-SqBKpdDiD6HCztVES_ShfGr0KVcYENoIq7y9oUSDWL5B_P2gkdtWG8JEsJLxPbdWOZA== +0 -0
  131. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~oRai0E4F38qqrWTBu_VggauLdzUNvBJ9uOpjjW4rdru1cdBUSmJsWp7wGRoTaegMas7lrFfF7hqYW76UAkN_Aw== +0 -0
  132. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~oc4kwngaTuUPiuwoua8qsQolC7-ZoEhH98wttJsSLjXvqDEIcMSdd0Y06IcfLovOve5P5sgs01gVV9FxgA9Cgg== +0 -0
  133. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~pfWL_0E_rKWkISZ_-ykT-jtTq0T1Bs4pRoI0Rvd1L48EF2pJwep6TzEd_f2AXvlBLDYPKU_8b0hRyDco495MuA== +0 -0
  134. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~qvKb6_pMbXLkop24YkPLBvBGPB0vTCJVE1x5_F3lvNeXSrkS-aTEVLcbm50ypOEDTvq5lWbE3WCTmiwTrycTtA== +0 -0
  135. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~rWtEuNODRlqS4h5IKE2daTjC3jn_FFVbc5AFmP9pWRCMe5Pnl26q-RtgyD_RKEch9v3KhAMX6v_o_6tAvVJqCA== +0 -0
  136. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~ryOJ0LA52DIkg1NBt38A9g4laq_cWjst7WaY2GqaYbfcPtErYNGwwseRWOUJ888fdbPpei28zwb3FQmyyY0P7A== +0 -0
  137. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~ufMI-FnN2y3q-eI9BtVFtGpA8_fkrqmtH5a6cmoMsFqJdZ7LAFu1X1f-KhV78VbCx3NJFw-Z37YrEEheJ0aoew== +0 -0
  138. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~vFXD8mGF6_qQ0OnB0Wcon_YnvTiD4pn7MUywowp2zOVLErpHH1Ub9F67rFgJUj5qH44PC8HGhivGatweCwtA1g== +0 -0
  139. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~xgcJ3zOq4tRMu41EmxgQwt9WxpLQm2v2wbY1e8CAQ8EEYhNYnBcMTAFjYWFgIg4LKguSsH1Djbu9dtiDJ6ZXww== +0 -0
  140. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~ygm24RJKzu1R3AxMJebgBRXDXv1XqRs_UZUYB9XNRQlwNRqHlLdmUDM2A0c5MZ0rM9Rzk8J6DVpUtgbXCqdEig== +0 -0
  141. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~z0TKqUleKKN7fLZIVvFv3iQkQDn9im3HWNWKHBCNC0CrWtbKyMM79u3yFkfV0iz5I-pyszXp3C532_0QdYPUlA== +0 -0
  142. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~zs6Rgx87_LJyVnCSv0mqZMG6J9lpsTcTg9rpJsB_IBDSH2MQBeY5mGj-C3dLPzD8HFtKiumJ9EcGo-mGYqnZvQ== +0 -0
  143. data/spec/fixtures/swiftlint.xcresult/Info.plist +29 -0
  144. data/spec/spec_helper.rb +11 -4
  145. data/spec/xcode_summary_spec.rb +93 -112
  146. metadata +281 -25
  147. data/spec/fixtures/errors.json +0 -31
  148. data/spec/fixtures/ld_warnings.json +0 -31
  149. data/spec/fixtures/summary.json +0 -44
  150. data/spec/fixtures/summary_messages.json +0 -5
  151. data/spec/fixtures/summary_with_empty_line.json +0 -37
  152. data/spec/fixtures/test_errors.json +0 -11
  153. data/spec/fixtures/warnings_errors.json +0 -32
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: e222df89970744f0a9e0e9ec76408480aaa6020c
4
- data.tar.gz: f07bbe188cf33ef8cd5707742bbd4d68b965da8f
2
+ SHA256:
3
+ metadata.gz: e30986734f1f4563b6c7f58e5765cb2b00be9bf4cc86ae03c88485d429009e3e
4
+ data.tar.gz: 570891d22c3fbb5a9b2cdbb61dab1833ac8570013e0c2689886b78702cbff368
5
5
  SHA512:
6
- metadata.gz: fb7531300b28f2307a50ce66562c28e3bec695d6e70223220f811b822b5522137e5022677359f92509a7fa651f0fd9beaa3a6d084733df7e76016ab5ef5e8d0d
7
- data.tar.gz: 70d9df94ff7603adb1b340650cb5b4f6b350c228797aa5b89ea790b99de1c5792439ed0ac5eaf7663c94ec45f9261865c827828a58150e27437856a463971d11
6
+ metadata.gz: dac17c30dbeaf27f6b026c82f213a8d6ede70623c05bd811ab352957dde61b9a7c402ebca595146b161b8a82c3405e7cc93002c950363aa4262bee9d17267f76
7
+ data.tar.gz: 32db5f742803b7cc51d46be5825a644be65d40c89b790db6cfad3e15312b099f58912b7febb542767ee0dd8ef63fd703a059ae20c2b80ee1765bdea8dbdbf05b
data/.gitattributes ADDED
@@ -0,0 +1 @@
1
+ *.xcresult binary
data/.rubocop.yml CHANGED
@@ -1,11 +1,11 @@
1
+ AllCops:
2
+ NewCops: enable
3
+ SuggestExtensions: false
4
+
1
5
  # kind_of? is a good way to check a type
2
6
  Style/ClassCheck:
3
7
  EnforcedStyle: kind_of?
4
8
 
5
- # It's better to be more explicit about the type
6
- Style/BracesAroundHashParameters:
7
- Enabled: false
8
-
9
9
  # specs sometimes have useless assignments, which is fine
10
10
  Lint/UselessAssignment:
11
11
  Exclude:
@@ -54,8 +54,8 @@ Metrics/CyclomaticComplexity:
54
54
  Max: 17
55
55
 
56
56
  # Configuration parameters: AllowURI, URISchemes.
57
- Metrics/LineLength:
58
- Max: 120
57
+ Layout/LineLength:
58
+ Max: 130
59
59
 
60
60
  # Configuration parameters: CountKeywordArgs.
61
61
  Metrics/ParameterLists:
data/.travis.yml CHANGED
@@ -3,9 +3,17 @@ cache:
3
3
  directories:
4
4
  - bundle
5
5
 
6
+ os: osx
7
+ osx_image: xcode11
8
+
6
9
  rvm:
7
- - 2.1.3
8
- - 2.3.1
10
+ - 2.6.0
11
+ - 2.5.3
12
+
13
+ # install bundler 2.x
14
+ before_install:
15
+ - gem update --system
16
+ - gem install bundler
9
17
 
10
18
  script:
11
- - bundle exec rake spec
19
+ - bundle exec rake spec
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in danger-xcode_summary.gemspec
data/Gemfile.lock CHANGED
@@ -1,47 +1,61 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- danger-xcode_summary (0.5.0)
4
+ danger-xcode_summary (1.0.0)
5
5
  danger-plugin-api (~> 1.0)
6
+ xcresult (~> 0.2)
6
7
 
7
8
  GEM
8
9
  remote: https://rubygems.org/
9
10
  specs:
10
- addressable (2.5.2)
11
- public_suffix (>= 2.0.2, < 4.0)
12
- ast (2.4.0)
13
- claide (1.0.2)
11
+ addressable (2.7.0)
12
+ public_suffix (>= 2.0.2, < 5.0)
13
+ ast (2.4.2)
14
+ claide (1.0.3)
14
15
  claide-plugins (0.9.2)
15
16
  cork
16
17
  nap
17
18
  open4 (~> 1.3)
18
- coderay (1.1.2)
19
+ coderay (1.1.3)
19
20
  colored2 (3.1.2)
20
21
  cork (0.3.0)
21
22
  colored2 (~> 3.1)
22
- danger (5.5.10)
23
+ danger (8.2.3)
23
24
  claide (~> 1.0)
24
25
  claide-plugins (>= 0.9.2)
25
26
  colored2 (~> 3.1)
26
27
  cork (~> 0.1)
27
- faraday (~> 0.9)
28
- faraday-http-cache (~> 1.0)
29
- git (~> 1)
30
- kramdown (~> 1.5)
28
+ faraday (>= 0.9.0, < 2.0)
29
+ faraday-http-cache (~> 2.0)
30
+ git (~> 1.7)
31
+ kramdown (~> 2.3)
32
+ kramdown-parser-gfm (~> 1.0)
31
33
  no_proxy_fix
32
34
  octokit (~> 4.7)
33
- terminal-table (~> 1)
35
+ terminal-table (>= 1, < 4)
34
36
  danger-plugin-api (1.0.0)
35
37
  danger (> 2.0)
36
- diff-lcs (1.3)
37
- faraday (0.14.0)
38
+ diff-lcs (1.4.4)
39
+ faraday (1.4.2)
40
+ faraday-em_http (~> 1.0)
41
+ faraday-em_synchrony (~> 1.0)
42
+ faraday-excon (~> 1.1)
43
+ faraday-net_http (~> 1.0)
44
+ faraday-net_http_persistent (~> 1.1)
38
45
  multipart-post (>= 1.2, < 3)
39
- faraday-http-cache (1.3.1)
40
- faraday (~> 0.8)
41
- ffi (1.9.23)
46
+ ruby2_keywords (>= 0.0.4)
47
+ faraday-em_http (1.0.0)
48
+ faraday-em_synchrony (1.0.0)
49
+ faraday-excon (1.1.0)
50
+ faraday-http-cache (2.2.0)
51
+ faraday (>= 0.8)
52
+ faraday-net_http (1.0.1)
53
+ faraday-net_http_persistent (1.1.0)
54
+ ffi (1.15.1)
42
55
  formatador (0.2.5)
43
- git (1.3.0)
44
- guard (2.14.2)
56
+ git (1.8.1)
57
+ rchardet (~> 1.8)
58
+ guard (2.17.0)
45
59
  formatador (>= 0.2.4)
46
60
  listen (>= 2.7, < 4.0)
47
61
  lumberjack (>= 1.0.12, < 2.0)
@@ -55,81 +69,93 @@ GEM
55
69
  guard (~> 2.1)
56
70
  guard-compat (~> 1.1)
57
71
  rspec (>= 2.99.0, < 4.0)
58
- kramdown (1.16.2)
72
+ kramdown (2.3.1)
73
+ rexml
74
+ kramdown-parser-gfm (1.1.0)
75
+ kramdown (~> 2.0)
59
76
  listen (3.0.7)
60
77
  rb-fsevent (>= 0.9.3)
61
78
  rb-inotify (>= 0.9.7)
62
- lumberjack (1.0.12)
63
- method_source (0.9.0)
64
- multipart-post (2.0.0)
79
+ lumberjack (1.2.8)
80
+ method_source (1.0.0)
81
+ multipart-post (2.1.1)
65
82
  nap (1.1.0)
66
83
  nenv (0.3.0)
67
84
  no_proxy_fix (0.1.2)
68
- notiffany (0.1.1)
85
+ notiffany (0.1.3)
69
86
  nenv (~> 0.1)
70
87
  shellany (~> 0.0)
71
- octokit (4.8.0)
88
+ octokit (4.21.0)
89
+ faraday (>= 0.9)
72
90
  sawyer (~> 0.8.0, >= 0.5.3)
73
91
  open4 (1.3.4)
74
- parallel (1.12.1)
75
- parser (2.5.0.2)
76
- ast (~> 2.4.0)
77
- powerpack (0.1.1)
78
- pry (0.11.3)
79
- coderay (~> 1.1.0)
80
- method_source (~> 0.9.0)
81
- public_suffix (3.0.2)
92
+ parallel (1.20.1)
93
+ parser (3.0.1.1)
94
+ ast (~> 2.4.1)
95
+ pry (0.14.1)
96
+ coderay (~> 1.1)
97
+ method_source (~> 1.0)
98
+ public_suffix (4.0.6)
82
99
  rainbow (3.0.0)
83
- rake (10.5.0)
84
- rb-fsevent (0.10.3)
85
- rb-inotify (0.9.10)
86
- ffi (>= 0.5.0, < 2)
87
- rspec (3.7.0)
88
- rspec-core (~> 3.7.0)
89
- rspec-expectations (~> 3.7.0)
90
- rspec-mocks (~> 3.7.0)
91
- rspec-core (3.7.1)
92
- rspec-support (~> 3.7.0)
93
- rspec-expectations (3.7.0)
100
+ rake (13.0.3)
101
+ rb-fsevent (0.11.0)
102
+ rb-inotify (0.10.1)
103
+ ffi (~> 1.0)
104
+ rchardet (1.8.0)
105
+ regexp_parser (2.1.1)
106
+ rexml (3.2.5)
107
+ rspec (3.10.0)
108
+ rspec-core (~> 3.10.0)
109
+ rspec-expectations (~> 3.10.0)
110
+ rspec-mocks (~> 3.10.0)
111
+ rspec-core (3.10.1)
112
+ rspec-support (~> 3.10.0)
113
+ rspec-expectations (3.10.1)
94
114
  diff-lcs (>= 1.2.0, < 2.0)
95
- rspec-support (~> 3.7.0)
96
- rspec-mocks (3.7.0)
115
+ rspec-support (~> 3.10.0)
116
+ rspec-mocks (3.10.2)
97
117
  diff-lcs (>= 1.2.0, < 2.0)
98
- rspec-support (~> 3.7.0)
99
- rspec-support (3.7.1)
100
- rubocop (0.52.1)
118
+ rspec-support (~> 3.10.0)
119
+ rspec-support (3.10.2)
120
+ rubocop (1.15.0)
101
121
  parallel (~> 1.10)
102
- parser (>= 2.4.0.2, < 3.0)
103
- powerpack (~> 0.1)
122
+ parser (>= 3.0.0.0)
104
123
  rainbow (>= 2.2.2, < 4.0)
124
+ regexp_parser (>= 1.8, < 3.0)
125
+ rexml
126
+ rubocop-ast (>= 1.5.0, < 2.0)
105
127
  ruby-progressbar (~> 1.7)
106
- unicode-display_width (~> 1.0, >= 1.0.1)
107
- ruby-progressbar (1.9.0)
108
- sawyer (0.8.1)
109
- addressable (>= 2.3.5, < 2.6)
110
- faraday (~> 0.8, < 1.0)
128
+ unicode-display_width (>= 1.4.0, < 3.0)
129
+ rubocop-ast (1.5.0)
130
+ parser (>= 3.0.1.1)
131
+ ruby-progressbar (1.11.0)
132
+ ruby2_keywords (0.0.4)
133
+ sawyer (0.8.2)
134
+ addressable (>= 2.3.5)
135
+ faraday (> 0.8, < 2.0)
111
136
  shellany (0.0.1)
112
- terminal-table (1.8.0)
113
- unicode-display_width (~> 1.1, >= 1.1.1)
114
- thor (0.20.0)
115
- unicode-display_width (1.3.0)
116
- yard (0.9.12)
137
+ terminal-table (3.0.1)
138
+ unicode-display_width (>= 1.1.1, < 3)
139
+ thor (1.1.0)
140
+ unicode-display_width (2.0.0)
141
+ xcresult (0.2.1)
142
+ yard (0.9.26)
117
143
 
118
144
  PLATFORMS
119
145
  ruby
120
146
 
121
147
  DEPENDENCIES
122
- bundler (~> 1.3)
148
+ bundler (>= 2.2.10)
123
149
  danger
124
150
  danger-xcode_summary!
125
151
  guard (~> 2.14)
126
152
  guard-rspec (~> 4.7)
127
153
  listen (= 3.0.7)
128
154
  pry
129
- rake (~> 10.0)
155
+ rake (~> 13.0)
130
156
  rspec (~> 3.4)
131
157
  rubocop
132
158
  yard
133
159
 
134
160
  BUNDLED WITH
135
- 1.16.1
161
+ 2.2.26
data/Guardfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # A guardfile for making Danger Plugins
2
4
  # For more info see https://github.com/guard/guard#readme
3
5
 
data/README.md CHANGED
@@ -3,14 +3,9 @@
3
3
  [![License](http://img.shields.io/badge/license-MIT-green.svg?style=flat)](LICENSE.txt)
4
4
  [![Gem Version](https://badge.fury.io/rb/danger-xcode_summary.svg)](https://badge.fury.io/rb/danger-xcode_summary)
5
5
  [![Build Status](https://travis-ci.org/diogot/danger-xcode_summary.svg?branch=master)](https://travis-ci.org/diogot/danger-xcode_summary)
6
- [![Dependency Status](https://dependencyci.com/github/diogot/danger-xcode_summary/badge)](https://dependencyci.com/github/diogot/danger-xcode_summary)
7
6
 
8
7
  A [Danger](http://danger.systems) plugin that shows all build errors, warnings and unit tests results generated from `xcodebuild`.
9
8
 
10
- You need to use [xcpretty](https://github.com/supermarin/xcpretty) with
11
- [xcpretty-json-formatter](https://github.com/marcelofabri/xcpretty-json-formatter)
12
- to generate a JSON file that this plugin can read.
13
-
14
9
  ## How does it look?
15
10
 
16
11
  <table>
@@ -61,24 +56,6 @@ to generate a JSON file that this plugin can read.
61
56
  </tbody>
62
57
  </table>
63
58
 
64
- <table>
65
- <thead>
66
- <tr>
67
- <th width="50"></th>
68
- <th width="100%">
69
- 1 Message
70
- </th>
71
- </tr>
72
- </thead>
73
- <tbody>
74
- <tr>
75
- <td><g-emoji alias="book" fallback-src="https://assets-cdn.github.com/images/icons/emoji/unicode/1f4d6.png">📖</g-emoji></td>
76
- <td>Executed 5 tests, with 1 failure (0 unexpected) in 0.032 (0.065) seconds</td>
77
- </tr>
78
- </tr>
79
- </tbody>
80
- </table>
81
-
82
59
  ## Installation
83
60
 
84
61
  Add this line to your Gemfile:
@@ -92,9 +69,13 @@ gem 'danger-xcode_summary'
92
69
  Just add this line to your `Dangerfile`:
93
70
 
94
71
  ```ruby
95
- xcode_summary.report 'xcodebuild.json'
72
+ xcode_summary.report 'MyApp.xcresult'
96
73
  ```
97
74
 
75
+ You need to pass the path of the `xcresult` generated after compiling your app.
76
+ By default, this is inside the `DerivedData` for your project, but you can use the `-resultBundlePath`
77
+ flag when calling `xcodebuild` to customize its path. You can read more about it in this [blog post from the folks at PSPDFKit](https://pspdfkit.com/blog/2021/deflaking-ci-tests-with-xcresults/#using-xcresult-bundles).
78
+
98
79
  You can also ignore warnings from certain files by setting `ignored_files`:
99
80
  Warning: `ignored_files` patterns applied on relative paths.
100
81
 
@@ -104,10 +85,10 @@ xcode_summary.ignored_files = 'Pods/**'
104
85
 
105
86
  # Ignoring specific warnings
106
87
  xcode_summary.ignored_results { |result|
107
- result.message.start_with 'ld' # Ignore ld_warnings
88
+ result.message.include? 'ld' # Ignore ld_warnings
108
89
  }
109
90
 
110
- xcode_summary.report 'xcodebuild.json'
91
+ xcode_summary.report 'MyApp.xcresult'
111
92
  ```
112
93
 
113
94
  You can use `ignores_warnings` to supress warnings and shows only errors.
@@ -122,13 +103,13 @@ When this value is enabled, each warnings and errors are commented on each lines
122
103
  ```ruby
123
104
  # Comment on each lines
124
105
  xcode_summary.inline_mode = true
125
- xcode_summary.report 'xcodebuild.json'
106
+ xcode_summary.report 'MyApp.xcresult'
126
107
  ```
127
108
 
128
- You can get warning and error number by calling `warning_error_count`. The return will be a JSON string contains warning and error count, e.g {"warnings":1,"errors":3}:
109
+ You can get warning and error number by calling `warning_error_count`. The return will be a JSON string contains warning and error count, e.g `{"warnings":1,"errors":3}`:
129
110
 
130
111
  ```ruby
131
- result = xcode_summary.warning_error_count 'xcodebuild.json'
112
+ result = xcode_summary.warning_error_count 'MyApp.xcresult'
132
113
  ```
133
114
 
134
115
  ## License
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/gem_tasks'
2
4
  require 'rspec/core/rake_task'
3
5
  require 'rubocop/rake_task'
@@ -1,6 +1,6 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path('../lib', __FILE__)
3
+ lib = File.expand_path('lib', __dir__)
4
4
 
5
5
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
6
6
  require 'xcode_summary/gem_version.rb'
@@ -21,11 +21,14 @@ 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"
25
+
26
+ spec.add_dependency 'xcresult', '~> 0.2'
24
27
  spec.add_runtime_dependency 'danger-plugin-api', '~> 1.0'
25
28
 
26
29
  # General ruby development
27
- spec.add_development_dependency 'bundler', '~> 1.3'
28
- spec.add_development_dependency 'rake', '~> 10.0'
30
+ spec.add_development_dependency 'bundler', '>= 2.2.10'
31
+ spec.add_development_dependency 'rake', '~> 13.0'
29
32
 
30
33
  # Testing support
31
34
  spec.add_development_dependency 'rspec', '~> 3.4'
data/lib/danger_plugin.rb CHANGED
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'xcode_summary/plugin'
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'xcode_summary/gem_version'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module XcodeSummary
2
- VERSION = '0.5.0'.freeze
4
+ VERSION = '1.0.0'
3
5
  end
@@ -1,18 +1,19 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'json'
4
+ require 'xcresult'
2
5
 
3
6
  module Danger
4
7
  # Shows all build errors, warnings and unit tests results generated from `xcodebuild`.
5
- # You need to use [xcpretty](https://github.com/supermarin/xcpretty)
6
- # with [xcpretty-json-formatter](https://github.com/marcelofabri/xcpretty-json-formatter)
7
- # to generate a JSON file that this plugin can read.
8
+ # You need to use the `xcresult` produced by Xcode 11. It's located in the Derived Data folder.
8
9
  # @example Showing summary
9
10
  #
10
- # xcode_summary.report 'xcodebuild.json'
11
+ # xcode_summary.report 'build.xcresult'
11
12
  #
12
13
  # @example Filtering warnings in Pods
13
14
  #
14
15
  # xcode_summary.ignored_files = '**/Pods/**'
15
- # xcode_summary.report 'xcodebuild.json'
16
+ # xcode_summary.report 'build.xcresult'
16
17
  #
17
18
  # @see diogot/danger-xcode_summary
18
19
  # @tags xcode, xcodebuild, format
@@ -42,18 +43,6 @@ module Danger
42
43
  # @return [Block]
43
44
  attr_accessor :ignored_results
44
45
 
45
- # Defines if the test summary will be sticky or not.
46
- # Defaults to `false`.
47
- # @param [Boolean] value
48
- # @return [Boolean]
49
- attr_accessor :sticky_summary
50
-
51
- # Defines if the build summary is shown or not.
52
- # Defaults to `true`.
53
- # @param [Boolean] value
54
- # @return [Boolean]
55
- attr_accessor :test_summary
56
-
57
46
  # Defines if using inline comment or not.
58
47
  # Defaults to `false`.
59
48
  # @param [Boolean] value
@@ -81,14 +70,6 @@ module Danger
81
70
  @ignored_results ||= block
82
71
  end
83
72
 
84
- def sticky_summary
85
- @sticky_summary || false
86
- end
87
-
88
- def test_summary
89
- @test_summary.nil? ? true : @test_summary
90
- end
91
-
92
73
  def inline_mode
93
74
  @inline_mode || false
94
75
  end
@@ -96,30 +77,41 @@ module Danger
96
77
  def ignores_warnings
97
78
  @ignores_warnings || false
98
79
  end
80
+
81
+ # Pick a Dangerfile plugin for a chosen request_source and cache it
82
+ # based on https://github.com/danger/danger/blob/master/lib/danger/plugin_support/plugin.rb#L31
83
+ def plugin
84
+ plugins = Plugin.all_plugins.select { |plugin| Dangerfile.essential_plugin_classes.include? plugin }
85
+ @plugin ||= plugins.select { |p| p.method_defined? :html_link }.map { |p| p.new(@dangerfile) }.compact.first
86
+ end
99
87
  # rubocop:enable Lint/DuplicateMethods
100
88
 
101
- # Reads a file with JSON Xcode summary and reports it.
89
+ # Reads a `.xcresult` and reports it.
102
90
  #
103
- # @param [String] file_path Path for Xcode summary in JSON format.
91
+ # @param [String] file_path Path for xcresult bundle.
104
92
  # @return [void]
105
93
  def report(file_path)
106
- if File.file?(file_path)
107
- xcode_summary = JSON.parse(File.read(file_path), symbolize_names: true)
94
+ if File.exist?(file_path)
95
+ xcode_summary = XCResult::Parser.new(path: file_path)
108
96
  format_summary(xcode_summary)
109
97
  else
110
98
  fail 'summary file not found'
111
99
  end
112
100
  end
113
101
 
114
- # Reads a file with JSON Xcode summary and reports its warning and error count.
102
+ # Reads a `.xcresult` and reports its warning and error count.
115
103
  #
116
- # @param [String] file_path Path for Xcode summary in JSON format.
104
+ # @param [String] file_path Path for xcresult bundle.
117
105
  # @return [String] JSON string with warningCount and errorCount
118
106
  def warning_error_count(file_path)
119
- if File.file?(file_path)
120
- xcode_summary = JSON.parse(File.read(file_path), symbolize_names: true)
121
- warning_count = warnings(xcode_summary).count
122
- error_count = errors(xcode_summary).count
107
+ if File.exist?(file_path)
108
+ xcode_summary = XCResult::Parser.new(path: file_path)
109
+ warning_count = 0
110
+ error_count = 0
111
+ xcode_summary.actions_invocation_record.actions.each do |action|
112
+ warning_count += warnings(action).count
113
+ error_count += errors(action).count
114
+ end
123
115
  result = { warnings: warning_count, errors: error_count }
124
116
  result.to_json
125
117
  else
@@ -130,111 +122,90 @@ module Danger
130
122
  private
131
123
 
132
124
  def format_summary(xcode_summary)
133
- messages(xcode_summary).each { |s| message(s, sticky: sticky_summary) }
134
- warnings(xcode_summary).each do |result|
135
- if inline_mode && result.location
136
- warn(result.message, sticky: false, file: result.location.file_name, line: result.location.line)
137
- else
138
- warn(result.message, sticky: false)
125
+ xcode_summary.actions_invocation_record.actions.each do |action|
126
+ warnings(action).each do |result|
127
+ if inline_mode && result.location
128
+ warn(result.message, sticky: false, file: result.location.file_path, line: result.location.line)
129
+ else
130
+ warn(result.message, sticky: false)
131
+ end
139
132
  end
140
- end
141
- errors(xcode_summary).each do |result|
142
- if inline_mode && result.location
143
- fail(result.message, sticky: false, file: result.location.file_name, line: result.location.line)
144
- else
145
- fail(result.message, sticky: false)
133
+ # rubocop:disable Lint/UnreachableLoop
134
+ errors(action).each do |result|
135
+ if inline_mode && result.location
136
+ fail(result.message, sticky: false, file: result.location.file_path, line: result.location.line)
137
+ else
138
+ fail(result.message, sticky: false)
139
+ end
146
140
  end
141
+ # rubocop:enable Lint/UnreachableLoop
147
142
  end
148
143
  end
149
144
 
150
- def messages(xcode_summary)
151
- if test_summary
152
- [
153
- xcode_summary[:tests_summary_messages]
154
- ].flatten.uniq.compact.map(&:strip)
155
- else
156
- []
157
- end
158
- end
159
-
160
- def warnings(xcode_summary)
161
- if ignores_warnings
162
- return []
163
- end
145
+ def warnings(action)
146
+ return [] if ignores_warnings
164
147
 
165
148
  warnings = [
166
- xcode_summary.fetch(:warnings, []).map { |message| Result.new(message, nil) },
167
- xcode_summary.fetch(:ld_warnings, []).map { |message| Result.new(message, nil) },
168
- xcode_summary.fetch(:compile_warnings, {}).map do |h|
169
- Result.new(format_compile_warning(h), parse_location(h))
170
- end
171
- ].flatten.uniq.compact.reject { |result| result.message.nil? }
149
+ action.action_result.issues.warning_summaries,
150
+ action.build_result.issues.warning_summaries
151
+ ].flatten.compact.map do |summary|
152
+ result = Result.new(summary.message, parse_location(summary.document_location_in_creating_workspace))
153
+ Result.new(format_warning(result), result.location)
154
+ end
155
+ warnings = warnings.uniq.reject { |result| result.message.nil? }
172
156
  warnings.delete_if(&ignored_results)
173
157
  end
174
158
 
175
- def errors(xcode_summary)
159
+ def errors(action)
176
160
  errors = [
177
- xcode_summary.fetch(:errors, []).map { |message| Result.new(message, nil) },
178
- xcode_summary.fetch(:compile_errors, {}).map do |h|
179
- Result.new(format_compile_warning(h), parse_location(h))
180
- end,
181
- xcode_summary.fetch(:file_missing_errors, {}).map do |h|
182
- Result.new(format_format_file_missing_error(h), parse_location(h))
183
- end,
184
- xcode_summary.fetch(:undefined_symbols_errors, {}).map do |h|
185
- Result.new(format_undefined_symbols(h), nil)
186
- end,
187
- xcode_summary.fetch(:duplicate_symbols_errors, {}).map do |h|
188
- Result.new(format_duplicate_symbols(h), nil)
189
- end,
190
- xcode_summary.fetch(:tests_failures, {}).map do |test_suite, failures|
191
- failures.map do |failure|
192
- Result.new(format_test_failure(test_suite, failure), parse_test_location(failure))
193
- end
194
- end
195
- ].flatten.uniq.compact.reject { |result| result.message.nil? }
196
- errors.delete_if(&ignored_results)
197
- end
161
+ action.action_result.issues.error_summaries,
162
+ action.build_result.issues.error_summaries
163
+ ].flatten.compact.map do |summary|
164
+ result = Result.new(summary.message, parse_location(summary.document_location_in_creating_workspace))
165
+ Result.new(format_warning(result), result.location)
166
+ end
198
167
 
199
- def parse_location(h)
200
- file_path, line, _column = h[:file_path].split(':')
201
- Location.new(h[:file_name], file_path, line.to_i)
202
- end
168
+ test_failures = [
169
+ action.action_result.issues.test_failure_summaries,
170
+ action.build_result.issues.test_failure_summaries
171
+ ].flatten.compact.map do |summary|
172
+ result = Result.new(summary.message, parse_location(summary.document_location_in_creating_workspace))
173
+ Result.new(format_test_failure(result, summary.producing_target, summary.test_case_name),
174
+ result.location)
175
+ end
203
176
 
204
- def parse_test_location(failure)
205
- path, line = failure[:file_path].split(':')
206
- file_name = relative_path(path)
207
- Location.new(file_name, path, line.to_i)
177
+ results = (errors + test_failures).uniq.reject { |result| result.message.nil? }
178
+ results.delete_if(&ignored_results)
208
179
  end
209
180
 
210
- def format_path(path)
211
- clean_path, line = parse_filename(path)
212
- path = clean_path + '#L' + line if clean_path && line
213
-
214
- # Pick a Dangerfile plugin for a chosen request_source
215
- # based on https://github.com/danger/danger/blob/master/lib/danger/plugin_support/plugin.rb#L31
216
- plugins = Plugin.all_plugins.select { |plugin| Dangerfile.essential_plugin_classes.include? plugin }
217
- plugin = plugins.select { |p| p.method_defined? :html_link }.map { |p| p.new(@dangerfile) }.compact.first
181
+ def parse_location(document_location)
182
+ return nil if document_location.nil?
218
183
 
219
- plugin.html_link(path)
184
+ file_path = document_location.url.gsub('file://', '').split('#').first
185
+ file_name = file_path.split('/').last
186
+ fragment = document_location.url.split('#').last
187
+ params = CGI.parse(fragment).transform_values(&:first)
188
+ line = params['StartingLineNumber'].to_i + 1 # StartingLineNumber is 0-based, but we need a 1-based value
189
+ Location.new(file_name, relative_path(file_path), line)
220
190
  end
221
191
 
222
- def parse_filename(path)
223
- regex = /^(.*?):(\d*):?\d*$/
224
- match = path.match(regex)
225
- if match
226
- match.captures
192
+ def format_path(file_path, line)
193
+ if plugin
194
+ path = file_path
195
+ path += "#L#{line}" if line
196
+ plugin.html_link(path)
197
+ else
198
+ file_path
227
199
  end
228
200
  end
229
201
 
230
202
  def relative_path(path)
231
203
  return nil if project_root.nil?
204
+
232
205
  path.gsub(project_root, '')
233
206
  end
234
207
 
235
208
  def should_ignore_warning?(path)
236
- parsed = parse_filename(path)
237
- path = parsed.first || path
238
209
  ignored_files.any? { |pattern| File.fnmatch(pattern, path) }
239
210
  end
240
211
 
@@ -242,44 +213,22 @@ module Danger
242
213
  reason.gsub('>', '\>').gsub('<', '\<')
243
214
  end
244
215
 
245
- def format_compile_warning(h)
246
- path = relative_path(h[:file_path])
247
- return nil if should_ignore_warning?(path)
248
-
249
- path_link = format_path(path)
216
+ def format_warning(result)
217
+ return escape_reason(result.message) if result.location.nil?
250
218
 
251
- warning = "**#{path_link}**: #{escape_reason(h[:reason])} <br />"
252
- if h[:line] && !h[:line].empty?
253
- "#{warning}" \
254
- "```\n" \
255
- "#{h[:line]}\n" \
256
- '```'
257
- else
258
- warning
259
- end
260
- end
261
-
262
- def format_format_file_missing_error(h)
263
- path = relative_path(h[:file_path])
264
- path_link = format_path(path)
265
- "**#{escape_reason(h[:reason])}**: #{path_link}"
266
- end
219
+ path = result.location.file_path
220
+ return nil if should_ignore_warning?(path)
267
221
 
268
- def format_undefined_symbols(h)
269
- "#{h[:message]} <br />" \
270
- "> Symbol: #{h[:symbol]} <br />" \
271
- "> Referenced from: #{h[:reference]}"
272
- end
222
+ path_link = format_path(path, result.location.line)
273
223
 
274
- def format_duplicate_symbols(h)
275
- "#{h[:message]} <br />" \
276
- "> #{h[:file_paths].map { |path| path.split('/').last }.join('<br /> ')}"
224
+ "**#{path_link}**: #{escape_reason(result.message)}"
277
225
  end
278
226
 
279
- def format_test_failure(suite_name, failure)
280
- path = relative_path(failure[:file_path])
281
- path_link = format_path(path)
282
- "**#{suite_name}**: #{failure[:test_case]}, #{escape_reason(failure[:reason])} <br /> #{path_link}"
227
+ def format_test_failure(result, producing_target, test_case_name)
228
+ path = result.location.file_path
229
+ path_link = format_path(path, result.location.line)
230
+ suite_name = "#{producing_target}.#{test_case_name}"
231
+ "**#{suite_name}**: #{escape_reason(result.message)} <br /> #{path_link}"
283
232
  end
284
233
  end
285
234
  end