#3922 revealed that we don't normalize the path parameter when creating an instance of FSSpecStore. So Store(path="foo/") and Store(path="foo") end up with different .path attributes. One way to guard against this type of bug would be to introduce a new type that models "strings that have undergone path normalization", define functions that returns instances of this type (the path normalization function) and annotate the path attribute with this type. That should reduce the rate of these "trailing path separator or not" bugs.
#3922 revealed that we don't normalize the
pathparameter when creating an instance ofFSSpecStore. SoStore(path="foo/")andStore(path="foo")end up with different.pathattributes. One way to guard against this type of bug would be to introduce a new type that models "strings that have undergone path normalization", define functions that returns instances of this type (the path normalization function) and annotate thepathattribute with this type. That should reduce the rate of these "trailing path separator or not" bugs.