Skip to content

Conversation

@TheDechev
Copy link
Contributor

Fixes #1168

Description of the problem being solved:

When running Path of Building on Linux/WSL, the application failed to load skill-specific stat descriptions due to case-sensitivity issues. Generated stat description files sometimes reference parent scopes with lowercase "specific_skill_stat_descriptions/" prefixes, but the actual directory is "Specific_Skill_Stat_Descriptions" (title case). This caused runtime errors like "cannot open Data/StatDescriptions/specific_skill_stat_descriptions/herald_of_thunder_statset_1.lua".

Additionally, the StatDescriber was using incorrect file closing syntax that could leak file handles.

Steps taken to verify a working solution:

  • Start PoB in Dev Mode on Linux/WSL
  • Open a build including Herald of Thunder or other affected skills
  • Previously: error "cannot open Data/StatDescriptions/specific_skill_stat_descriptions/.lua"
  • Now: skills load and describe stats correctly; no missing-file error
  • Added comprehensive test suite with 8 test cases covering scope loading, normalization, output generation, and error handling
  • Added dedicated tests for the getScope function, and all tests pass (docker-compose up shows 75 successes / 0 failures)
image

Link to a build that showcases this PR:

eNrtfWlz27iy6OejX8Fy1Xlf4sRYuOZmzi15d8ZOHNuJZ-bLFEiCFicUqZCUl5y6__12A6RIypKsZZ4m572ZqXIoAN0AGr0DBN_99-MwMe5lXsRZ-tMOfUN2DJkGWRindz_tfL45fu3u_Pe_eu8uRTn4GO2P4wRr2L96_3infhilyO9k-aVGQH6nO0YwELkISpmfy3uZ9MdldpGF8qedSCSF3DHuY_mgC26ujo6geSKK4oMYQsGVSO9kvmOIIpBpeNBUHEoRyicAHoo4vc6Cr7I8ybPxCIa8YyTYzU87Ht-Bcf3j3WUinmR-XYrSKODPTzt9mJ-4k4diCH-hf5GMAaXJPGa9YZ7rcdd0rZ29hcD747wo18NwPZIynACxN4wTc17by1weRZEMyvheHuRxeTAQadD0yLw3fC7sOu0vxkkZj5IYiV7BuG84nwdy-qwHSsi8xjdZKZLDy-umreV4Dn3j2S41qWkthsvKCdzcHm7jcrCfAHXX6AVhz-7SuJRrAl9mcZGlG8yvDTp3igfjJAGJW6rtlSxkfi_KuDus-bizoR-na1HvQqTiICuWWCNseSlzkOdyJYBrGWSgAlbtY0XI8ziSy7dcaR4VwKqjWW8eR9fLtlsZ8XoDugJFuVzL62ycLNmybLSUNZc1D-Vjo_-oNV9YvnVbsnktz9JmbNQ0FyDstOTe_BHeZyikL89YqYqj08tGOZvce2Patk1AUO25Q74cPBVxIJIL8RgPx0NQ2zfiq2w65IQtYMK7QZmCzpkHTInj2vOgj-NcrgV4kCXheoADkRXzIOM0mq804vRUpGE_CMbgrjw1rGDOJ86hyL-msiiWVcagXJeGQOlvprzAmwjeYtOzNFgO5-c0r8byMnZsfwVijk6Pn8jlAJoOKl2xjHege7qTadXd03KTOZcyGJzA0l2JUi5nGSatPOIspCo2Xoqq2HAGVRfg70KsQCYEnE0my10EM5tO1KVvzPk0iMEjbHkCZHHLGRRYGmKaAvPtTyrzu6frQSyTsKW-qLcMQE2zAzFaClZxQRtBmxsopcv1uRJPt0FX5O2rdiyysNXsMc21Hkf3omibJ-q5bDHJNECbWnyuvr6Q4LEDRCinQglO50dF2R8YEyUrwvXzYTbOl-FOmIRuvJT81-ZVx4NXMhwHy9nzSWy3n0AMOzWPl6FgnEmyEmi_LEXw9TAL7-SyIKqTlSC647sej0Yg5sgQyyJApwHsZdxyAh3r5cYfgZ3bou0s8i2Wxt80nsZv0Rd9pqV7mYJYfiro7Uz18pqaSzSf7uLl5bwAfTEELa0SGBdZy314Y5L5HiBErEuFn6rhkmHwZfYAox9gsqlYrTV4ho2mmDuUXKbfn5bG32m-VAdHaQhOJgjD0n1MQ8zqZn8cRYURQBgvynNY4p92dgwfyvTzvsgxc7VrnIIzl4RGFhk3g3EaynzXOEtTlSqA2pssT0WYGdeDrNw1buM0NA6xX9Cb4BgXUiP7kiWliAPjAtzZqvebeAiqvCgORSmMsIppvog8FmnJVGKukCIPBvXIml_HIkl80EtYOgVIa1_z3Z5KMOLTgUiCQnV5lo7GpZGqlGDxNU6S39Px0Meh6n8bR7XdchgXwe9IF8w6wjjKXGU3j46Pjw5uzr4cVSDXUmlxoGeSiFEhw0nGshj7ha4EQsTy4Rq7PpRAkARWMoaGquQayBGUK2FTcBC11JlFxNX8XAXT0aPMS5jXLRA5j2U1rsmvlQelh4AeA66zxoZJuVUQaetzIIpSezSKUiobugoWzFNW08HHlWDPhiORVD1XzytTonwayQI8hDiKAxTQ9pLfQJ0uW4kuk5CzWu_KUK6CQ-U9NQL9uAqwzl1q6Op5JaqqvGlFVf28CvihDEQ1d_24CvDESc7SU4xWEMukbCVMH7JUMTkITT9O0NBVK3uUyEnBKgg_lgOZa-tZYboAzVMXrCg4eeyPy1qMW79XopXKKCgK4dMqoDpwVnPAp5WEpoojtbTHq4psN-JT69EuWQWVdnwqGlZO00rLUMUPagn080ozqeMoNYnqx0qConRw_z6LQ-1IK5GZKlxNaUDssDkaFR1sjmY6XNgc43Eiiq_VelfPc8HLfDwF_RkizLh82gwJStpmGFDgNsOALuNwbeiriSdytdAJmd3vXa2z6h8rwE983rUxaM98bXAVOCwJPc8AHMpIwhRaFmBSspJwlOP0EKhRTgRjOVTPJ6VGNaVENsOljeOfNFEt71XavlEAumBlRGDMTyfu4rqYJhHwqRQJ7vRmyWYIn21PLI1shnjKIBuPRBrW2D52ffR1qZeVBSBVQdch5guLjUYJNnv4tAjPu706rHt3KfLyCQLBAuIXUVneBCguRiOZNqOFAPWhH94jE9_AihR1hcJ2kKVRfGcIfXJC_biWJcaDasyTEqOMy0QdKInEOKm8FN2oGzQexgXugBydXqJj-TGtTKcPPUuRVlPe03AQvAdykCUQWlfQEqf_LCtUB6l1Zn0W5HWQQZR8jYFT8SysndsVjLbU0l1DMPICyMQ7qSFck78A0s7TLTOXCdClbPXzUi_q1FBrWOyF9tX5mrq9Q14aUfugzGQaS8DUQfpkIi921E7W1VBkWa5ZiWiYtZwen2e_NKtuIntJyIMB5jqWZ9AivouTj5GyrQCmHIRl-RqZZ_VpKbo_W616C_llyq_U43ByhApNdipx1wmsY_K0_CyRuXAZbqVQe8XTxH1RlnH1l2WXZrwqOfT0uVhnyHVoNJFSYi_oE1R38HUFlmmNMUaPQ4YK-CAbp-W1TKIWEmsJ0qyss6qNHTBw6kRiW7lURnBvYlG0LVO_8PEml7IyQ7itNLFA-EMfdTwLUQm0zziehVW6FM_XiPyp361KY1CHJeBtHbNkeBSyKGX-VOUXMJeaZmBEcWfYpeauySnf5ZZH6C4llNNdRj3XhBLGzV2bmgRquWfau9wkjiqxoY1LTBP-eh6Dvy63dpnpuPau4xJv14KftuN60NYGrJZLnV1ObA8aEdtxdk3btRCYWGSXu9jaI4DftBzCdm0Yj7tLqcssaOh5ZNeybQuwcALwjgN_TaKKXUIByKaes2tRx4QmjAKQzV3X3eWeZUOvrunxXZNCWxgMsB727bJdzgAjZy4UcsuGHrjp7XJqw2woMz131zKRBpbJoLHpOg7fZRY8QjeMwMhNBx4tE9o5LoOObZe7QDdKAbXJGVDJ9aADz4WhmZTBlB3PsXeZTYCm1DRhthYlAM-JS_CvbTm7jLnQD2cODJNDQwo9U5gi8zzL2zWRXrsOA3rDI2AEUBgQd1wOYyacY88wFGJaSHgXOrI8C4fFiUl2HW5BO5MBUWzi2Cb-BcJbNrOBrBax8BnnZcOwEBehQEoGwFAC1VDrwAyQLlwR18O-YabM4_YutZCMDMgKxa6D6w0zgnKPA2KTmTANauPaAW_BhKnlOPDs4IJz0wYScmQFE2cODAG0sCwYFwfcsC4wGJgMcQAVA5ICnwLjWkgvmAe0x6WHFQZU1AEoioxaeWqfr87Vwz8GZTkq3u7tPTw8vBmJcpBF8jFO5JsgG-6NQH5ADF-rnYLXKEB7ffhv_66_H328fX30YXhxeS1vvsiD99n4d3_w_tvxyX3_i__r4-On04M_fv1wJu8-nf1ykv3ykF0JK3wdfnr0gxP_t59vB08fbovMdy5j85F_Lj6Pbx-sbN-Js_Mr-jTg52k0_DTMXt_-It4XTib52d3T9_7nP-7zDw-hdB8eSOmf0f6314NP2e1V_-H8lFxfmCGX-8l7czD4JOyH1zeEvXbEye3TxxPnVJwOfg3d499uf_ndCbNbxzv9fDr6_vmAJE707Sij9MndP7yNHuNxfH171w_GN9JxvnwvL73797-Gv8vD14-Hgw-_fz8eP_7Ggz9uH61vVx9-eziXh_fubVm-P_3Vubu2xklxdLx_c9v3UvJ5OPhO-qejX39PsuQP_lv6_i79fvKJX99f_-L99vm9-MCikXt8cxUBSX9Si7JXr8o7fUK70EtU_TLiUg6VprO1psJnJUWVMn7e0G0aKvGZ29BpGiotN68ho01DJUtzG5KmoVItc7v2WhhR9GrLstemwTuM0fIYtHOFZZLQrStwV-qDVt8Qk6Tl5DmUj9Wz1ldauWs9WikCFG-tsLRIt5V-pRqUuq-0rFJZ85RVW9dqNaXlW2lWLY1KV6HW1ApL62it9bXka5OhdYFWOG21q4VZKYUJrTrkAdKBrVRmFY0pPpwNR1leGvIR_1HhYif4U1sxhVFA5YkcFvtPh5fXk6C0XXiMKeSpg8-VrdYbeKU2xBBpYl5Sg-IeD5C_f36Oq6HCRig91y8dpFk-nJyzbNd_GgtMJqKp1_a_6qATcKpC9U5DvxmFGsJUmYqVVUWcBskY-C2t9tkr90CmGK3WoXjFZTAMtZsM3Z6lwEhV23u91Yosq7edq2B4P3vY6bSvelVA1UsWKBhKnyK0OsoDUBrLjhGgf6ZGqYdzkmS-SFi9FN0xdtrQuvBOi9WFLEUoSrF3BnJW7MFE9hQd4OH5kNFx074W_FT72DvGt4b8e0tTY3Jwrlr8F6lBW8SoYCY4tkGUYq9hUzxHfTOIZdQmCBYaVelaJOmHYYwpGZHUm5Yb0OY5sm0TaR-EplAvErWYZlK2FoUw4f8xxfc0NqBMg2TbFMGeD3PcO22RBAuNqnQtohyr2KQ5t1dsQJtnuLZNImBWUHR1Kr6hUrd8PeaR-vWyTVinQrEdJdzwTdVth20mZc-I8U7r7x_E7FVHo1azdhXQlrivsnaTkbb0VV00ITJbXTTxUM7GMolIti6MeSBSeSPBI-zIoio2qvK1ZPEIQB8w16SzPxtQZwrTtkl0mcuhBEv7TGFNVaxFpYMsS8LsIZ2cet6ATs9wbZtSZ-mdTMdAgzaVWoVrUUi_JocHKTcgTYNk637kpOeOI6lKDV28FlluHrIIlnsDmlQYtmzoql7bxJgU_eBmTh_8_RhVx35fNndtok8Bb9fsPRt5Q_xnp5nXNYRHiTrdLpLjLBhv4qB2EW1bXru9tyk1qTGqqrXkdnJUfAMKTXBsWXYn_Xb1-6RwzdgmP1BH7jfynyocWw_3svSuUBmSlts-KVszAJ68MKw2pDYKg7uoth8Md_vvxsRVnTGpXM_NxJcEchDIjSSqheUvUDh111Papin-wQ3j1SATF0iu5SPAizhFZ7c7qsmqTBAuuRjTKBtsuhDXeTjM8DQBYP7TzGpr3s3CYaFRla5nSc9BIE5EMdpE8isU285iVN12BB3KDF24XhZZQq06rL5JGnmCZNvi3fTcJgqWGnXxemYiexJJuZF10Bi2zSK6167BrIrWNQDaLevnw6c_w-1EPH-Z14mdz3Y6dc16IqSU4Ob-RAfP1gWp3XlHllTFAjfixzKWzTFWfAV4lYxpG3Kre4TdIc_y4VTFetbuIMkKuXEE0MKybcZsdd0mjio26vL1koPqpYkQt2A3CajbaLas7dtdd4ijy42qYi3qHMok9qv9og2o00azZeq0u25Tp1u-ZpqhGMUb06aFZfu55EnX3WxDq3jNjHuKp3MBhwz1Yc-NUu7TyLaufZ6NoCNnrVqjrv7BDWR1g4I-eLKKfWwBbtU8dgbcSmu3boJY1ziepUEuBd4aMYzLjQS5hWfbLPpRXX82TqsX5hoKTVWsfcjoGCeCN9luds6oRrNt-hxnaZlF-hXxhjhYiml5Xb4WbfCF0z-BNm00fw1trqb27GvaXM0-HbGcZMn7uMRh1a-LFBvJ1zNs2zeY00Po2s261miq1xO4LJf1m7TrUGwG_NZ39PHFD4gWp9RRp_gHN5K4c1zfK7SKjWzgtmoi28NtCN65HWk9A_lzmgVf8fKjW3G_yQZAB8-2-RHpgP0-o40uXEtM95PNTkwo-K2fJ02mzklUBWt6BvFwI48gHm49xwV9dlJb6vd6J43zYXEu07tyk9PXDZItR8ZNx91TacPCqIvXtPraDw778M_HaOP4bya-7XPNXRpH8az4b1L1nxL8TVKK_Txf5v0JOis_qmC3e8JmetyzkqRV1SbnTPUVcBufNNVots-neRmL5Nlh06p8o9Om_TCU4dQb55u9WvEM3V92euIsjcbFVB6s4aqmdi3C3UoxytLJNtPGlJuJb_tHduOh2ksTQ9ndndc1RlO1FtEwcSEfIVLYxMNqkGzZuDYdTydj6tK1iHIZp6MsTssmvlydJtM4ts44z-bQYp2qblEA_WMZ0-qWWXXJ7EpRYgtwq2FiZ8AN5Tu35a67zTjQNx3puzM22kxr8PwFyf7J5eidJP-kdM0tkXFegC05GOc5XlC9yX5IB9P26dPpvkskXWVM6jY7nXkpU1luvME2C91f5me0xjDb1eg02Ix8R4-jrBjn8s-gXY3rLyNcPYDZVGtqf3BzcTLI8KN8Kv25StzVwG035mqPtyG8KjUOp7aUVjuAidewb5DingG_9X0TiPOOs_xB5B0nD4uNSfkifqwe6xuZ9J0Q-PghK_XFElhc_3inBmGMC1m976SiAHUBRH05Il4CASQ8jKMIHE2817KekL4yAjG07xjE3-3bHa5gfcqnt8ZV_-qoty8HcpiVA-MkE2EPoo07WDrjOolHI5kXPX3FcXXA8q3BGO19TuNvY2mcHb41TFeKgPuEStt0PE6okNS3hfC45Zvc9qPIs6Rp2dSLfEty33ao8F3P8xixQsrtnhqaurHireGavepuCuiH9KprSt4a172rcSrfGie5FBBxG9dllkoDy3oK8kp-e2vYVu9sOEriIEYQ1vs30AX8i_J__p1Dw_95ZRGjzAy8CM24GeSywKu1eq-Y9U8sxqu4DH0XFzJ7j0NxXOejjPprE4a6z6_3yvQQZqhv1jA6BOo5ThuyW_eKMwQ8S0uZJPEdLhwg42oEeJ1cewSvuKPKW-fCmsqDLM_HoxLGgox2kYXqLjAjx7_AgW-s-vLIihXntmAvtuAvtjBfbGG92MJ-sYXzYov6o1NKiLtszxaxPVjiEPik1_8OhsXoD8eJLNss7pOI-R4TlFHTD03uM-Byi1okMvEiGUosj0rmRq7wIscKPNcJHDMSJnM8Swhfdljc8dosS7osy0iH60QqDPV9pOr4koGfKuj1kyQL4KEwMMp8GMhkiNxxXebxV9lDbmpQzGbRV5SxNgNjR71aPtSt6MB9ivdwpLg3LMCYNrccGFqB9WiH1etIztBpCmM_S8cFCBh5xvJ_8-wyPMtn8OzhuPhq_JyOg6-J7O0D4YOBcQWr39HItiVMn4U2Dd3IClhAmOBeSCICuldyzyPUJQHxAwtY2XEC3xTSDlyPUc5NGbldjczmsivtVVcLGZXONuLCMMk_e_0wLAzFYB5vqa9QswUU64xpoRtSE4uYadQXftb802rIvTajNSh1S2DWSrXnajsDVCqZo1L5TGX__xs_zuI2s8ttnz-cffp81Ju8b96rLqA39mVS9tQl7uAhZMgHvKMrnYhZPHQ9cAoC0InEFRwcAmH5krIoJMBrhEZ2xF3CLCdyTGoHvoz8MJA8pCKadgca5rOmzPupKAxutEaitCfoKnWrvFF_Ug5vak5wz-YsxdUuk6ee29FaCkF1o7pxJ_DurR6d3wK8srDHOvzoo6KbABtRng3BkY1K4-jbGH2oUIso5y8B5cjYU1D_r1r6WTxozeTBc5mNQGD_DzjBxX8VRh_WUwDpekdDP8_iEO-yMMCrv5fPXFWXtFnT9V0pwUATEnLmgnH2qE2klH4U0tAxuRVKO7TCyA3tgNky9GjIhQhM1xWhKd0p1qSLPdUbqCuGIkWGvI7zPAZT2OJl2lWkU65qh0G1Dqw8T48ucC4965lRpx2e04TFIekII4L4KexV6rbORwBPUvZPo3lXplGURe_XbJwbeIm9EcDcJiCzWxt4fwYOSRjgoahBQdevLTAR_5lcPYtn7RlW-iQDchg_Sznq_QzELYBUN7HIxTR_mqQTSoUBsaXtm7bjEhI5AQ0kCYUfcmJTYoLu9BkwqGsSj1iBGVoyNCkJRGDbUcBD3-syKNkglHKshfw5J5Sy7flRESXkxbCohsQbvnqMvsy5XY068T-BPw2dWQbvk84Pov42-1j1nH0v8LTUFxknvWORBMAeea173wvkol51PT9wBmjQZ0wNcXjbGyW-58nQskH3isACY28GthUSxiMmWMgt5guHmpI4wOIBpR6ETpwxM_Rsm9KALJcfwP-nGPssx4AJ-XrV8nly8Cyl4HSSBPra8V2joo4h0mk-X5hT8JT01MAQ6aH1f2WaC2SKdQzF_H5fsRlpB_RhZvjCr0z2d9rhzwrh3FnSJWRSlOju4Q5c70SibYRg-aEtNYFpEeoTRmwvtCKJ2QUJrrJ0HSuyCHeIw5jjRD6jBC_iltx3BfEx9wZyFPr2slJTyYC6ihMWV6qra0CJ-mJBTUs-3LZ88Gd2gpmax2ZmBvBC1CrAMyKM1MBMisktnPqAT4_abRafChF7-PkTg1o6UzICIVafdjF-jpMEvfSufEwD6-jTxQFy_qz2Feg2FYJWt4FOJJIvmlPX3-q4bn_LznzZWdDCmy9d3gzpugV3dACeCSyVzHtf4iLAK5mMT-MYgsG2hBHmUEHArxemxyl4UJRwLpwwYqHn2Ca3Q_D6HcrR9bdcCWEqdbyA81AKEphROD9Qtc2u89RN6s3wUsCbybs5EZV8A3dqUfIE9XSDtuLChxhmr24a1hk63um7ncHTRoctk-XzVhl_V2A7EvC3vwXTJDOY9mg4egKCgTM9ztN5ab3ADBwvjCIPAtTAojKIQosT0xRQFgUBPDghCyCYBV9L8MCy3IA4thUEQehEnk0WpPWmvJw5ab0uH3eUqHJSqLcohdckBV26kK9fUZ3Nm_aE3OcuDNXOPbLt7HAV3KeZTs7fung1P4bSmZmZm4E08HvZqDtKeO4_yt51nICm1UmzNvvaoS3Ao48sBkzJKYfQNWLM8iJQuYJYJIRoALx_07KZFVDfYZ4fRRAnmJFpBp7gc7MvpMXJdCpBjd8PMh4GMjWesrEh0MdQJ7cx__ZkCMwbPvROgBBlYXxMi0SMMQEXjvEj3IZUTedRZGpH6aJ_cnbQu8xK9Og_J2U8xLSIuqta5yMrEh1mQZl1DBGjlmmC_QGpDpnruJbnenYIsZBDfQtCIc4g7Hd8lwGliOkCGbnHXI-Gjs9dP_IXRf3zUvek53TC6_4Qd9LrnGmV4KyUO4gP5iiBWjoF2tAT3Sx02pTTtZQkzaQkX4aSysPrUPKLzNWuXYuUNOI-cSPi-KZPpW1FTPpEmA4jrmDgGvvcdzxBMeNne55N_QCsuXAjz4mozSib3qhbkpRsISnRRy0M8oaRSQ4ZPVW9tf8n6Z-ZdJ2d0f-gvu1UGqfZSIIAiwd1jGtaWokfctMEb8ezXc494bq2LyIS2XYY2jbE8DziUgYuCS3h-TZQWdjEdUMaRZSYxJ1LyY60skXS6gOBhiA9efZdpj3cpl-RITsxMC6Ibg0mIAdxB8uCSeQ5tLM2oJ3gDoinbTm-HwAPui6xmW86ZsSEyQMvlNSiphXYQKdI0oC4QRgRT7oMRBoMu7WcpvtxaWfPpN2FvBNJNhRpLILeYSyGyP1tqnkWMyHaJYHtcMIi37L8iJtEEBlBgEtcKjwZ-pJLx4181yMQ8hIShtTypM8Cb9q96Xg0zZb5ARiBCELafjxslULUoHZcqjDhz3YPZpJpVubtQIAPlDwVQ3DD42IIjqG6ULZNJ4tQ0GcQsbiOABtpOYw70rYlt8BUBr4TCpcFdshoIPDzWSi1wqJceoFvSYuxaXPRUWVzQpV2iNty9msfkFrrBwhTcQtUd_PEE7eu6uvH8ddmLqo7k_f7KHNFqR0AkavvKPbws7ivz9XxuufSwAkEn67LwbkHJSttbkc--PSBME0mQy8EEYGFBu8pCANuOSalEoNVyYnHJbPYtDRciTAeY8pnCO5ad81VkXGpv0dWxXywAoYGAee6AJ2BLpLxypy5q_4h06_CL4NCJWxMtU1brbwojKPHMhfPd_X_L8qeN3OZjjEpB7MZYLwxY1H8QBJp2uBToFj5FHwIl4JfS2ToCur4gS9DTj2PCGk7ngX-nBtwJ-B-4NgysvzplMGCRalo2aYi3l6BiXk89APuUIk5a9yE88HvrhRZ2EM5ysYlFCIhwcNItbcLy_aEW3f4obkV1dvM41Szotjz8TBOMxjpXN1lStBBrhMAY1NL-IHpQyDgh5hacQMTrKTvexZ1KAE9xhwvgvjWYT5Eta5p-h6zF-qurl55UQs5a2m6F3QXn5Nt-Y9QXmx2kHeQpWWeYULVwFOywywfDTIQ_lkS4jg2aCHLkipT5tjChfUkAkM_cBtBMOxQ-JFnm7YDUR0HBxxMli1dyamg1I3mScgXPE4MOqbr87yiZP5Wxcc0eaqivcJoi9NFpaZUfmWGnE3LlLGUTL12XkhFvKZVKgK___ufn4uYYiD8eNyC88qd78olmf5E4aX_-epcfRpWfdwW18NgO83XCyfnqBdC8AaiC6APQtfHomeA63M9tNWjtQ6C9pDpOghaM6Dmagh0QNyeAlsHQXsKEx7R20RnIbSfBflePsjE0B-qnPndyuUQ6E9izvxC5pIjUB-2nP2dy3mMg2fYmimbLzXX_Gww4_pBjGax2zLj1B8JnfnN0OUQ6E99zvzy53II9PdMZ37edO7U9bmqZs7WkrRqsaT7Eog-cN0AsJcATmUybAPYyy5gA-K9yCJZ-GTUHxKvoZxlZz-XU-b2pm7unAjhUpqvRWPeVsr6LRP82rcIQSOLPBjcSjSRhfogqX7Fpf4c-JdYPhiFanRd5tjDgndLvmdZ_W1Rrn_9oj4Xjk-_VtN8t3cpysHHaH8cJyEMk_2r9795OnQh

(Any build using Herald of Thunder, Alchemist's Boon, or other skills with specific stat descriptions will reproduce this issue on Linux/WSL systems)

Before screenshot:

image image

After screenshot:

image ---

Commits included in this PR:

  1. Fix path case sensitivity of 'specific skill stat description' in StatDescriber (for Linux)
  2. Fix file handler leak in StatDescriber
  3. Normalize scope name handling for case sensitivity on Linux
  4. Add tests for the StatDescriber getScope

Files changed:

  • src/Modules/StatDescriber.lua
  • spec/System/TestStatDescriber_spec.lua

@Nightblade
Copy link
Contributor

Hi, I'm Nighty, executive pedant, human-powered linter, and officially the unofficial imaginary mascot of PoB.
Please ensure .lua files are TAB indented.
Thanks and apologies!

@LocalIdentity LocalIdentity merged commit 05632bc into PathOfBuildingCommunity:dev Aug 20, 2025
2 checks passed
@LocalIdentity LocalIdentity changed the title Fix: StatDescriber scope loading on Linux/WSL with comprehensive test coverage Fix Gem tooltips crashing on Linux Aug 20, 2025
@LocalIdentity LocalIdentity added the crash Causes PoB to crash and is High Priority label Aug 20, 2025
Tonkat pushed a commit to Tonkat/PathOfBuilding-PoE2 that referenced this pull request Sep 1, 2025
… coverage (PathOfBuildingCommunity#1169)

* Fix path case sensitivity of 'specific skill stat description' in StatDescriber (for Linux)

* Fix file handler leak in StatDescriber

* Normalize scope name handling for case sensitivity on Linux

* Add tests for the StatDescriber getScope

* Fix indents

---------

Co-authored-by: LocalIdentity <localidentity2@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

crash Causes PoB to crash and is High Priority

Projects

None yet

Development

Successfully merging this pull request may close these issues.

StatDescriber fails to load skill-specific descriptions on Linux/WSL due to case sensitivity

3 participants