danger-xcode_summary 0.5.1 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (151) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +1 -0
  3. data/.rubocop.yml +6 -6
  4. data/.travis.yml +9 -3
  5. data/Gemfile +2 -0
  6. data/Gemfile.lock +93 -64
  7. data/Guardfile +2 -0
  8. data/README.md +10 -30
  9. data/Rakefile +2 -0
  10. data/danger-xcode_summary.gemspec +8 -5
  11. data/lib/xcode_summary/gem_version.rb +1 -1
  12. data/lib/xcode_summary/plugin.rb +91 -146
  13. data/spec/fixtures/build_error.xcresult/Data/data.0~8rlpy8Zk2MdRSU0KgHQ-dzLsgOGyu-14Vc-N0xpF5NjTgHQgt3Y2C80SFK9G34F8tFCT42Ddo_9fUgkxBW3O9w== +0 -0
  14. data/spec/fixtures/build_error.xcresult/Data/data.0~IRr5bjJHBy3PCL5WuT9beYwr1YJflTZAOvsiw4f8sjvfJO1N516fkBcRW8rzgz3AkdAAidUfmPabPcZq3iarbA== +0 -0
  15. data/spec/fixtures/build_error.xcresult/Data/data.0~M95TCFtTnRKHBi17FlVGNc2kRMfbb_nRcsKPCf3ttPQyiTHHtDZhXhZ7cyeQ_qQ4zMKPS6y7I0oN4BKz0S4Uwg== +1 -0
  16. data/spec/fixtures/build_error.xcresult/Data/data.0~R8E9aNLCgS5_YXRF2Ugae_CaCFKR0ScZt9yP6r7ov-20PVARt7VwmAHWg2P6EBKQXm2TML95dp7BNnz9vunkBw== +0 -0
  17. data/spec/fixtures/build_error.xcresult/Data/data.0~YHIIkYp8-XSCi9oQYeEXZLa8EYpvUizVzEQGN5YmnJtTfJ4ujBdfy2EVAk8cUl8jtQskdFE84I-7eu59N9_pLA== +1 -0
  18. data/spec/fixtures/build_error.xcresult/Data/data.0~oBktD27DLW9QTHTv0MDsoaN2N6qCqZMwiFJeX7RwARc9fFan5V2awd_aThA9ZdCFTmHTSrdRglfQ5-ry9bJBUQ== +0 -0
  19. data/spec/fixtures/build_error.xcresult/Data/data.0~sMF2ys5sALLwuAv5pBXjiul46mqlgymNeLHDD_y99cE5gPqv8vL-IHIBlpnlNYSO4VvKHlaNafxanp-NDJTh-A== +0 -0
  20. data/spec/fixtures/build_error.xcresult/Data/refs.0~8rlpy8Zk2MdRSU0KgHQ-dzLsgOGyu-14Vc-N0xpF5NjTgHQgt3Y2C80SFK9G34F8tFCT42Ddo_9fUgkxBW3O9w== +0 -0
  21. data/spec/fixtures/build_error.xcresult/Data/refs.0~IRr5bjJHBy3PCL5WuT9beYwr1YJflTZAOvsiw4f8sjvfJO1N516fkBcRW8rzgz3AkdAAidUfmPabPcZq3iarbA== +0 -0
  22. data/spec/fixtures/build_error.xcresult/Data/refs.0~M95TCFtTnRKHBi17FlVGNc2kRMfbb_nRcsKPCf3ttPQyiTHHtDZhXhZ7cyeQ_qQ4zMKPS6y7I0oN4BKz0S4Uwg== +0 -0
  23. data/spec/fixtures/build_error.xcresult/Data/refs.0~R8E9aNLCgS5_YXRF2Ugae_CaCFKR0ScZt9yP6r7ov-20PVARt7VwmAHWg2P6EBKQXm2TML95dp7BNnz9vunkBw== +0 -0
  24. data/spec/fixtures/build_error.xcresult/Data/refs.0~YHIIkYp8-XSCi9oQYeEXZLa8EYpvUizVzEQGN5YmnJtTfJ4ujBdfy2EVAk8cUl8jtQskdFE84I-7eu59N9_pLA== +0 -0
  25. data/spec/fixtures/build_error.xcresult/Data/refs.0~oBktD27DLW9QTHTv0MDsoaN2N6qCqZMwiFJeX7RwARc9fFan5V2awd_aThA9ZdCFTmHTSrdRglfQ5-ry9bJBUQ== +0 -0
  26. data/spec/fixtures/build_error.xcresult/Data/refs.0~sMF2ys5sALLwuAv5pBXjiul46mqlgymNeLHDD_y99cE5gPqv8vL-IHIBlpnlNYSO4VvKHlaNafxanp-NDJTh-A== +0 -0
  27. data/spec/fixtures/build_error.xcresult/Info.plist +29 -0
  28. data/spec/fixtures/pr_json.json +2 -2
  29. data/spec/fixtures/swiftlint.xcresult/Data/data.0~0-xWm2AiZ5I3ekRhpAO8g4-GGm1rZIaTIaO2e60GD8nRSProBd-a_Yc1i7HKUd7bcVhfz2trCFFjRoELo2Srsw== +1 -0
  30. data/spec/fixtures/swiftlint.xcresult/Data/data.0~0OZeLqccmhzjAKAPA0eS1xbrEYM0PXX1u6A91vWH_ALTk8ho004_4kSNB9wC5XH28w-WgXxARYsmR5za20WacA== +0 -0
  31. data/spec/fixtures/swiftlint.xcresult/Data/data.0~0S6H6SLQKxWYgRYf_D_1IY-6QHDo-BsTnbSwsmikZV81avlhu5M1VAH-NOUVMY64xcmrqOJTvhE3NuQQTem2Cw== +1 -0
  32. data/spec/fixtures/swiftlint.xcresult/Data/data.0~2kkEPYCm3NJ7Qa1mJdA2u8iJvxvealDfVga3ndyyZs38sQL36q1IX7MYvrKo4eDbd-nyAQ96ZvSgaqpY4LJS1g== +0 -0
  33. data/spec/fixtures/swiftlint.xcresult/Data/data.0~3_PlvRIvUTDBxcDG2Xfka2hgB7TiNgptAFA36_GXRa52Nvcr0scZcjFMT5dD_zIOEF07s48D6roAaO5Fuhqm4A== +0 -0
  34. data/spec/fixtures/swiftlint.xcresult/Data/data.0~4G0wQRF6xQNh3N32d9TJzcahHXtF9nsz9VnT8U0otA3r2iR598yAPi99CNnJ6RdVZdbjKKM5mOz4wlM-xL99GQ== +0 -0
  35. data/spec/fixtures/swiftlint.xcresult/Data/data.0~4ybc14a0wWeJTE6Wyco_E5GMC4AV1uhumwDmYN_qe_Xatx7ngcL09_ef5aIBySSqpNNu4zcclYpHn9GrlNRuFQ== +1 -0
  36. data/spec/fixtures/swiftlint.xcresult/Data/data.0~6gayYzI1pf7Ae5plNUTUjxPN56sJMCVjiFgbL47tofr0MkqR24pCBQ_WR8ObwxOF1d0CMgO6xzegongDrChlJg== +1 -0
  37. data/spec/fixtures/swiftlint.xcresult/Data/data.0~8IYU0zHEOjhUXKlujKg1LRsjykPpzvWzofthV0L5wC4B7k8gHyaZ-7cZuqFSoPtzJazWCx-EKgYEH2IqJWzfEg== +0 -0
  38. data/spec/fixtures/swiftlint.xcresult/Data/data.0~8sQuTfDcyJlc0Fi-_NLh3a8jvYBs_okTaD87IqdKyCzN32fu0jp6ApVWBgFD38xL2_Q87YDxQ6IxUZv7NNvqow== +1 -0
  39. data/spec/fixtures/swiftlint.xcresult/Data/data.0~CJoU5w7TNA2we8IxsH6JLXhJ2Tgwn4MNMGYzl5g5KiXF8gJQm6HlNTnQ1LSu2ISGxTLCQ9g-epXuzLU5utBfFA== +0 -0
  40. data/spec/fixtures/swiftlint.xcresult/Data/data.0~E-76cUuxKNsc00En6QiGIdNWgUkhPKWbzbY-g7Xs1I8QHEMM8XUyKPxeMCp0ZXs_s4n1v1-sgg4Cr_BgvCBB6Q== +1 -0
  41. data/spec/fixtures/swiftlint.xcresult/Data/data.0~ES9w2o-hBWjCbFGFTzMnh3Y8PpOwPGSGtWZ9X9jy-xdmxdZNKNzsKpz5MRG0TSYYKul6Y0HPDMb6NUx1KCvp1g== +0 -0
  42. data/spec/fixtures/swiftlint.xcresult/Data/data.0~H9Ox0jwnLyzNmCS9JM53xW5lgvG9wCoyFrOocfEMniMt9ZomGQCEAkcpEABl2RAkEJrYWhbW_Rrvy0_m93Jnnw== +0 -0
  43. data/spec/fixtures/swiftlint.xcresult/Data/data.0~LCIporNdr1dPYSczSS8zeRwLlf3Cq-xsjXgA0FzrCLqqpRmUcrJDAa5R7STT0lyZeGi2M13jXHyGZ5rZ7qCrrQ== +0 -0
  44. data/spec/fixtures/swiftlint.xcresult/Data/data.0~LpdFNGBXQ0G_AiEBUv6jWVmPykDLvumWlLqe9FOU9Sautm_uAIUhkdYsC3Ai7CHCV6Ec_A9EgLa5dzbuBuSm0Q== +1 -0
  45. data/spec/fixtures/swiftlint.xcresult/Data/data.0~MPQdxkf7R97XmBRC6k_HRasY3Wpzf6Ji9mPhXyPVbkbZreWJ4iOdeDBLCRqR2Jn_ffDNfJCvU4gSl6NdwqltzA== +0 -0
  46. data/spec/fixtures/swiftlint.xcresult/Data/data.0~Mbg926q5J0cd3yItw2ktYihgAmF3Bs3imeg-AgyGMQYnQx0IUUFlnuY3xldjSVaGFNU4N892Usibic6TZXFbTw== +0 -0
  47. data/spec/fixtures/swiftlint.xcresult/Data/data.0~OZKuCYOwI0z3jDNmJQ-bb0OUCKuFWw1iz9Na6m-M3pOyVRqP09YONvdvG1ezCE57EI5b8Ym9g8hX1ZVZJg124w== +1 -0
  48. data/spec/fixtures/swiftlint.xcresult/Data/data.0~P1yCjbYuC-f-Yp5vY3jDumuu5B5U2_SdjxLObNcTH3XZMXTGlY9I20IlZP6UkWOIIPSr4IYewBY82b4sq82ldw== +0 -0
  49. data/spec/fixtures/swiftlint.xcresult/Data/data.0~PgE51YCf92l9xvNpSiVbHOmsnaRpxz_zGezAUjflsYK7nfGH7YRTDdb1jnNn0WlHUlme8-fO8fPQRJ9n51hfPg== +1 -0
  50. data/spec/fixtures/swiftlint.xcresult/Data/data.0~QLGQgkmvGM1G0GFHWwBAJoAn881RCWKI51niXWwchH2k_1ahgBUMANJWO98yUC5HwqptnBQLC0aoD4GE7Zb3Yg== +1 -0
  51. data/spec/fixtures/swiftlint.xcresult/Data/data.0~QdTITudcOZvjswLWT8gvlQMZHVJJ5yA_GP2ZKrevsgAbABDadn3tsrUH4rbPPD0HZeZVi5oDNPTcqoaMnueJ6A== +0 -0
  52. data/spec/fixtures/swiftlint.xcresult/Data/data.0~TNVRLj0efZi3RNElgmBqJ-AnCofs0p8pnjLDsQw2TMFPfg6driapeVvOlnsFyOS_27P7ZHNiLt2xJ9kiE57VlA== +0 -0
  53. data/spec/fixtures/swiftlint.xcresult/Data/data.0~Vo-bwGSGWiUUFgBwAGdskHUHwVQh0q8hYJmYmmyHI4AVhbtLsMeJQyYvHOuTuPmJcJsX_4bDig3Mg1GPwE9oWw== +1 -0
  54. data/spec/fixtures/swiftlint.xcresult/Data/data.0~YBV5ZYd3le3PYE4Xz7kCb4sj6ZJ25X18ArIVKxMOCZHZ479XzQByz07m8qpm3hIL3oUPozbag-zRSomHuRfKLQ== +1 -0
  55. data/spec/fixtures/swiftlint.xcresult/Data/data.0~ZYx73XhABxgrY0rQpAJbZMCn_MDQFCJimII9c-ninClo_0ZErb0fGcXrX-8AkQ_8ngCyX1YyDzb825PzreCLFg== +0 -0
  56. data/spec/fixtures/swiftlint.xcresult/Data/data.0~_Vk-6Z65ePcSA8pCiCFHA53AP-PRZ6KqdEH_Su2CQbd3QM7P-By063lIn7SyLdlE1ENrRCOL_9VFHwb6Q2de4A== +0 -0
  57. data/spec/fixtures/swiftlint.xcresult/Data/data.0~aBrGz65aeXPVqACvo49xELHeqBawlmly6M_SmRa-iT99yzTiBp2st43mhwZEOVIgvsBEHLkKbH5oQpqjWgkueA== +0 -0
  58. data/spec/fixtures/swiftlint.xcresult/Data/data.0~amieE2Vo8zyuqmVg_XehREgJFzuJaWOzAODZVk_7d1g6p6Y_sPmomY580XqThK7-5nyr3Z3ZX8PBps4zPLU86A== +0 -0
  59. data/spec/fixtures/swiftlint.xcresult/Data/data.0~bC3ChphZGxwicYgFPaTJhJvXLOQJmKnAxXU_qdERqu-B1727kHJX61TfzqMUqRiPUwu5E9r_5RH_xoRYJ2L6gQ== +1 -0
  60. data/spec/fixtures/swiftlint.xcresult/Data/data.0~dKm5kNy23i7r5zU946OFV5V5VysbNcVshgmPE1cDjnTybi4d2hDYQHf5DDhl2cd8blicZGSNT1U56_sMCeKgGA== +0 -0
  61. data/spec/fixtures/swiftlint.xcresult/Data/data.0~fOlw5DSt-BTx_3MEsZueO9WvR0v7M_4Qox6aT8izuwPfWLYDmQLCsC3_Hymzu9pvNdnU-hnLmqI7VHwds0tZJg== +0 -0
  62. data/spec/fixtures/swiftlint.xcresult/Data/data.0~fQN-Kpy21p-A8sCOyS-jK7ytWncDa2hFDzVN8GFtbxfcsSDqHuHlelgGVDfMRGaCjl0_YvECcpxkOXMSCMz-yA== +0 -0
  63. data/spec/fixtures/swiftlint.xcresult/Data/data.0~fg_OE_1GIKhnHZVCf6vX3IBffLrmbWUH4AsgsdCfNDOxp0B_FS01mzFt8QUR8SFpl0wzqzGZLqQjyYhO6RevrQ== +1 -0
  64. data/spec/fixtures/swiftlint.xcresult/Data/data.0~gan-cZ22YZhS_xIHkTo3QDwbZPFY4kFjFla450U2lB0YvYEyKbq78RSwEXNISk5oLbXL4hT7MUx_j9YlvordmQ== +0 -0
  65. data/spec/fixtures/swiftlint.xcresult/Data/data.0~gullQKRfJbsVcDBXIhfPjmm5JnaE0Beei-34BEkBv4R4RAuRHQMSnctdI5JXfKywafaWXcpQiYYRa9ukH7dA8w== +0 -0
  66. data/spec/fixtures/swiftlint.xcresult/Data/data.0~ifHHINpGjhER45qG-5imtXxa30gPYyHpFGHLw-i9F-M4nTjIGxvHkfprtACth9aAoeu7xyBFp9i0NZuPFaK-qQ== +0 -0
  67. data/spec/fixtures/swiftlint.xcresult/Data/data.0~j4nemHY9VBZOlHsEur0YydlrsprTU9r-MZEFaCsZ71qzr_Y2j_wX_zeb8BIyCfQq6WCHDuJGwCvDxYGxFHFKJQ== +1 -0
  68. data/spec/fixtures/swiftlint.xcresult/Data/data.0~jLNWr6BK3vDe2KRCbTLDhymPjtRFa0UT1BKEjXSbv29IXEwjhP4bUKt6LMUdkCtM4FvPlQ8z7YOpAYFoZFSPOA== +0 -0
  69. data/spec/fixtures/swiftlint.xcresult/Data/data.0~jLxEh4TDlOXovDeeA90ahrPFfK6KWCWAM1RveDzpglwOI01s2gFfzKcZ5uuMA4PDXedeCvNf2DqCdKJIcgHnVQ== +1 -0
  70. data/spec/fixtures/swiftlint.xcresult/Data/data.0~lDipbRFZoMGAPyIHXNVPjW96huFRLV5fDc8iChQGTp2D1rW9Y3yat6jqgAUFtF94uKKChvQXQU2YOrKELWTWRQ== +0 -0
  71. data/spec/fixtures/swiftlint.xcresult/Data/data.0~m1Fg2athRJukt11SG2HxPjSj8K7CqPcdkSiJSNtxUGsVPezdEjZT_PPnBkROObmplPJ7SQmO9ccwDfGagdcKLg== +0 -0
  72. data/spec/fixtures/swiftlint.xcresult/Data/data.0~oRMi0sbQLktfDDDGUS-SqBKpdDiD6HCztVES_ShfGr0KVcYENoIq7y9oUSDWL5B_P2gkdtWG8JEsJLxPbdWOZA== +0 -0
  73. data/spec/fixtures/swiftlint.xcresult/Data/data.0~oRai0E4F38qqrWTBu_VggauLdzUNvBJ9uOpjjW4rdru1cdBUSmJsWp7wGRoTaegMas7lrFfF7hqYW76UAkN_Aw== +1 -0
  74. data/spec/fixtures/swiftlint.xcresult/Data/data.0~oc4kwngaTuUPiuwoua8qsQolC7-ZoEhH98wttJsSLjXvqDEIcMSdd0Y06IcfLovOve5P5sgs01gVV9FxgA9Cgg== +0 -0
  75. data/spec/fixtures/swiftlint.xcresult/Data/data.0~pfWL_0E_rKWkISZ_-ykT-jtTq0T1Bs4pRoI0Rvd1L48EF2pJwep6TzEd_f2AXvlBLDYPKU_8b0hRyDco495MuA== +0 -0
  76. data/spec/fixtures/swiftlint.xcresult/Data/data.0~qvKb6_pMbXLkop24YkPLBvBGPB0vTCJVE1x5_F3lvNeXSrkS-aTEVLcbm50ypOEDTvq5lWbE3WCTmiwTrycTtA== +1 -0
  77. data/spec/fixtures/swiftlint.xcresult/Data/data.0~rWtEuNODRlqS4h5IKE2daTjC3jn_FFVbc5AFmP9pWRCMe5Pnl26q-RtgyD_RKEch9v3KhAMX6v_o_6tAvVJqCA== +0 -0
  78. data/spec/fixtures/swiftlint.xcresult/Data/data.0~ryOJ0LA52DIkg1NBt38A9g4laq_cWjst7WaY2GqaYbfcPtErYNGwwseRWOUJ888fdbPpei28zwb3FQmyyY0P7A== +1 -0
  79. data/spec/fixtures/swiftlint.xcresult/Data/data.0~ufMI-FnN2y3q-eI9BtVFtGpA8_fkrqmtH5a6cmoMsFqJdZ7LAFu1X1f-KhV78VbCx3NJFw-Z37YrEEheJ0aoew== +0 -0
  80. data/spec/fixtures/swiftlint.xcresult/Data/data.0~vFXD8mGF6_qQ0OnB0Wcon_YnvTiD4pn7MUywowp2zOVLErpHH1Ub9F67rFgJUj5qH44PC8HGhivGatweCwtA1g== +0 -0
  81. data/spec/fixtures/swiftlint.xcresult/Data/data.0~xgcJ3zOq4tRMu41EmxgQwt9WxpLQm2v2wbY1e8CAQ8EEYhNYnBcMTAFjYWFgIg4LKguSsH1Djbu9dtiDJ6ZXww== +1 -0
  82. data/spec/fixtures/swiftlint.xcresult/Data/data.0~ygm24RJKzu1R3AxMJebgBRXDXv1XqRs_UZUYB9XNRQlwNRqHlLdmUDM2A0c5MZ0rM9Rzk8J6DVpUtgbXCqdEig== +1 -0
  83. data/spec/fixtures/swiftlint.xcresult/Data/data.0~z0TKqUleKKN7fLZIVvFv3iQkQDn9im3HWNWKHBCNC0CrWtbKyMM79u3yFkfV0iz5I-pyszXp3C532_0QdYPUlA== +0 -0
  84. data/spec/fixtures/swiftlint.xcresult/Data/data.0~zs6Rgx87_LJyVnCSv0mqZMG6J9lpsTcTg9rpJsB_IBDSH2MQBeY5mGj-C3dLPzD8HFtKiumJ9EcGo-mGYqnZvQ== +0 -0
  85. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~0-xWm2AiZ5I3ekRhpAO8g4-GGm1rZIaTIaO2e60GD8nRSProBd-a_Yc1i7HKUd7bcVhfz2trCFFjRoELo2Srsw== +0 -0
  86. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~0OZeLqccmhzjAKAPA0eS1xbrEYM0PXX1u6A91vWH_ALTk8ho004_4kSNB9wC5XH28w-WgXxARYsmR5za20WacA== +0 -0
  87. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~0S6H6SLQKxWYgRYf_D_1IY-6QHDo-BsTnbSwsmikZV81avlhu5M1VAH-NOUVMY64xcmrqOJTvhE3NuQQTem2Cw== +0 -0
  88. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~2kkEPYCm3NJ7Qa1mJdA2u8iJvxvealDfVga3ndyyZs38sQL36q1IX7MYvrKo4eDbd-nyAQ96ZvSgaqpY4LJS1g== +0 -0
  89. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~3_PlvRIvUTDBxcDG2Xfka2hgB7TiNgptAFA36_GXRa52Nvcr0scZcjFMT5dD_zIOEF07s48D6roAaO5Fuhqm4A== +0 -0
  90. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~4G0wQRF6xQNh3N32d9TJzcahHXtF9nsz9VnT8U0otA3r2iR598yAPi99CNnJ6RdVZdbjKKM5mOz4wlM-xL99GQ== +0 -0
  91. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~4ybc14a0wWeJTE6Wyco_E5GMC4AV1uhumwDmYN_qe_Xatx7ngcL09_ef5aIBySSqpNNu4zcclYpHn9GrlNRuFQ== +0 -0
  92. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~6gayYzI1pf7Ae5plNUTUjxPN56sJMCVjiFgbL47tofr0MkqR24pCBQ_WR8ObwxOF1d0CMgO6xzegongDrChlJg== +0 -0
  93. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~8IYU0zHEOjhUXKlujKg1LRsjykPpzvWzofthV0L5wC4B7k8gHyaZ-7cZuqFSoPtzJazWCx-EKgYEH2IqJWzfEg== +0 -0
  94. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~8sQuTfDcyJlc0Fi-_NLh3a8jvYBs_okTaD87IqdKyCzN32fu0jp6ApVWBgFD38xL2_Q87YDxQ6IxUZv7NNvqow== +0 -0
  95. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~CJoU5w7TNA2we8IxsH6JLXhJ2Tgwn4MNMGYzl5g5KiXF8gJQm6HlNTnQ1LSu2ISGxTLCQ9g-epXuzLU5utBfFA== +0 -0
  96. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~E-76cUuxKNsc00En6QiGIdNWgUkhPKWbzbY-g7Xs1I8QHEMM8XUyKPxeMCp0ZXs_s4n1v1-sgg4Cr_BgvCBB6Q== +0 -0
  97. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~ES9w2o-hBWjCbFGFTzMnh3Y8PpOwPGSGtWZ9X9jy-xdmxdZNKNzsKpz5MRG0TSYYKul6Y0HPDMb6NUx1KCvp1g== +0 -0
  98. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~H9Ox0jwnLyzNmCS9JM53xW5lgvG9wCoyFrOocfEMniMt9ZomGQCEAkcpEABl2RAkEJrYWhbW_Rrvy0_m93Jnnw== +0 -0
  99. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~LCIporNdr1dPYSczSS8zeRwLlf3Cq-xsjXgA0FzrCLqqpRmUcrJDAa5R7STT0lyZeGi2M13jXHyGZ5rZ7qCrrQ== +0 -0
  100. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~LpdFNGBXQ0G_AiEBUv6jWVmPykDLvumWlLqe9FOU9Sautm_uAIUhkdYsC3Ai7CHCV6Ec_A9EgLa5dzbuBuSm0Q== +0 -0
  101. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~MPQdxkf7R97XmBRC6k_HRasY3Wpzf6Ji9mPhXyPVbkbZreWJ4iOdeDBLCRqR2Jn_ffDNfJCvU4gSl6NdwqltzA== +0 -0
  102. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~Mbg926q5J0cd3yItw2ktYihgAmF3Bs3imeg-AgyGMQYnQx0IUUFlnuY3xldjSVaGFNU4N892Usibic6TZXFbTw== +0 -0
  103. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~OZKuCYOwI0z3jDNmJQ-bb0OUCKuFWw1iz9Na6m-M3pOyVRqP09YONvdvG1ezCE57EI5b8Ym9g8hX1ZVZJg124w== +0 -0
  104. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~P1yCjbYuC-f-Yp5vY3jDumuu5B5U2_SdjxLObNcTH3XZMXTGlY9I20IlZP6UkWOIIPSr4IYewBY82b4sq82ldw== +0 -0
  105. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~PgE51YCf92l9xvNpSiVbHOmsnaRpxz_zGezAUjflsYK7nfGH7YRTDdb1jnNn0WlHUlme8-fO8fPQRJ9n51hfPg== +0 -0
  106. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~QLGQgkmvGM1G0GFHWwBAJoAn881RCWKI51niXWwchH2k_1ahgBUMANJWO98yUC5HwqptnBQLC0aoD4GE7Zb3Yg== +0 -0
  107. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~QdTITudcOZvjswLWT8gvlQMZHVJJ5yA_GP2ZKrevsgAbABDadn3tsrUH4rbPPD0HZeZVi5oDNPTcqoaMnueJ6A== +0 -0
  108. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~TNVRLj0efZi3RNElgmBqJ-AnCofs0p8pnjLDsQw2TMFPfg6driapeVvOlnsFyOS_27P7ZHNiLt2xJ9kiE57VlA== +0 -0
  109. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~Vo-bwGSGWiUUFgBwAGdskHUHwVQh0q8hYJmYmmyHI4AVhbtLsMeJQyYvHOuTuPmJcJsX_4bDig3Mg1GPwE9oWw== +0 -0
  110. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~YBV5ZYd3le3PYE4Xz7kCb4sj6ZJ25X18ArIVKxMOCZHZ479XzQByz07m8qpm3hIL3oUPozbag-zRSomHuRfKLQ== +0 -0
  111. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~ZYx73XhABxgrY0rQpAJbZMCn_MDQFCJimII9c-ninClo_0ZErb0fGcXrX-8AkQ_8ngCyX1YyDzb825PzreCLFg== +0 -0
  112. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~_Vk-6Z65ePcSA8pCiCFHA53AP-PRZ6KqdEH_Su2CQbd3QM7P-By063lIn7SyLdlE1ENrRCOL_9VFHwb6Q2de4A== +0 -0
  113. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~aBrGz65aeXPVqACvo49xELHeqBawlmly6M_SmRa-iT99yzTiBp2st43mhwZEOVIgvsBEHLkKbH5oQpqjWgkueA== +0 -0
  114. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~amieE2Vo8zyuqmVg_XehREgJFzuJaWOzAODZVk_7d1g6p6Y_sPmomY580XqThK7-5nyr3Z3ZX8PBps4zPLU86A== +0 -0
  115. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~bC3ChphZGxwicYgFPaTJhJvXLOQJmKnAxXU_qdERqu-B1727kHJX61TfzqMUqRiPUwu5E9r_5RH_xoRYJ2L6gQ== +0 -0
  116. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~dKm5kNy23i7r5zU946OFV5V5VysbNcVshgmPE1cDjnTybi4d2hDYQHf5DDhl2cd8blicZGSNT1U56_sMCeKgGA== +0 -0
  117. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~fOlw5DSt-BTx_3MEsZueO9WvR0v7M_4Qox6aT8izuwPfWLYDmQLCsC3_Hymzu9pvNdnU-hnLmqI7VHwds0tZJg== +0 -0
  118. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~fQN-Kpy21p-A8sCOyS-jK7ytWncDa2hFDzVN8GFtbxfcsSDqHuHlelgGVDfMRGaCjl0_YvECcpxkOXMSCMz-yA== +0 -0
  119. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~fg_OE_1GIKhnHZVCf6vX3IBffLrmbWUH4AsgsdCfNDOxp0B_FS01mzFt8QUR8SFpl0wzqzGZLqQjyYhO6RevrQ== +0 -0
  120. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~gan-cZ22YZhS_xIHkTo3QDwbZPFY4kFjFla450U2lB0YvYEyKbq78RSwEXNISk5oLbXL4hT7MUx_j9YlvordmQ== +0 -0
  121. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~gullQKRfJbsVcDBXIhfPjmm5JnaE0Beei-34BEkBv4R4RAuRHQMSnctdI5JXfKywafaWXcpQiYYRa9ukH7dA8w== +0 -0
  122. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~ifHHINpGjhER45qG-5imtXxa30gPYyHpFGHLw-i9F-M4nTjIGxvHkfprtACth9aAoeu7xyBFp9i0NZuPFaK-qQ== +0 -0
  123. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~j4nemHY9VBZOlHsEur0YydlrsprTU9r-MZEFaCsZ71qzr_Y2j_wX_zeb8BIyCfQq6WCHDuJGwCvDxYGxFHFKJQ== +0 -0
  124. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~jLNWr6BK3vDe2KRCbTLDhymPjtRFa0UT1BKEjXSbv29IXEwjhP4bUKt6LMUdkCtM4FvPlQ8z7YOpAYFoZFSPOA== +0 -0
  125. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~jLxEh4TDlOXovDeeA90ahrPFfK6KWCWAM1RveDzpglwOI01s2gFfzKcZ5uuMA4PDXedeCvNf2DqCdKJIcgHnVQ== +0 -0
  126. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~lDipbRFZoMGAPyIHXNVPjW96huFRLV5fDc8iChQGTp2D1rW9Y3yat6jqgAUFtF94uKKChvQXQU2YOrKELWTWRQ== +0 -0
  127. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~m1Fg2athRJukt11SG2HxPjSj8K7CqPcdkSiJSNtxUGsVPezdEjZT_PPnBkROObmplPJ7SQmO9ccwDfGagdcKLg== +0 -0
  128. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~oRMi0sbQLktfDDDGUS-SqBKpdDiD6HCztVES_ShfGr0KVcYENoIq7y9oUSDWL5B_P2gkdtWG8JEsJLxPbdWOZA== +0 -0
  129. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~oRai0E4F38qqrWTBu_VggauLdzUNvBJ9uOpjjW4rdru1cdBUSmJsWp7wGRoTaegMas7lrFfF7hqYW76UAkN_Aw== +0 -0
  130. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~oc4kwngaTuUPiuwoua8qsQolC7-ZoEhH98wttJsSLjXvqDEIcMSdd0Y06IcfLovOve5P5sgs01gVV9FxgA9Cgg== +0 -0
  131. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~pfWL_0E_rKWkISZ_-ykT-jtTq0T1Bs4pRoI0Rvd1L48EF2pJwep6TzEd_f2AXvlBLDYPKU_8b0hRyDco495MuA== +0 -0
  132. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~qvKb6_pMbXLkop24YkPLBvBGPB0vTCJVE1x5_F3lvNeXSrkS-aTEVLcbm50ypOEDTvq5lWbE3WCTmiwTrycTtA== +0 -0
  133. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~rWtEuNODRlqS4h5IKE2daTjC3jn_FFVbc5AFmP9pWRCMe5Pnl26q-RtgyD_RKEch9v3KhAMX6v_o_6tAvVJqCA== +0 -0
  134. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~ryOJ0LA52DIkg1NBt38A9g4laq_cWjst7WaY2GqaYbfcPtErYNGwwseRWOUJ888fdbPpei28zwb3FQmyyY0P7A== +0 -0
  135. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~ufMI-FnN2y3q-eI9BtVFtGpA8_fkrqmtH5a6cmoMsFqJdZ7LAFu1X1f-KhV78VbCx3NJFw-Z37YrEEheJ0aoew== +0 -0
  136. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~vFXD8mGF6_qQ0OnB0Wcon_YnvTiD4pn7MUywowp2zOVLErpHH1Ub9F67rFgJUj5qH44PC8HGhivGatweCwtA1g== +0 -0
  137. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~xgcJ3zOq4tRMu41EmxgQwt9WxpLQm2v2wbY1e8CAQ8EEYhNYnBcMTAFjYWFgIg4LKguSsH1Djbu9dtiDJ6ZXww== +0 -0
  138. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~ygm24RJKzu1R3AxMJebgBRXDXv1XqRs_UZUYB9XNRQlwNRqHlLdmUDM2A0c5MZ0rM9Rzk8J6DVpUtgbXCqdEig== +0 -0
  139. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~z0TKqUleKKN7fLZIVvFv3iQkQDn9im3HWNWKHBCNC0CrWtbKyMM79u3yFkfV0iz5I-pyszXp3C532_0QdYPUlA== +0 -0
  140. data/spec/fixtures/swiftlint.xcresult/Data/refs.0~zs6Rgx87_LJyVnCSv0mqZMG6J9lpsTcTg9rpJsB_IBDSH2MQBeY5mGj-C3dLPzD8HFtKiumJ9EcGo-mGYqnZvQ== +0 -0
  141. data/spec/fixtures/swiftlint.xcresult/Info.plist +29 -0
  142. data/spec/spec_helper.rb +8 -3
  143. data/spec/xcode_summary_spec.rb +92 -111
  144. metadata +284 -27
  145. data/spec/fixtures/errors.json +0 -31
  146. data/spec/fixtures/ld_warnings.json +0 -31
  147. data/spec/fixtures/summary.json +0 -44
  148. data/spec/fixtures/summary_messages.json +0 -5
  149. data/spec/fixtures/summary_with_empty_line.json +0 -37
  150. data/spec/fixtures/test_errors.json +0 -11
  151. data/spec/fixtures/warnings_errors.json +0 -32
@@ -1,20 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'json'
4
+ require 'xcresult'
4
5
 
5
6
  module Danger
6
7
  # Shows all build errors, warnings and unit tests results generated from `xcodebuild`.
7
- # You need to use [xcpretty](https://github.com/supermarin/xcpretty)
8
- # with [xcpretty-json-formatter](https://github.com/marcelofabri/xcpretty-json-formatter)
9
- # 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.
10
9
  # @example Showing summary
11
10
  #
12
- # xcode_summary.report 'xcodebuild.json'
11
+ # xcode_summary.report 'build.xcresult'
13
12
  #
14
13
  # @example Filtering warnings in Pods
15
14
  #
16
15
  # xcode_summary.ignored_files = '**/Pods/**'
17
- # xcode_summary.report 'xcodebuild.json'
16
+ # xcode_summary.report 'build.xcresult'
18
17
  #
19
18
  # @see diogot/danger-xcode_summary
20
19
  # @tags xcode, xcodebuild, format
@@ -44,18 +43,6 @@ module Danger
44
43
  # @return [Block]
45
44
  attr_accessor :ignored_results
46
45
 
47
- # Defines if the test summary will be sticky or not.
48
- # Defaults to `false`.
49
- # @param [Boolean] value
50
- # @return [Boolean]
51
- attr_accessor :sticky_summary
52
-
53
- # Defines if the build summary is shown or not.
54
- # Defaults to `true`.
55
- # @param [Boolean] value
56
- # @return [Boolean]
57
- attr_accessor :test_summary
58
-
59
46
  # Defines if using inline comment or not.
60
47
  # Defaults to `false`.
61
48
  # @param [Boolean] value
@@ -83,14 +70,6 @@ module Danger
83
70
  @ignored_results ||= block
84
71
  end
85
72
 
86
- def sticky_summary
87
- @sticky_summary || false
88
- end
89
-
90
- def test_summary
91
- @test_summary.nil? ? true : @test_summary
92
- end
93
-
94
73
  def inline_mode
95
74
  @inline_mode || false
96
75
  end
@@ -98,30 +77,41 @@ module Danger
98
77
  def ignores_warnings
99
78
  @ignores_warnings || false
100
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
101
87
  # rubocop:enable Lint/DuplicateMethods
102
88
 
103
- # Reads a file with JSON Xcode summary and reports it.
89
+ # Reads a `.xcresult` and reports it.
104
90
  #
105
- # @param [String] file_path Path for Xcode summary in JSON format.
91
+ # @param [String] file_path Path for xcresult bundle.
106
92
  # @return [void]
107
93
  def report(file_path)
108
- if File.file?(file_path)
109
- 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)
110
96
  format_summary(xcode_summary)
111
97
  else
112
98
  fail 'summary file not found'
113
99
  end
114
100
  end
115
101
 
116
- # 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.
117
103
  #
118
- # @param [String] file_path Path for Xcode summary in JSON format.
104
+ # @param [String] file_path Path for xcresult bundle.
119
105
  # @return [String] JSON string with warningCount and errorCount
120
106
  def warning_error_count(file_path)
121
- if File.file?(file_path)
122
- xcode_summary = JSON.parse(File.read(file_path), symbolize_names: true)
123
- warning_count = warnings(xcode_summary).count
124
- 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
125
115
  result = { warnings: warning_count, errors: error_count }
126
116
  result.to_json
127
117
  else
@@ -132,104 +122,83 @@ module Danger
132
122
  private
133
123
 
134
124
  def format_summary(xcode_summary)
135
- messages(xcode_summary).each { |s| message(s, sticky: sticky_summary) }
136
- warnings(xcode_summary).each do |result|
137
- if inline_mode && result.location
138
- warn(result.message, sticky: false, file: result.location.file_name, line: result.location.line)
139
- else
140
- 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
141
132
  end
142
- end
143
- errors(xcode_summary).each do |result|
144
- if inline_mode && result.location
145
- fail(result.message, sticky: false, file: result.location.file_name, line: result.location.line)
146
- else
147
- 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
148
140
  end
141
+ # rubocop:enable Lint/UnreachableLoop
149
142
  end
150
143
  end
151
144
 
152
- def messages(xcode_summary)
153
- if test_summary
154
- [
155
- xcode_summary[:tests_summary_messages]
156
- ].flatten.uniq.compact.map(&:strip)
157
- else
158
- []
159
- end
160
- end
161
-
162
- def warnings(xcode_summary)
163
- if ignores_warnings
164
- return []
165
- end
145
+ def warnings(action)
146
+ return [] if ignores_warnings
166
147
 
167
148
  warnings = [
168
- xcode_summary.fetch(:warnings, []).map { |message| Result.new(message, nil) },
169
- xcode_summary.fetch(:ld_warnings, []).map { |message| Result.new(message, nil) },
170
- xcode_summary.fetch(:compile_warnings, {}).map do |h|
171
- Result.new(format_compile_warning(h), parse_location(h))
172
- end
173
- ].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? }
174
156
  warnings.delete_if(&ignored_results)
175
157
  end
176
158
 
177
- def errors(xcode_summary)
159
+ def errors(action)
178
160
  errors = [
179
- xcode_summary.fetch(:errors, []).map { |message| Result.new(message, nil) },
180
- xcode_summary.fetch(:compile_errors, {}).map do |h|
181
- Result.new(format_compile_warning(h), parse_location(h))
182
- end,
183
- xcode_summary.fetch(:file_missing_errors, {}).map do |h|
184
- Result.new(format_format_file_missing_error(h), parse_location(h))
185
- end,
186
- xcode_summary.fetch(:undefined_symbols_errors, {}).map do |h|
187
- Result.new(format_undefined_symbols(h), nil)
188
- end,
189
- xcode_summary.fetch(:duplicate_symbols_errors, {}).map do |h|
190
- Result.new(format_duplicate_symbols(h), nil)
191
- end,
192
- xcode_summary.fetch(:tests_failures, {}).map do |test_suite, failures|
193
- failures.map do |failure|
194
- Result.new(format_test_failure(test_suite, failure), parse_test_location(failure))
195
- end
196
- end
197
- ].flatten.uniq.compact.reject { |result| result.message.nil? }
198
- errors.delete_if(&ignored_results)
199
- 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
200
167
 
201
- def parse_location(input)
202
- file_path, line, _column = input[:file_path].split(':')
203
- Location.new(input[:file_name], file_path, line.to_i)
204
- 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
205
176
 
206
- def parse_test_location(failure)
207
- path, line = failure[:file_path].split(':')
208
- file_name = relative_path(path)
209
- 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)
210
179
  end
211
180
 
212
- def format_path(path)
213
- # Pick a Dangerfile plugin for a chosen request_source
214
- # based on https://github.com/danger/danger/blob/master/lib/danger/plugin_support/plugin.rb#L31
215
- plugins = Plugin.all_plugins.select { |plugin| Dangerfile.essential_plugin_classes.include? plugin }
216
- 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?
183
+
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)
190
+ end
217
191
 
192
+ def format_path(file_path, line)
218
193
  if plugin
219
- clean_path, line = parse_filename(path)
220
- path = clean_path + '#L' + line if clean_path && line
194
+ path = file_path
195
+ path += "#L#{line}" if line
221
196
  plugin.html_link(path)
222
197
  else
223
- path
198
+ file_path
224
199
  end
225
200
  end
226
201
 
227
- def parse_filename(path)
228
- regex = /^(.*?):(\d*):?\d*$/
229
- match = path.match(regex)
230
- match&.captures
231
- end
232
-
233
202
  def relative_path(path)
234
203
  return nil if project_root.nil?
235
204
 
@@ -237,8 +206,6 @@ module Danger
237
206
  end
238
207
 
239
208
  def should_ignore_warning?(path)
240
- parsed = parse_filename(path)
241
- path = parsed.first || path
242
209
  ignored_files.any? { |pattern| File.fnmatch(pattern, path) }
243
210
  end
244
211
 
@@ -246,44 +213,22 @@ module Danger
246
213
  reason.gsub('>', '\>').gsub('<', '\<')
247
214
  end
248
215
 
249
- def format_compile_warning(input)
250
- path = relative_path(input[:file_path])
251
- return nil if should_ignore_warning?(path)
252
-
253
- path_link = format_path(path)
216
+ def format_warning(result)
217
+ return escape_reason(result.message) if result.location.nil?
254
218
 
255
- warning = "**#{path_link}**: #{escape_reason(input[:reason])} <br />"
256
- if input[:line] && !input[:line].empty?
257
- "#{warning}" \
258
- "```\n" \
259
- "#{input[:line]}\n" \
260
- '```'
261
- else
262
- warning
263
- end
264
- end
265
-
266
- def format_format_file_missing_error(input)
267
- path = relative_path(input[:file_path])
268
- path_link = format_path(path)
269
- "**#{escape_reason(input[:reason])}**: #{path_link}"
270
- end
219
+ path = result.location.file_path
220
+ return nil if should_ignore_warning?(path)
271
221
 
272
- def format_undefined_symbols(input)
273
- "#{input[:message]} <br />" \
274
- "> Symbol: #{input[:symbol]} <br />" \
275
- "> Referenced from: #{input[:reference]}"
276
- end
222
+ path_link = format_path(path, result.location.line)
277
223
 
278
- def format_duplicate_symbols(input)
279
- "#{input[:message]} <br />" \
280
- "> #{input[:file_paths].map { |path| path.split('/').last }.join('<br /> ')}"
224
+ "**#{path_link}**: #{escape_reason(result.message)}"
281
225
  end
282
226
 
283
- def format_test_failure(suite_name, failure)
284
- path = relative_path(failure[:file_path])
285
- path_link = format_path(path)
286
- "**#{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}"
287
232
  end
288
233
  end
289
234
  end
@@ -0,0 +1 @@
1
+ [{"name":"SwiftLintFrameworkTests-717D31B2-998D-443A-9732-83EBCBA9820A","type":2}]
@@ -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>2019-09-27T07:22:32Z</date>
7
+ <key>externalLocations</key>
8
+ <array/>
9
+ <key>rootId</key>
10
+ <dict>
11
+ <key>hash</key>
12
+ <string>0~sMF2ys5sALLwuAv5pBXjiul46mqlgymNeLHDD_y99cE5gPqv8vL-IHIBlpnlNYSO4VvKHlaNafxanp-NDJTh-A==</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>21</integer>
27
+ </dict>
28
+ </dict>
29
+ </plist>
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "head": {
3
3
  "repo": {
4
- "html_url": "https://github.com/diogot/danger-xcode_summary"
4
+ "html_url": "https://github.com/realm/SwiftLint"
5
5
  },
6
- "sha": "129jef029jf029fj2039fj203f92"
6
+ "sha": "f211694e7def13785ff62047386437534541d7b3"
7
7
  }
8
8
  }
@@ -0,0 +1 @@
1
+ [{"name":"SwiftLintFrameworkTests-3F900B69-F5EC-478D-BA29-87F9FB623201.xctestconfiguration","type":1}]
@@ -0,0 +1 @@
1
+ [{"name":"SwiftLintFrameworkTests-F9CCDEE8-4362-4C21-B875-F7B8F18F3544.xctestconfiguration","type":1}]
@@ -0,0 +1 @@
1
+ [{"name":"SwiftLintFrameworkTests-71CB433F-92ED-404B-8661-635EAA88242D.xctestconfiguration","type":1}]
@@ -0,0 +1 @@
1
+ [{"name":"SwiftLintFrameworkTests-77498EA3-2A59-44A5-B19F-A0C57B3EC49F.xctestconfiguration","type":1}]
@@ -0,0 +1 @@
1
+ [{"name":"SwiftLintFrameworkTests-E93E260B-423F-4759-8BD9-2AE47867F8DD.xctestconfiguration","type":1}]