So I am making a program that sorts out video files in non-video folders and non-video files in video folders and I am done as far as I can tell but I am having issues getting the program over to the client since it uses paths and I have very minimal experience with mac paths. So every time I try to have them test it the tests fail and it is all around the identifies_path_type_and_formats/1 function on line 72. I am new so general help will be appreciated but specifically, I need help getting this to work on mac. I will leave the GitHub link here. You can call it using mix Erovf “type filepath here”
Macintosh paths are simply Unix paths. There is not really a significant difference between them. So long as the special characters are escaped properly they should behave like unix.
Do you have examples of paths that are problematic?
I suspect the problem in your test is that it is using:
dir = "/erovf/test"
This is an absolute path that starts at the root of the file system. To make it a relative path you could either drop the leading slash erovf/test
or you could add a “.” at the front ./erovf/test
I suspect that this is a problematic function:
defp formats_basename(path) do
"/" <> Path.basename(path)
end
Which looks like it might be creating absolute paths when you don’t mean to.
For example if my cwd is /Users/easco/Projects/Elixir/erovf
then ask for the base name:
iex(2)> File.cwd!() |> Path.basename()
"erovf"
and formats_basename
will turn this into /erovf
which is a folder named erovf
at the root of the file system and is no longer related to the current working directory.
Sorry for the late response. The client ran the tests on his system and all of the main function related tests failed, so both identifies_misplaced_files/1 tests failed, in turn both of the mix task(run/1) tests failed (because they essentially just run identifies_misplaced_files/1). On top of that all 3 tests for identifies_path_type_and_formats/1 failed, leading to my question about paths and all probably info I should have included in the initial post so I am sorry for that. I turned “/erovf/test” into “erovf/test” and tossed format_basename/1 for just Path.basename/1 and all of my tests are passing so I am pretty happy with this solution so far. I will ask the client to pull it down one more time and run the tests again and once that happens I will return with good news or bad. Do you think that format_relative_path/1 is problematic at all?