diff --git a/dvc/remote/ssh.py b/dvc/remote/ssh.py index db349065b..04fdf8c3f 100644 --- a/dvc/remote/ssh.py +++ b/dvc/remote/ssh.py @@ -60,10 +60,9 @@ class RemoteSSH(RemoteBase): super(RemoteSSH, self).__init__(project, config) self.url = config.get(Config.SECTION_REMOTE_URL, '/') self.host = self.group('host') - self.user = self.group('user') - if not self.user: - self.user = config.get(Config.SECTION_REMOTE_USER, - getpass.getuser()) + self.user = (config.get(Config.SECTION_REMOTE_USER) + or self.group('user') + or getpass.getuser()) self.prefix = self.group('path') self.port = config.get(Config.SECTION_REMOTE_PORT, self.DEFAULT_PORT) self.keyfile = config.get(Config.SECTION_REMOTE_KEY_FILE, None) diff --git a/tests/unit/remote/ssh.py b/tests/unit/remote/ssh.py new file mode 100644 index 000000000..0eed57b3a --- /dev/null +++ b/tests/unit/remote/ssh.py @@ -0,0 +1,24 @@ +import getpass + +from unittest import TestCase + +from dvc.remote.ssh import RemoteSSH + + +class TestRemoteSSH(TestCase): + def test_user(self): + url = 'ssh://127.0.0.1:/path/to/dir' + config = {'url': url} + remote = RemoteSSH(None, config) + self.assertEqual(remote.user, getpass.getuser()) + + user = 'test1' + url = 'ssh://{}@127.0.0.1:/path/to/dir'.format(user) + config = {'url': url} + remote = RemoteSSH(None, config) + self.assertEqual(remote.user, user) + + user = 'test2' + config['user'] = user + remote = RemoteSSH(None, config) + self.assertEqual(remote.user, user)