[ruby-core:122360] [Ruby Bug#21391] Inconsistent trailing slash behavior of File.join and Pathname#join with empty strings
From:
"Dan0042 (Daniel DeLorme) via ruby-core" <ruby-core@...>
Date:
2025-06-01 13:02:13 UTC
List:
ruby-core #122360
SXNzdWUgIzIxMzkxIGhhcyBiZWVuIHVwZGF0ZWQgYnkgRGFuMDA0MiAoRGFuaWVsIERlTG9ybWUp Lg0KDQoNCkl0J3Mgbm90IHRoZSBvbmx5IGluY29uc2lzdGVudCBiZWhhdmlvcjoNCmBgYHJ1YnkN CkZpbGUuam9pbigiL3VzciIsIi92YXIiKSAgICAgICAgICAgICAgICM9PiAiL3Vzci92YXIiDQpQ YXRobmFtZS5uZXcoIi91c3IiKS5qb2luKCIvdmFyIikudG9fcyAjPT4gIi92YXIiDQoNCkZpbGUu am9pbigiL3VzciIsIi4uL3ZhciIpICAgICAgICAgICAgICAgIz0+ICIvdXNyLy4uL3ZhciINClBh dGhuYW1lLm5ldygiL3VzciIpLmpvaW4oIi4uL3ZhciIpLnRvX3MgIz0+ICIvdmFyIg0KDQpGaWxl LmpvaW4oIi91c3IiLCIvLi4vdmFyIikgICAgICAgICAgICAgICAjPT4gIi91c3IvLi4vdmFyIg0K UGF0aG5hbWUubmV3KCIvdXNyIikuam9pbigiLy4uL3ZhciIpLnRvX3MgIz0+ICIvLi4vdmFyIg0K YGBgDQoNCmBGaWxlLmpvaW5gIHNpbXBseSBqb2lucyB0d28gc3RyaW5ncyB0b2dldGhlciB3aXRo IGEgc2VwYXJhdG9yLCB3aGVyZWFzIGBQYXRobmFtZSNqb2luYCBpcyBhIGxvZ2ljYWwgb3BlcmF0 aW9uIG9uIHR3byBwYXRocy4gSXQncyBub3JtYWwgZm9yIHRoZXJlIHRvIGJlIGRpZmZlcmVuY2Vz Lg0KDQpUaGF0IGJlaW5nIHNhaWQsIEkgZmVlbCB0aGF0IGBQYXRobmFtZS5uZXcoJy91c3InKS5q b2luKCcnKWAgaXMgYSBub25zZW5zaWNhbCBvcGVyYXRpb24uIEl0IHNlZW1zIHRvIHJlc3VsdCBp biBhIG5vLW9wLCBidXQgaXQgbWlnaHQgYmUgYmV0dGVyIHRvIHdhcm4gb3IgcmFpc2UgYW4gZXJy b3IuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkJ1ZyAjMjEz OTE6IEluY29uc2lzdGVudCB0cmFpbGluZyBzbGFzaCBiZWhhdmlvciBvZiBGaWxlLmpvaW4gYW5k IFBhdGhuYW1lI2pvaW4gd2l0aCBlbXB0eSBzdHJpbmdzDQpodHRwczovL2J1Z3MucnVieS1sYW5n Lm9yZy9pc3N1ZXMvMjEzOTEjY2hhbmdlLTExMzUwMw0KDQoqIEF1dGhvcjogbG92cm8tYmlraWMg KExvdnJvIEJpa2nEhykNCiogU3RhdHVzOiBPcGVuDQoqIHJ1YnkgLXY6IHJ1YnkgMy40LjQgKDIw MjUtMDUtMTQgcmV2aXNpb24gYTM4NTMxZmQzZikgK1BSSVNNIFt4ODZfNjQtZGFyd2luMjNdDQoq IEJhY2twb3J0OiAzLjI6IFVOS05PV04sIDMuMzogVU5LTk9XTiwgMy40OiBVTktOT1dODQotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpgYGBydWJ5DQpGaWxlLmpvaW4o Jy91c3InLCAnJykNCiMgPT4gIi91c3IvIg0KDQpQYXRobmFtZS5uZXcoJy91c3InKS5qb2luKCcn KS50b19zDQojID0+ICIvdXNyIiAjIG5vIHRyYWlsaW5nIHNsYXNoDQoNCkZpbGUuam9pbignL3Vz cicsICcgJykNCiMgPT4gIi91c3IvICINCg0KUGF0aG5hbWUubmV3KCcvdXNyJykuam9pbignICcp LnRvX3MNCiMgPT4gIi91c3IvICINCmBgYA0KDQpgRmlsZS5qb2luYCB3aXRoIGFuIGVtcHR5IHN0 cmluZyBhZGRzIGEgdHJhaWxpbmcgc2xhc2gsIGBQYXRobmFtZSNqb2luYCBkb2Vzbid0Lg0KV2hl biBgUGF0aG5hbWUjam9pbmAgYXJndW1lbnQgaXMgYSBzdHJpbmcgd2l0aCBlbXB0eSB3aGl0ZXNw YWNlLCBhIHRyYWlsaW5nIHNsYXNoIGlzIGFkZGVkIChwbHVzIHdoaXRlc3BhY2UpLg0KDQpJIHRo aW5rIGl0J3MgYSBjb21tb24gdXNlLWNhc2UgdG8gYXBwZW5kIGEgdHJhaWxpbmcgc2xhc2ggdG8g YFBhdGhuYW1lYCwgYW5kIGN1cnJlbnRseSB5b3UgaGF2ZSB0byByZXNvcnQgdG8gb3RoZXIgbWV0 aG9kcyBzdWNoIGFzIHN0cmluZyBpbnRlcnBvbGF0aW9uIChlLmcuIGluIFJhaWxzLCBgIiN7UmFp bHMucm9vdH0vImApIG9yIGBGaWxlLmpvaW5gIChlLmcuIGBGaWxlLmpvaW4oUmFpbHMucm9vdCwg JycpYCkuDQoNCkluIG90aGVyIHBvcHVsYXIgbGFuZ3VhZ2VzLCBib3RoIGFwcHJvYWNoZXMgaGF2 ZSBiZWVuIHRha2VuOg0KLSBbYG9zLnBhdGguam9pbmAgaW4gUHl0aG9uXShodHRwczovL2RvY3Mu cHl0aG9uLm9yZy8zLjEyL2xpYnJhcnkvb3MucGF0aC5odG1sI29zLnBhdGguam9pbikgYWRkcyBh IHRyYWlsaW5nIHNsYXNoOg0KYGBgcHl0aG9uDQppbXBvcnQgb3MNCm9zLnBhdGguam9pbignL3Vz cicsICcnKQ0KIyAnL3Vzci8nDQpgYGANCi0gW1BhdGguam9pbiBpbiBSdXN0XShodHRwczovL2Rv Yy5ydXN0LWxhbmcub3JnL3N0ZC9wYXRoL3N0cnVjdC5QYXRoLmh0bWwjbWV0aG9kLmpvaW4pIGFk ZHMgYSB0cmFpbGluZyBzbGFzaDoNCmBgYHJ1c3QNCnVzZSBzdGQ6OnBhdGg6OntQYXRofTsNCg0K Zm4gbWFpbigpIHsNCiAgICBwcmludGxuISgie30iLCBQYXRoOjpuZXcoIi91c3IiKS5qb2luKCIi KS5kaXNwbGF5KCkpOw0KICAgIC8vIHByaW50cyAiL3Vzci8iDQp9DQpgYGANCi0gW3BhdGguam9p biBpbiBOb2RlXShodHRwczovL25vZGVqcy5vcmcvYXBpL3BhdGguaHRtbCNwYXRoam9pbnBhdGhz KSBkb2Vzbid0IGFkZCBhIHRyYWlsaW5nIHNsYXNoOg0KYGBganMNCmNvbnN0IHBhdGggPSByZXF1 aXJlKCdwYXRoJyk7DQoNCnBhdGguam9pbignL3VzcicsICcnKTsNCi8vICcvdXNyJw0KYGBgDQot IFtmaWxlcGF0aC5Kb2luIGluIEdvXShodHRwczovL3BrZy5nby5kZXYvcGF0aC9maWxlcGF0aCNK b2luKSBkb2Vzbid0IGFkZCBhIHRyYWlsaW5nIHNsYXNoOg0KYGBgZ28NCnBhY2thZ2UgbWFpbg0K DQppbXBvcnQgKCJmbXQiOyAicGF0aC9maWxlcGF0aCIpDQoNCmZ1bmMgbWFpbigpIHsNCiAgZm10 LlByaW50bG4oZmlsZXBhdGguSm9pbigiL3VzciIsICIiKSkNCiAgLy8gcHJpbnRzICIvdXNyIg0K fQ0KYGBgDQoNCg0KDQotLSANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLw0KX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwogcnVieS1jb3JlIG1haWxpbmcg bGlzdCAtLSBydWJ5LWNvcmVAbWwucnVieS1sYW5nLm9yZwogVG8gdW5zdWJzY3JpYmUgc2VuZCBh biBlbWFpbCB0byBydWJ5LWNvcmUtbGVhdmVAbWwucnVieS1sYW5nLm9yZwogcnVieS1jb3JlIGlu Zm8gLS0gaHR0cHM6Ly9tbC5ydWJ5LWxhbmcub3JnL21haWxtYW4zL2xpc3RzL3J1YnktY29yZS5t bC5ydWJ5LWxhbmcub3JnLwo=