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.
- checksums.yaml +5 -5
- data/.gitattributes +1 -0
- data/.rubocop.yml +6 -6
- data/.travis.yml +11 -3
- data/Gemfile +2 -0
- data/Gemfile.lock +90 -64
- data/Guardfile +2 -0
- data/README.md +10 -29
- data/Rakefile +2 -0
- data/danger-xcode_summary.gemspec +7 -4
- data/lib/danger_plugin.rb +2 -0
- data/lib/danger_xcode_summary.rb +2 -0
- data/lib/xcode_summary/gem_version.rb +3 -1
- data/lib/xcode_summary/plugin.rb +95 -146
- data/spec/fixtures/build_error.xcresult/Data/data.0~8rlpy8Zk2MdRSU0KgHQ-dzLsgOGyu-14Vc-N0xpF5NjTgHQgt3Y2C80SFK9G34F8tFCT42Ddo_9fUgkxBW3O9w== +0 -0
- data/spec/fixtures/build_error.xcresult/Data/data.0~IRr5bjJHBy3PCL5WuT9beYwr1YJflTZAOvsiw4f8sjvfJO1N516fkBcRW8rzgz3AkdAAidUfmPabPcZq3iarbA== +0 -0
- data/spec/fixtures/build_error.xcresult/Data/data.0~M95TCFtTnRKHBi17FlVGNc2kRMfbb_nRcsKPCf3ttPQyiTHHtDZhXhZ7cyeQ_qQ4zMKPS6y7I0oN4BKz0S4Uwg== +1 -0
- data/spec/fixtures/build_error.xcresult/Data/data.0~R8E9aNLCgS5_YXRF2Ugae_CaCFKR0ScZt9yP6r7ov-20PVARt7VwmAHWg2P6EBKQXm2TML95dp7BNnz9vunkBw== +0 -0
- data/spec/fixtures/build_error.xcresult/Data/data.0~YHIIkYp8-XSCi9oQYeEXZLa8EYpvUizVzEQGN5YmnJtTfJ4ujBdfy2EVAk8cUl8jtQskdFE84I-7eu59N9_pLA== +1 -0
- data/spec/fixtures/build_error.xcresult/Data/data.0~oBktD27DLW9QTHTv0MDsoaN2N6qCqZMwiFJeX7RwARc9fFan5V2awd_aThA9ZdCFTmHTSrdRglfQ5-ry9bJBUQ== +0 -0
- data/spec/fixtures/build_error.xcresult/Data/data.0~sMF2ys5sALLwuAv5pBXjiul46mqlgymNeLHDD_y99cE5gPqv8vL-IHIBlpnlNYSO4VvKHlaNafxanp-NDJTh-A== +0 -0
- data/spec/fixtures/build_error.xcresult/Data/refs.0~8rlpy8Zk2MdRSU0KgHQ-dzLsgOGyu-14Vc-N0xpF5NjTgHQgt3Y2C80SFK9G34F8tFCT42Ddo_9fUgkxBW3O9w== +0 -0
- data/spec/fixtures/build_error.xcresult/Data/refs.0~IRr5bjJHBy3PCL5WuT9beYwr1YJflTZAOvsiw4f8sjvfJO1N516fkBcRW8rzgz3AkdAAidUfmPabPcZq3iarbA== +0 -0
- data/spec/fixtures/build_error.xcresult/Data/refs.0~M95TCFtTnRKHBi17FlVGNc2kRMfbb_nRcsKPCf3ttPQyiTHHtDZhXhZ7cyeQ_qQ4zMKPS6y7I0oN4BKz0S4Uwg== +0 -0
- data/spec/fixtures/build_error.xcresult/Data/refs.0~R8E9aNLCgS5_YXRF2Ugae_CaCFKR0ScZt9yP6r7ov-20PVARt7VwmAHWg2P6EBKQXm2TML95dp7BNnz9vunkBw== +0 -0
- data/spec/fixtures/build_error.xcresult/Data/refs.0~YHIIkYp8-XSCi9oQYeEXZLa8EYpvUizVzEQGN5YmnJtTfJ4ujBdfy2EVAk8cUl8jtQskdFE84I-7eu59N9_pLA== +0 -0
- data/spec/fixtures/build_error.xcresult/Data/refs.0~oBktD27DLW9QTHTv0MDsoaN2N6qCqZMwiFJeX7RwARc9fFan5V2awd_aThA9ZdCFTmHTSrdRglfQ5-ry9bJBUQ== +0 -0
- data/spec/fixtures/build_error.xcresult/Data/refs.0~sMF2ys5sALLwuAv5pBXjiul46mqlgymNeLHDD_y99cE5gPqv8vL-IHIBlpnlNYSO4VvKHlaNafxanp-NDJTh-A== +0 -0
- data/spec/fixtures/build_error.xcresult/Info.plist +29 -0
- data/spec/fixtures/pr_json.json +2 -2
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~0-xWm2AiZ5I3ekRhpAO8g4-GGm1rZIaTIaO2e60GD8nRSProBd-a_Yc1i7HKUd7bcVhfz2trCFFjRoELo2Srsw== +1 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~0OZeLqccmhzjAKAPA0eS1xbrEYM0PXX1u6A91vWH_ALTk8ho004_4kSNB9wC5XH28w-WgXxARYsmR5za20WacA== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~0S6H6SLQKxWYgRYf_D_1IY-6QHDo-BsTnbSwsmikZV81avlhu5M1VAH-NOUVMY64xcmrqOJTvhE3NuQQTem2Cw== +1 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~2kkEPYCm3NJ7Qa1mJdA2u8iJvxvealDfVga3ndyyZs38sQL36q1IX7MYvrKo4eDbd-nyAQ96ZvSgaqpY4LJS1g== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~3_PlvRIvUTDBxcDG2Xfka2hgB7TiNgptAFA36_GXRa52Nvcr0scZcjFMT5dD_zIOEF07s48D6roAaO5Fuhqm4A== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~4G0wQRF6xQNh3N32d9TJzcahHXtF9nsz9VnT8U0otA3r2iR598yAPi99CNnJ6RdVZdbjKKM5mOz4wlM-xL99GQ== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~4ybc14a0wWeJTE6Wyco_E5GMC4AV1uhumwDmYN_qe_Xatx7ngcL09_ef5aIBySSqpNNu4zcclYpHn9GrlNRuFQ== +1 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~6gayYzI1pf7Ae5plNUTUjxPN56sJMCVjiFgbL47tofr0MkqR24pCBQ_WR8ObwxOF1d0CMgO6xzegongDrChlJg== +1 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~8IYU0zHEOjhUXKlujKg1LRsjykPpzvWzofthV0L5wC4B7k8gHyaZ-7cZuqFSoPtzJazWCx-EKgYEH2IqJWzfEg== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~8sQuTfDcyJlc0Fi-_NLh3a8jvYBs_okTaD87IqdKyCzN32fu0jp6ApVWBgFD38xL2_Q87YDxQ6IxUZv7NNvqow== +1 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~CJoU5w7TNA2we8IxsH6JLXhJ2Tgwn4MNMGYzl5g5KiXF8gJQm6HlNTnQ1LSu2ISGxTLCQ9g-epXuzLU5utBfFA== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~E-76cUuxKNsc00En6QiGIdNWgUkhPKWbzbY-g7Xs1I8QHEMM8XUyKPxeMCp0ZXs_s4n1v1-sgg4Cr_BgvCBB6Q== +1 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~ES9w2o-hBWjCbFGFTzMnh3Y8PpOwPGSGtWZ9X9jy-xdmxdZNKNzsKpz5MRG0TSYYKul6Y0HPDMb6NUx1KCvp1g== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~H9Ox0jwnLyzNmCS9JM53xW5lgvG9wCoyFrOocfEMniMt9ZomGQCEAkcpEABl2RAkEJrYWhbW_Rrvy0_m93Jnnw== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~LCIporNdr1dPYSczSS8zeRwLlf3Cq-xsjXgA0FzrCLqqpRmUcrJDAa5R7STT0lyZeGi2M13jXHyGZ5rZ7qCrrQ== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~LpdFNGBXQ0G_AiEBUv6jWVmPykDLvumWlLqe9FOU9Sautm_uAIUhkdYsC3Ai7CHCV6Ec_A9EgLa5dzbuBuSm0Q== +1 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~MPQdxkf7R97XmBRC6k_HRasY3Wpzf6Ji9mPhXyPVbkbZreWJ4iOdeDBLCRqR2Jn_ffDNfJCvU4gSl6NdwqltzA== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~Mbg926q5J0cd3yItw2ktYihgAmF3Bs3imeg-AgyGMQYnQx0IUUFlnuY3xldjSVaGFNU4N892Usibic6TZXFbTw== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~OZKuCYOwI0z3jDNmJQ-bb0OUCKuFWw1iz9Na6m-M3pOyVRqP09YONvdvG1ezCE57EI5b8Ym9g8hX1ZVZJg124w== +1 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~P1yCjbYuC-f-Yp5vY3jDumuu5B5U2_SdjxLObNcTH3XZMXTGlY9I20IlZP6UkWOIIPSr4IYewBY82b4sq82ldw== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~PgE51YCf92l9xvNpSiVbHOmsnaRpxz_zGezAUjflsYK7nfGH7YRTDdb1jnNn0WlHUlme8-fO8fPQRJ9n51hfPg== +1 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~QLGQgkmvGM1G0GFHWwBAJoAn881RCWKI51niXWwchH2k_1ahgBUMANJWO98yUC5HwqptnBQLC0aoD4GE7Zb3Yg== +1 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~QdTITudcOZvjswLWT8gvlQMZHVJJ5yA_GP2ZKrevsgAbABDadn3tsrUH4rbPPD0HZeZVi5oDNPTcqoaMnueJ6A== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~TNVRLj0efZi3RNElgmBqJ-AnCofs0p8pnjLDsQw2TMFPfg6driapeVvOlnsFyOS_27P7ZHNiLt2xJ9kiE57VlA== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~Vo-bwGSGWiUUFgBwAGdskHUHwVQh0q8hYJmYmmyHI4AVhbtLsMeJQyYvHOuTuPmJcJsX_4bDig3Mg1GPwE9oWw== +1 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~YBV5ZYd3le3PYE4Xz7kCb4sj6ZJ25X18ArIVKxMOCZHZ479XzQByz07m8qpm3hIL3oUPozbag-zRSomHuRfKLQ== +1 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~ZYx73XhABxgrY0rQpAJbZMCn_MDQFCJimII9c-ninClo_0ZErb0fGcXrX-8AkQ_8ngCyX1YyDzb825PzreCLFg== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~_Vk-6Z65ePcSA8pCiCFHA53AP-PRZ6KqdEH_Su2CQbd3QM7P-By063lIn7SyLdlE1ENrRCOL_9VFHwb6Q2de4A== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~aBrGz65aeXPVqACvo49xELHeqBawlmly6M_SmRa-iT99yzTiBp2st43mhwZEOVIgvsBEHLkKbH5oQpqjWgkueA== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~amieE2Vo8zyuqmVg_XehREgJFzuJaWOzAODZVk_7d1g6p6Y_sPmomY580XqThK7-5nyr3Z3ZX8PBps4zPLU86A== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~bC3ChphZGxwicYgFPaTJhJvXLOQJmKnAxXU_qdERqu-B1727kHJX61TfzqMUqRiPUwu5E9r_5RH_xoRYJ2L6gQ== +1 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~dKm5kNy23i7r5zU946OFV5V5VysbNcVshgmPE1cDjnTybi4d2hDYQHf5DDhl2cd8blicZGSNT1U56_sMCeKgGA== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~fOlw5DSt-BTx_3MEsZueO9WvR0v7M_4Qox6aT8izuwPfWLYDmQLCsC3_Hymzu9pvNdnU-hnLmqI7VHwds0tZJg== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~fQN-Kpy21p-A8sCOyS-jK7ytWncDa2hFDzVN8GFtbxfcsSDqHuHlelgGVDfMRGaCjl0_YvECcpxkOXMSCMz-yA== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~fg_OE_1GIKhnHZVCf6vX3IBffLrmbWUH4AsgsdCfNDOxp0B_FS01mzFt8QUR8SFpl0wzqzGZLqQjyYhO6RevrQ== +1 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~gan-cZ22YZhS_xIHkTo3QDwbZPFY4kFjFla450U2lB0YvYEyKbq78RSwEXNISk5oLbXL4hT7MUx_j9YlvordmQ== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~gullQKRfJbsVcDBXIhfPjmm5JnaE0Beei-34BEkBv4R4RAuRHQMSnctdI5JXfKywafaWXcpQiYYRa9ukH7dA8w== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~ifHHINpGjhER45qG-5imtXxa30gPYyHpFGHLw-i9F-M4nTjIGxvHkfprtACth9aAoeu7xyBFp9i0NZuPFaK-qQ== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~j4nemHY9VBZOlHsEur0YydlrsprTU9r-MZEFaCsZ71qzr_Y2j_wX_zeb8BIyCfQq6WCHDuJGwCvDxYGxFHFKJQ== +1 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~jLNWr6BK3vDe2KRCbTLDhymPjtRFa0UT1BKEjXSbv29IXEwjhP4bUKt6LMUdkCtM4FvPlQ8z7YOpAYFoZFSPOA== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~jLxEh4TDlOXovDeeA90ahrPFfK6KWCWAM1RveDzpglwOI01s2gFfzKcZ5uuMA4PDXedeCvNf2DqCdKJIcgHnVQ== +1 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~lDipbRFZoMGAPyIHXNVPjW96huFRLV5fDc8iChQGTp2D1rW9Y3yat6jqgAUFtF94uKKChvQXQU2YOrKELWTWRQ== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~m1Fg2athRJukt11SG2HxPjSj8K7CqPcdkSiJSNtxUGsVPezdEjZT_PPnBkROObmplPJ7SQmO9ccwDfGagdcKLg== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~oRMi0sbQLktfDDDGUS-SqBKpdDiD6HCztVES_ShfGr0KVcYENoIq7y9oUSDWL5B_P2gkdtWG8JEsJLxPbdWOZA== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~oRai0E4F38qqrWTBu_VggauLdzUNvBJ9uOpjjW4rdru1cdBUSmJsWp7wGRoTaegMas7lrFfF7hqYW76UAkN_Aw== +1 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~oc4kwngaTuUPiuwoua8qsQolC7-ZoEhH98wttJsSLjXvqDEIcMSdd0Y06IcfLovOve5P5sgs01gVV9FxgA9Cgg== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~pfWL_0E_rKWkISZ_-ykT-jtTq0T1Bs4pRoI0Rvd1L48EF2pJwep6TzEd_f2AXvlBLDYPKU_8b0hRyDco495MuA== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~qvKb6_pMbXLkop24YkPLBvBGPB0vTCJVE1x5_F3lvNeXSrkS-aTEVLcbm50ypOEDTvq5lWbE3WCTmiwTrycTtA== +1 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~rWtEuNODRlqS4h5IKE2daTjC3jn_FFVbc5AFmP9pWRCMe5Pnl26q-RtgyD_RKEch9v3KhAMX6v_o_6tAvVJqCA== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~ryOJ0LA52DIkg1NBt38A9g4laq_cWjst7WaY2GqaYbfcPtErYNGwwseRWOUJ888fdbPpei28zwb3FQmyyY0P7A== +1 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~ufMI-FnN2y3q-eI9BtVFtGpA8_fkrqmtH5a6cmoMsFqJdZ7LAFu1X1f-KhV78VbCx3NJFw-Z37YrEEheJ0aoew== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~vFXD8mGF6_qQ0OnB0Wcon_YnvTiD4pn7MUywowp2zOVLErpHH1Ub9F67rFgJUj5qH44PC8HGhivGatweCwtA1g== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~xgcJ3zOq4tRMu41EmxgQwt9WxpLQm2v2wbY1e8CAQ8EEYhNYnBcMTAFjYWFgIg4LKguSsH1Djbu9dtiDJ6ZXww== +1 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~ygm24RJKzu1R3AxMJebgBRXDXv1XqRs_UZUYB9XNRQlwNRqHlLdmUDM2A0c5MZ0rM9Rzk8J6DVpUtgbXCqdEig== +1 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~z0TKqUleKKN7fLZIVvFv3iQkQDn9im3HWNWKHBCNC0CrWtbKyMM79u3yFkfV0iz5I-pyszXp3C532_0QdYPUlA== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/data.0~zs6Rgx87_LJyVnCSv0mqZMG6J9lpsTcTg9rpJsB_IBDSH2MQBeY5mGj-C3dLPzD8HFtKiumJ9EcGo-mGYqnZvQ== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~0-xWm2AiZ5I3ekRhpAO8g4-GGm1rZIaTIaO2e60GD8nRSProBd-a_Yc1i7HKUd7bcVhfz2trCFFjRoELo2Srsw== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~0OZeLqccmhzjAKAPA0eS1xbrEYM0PXX1u6A91vWH_ALTk8ho004_4kSNB9wC5XH28w-WgXxARYsmR5za20WacA== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~0S6H6SLQKxWYgRYf_D_1IY-6QHDo-BsTnbSwsmikZV81avlhu5M1VAH-NOUVMY64xcmrqOJTvhE3NuQQTem2Cw== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~2kkEPYCm3NJ7Qa1mJdA2u8iJvxvealDfVga3ndyyZs38sQL36q1IX7MYvrKo4eDbd-nyAQ96ZvSgaqpY4LJS1g== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~3_PlvRIvUTDBxcDG2Xfka2hgB7TiNgptAFA36_GXRa52Nvcr0scZcjFMT5dD_zIOEF07s48D6roAaO5Fuhqm4A== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~4G0wQRF6xQNh3N32d9TJzcahHXtF9nsz9VnT8U0otA3r2iR598yAPi99CNnJ6RdVZdbjKKM5mOz4wlM-xL99GQ== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~4ybc14a0wWeJTE6Wyco_E5GMC4AV1uhumwDmYN_qe_Xatx7ngcL09_ef5aIBySSqpNNu4zcclYpHn9GrlNRuFQ== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~6gayYzI1pf7Ae5plNUTUjxPN56sJMCVjiFgbL47tofr0MkqR24pCBQ_WR8ObwxOF1d0CMgO6xzegongDrChlJg== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~8IYU0zHEOjhUXKlujKg1LRsjykPpzvWzofthV0L5wC4B7k8gHyaZ-7cZuqFSoPtzJazWCx-EKgYEH2IqJWzfEg== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~8sQuTfDcyJlc0Fi-_NLh3a8jvYBs_okTaD87IqdKyCzN32fu0jp6ApVWBgFD38xL2_Q87YDxQ6IxUZv7NNvqow== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~CJoU5w7TNA2we8IxsH6JLXhJ2Tgwn4MNMGYzl5g5KiXF8gJQm6HlNTnQ1LSu2ISGxTLCQ9g-epXuzLU5utBfFA== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~E-76cUuxKNsc00En6QiGIdNWgUkhPKWbzbY-g7Xs1I8QHEMM8XUyKPxeMCp0ZXs_s4n1v1-sgg4Cr_BgvCBB6Q== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~ES9w2o-hBWjCbFGFTzMnh3Y8PpOwPGSGtWZ9X9jy-xdmxdZNKNzsKpz5MRG0TSYYKul6Y0HPDMb6NUx1KCvp1g== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~H9Ox0jwnLyzNmCS9JM53xW5lgvG9wCoyFrOocfEMniMt9ZomGQCEAkcpEABl2RAkEJrYWhbW_Rrvy0_m93Jnnw== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~LCIporNdr1dPYSczSS8zeRwLlf3Cq-xsjXgA0FzrCLqqpRmUcrJDAa5R7STT0lyZeGi2M13jXHyGZ5rZ7qCrrQ== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~LpdFNGBXQ0G_AiEBUv6jWVmPykDLvumWlLqe9FOU9Sautm_uAIUhkdYsC3Ai7CHCV6Ec_A9EgLa5dzbuBuSm0Q== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~MPQdxkf7R97XmBRC6k_HRasY3Wpzf6Ji9mPhXyPVbkbZreWJ4iOdeDBLCRqR2Jn_ffDNfJCvU4gSl6NdwqltzA== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~Mbg926q5J0cd3yItw2ktYihgAmF3Bs3imeg-AgyGMQYnQx0IUUFlnuY3xldjSVaGFNU4N892Usibic6TZXFbTw== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~OZKuCYOwI0z3jDNmJQ-bb0OUCKuFWw1iz9Na6m-M3pOyVRqP09YONvdvG1ezCE57EI5b8Ym9g8hX1ZVZJg124w== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~P1yCjbYuC-f-Yp5vY3jDumuu5B5U2_SdjxLObNcTH3XZMXTGlY9I20IlZP6UkWOIIPSr4IYewBY82b4sq82ldw== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~PgE51YCf92l9xvNpSiVbHOmsnaRpxz_zGezAUjflsYK7nfGH7YRTDdb1jnNn0WlHUlme8-fO8fPQRJ9n51hfPg== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~QLGQgkmvGM1G0GFHWwBAJoAn881RCWKI51niXWwchH2k_1ahgBUMANJWO98yUC5HwqptnBQLC0aoD4GE7Zb3Yg== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~QdTITudcOZvjswLWT8gvlQMZHVJJ5yA_GP2ZKrevsgAbABDadn3tsrUH4rbPPD0HZeZVi5oDNPTcqoaMnueJ6A== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~TNVRLj0efZi3RNElgmBqJ-AnCofs0p8pnjLDsQw2TMFPfg6driapeVvOlnsFyOS_27P7ZHNiLt2xJ9kiE57VlA== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~Vo-bwGSGWiUUFgBwAGdskHUHwVQh0q8hYJmYmmyHI4AVhbtLsMeJQyYvHOuTuPmJcJsX_4bDig3Mg1GPwE9oWw== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~YBV5ZYd3le3PYE4Xz7kCb4sj6ZJ25X18ArIVKxMOCZHZ479XzQByz07m8qpm3hIL3oUPozbag-zRSomHuRfKLQ== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~ZYx73XhABxgrY0rQpAJbZMCn_MDQFCJimII9c-ninClo_0ZErb0fGcXrX-8AkQ_8ngCyX1YyDzb825PzreCLFg== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~_Vk-6Z65ePcSA8pCiCFHA53AP-PRZ6KqdEH_Su2CQbd3QM7P-By063lIn7SyLdlE1ENrRCOL_9VFHwb6Q2de4A== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~aBrGz65aeXPVqACvo49xELHeqBawlmly6M_SmRa-iT99yzTiBp2st43mhwZEOVIgvsBEHLkKbH5oQpqjWgkueA== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~amieE2Vo8zyuqmVg_XehREgJFzuJaWOzAODZVk_7d1g6p6Y_sPmomY580XqThK7-5nyr3Z3ZX8PBps4zPLU86A== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~bC3ChphZGxwicYgFPaTJhJvXLOQJmKnAxXU_qdERqu-B1727kHJX61TfzqMUqRiPUwu5E9r_5RH_xoRYJ2L6gQ== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~dKm5kNy23i7r5zU946OFV5V5VysbNcVshgmPE1cDjnTybi4d2hDYQHf5DDhl2cd8blicZGSNT1U56_sMCeKgGA== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~fOlw5DSt-BTx_3MEsZueO9WvR0v7M_4Qox6aT8izuwPfWLYDmQLCsC3_Hymzu9pvNdnU-hnLmqI7VHwds0tZJg== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~fQN-Kpy21p-A8sCOyS-jK7ytWncDa2hFDzVN8GFtbxfcsSDqHuHlelgGVDfMRGaCjl0_YvECcpxkOXMSCMz-yA== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~fg_OE_1GIKhnHZVCf6vX3IBffLrmbWUH4AsgsdCfNDOxp0B_FS01mzFt8QUR8SFpl0wzqzGZLqQjyYhO6RevrQ== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~gan-cZ22YZhS_xIHkTo3QDwbZPFY4kFjFla450U2lB0YvYEyKbq78RSwEXNISk5oLbXL4hT7MUx_j9YlvordmQ== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~gullQKRfJbsVcDBXIhfPjmm5JnaE0Beei-34BEkBv4R4RAuRHQMSnctdI5JXfKywafaWXcpQiYYRa9ukH7dA8w== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~ifHHINpGjhER45qG-5imtXxa30gPYyHpFGHLw-i9F-M4nTjIGxvHkfprtACth9aAoeu7xyBFp9i0NZuPFaK-qQ== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~j4nemHY9VBZOlHsEur0YydlrsprTU9r-MZEFaCsZ71qzr_Y2j_wX_zeb8BIyCfQq6WCHDuJGwCvDxYGxFHFKJQ== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~jLNWr6BK3vDe2KRCbTLDhymPjtRFa0UT1BKEjXSbv29IXEwjhP4bUKt6LMUdkCtM4FvPlQ8z7YOpAYFoZFSPOA== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~jLxEh4TDlOXovDeeA90ahrPFfK6KWCWAM1RveDzpglwOI01s2gFfzKcZ5uuMA4PDXedeCvNf2DqCdKJIcgHnVQ== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~lDipbRFZoMGAPyIHXNVPjW96huFRLV5fDc8iChQGTp2D1rW9Y3yat6jqgAUFtF94uKKChvQXQU2YOrKELWTWRQ== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~m1Fg2athRJukt11SG2HxPjSj8K7CqPcdkSiJSNtxUGsVPezdEjZT_PPnBkROObmplPJ7SQmO9ccwDfGagdcKLg== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~oRMi0sbQLktfDDDGUS-SqBKpdDiD6HCztVES_ShfGr0KVcYENoIq7y9oUSDWL5B_P2gkdtWG8JEsJLxPbdWOZA== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~oRai0E4F38qqrWTBu_VggauLdzUNvBJ9uOpjjW4rdru1cdBUSmJsWp7wGRoTaegMas7lrFfF7hqYW76UAkN_Aw== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~oc4kwngaTuUPiuwoua8qsQolC7-ZoEhH98wttJsSLjXvqDEIcMSdd0Y06IcfLovOve5P5sgs01gVV9FxgA9Cgg== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~pfWL_0E_rKWkISZ_-ykT-jtTq0T1Bs4pRoI0Rvd1L48EF2pJwep6TzEd_f2AXvlBLDYPKU_8b0hRyDco495MuA== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~qvKb6_pMbXLkop24YkPLBvBGPB0vTCJVE1x5_F3lvNeXSrkS-aTEVLcbm50ypOEDTvq5lWbE3WCTmiwTrycTtA== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~rWtEuNODRlqS4h5IKE2daTjC3jn_FFVbc5AFmP9pWRCMe5Pnl26q-RtgyD_RKEch9v3KhAMX6v_o_6tAvVJqCA== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~ryOJ0LA52DIkg1NBt38A9g4laq_cWjst7WaY2GqaYbfcPtErYNGwwseRWOUJ888fdbPpei28zwb3FQmyyY0P7A== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~ufMI-FnN2y3q-eI9BtVFtGpA8_fkrqmtH5a6cmoMsFqJdZ7LAFu1X1f-KhV78VbCx3NJFw-Z37YrEEheJ0aoew== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~vFXD8mGF6_qQ0OnB0Wcon_YnvTiD4pn7MUywowp2zOVLErpHH1Ub9F67rFgJUj5qH44PC8HGhivGatweCwtA1g== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~xgcJ3zOq4tRMu41EmxgQwt9WxpLQm2v2wbY1e8CAQ8EEYhNYnBcMTAFjYWFgIg4LKguSsH1Djbu9dtiDJ6ZXww== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~ygm24RJKzu1R3AxMJebgBRXDXv1XqRs_UZUYB9XNRQlwNRqHlLdmUDM2A0c5MZ0rM9Rzk8J6DVpUtgbXCqdEig== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~z0TKqUleKKN7fLZIVvFv3iQkQDn9im3HWNWKHBCNC0CrWtbKyMM79u3yFkfV0iz5I-pyszXp3C532_0QdYPUlA== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Data/refs.0~zs6Rgx87_LJyVnCSv0mqZMG6J9lpsTcTg9rpJsB_IBDSH2MQBeY5mGj-C3dLPzD8HFtKiumJ9EcGo-mGYqnZvQ== +0 -0
- data/spec/fixtures/swiftlint.xcresult/Info.plist +29 -0
- data/spec/spec_helper.rb +11 -4
- data/spec/xcode_summary_spec.rb +93 -112
- metadata +281 -25
- data/spec/fixtures/errors.json +0 -31
- data/spec/fixtures/ld_warnings.json +0 -31
- data/spec/fixtures/summary.json +0 -44
- data/spec/fixtures/summary_messages.json +0 -5
- data/spec/fixtures/summary_with_empty_line.json +0 -37
- data/spec/fixtures/test_errors.json +0 -11
- data/spec/fixtures/warnings_errors.json +0 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e30986734f1f4563b6c7f58e5765cb2b00be9bf4cc86ae03c88485d429009e3e
|
4
|
+
data.tar.gz: 570891d22c3fbb5a9b2cdbb61dab1833ac8570013e0c2689886b78702cbff368
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
58
|
-
Max:
|
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.
|
8
|
-
- 2.3
|
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
data/Gemfile.lock
CHANGED
@@ -1,47 +1,61 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
danger-xcode_summary (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.
|
11
|
-
public_suffix (>= 2.0.2, <
|
12
|
-
ast (2.4.
|
13
|
-
claide (1.0.
|
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.
|
19
|
+
coderay (1.1.3)
|
19
20
|
colored2 (3.1.2)
|
20
21
|
cork (0.3.0)
|
21
22
|
colored2 (~> 3.1)
|
22
|
-
danger (
|
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 (
|
28
|
-
faraday-http-cache (~>
|
29
|
-
git (~> 1)
|
30
|
-
kramdown (~>
|
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 (
|
35
|
+
terminal-table (>= 1, < 4)
|
34
36
|
danger-plugin-api (1.0.0)
|
35
37
|
danger (> 2.0)
|
36
|
-
diff-lcs (1.
|
37
|
-
faraday (
|
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
|
-
|
40
|
-
|
41
|
-
|
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.
|
44
|
-
|
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 (
|
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.
|
63
|
-
method_source (0.
|
64
|
-
multipart-post (2.
|
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.
|
85
|
+
notiffany (0.1.3)
|
69
86
|
nenv (~> 0.1)
|
70
87
|
shellany (~> 0.0)
|
71
|
-
octokit (4.
|
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.
|
75
|
-
parser (
|
76
|
-
ast (~> 2.4.
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
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 (
|
84
|
-
rb-fsevent (0.
|
85
|
-
rb-inotify (0.
|
86
|
-
ffi (
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
rspec-
|
93
|
-
|
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.
|
96
|
-
rspec-mocks (3.
|
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.
|
99
|
-
rspec-support (3.
|
100
|
-
rubocop (
|
118
|
+
rspec-support (~> 3.10.0)
|
119
|
+
rspec-support (3.10.2)
|
120
|
+
rubocop (1.15.0)
|
101
121
|
parallel (~> 1.10)
|
102
|
-
parser (>=
|
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 (
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
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 (
|
113
|
-
unicode-display_width (
|
114
|
-
thor (
|
115
|
-
unicode-display_width (
|
116
|
-
|
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 (
|
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 (~>
|
155
|
+
rake (~> 13.0)
|
130
156
|
rspec (~> 3.4)
|
131
157
|
rubocop
|
132
158
|
yard
|
133
159
|
|
134
160
|
BUNDLED WITH
|
135
|
-
|
161
|
+
2.2.26
|
data/Guardfile
CHANGED
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 '
|
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.
|
88
|
+
result.message.include? 'ld' # Ignore ld_warnings
|
108
89
|
}
|
109
90
|
|
110
|
-
xcode_summary.report '
|
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 '
|
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 '
|
112
|
+
result = xcode_summary.warning_error_count 'MyApp.xcresult'
|
132
113
|
```
|
133
114
|
|
134
115
|
## License
|
data/Rakefile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
lib = File.expand_path('
|
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', '
|
28
|
-
spec.add_development_dependency 'rake', '~>
|
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
data/lib/danger_xcode_summary.rb
CHANGED
data/lib/xcode_summary/plugin.rb
CHANGED
@@ -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
|
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 '
|
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 '
|
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
|
89
|
+
# Reads a `.xcresult` and reports it.
|
102
90
|
#
|
103
|
-
# @param [String] file_path Path for
|
91
|
+
# @param [String] file_path Path for xcresult bundle.
|
104
92
|
# @return [void]
|
105
93
|
def report(file_path)
|
106
|
-
if File.
|
107
|
-
xcode_summary =
|
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
|
102
|
+
# Reads a `.xcresult` and reports its warning and error count.
|
115
103
|
#
|
116
|
-
# @param [String] file_path Path for
|
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.
|
120
|
-
xcode_summary =
|
121
|
-
warning_count =
|
122
|
-
error_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
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
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
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
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
|
151
|
-
if
|
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
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
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(
|
159
|
+
def errors(action)
|
176
160
|
errors = [
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
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
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
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
|
-
|
205
|
-
|
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
|
211
|
-
|
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
|
-
|
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
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
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
|
246
|
-
|
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
|
-
|
252
|
-
|
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
|
-
|
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
|
-
|
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(
|
280
|
-
path =
|
281
|
-
path_link = format_path(path)
|
282
|
-
|
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
|