Fix support for forward slashes with nested folders in cd_files for Windows#115
Merged
nywilken merged 1 commit intohashicorp:mainfrom Sep 12, 2022
Merged
Conversation
Packer recommends that we use "/" as the path separator. There is a
problem with using it on Windows because of the following behaviour:
We might pass paths with forward slashes in `StepCreateCD` struct
The string `rootFolder, err := tmp.Dir("packer_to_cdrom")` makes
rootFolder use system-based slashes, which is "\" for Windows.
This rootFolder is passed to `s.AddFile(rootFolder, toAdd)`
And a mix of two slashes ruins our replace logic while going through
the `visit` function. We end up having different slashes for `allDirs`
and `discardPath` in
`intermediaryDirs := strings.Replace(allDirs, discardPath, "", 1)`
We change our replace login to don't depend on slashes.
The tests we had didn't cover such cases as we passed all files with
paths constructed with filepath.Join(dir, fname) which returns paths
with "\\" on Windows. So we added a test case to specifically check
forward slashes.
Contributor
Author
|
@nywilken Hi, very sorry for disturbing. Maybe you'll have a chance to review this |
nywilken
approved these changes
Sep 12, 2022
Contributor
nywilken
left a comment
There was a problem hiding this comment.
Hi @tempora-mutantur thanks the ping here. I've been meaning to come back to this change. At first I was a little confused on why the testing was not failing locally. But I did eventually see that I need to run it with the PACKER_ACC environment 🤦 .
This looks good to me and works as expected. I will get this in and released shortly.
Contributor
Author
|
@nywilken thank you very much |
Contributor
|
You got it! We work on getting these changes in tested and merged sooner for the future. Thanks for making the fix. Greatly appreciated. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Packer recommends that we use "/" as the path separator. There is a
problem with using it on Windows with nested folders because of the following behaviour:
We might pass paths with forward slashes in
StepCreateCDstructThe string
rootFolder, err := tmp.Dir("packer_to_cdrom")makes rootFolder use system-based slashes, which is "\" for Windows.This rootFolder is passed to
s.AddFile(rootFolder, toAdd)And a mix of two slashes ruins our replace logic while going through the
visitfunction. We end up having different slashes forallDirsanddiscardPathinintermediaryDirs := strings.Replace(allDirs, discardPath, "", 1)We change our replace login to don't depend on slashes.
The tests we had didn't cover such cases as we passed all files with paths constructed with filepath.Join(dir, fname) which returns paths with "\" on Windows. So we added a test case to specifically check forward slashes.
Thank you.