rana-cli/tests/test_utils.py
Håkon Solbjørg 4fded99f98
feat: Support non-mapped network drives on Windows.
Adds support for tracking files on network drives that are not mapped to a specific drive letter (e.g. X:\), but rather using a UNC path directly to the share, e.g. \\Mac\Home\Documents.
2018-12-27 18:07:28 +01:00

50 lines
1.7 KiB
Python

# -*- coding: utf-8 -*-
from wakatime.utils import format_file_path
import os
from .utils import TestCase, mock
class UtilsTestCase(TestCase):
def test_format_file_path_forces_forward_slashes(self):
path = 'some\\path////to\\\\\\a\\file.txt'
expected = os.path.realpath('some/path/to/a/file.txt')
result = format_file_path(path)
self.assertPathsEqual(expected, result)
def test_format_file_path_uppercase_windows_drive(self):
path = 'c:\\some\\path////to\\\\\\a\\file.txt'
expected = 'C:/some/path/to/a/file.txt'
with mock.patch('os.path.realpath') as mock_realpath:
mock_realpath.return_value = path
with mock.patch('os.path.abspath') as mock_abspath:
mock_abspath.return_value = path
result = format_file_path(path)
self.assertPathsEqual(expected, result)
def test_format_file_path_windows_network_mount(self):
path = '\\\\some\\path////to\\\\\\a\\file.txt'
expected = '//some/path/to/a/file.txt'
with mock.patch('os.path.realpath') as mock_realpath:
mock_realpath.return_value = path
with mock.patch('os.path.abspath') as mock_abspath:
mock_abspath.return_value = path
result = format_file_path(path)
self.assertPathsEqual(expected, result)
def test_format_file_path_handles_exceptions(self):
path = 'c:\\some\\path////to\\\\\\a\\file.txt'
expected = path
with mock.patch('os.path.abspath') as mock_abspath:
mock_abspath.side_effect = Exception('foobar')
result = format_file_path(path)
self.assertPathsEqual(expected, result)