[ruby-core:122448] [Ruby Bug#21391] Inconsistent trailing slash behavior of File.join and Pathname#join with empty strings
From:
"akr (Akira Tanaka) via ruby-core" <ruby-core@...>
Date:
2025-06-05 10:13:55 UTC
List:
ruby-core #122448
SXNzdWUgIzIxMzkxIGhhcyBiZWVuIHVwZGF0ZWQgYnkgYWtyIChBa2lyYSBUYW5ha2EpLg0KDQoN CkkgZG9uJ3QgcmVjb21tZW5kIHRyYWlsaW5nIHNsYXNoIG9uIGEgcGF0aG5hbWUgYmVjYXVzZSBp dCBpcyBub3QgcG9ydGFibGUgYmV0d2VlbiBvcGVyYXRpbmcgc3lzdGVtcy4NCg0KVGhlIGJlaGF2 aW9yIG9mIFBhdGhuYW1lIChpdCBkb2Vzbid0IGFkZCBhIHRyYWlsaW5nIHNsYXNoKSByZWZsZWN0 cyB0aGlzIG15IG9waW5pb24uDQoNCmh0dHBzOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1 YnMvOTY5OTkxOTc5OS94cmF0L1Y0X3hiZF9jaGFwMDQuaHRtbA0KDQp8IFR3byB0eXBlcyBvZiBp bXBsZW1lbnRhdGlvbiBoYXZlIGJlZW4gcHJldmFsZW50OyB0aG9zZSB0aGF0IGlnbm9yZWQgdHJh aWxpbmcgPHNsYXNoPiBjaGFyYWN0ZXJzIG9uIGFsbCBwYXRobmFtZXMgcmVnYXJkbGVzcywgYW5k IHRob3NlIHRoYXQgcGVybWl0dGVkIHRoZW0gb25seSBvbiBleGlzdGluZyBkaXJlY3Rvcmllcy4N Cg0KSXQgc2VlbXMgdGhlIHN0YW5kYXJkIHRyaWVzIHRvIGZpeCB0aGlzIHNpdHVhdGlvbiwgdGhv dWdoLg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpCdWcgIzIx MzkxOiBJbmNvbnNpc3RlbnQgdHJhaWxpbmcgc2xhc2ggYmVoYXZpb3Igb2YgRmlsZS5qb2luIGFu ZCBQYXRobmFtZSNqb2luIHdpdGggZW1wdHkgc3RyaW5ncw0KaHR0cHM6Ly9idWdzLnJ1YnktbGFu Zy5vcmcvaXNzdWVzLzIxMzkxI2NoYW5nZS0xMTM2MjkNCg0KKiBBdXRob3I6IGxvdnJvLWJpa2lj IChMb3ZybyBCaWtpxIcpDQoqIFN0YXR1czogT3Blbg0KKiBydWJ5IC12OiBydWJ5IDMuNC40ICgy MDI1LTA1LTE0IHJldmlzaW9uIGEzODUzMWZkM2YpICtQUklTTSBbeDg2XzY0LWRhcndpbjIzXQ0K KiBCYWNrcG9ydDogMy4yOiBVTktOT1dOLCAzLjM6IFVOS05PV04sIDMuNDogVU5LTk9XTg0KLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KYGBgcnVieQ0KRmlsZS5qb2lu KCcvdXNyJywgJycpDQojID0+ICIvdXNyLyINCg0KUGF0aG5hbWUubmV3KCcvdXNyJykuam9pbign JykudG9fcw0KIyA9PiAiL3VzciIgIyBubyB0cmFpbGluZyBzbGFzaA0KDQpGaWxlLmpvaW4oJy91 c3InLCAnICcpDQojID0+ICIvdXNyLyAiDQoNClBhdGhuYW1lLm5ldygnL3VzcicpLmpvaW4oJyAn KS50b19zDQojID0+ICIvdXNyLyAiDQpgYGANCg0KYEZpbGUuam9pbmAgd2l0aCBhbiBlbXB0eSBz dHJpbmcgYWRkcyBhIHRyYWlsaW5nIHNsYXNoLCBgUGF0aG5hbWUjam9pbmAgZG9lc24ndC4NCldo ZW4gYFBhdGhuYW1lI2pvaW5gIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHdpdGggZW1wdHkgd2hpdGVz cGFjZSwgYSB0cmFpbGluZyBzbGFzaCBpcyBhZGRlZCAocGx1cyB3aGl0ZXNwYWNlKS4NCg0KSSB0 aGluayBpdCdzIGEgY29tbW9uIHVzZS1jYXNlIHRvIGFwcGVuZCBhIHRyYWlsaW5nIHNsYXNoIHRv IGBQYXRobmFtZWAsIGFuZCBjdXJyZW50bHkgeW91IGhhdmUgdG8gcmVzb3J0IHRvIG90aGVyIG1l dGhvZHMgc3VjaCBhcyBzdHJpbmcgaW50ZXJwb2xhdGlvbiAoZS5nLiBpbiBSYWlscywgYCIje1Jh aWxzLnJvb3R9LyJgKSBvciBgRmlsZS5qb2luYCAoZS5nLiBgRmlsZS5qb2luKFJhaWxzLnJvb3Qs ICcnKWApLg0KDQpJbiBvdGhlciBwb3B1bGFyIGxhbmd1YWdlcywgYm90aCBhcHByb2FjaGVzIGhh dmUgYmVlbiB0YWtlbjoNCi0gW2Bvcy5wYXRoLmpvaW5gIGluIFB5dGhvbl0oaHR0cHM6Ly9kb2Nz LnB5dGhvbi5vcmcvMy4xMi9saWJyYXJ5L29zLnBhdGguaHRtbCNvcy5wYXRoLmpvaW4pIGFkZHMg YSB0cmFpbGluZyBzbGFzaDoNCmBgYHB5dGhvbg0KaW1wb3J0IG9zDQpvcy5wYXRoLmpvaW4oJy91 c3InLCAnJykNCiMgJy91c3IvJw0KYGBgDQotIFtQYXRoLmpvaW4gaW4gUnVzdF0oaHR0cHM6Ly9k b2MucnVzdC1sYW5nLm9yZy9zdGQvcGF0aC9zdHJ1Y3QuUGF0aC5odG1sI21ldGhvZC5qb2luKSBh ZGRzIGEgdHJhaWxpbmcgc2xhc2g6DQpgYGBydXN0DQp1c2Ugc3RkOjpwYXRoOjp7UGF0aH07DQoN CmZuIG1haW4oKSB7DQogICAgcHJpbnRsbiEoInt9IiwgUGF0aDo6bmV3KCIvdXNyIikuam9pbigi IikuZGlzcGxheSgpKTsNCiAgICAvLyBwcmludHMgIi91c3IvIg0KfQ0KYGBgDQotIFtwYXRoLmpv aW4gaW4gTm9kZV0oaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9wYXRoLmh0bWwjcGF0aGpvaW5wYXRo cykgZG9lc24ndCBhZGQgYSB0cmFpbGluZyBzbGFzaDoNCmBgYGpzDQpjb25zdCBwYXRoID0gcmVx dWlyZSgncGF0aCcpOw0KDQpwYXRoLmpvaW4oJy91c3InLCAnJyk7DQovLyAnL3VzcicNCmBgYA0K LSBbZmlsZXBhdGguSm9pbiBpbiBHb10oaHR0cHM6Ly9wa2cuZ28uZGV2L3BhdGgvZmlsZXBhdGgj Sm9pbikgZG9lc24ndCBhZGQgYSB0cmFpbGluZyBzbGFzaDoNCmBgYGdvDQpwYWNrYWdlIG1haW4N Cg0KaW1wb3J0ICgiZm10IjsgInBhdGgvZmlsZXBhdGgiKQ0KDQpmdW5jIG1haW4oKSB7DQogIGZt dC5QcmludGxuKGZpbGVwYXRoLkpvaW4oIi91c3IiLCAiIikpDQogIC8vIHByaW50cyAiL3VzciIN Cn0NCmBgYA0KDQoNCg0KLS0gDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8NCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KIHJ1YnktY29yZSBtYWlsaW5n IGxpc3QgLS0gcnVieS1jb3JlQG1sLnJ1YnktbGFuZy5vcmcKIFRvIHVuc3Vic2NyaWJlIHNlbmQg YW4gZW1haWwgdG8gcnVieS1jb3JlLWxlYXZlQG1sLnJ1YnktbGFuZy5vcmcKIHJ1YnktY29yZSBp bmZvIC0tIGh0dHBzOi8vbWwucnVieS1sYW5nLm9yZy9tYWlsbWFuMy9saXN0cy9ydWJ5LWNvcmUu bWwucnVieS1sYW5nLm9yZy8K