AbstractResourceAccessor generates path in a unpredictable way

Description

We have servers in more than 50 countries.
We switched to Liquibase 3.2.2 because with this version the checksums are less sensible to machine locale.

Unfortunately, switching to 3.2.2 proven to be difficult because the path resolution was slightly different every time we tried to upgrade to 3.2.2 a new country.

  1. Liquibase is sensible to how rootPath are terminated (with slash or not)

  2. Liquibase includeAll relative resolution can generate unexpected absolute paths

  3. Liquibase iterates over rootPaths in a way that is not deterministic given the command line. This can cause production of different paths depending on the name of the folders including chagesets. the same log.xml put in /opt/sa/ can produce different paths if put in /opt/ar/

After a lot of experimentation with the command line I was not able to work around all the cases.

I then decided to debug the code and found 3 problems in class AbstractResourceAccessor.
I created Unit tests and fix for them and I'm submitting a pull request: https://github.com/liquibase/liquibase/pull/299

Please review and merge if all is OK.

Environment

Found on Centos 6.x servers.
Replicated via unit tests.

Reporter

valentino miazzo

Components

Fix versions

Affects versions

Priority

Major
Configure