I need help getting this program to work going from windows to mac

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)

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()

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.

1 Like

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?