path current result my expectation |/src/a/app-1.2.3/src/lib/module/source.c| |a/app-1.2.3/src/lib/module/source.c| |a/app-1.2.3/src/lib/.../source.c| |/src/b/app-2.2.3/src/module/source.c| |b/app-2.2.3/src/module/source.c| |b/app-2.2.3/src/.../source.c|
Damn. What happens is that the code determines `.2.3/src/` to be the longest common substring (longer that the expected `/module/`). Then it reduces it to directory components, giving only `src`. This is shorter than the threshold of 5 chars, so in the end nothing is ellipsized. It works if you change /module/ to /moduleXX/.
Fixing this isn't trivial, and without proper unit tests there is a risk to break previously working cases.
I suggest to accept the behavior for now (and merge) and I'll follow up with a fix + unit tests. But I would hate if this doesn't make it into the release just because of select (edge) cases because the status quo is just plain unusable for me. In fact I've been using this patch at work for ages where I have real-world cases and I never came across issues like this.
Thanks for looking into it again!