I'm trying to read from a file in my project's directory.
My problem is, that depending on the caller, the path changes. The caller changes, because I want to unit test this code and the caller is not Main.go
anymore.
This is what my project structure looks like:
The code where I try to access specialChars.txt
from looks like this:
func RemoveSpecialChars(word string) string {
file, err := ioutil.ReadFile("wordlists/specialChars.txt")
[...]
}
This code works for the start from Main.go
but not for the start from CleanupUtil_test.go
. To get it working from the test I would need file, err := ioutil.ReadFile("../wordlists/specialChars.txt")
I found answers like this one: https://stackoverflow.com/a/32163888/2837489
_, filename, _, ok := runtime.Caller(0)
which is obviously also dependent on the caller.
Is it possible to get the projects root path independent of the calling function? Or is my code design wrong? Should I pass the file path into the function?