get_relative_path: shorten data_folder everywhere it appears#86
get_relative_path: shorten data_folder everywhere it appears#86abrignoni wants to merge 1 commit into
Conversation
The relative-source-paths fix shortened the returned source_path per
newline segment, but artifacts that join multiple absolute paths with
other separators (', ', '; ', ' ') only had the first path shortened:
startswith matches the head of the concatenated string, strips one
prefix, and the rest stayed absolute. Spotted by James Habben.
Replace the startswith branch with a global replacement of the
data_folder prefix, so every embedded occurrence is shortened regardless
of separator. All previous behaviors are preserved (exact path, literal
passthrough, already-relative, no data_folder) and covered by tests.
Verification summaryVetted this change against current Behavior is correct. Ran the old vs. new
The six non-concatenation cases are byte-identical old vs. new; only the three genuinely-broken joined-path cases change, which is exactly the intent. Complements the existing per-newline shortening in the Mechanics: current Two notes for the merger:
Touches core |
Follow-up to the relative-source-paths fix, prompted by @JamesHabben's question about concatenated source paths.
The gap: the decorator shortens
source_pathper newline segment. Artifacts that join multiple absolute paths with other separators (', ','; ',' ') only had the first path shortened —startswithmatches the head of the concatenated string, strips one prefix, and the rest stayed absolute:The fix:
Context.get_relative_pathnow globally replaces the data_folder prefix wherever it appears, separator-agnostic — same spirit as the oldfile_found.replace(seeker.data_folder, '')idiom. Artifacts that already relativize before joining (Oops-style, ~24 in iLEAPP) are unaffected: relative segments pass through untouched.Verified: unit tests cover exact path, path == data_folder, literals, already-relative, None, comma/semicolon/space-joined absolute paths, newline decorator path, and no-data_folder passthrough. pylint 10.00/10, byte-compile, PluginLoader smoke test all pass.
Affected artifacts that this transparently fixes: iLEAPP box/home_depot/idstatuscache/sysdiagnose (+skg_archive if its parts are paths), ALEAPP FCM family/siminfo/wifiConfigstore2/wifiProfiles. RLEAPP/VLEAPP have no current emitters — this keeps the four frameworks identical and future-proof.