Description
I combine a bunch of Windows unit test fixes into one patch to make things cleaner. They all originated from obvious Windows/Unix inconsistencies, which includes:
1. Path separator inconsistency: "/" vs "\"
2. Path component separator inconsistency: ":" vs ";"
3. "volume:" is not acceptable as URI
4. Unix tools/commands (eg, bash, rm) does not exist in Windows
5. .sh script need a .cmd companion in Windows
6. "\r\n" vs "\n" as newline
7. Environment variable use different name (USER vs USERNAME)
8. File not closed, not an issue in Unix, but an issue in Windows (not able to remove a open file)