diff options
-rw-r--r-- | giscanner/scannermain.py | 7 | ||||
-rw-r--r-- | tests/scanner/test_scanner.py | 10 |
2 files changed, 16 insertions, 1 deletions
diff --git a/giscanner/scannermain.py b/giscanner/scannermain.py index c004fb19..4b723695 100644 --- a/giscanner/scannermain.py +++ b/giscanner/scannermain.py @@ -505,7 +505,12 @@ def get_source_root_dirs(options, filenames): if not dirs: return [] - common = os.path.commonpath(dirs) + try: + common = os.path.commonpath(dirs) + except ValueError: + # ValueError: On Windows in case the paths are on different drives + return dirs + # If the only common path is the root directory give up if os.path.dirname(common) == common: return dirs diff --git a/tests/scanner/test_scanner.py b/tests/scanner/test_scanner.py index 2513c0de..85953964 100644 --- a/tests/scanner/test_scanner.py +++ b/tests/scanner/test_scanner.py @@ -25,6 +25,16 @@ class TestScanner(unittest.TestCase): paths = get_source_root_dirs(options, []) self.assertEqual(paths, []) + @unittest.skipUnless(os.name == "nt", "Windows only") + def test_get_source_root_dirs_different_drives(self): + options = optparse.Values({"sources_top_dirs": []}) + names = [ + os.path.join("X:", os.sep, "foo"), + os.path.join("Y:", os.sep, "bar"), + ] + paths = get_source_root_dirs(options, names) + self.assertEqual(paths, list(map(os.path.dirname, names))) + if __name__ == '__main__': unittest.main() |