From b223138ab200eb61575acc642fa89f25ee967b4a Mon Sep 17 00:00:00 2001 From: Alan Hamlett Date: Mon, 7 Sep 2015 13:25:08 -0700 Subject: [PATCH] tests for project detection --- tests/samples/projects/git/emptyfile.txt | 0 tests/samples/projects/hg/emptyfile.txt | 0 .../projects/project_map/emptyfile.txt | 0 tests/samples/projects/svn/emptyfile.txt | 0 .../wakatime_project_file/.wakatime-project | 1 + .../wakatime_project_file/emptyfile.txt | 0 tests/samples/svn_output | 5 ++ tests/test_wakatime_project.py | 89 +++++++++++++++++++ 8 files changed, 95 insertions(+) create mode 100644 tests/samples/projects/git/emptyfile.txt create mode 100644 tests/samples/projects/hg/emptyfile.txt create mode 100644 tests/samples/projects/project_map/emptyfile.txt create mode 100644 tests/samples/projects/svn/emptyfile.txt create mode 100644 tests/samples/projects/wakatime_project_file/.wakatime-project create mode 100644 tests/samples/projects/wakatime_project_file/emptyfile.txt create mode 100644 tests/samples/svn_output create mode 100644 tests/test_wakatime_project.py diff --git a/tests/samples/projects/git/emptyfile.txt b/tests/samples/projects/git/emptyfile.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/samples/projects/hg/emptyfile.txt b/tests/samples/projects/hg/emptyfile.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/samples/projects/project_map/emptyfile.txt b/tests/samples/projects/project_map/emptyfile.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/samples/projects/svn/emptyfile.txt b/tests/samples/projects/svn/emptyfile.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/samples/projects/wakatime_project_file/.wakatime-project b/tests/samples/projects/wakatime_project_file/.wakatime-project new file mode 100644 index 0000000..2e6ecb5 --- /dev/null +++ b/tests/samples/projects/wakatime_project_file/.wakatime-project @@ -0,0 +1 @@ +waka-project-file diff --git a/tests/samples/projects/wakatime_project_file/emptyfile.txt b/tests/samples/projects/wakatime_project_file/emptyfile.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/samples/svn_output b/tests/samples/svn_output new file mode 100644 index 0000000..9f4d28b --- /dev/null +++ b/tests/samples/svn_output @@ -0,0 +1,5 @@ +Path: . +Working Copy Root Path: /Users/user/projects/svn +URL: http://code.googlecode.com/svn +Relative URL: ^/ +Repository Root: http://code.googlecode.com/svn diff --git a/tests/test_wakatime_project.py b/tests/test_wakatime_project.py new file mode 100644 index 0000000..a847d58 --- /dev/null +++ b/tests/test_wakatime_project.py @@ -0,0 +1,89 @@ +# -*- coding: utf-8 -*- + + +from wakatime.main import execute +from wakatime.packages import requests +from wakatime.packages.requests.models import Response + +import time +from wakatime.compat import u +from . import utils + + +class LanguagesTestCase(utils.TestCase): + patch_these = [ + 'wakatime.packages.requests.adapters.HTTPAdapter.send', + 'wakatime.offlinequeue.Queue.push', + ['wakatime.offlinequeue.Queue.pop', None], + 'wakatime.session_cache.SessionCache.save', + 'wakatime.session_cache.SessionCache.delete', + ['wakatime.session_cache.SessionCache.get', requests.session], + ] + + def test_project_argument_overrides_detected_project(self): + response = Response() + response.status_code = 0 + self.patched['wakatime.packages.requests.adapters.HTTPAdapter.send'].return_value = response + + now = u(int(time.time())) + entity = 'tests/samples/projects/git/emptyfile.txt' + config = 'tests/samples/sample.cfg' + + args = ['--project', 'forced-project', '--file', entity, '--config', config, '--time', now] + + execute(args) + + self.assertEquals('forced-project', self.patched['wakatime.offlinequeue.Queue.push'].call_args[0][0]['project']) + + def test_wakatime_project_file(self): + response = Response() + response.status_code = 0 + self.patched['wakatime.packages.requests.adapters.HTTPAdapter.send'].return_value = response + + now = u(int(time.time())) + entity = 'tests/samples/projects/wakatime_project_file/emptyfile.txt' + config = 'tests/samples/sample.cfg' + + args = ['--file', entity, '--config', config, '--time', now] + + execute(args) + + self.assertEquals('waka-project-file', self.patched['wakatime.offlinequeue.Queue.push'].call_args[0][0]['project']) + + def test_git_project_detected(self): + response = Response() + response.status_code = 0 + self.patched['wakatime.packages.requests.adapters.HTTPAdapter.send'].return_value = response + + now = u(int(time.time())) + entity = 'tests/samples/projects/git/emptyfile.txt' + config = 'tests/samples/sample.cfg' + + args = ['--file', entity, '--config', config, '--time', now] + + execute(args) + + self.assertEquals('git', self.patched['wakatime.offlinequeue.Queue.push'].call_args[0][0]['project']) + + def test_svn_project_detected(self): + response = Response() + response.status_code = 0 + self.patched['wakatime.packages.requests.adapters.HTTPAdapter.send'].return_value = response + + with utils.mock.patch('wakatime.projects.git.Git.process') as mock_git: + mock_git.return_value = False + + with utils.mock.patch('wakatime.projects.subversion.Popen.communicate') as mock_popen: + stdout = open('tests/samples/svn_output').read() + stderr = '' + mock_popen.return_value = (stdout, stderr) + + now = u(int(time.time())) + entity = 'tests/samples/projects/svn/emptyfile.txt' + config = 'tests/samples/sample.cfg' + + args = ['--file', entity, '--config', config, '--time', now] + + execute(args) + + self.assertEquals('svn', self.patched['wakatime.offlinequeue.Queue.push'].call_args[0][0]['project'])