You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2013/05/13 23:56:34 UTC
[3/4] git commit: [#6212] Support config option to disable counting
lines-of-code
[#6212] Support config option to disable counting lines-of-code
Signed-off-by: Cory Johns <cj...@slashdotmedia.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/c7d03b33
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/c7d03b33
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/c7d03b33
Branch: refs/heads/master
Commit: c7d03b33a30f9d9ed474b41773ee4240e1fae47c
Parents: 9912f31
Author: Cory Johns <cj...@slashdotmedia.com>
Authored: Mon May 13 20:44:53 2013 +0000
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Mon May 13 21:56:19 2013 +0000
----------------------------------------------------------------------
Allura/allura/model/stats.py | 28 ++++++++-------
ForgeUserStats/forgeuserstats/tests/test_model.py | 30 ++++++++++++++++
2 files changed, 45 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c7d03b33/Allura/allura/model/stats.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/stats.py b/Allura/allura/model/stats.py
index 166933e..3946557 100644
--- a/Allura/allura/model/stats.py
+++ b/Allura/allura/model/stats.py
@@ -20,6 +20,7 @@ import pymongo
from pylons import tmpl_context as c, app_globals as g
from pylons import request
from tg import config
+from paste.deploy.converters import asbool
import bson
from ming import schema as S
@@ -501,19 +502,20 @@ class Stats(MappedClass):
oldcommit = newcommit.repo.commit(newcommit.parent_ids[0])
totlines = 0
- for changed in d.changed:
- newblob = newcommit.tree.get_blob_by_path(changed)
- oldblob = oldcommit.tree.get_blob_by_path(changed)
- totlines+=_computeLines(newblob, oldblob)
-
- for copied in d.copied:
- newblob = newcommit.tree.get_blob_by_path(copied['new'])
- oldblob = oldcommit.tree.get_blob_by_path(copied['old'])
- totlines+=_computeLines(newblob, oldblob)
-
- for added in d.added:
- newblob = newcommit.tree.get_blob_by_path(added)
- totlines+=_computeLines(newblob)
+ if asbool(config.get('userstats.count_lines_of_code', True)):
+ for changed in d.changed:
+ newblob = newcommit.tree.get_blob_by_path(changed)
+ oldblob = oldcommit.tree.get_blob_by_path(changed)
+ totlines+=_computeLines(newblob, oldblob)
+
+ for copied in d.copied:
+ newblob = newcommit.tree.get_blob_by_path(copied['new'])
+ oldblob = oldcommit.tree.get_blob_by_path(copied['old'])
+ totlines+=_computeLines(newblob, oldblob)
+
+ for added in d.added:
+ newblob = newcommit.tree.get_blob_by_path(added)
+ totlines+=_computeLines(newblob)
_addCommitData(self, topics, languages, totlines)
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c7d03b33/ForgeUserStats/forgeuserstats/tests/test_model.py
----------------------------------------------------------------------
diff --git a/ForgeUserStats/forgeuserstats/tests/test_model.py b/ForgeUserStats/forgeuserstats/tests/test_model.py
index 2da99e1..dd77b32 100644
--- a/ForgeUserStats/forgeuserstats/tests/test_model.py
+++ b/ForgeUserStats/forgeuserstats/tests/test_model.py
@@ -21,6 +21,7 @@ from datetime import datetime, timedelta
from pylons import tmpl_context as c
from tg import config
+import mock
from alluratest.controller import setup_basic_test, setup_global_objects
from allura.tests import decorators as td
@@ -400,3 +401,32 @@ class TestUserStats(unittest.TestCase):
self.assertEqual(stats.start_date, datetime(2013,04,01))
with h.push_config(config, **{'userstats.start_date': '2011-04-01'}):
self.assertEqual(stats.start_date, datetime(2012,04,01))
+
+ @mock.patch('allura.model.stats.difflib.unified_diff')
+ def test_count_loc(self, unified_diff):
+ stats = USM.UserStats()
+ newcommit = mock.Mock(
+ parent_ids=['deadbeef'],
+ diffs=mock.Mock(
+ changed=[mock.MagicMock()],
+ copied=[mock.MagicMock()],
+ added=[mock.MagicMock()],
+ ),
+ )
+ unified_diff.return_value = ['+++','---','+line']
+ newcommit.tree.get_blob_by_path.return_value = mock.MagicMock()
+ newcommit.tree.get_blob_by_path.return_value.__iter__.return_value = ['one']
+ newcommit.repo.commit().tree.get_blob_by_path.return_value = mock.MagicMock()
+ newcommit.repo.commit().tree.get_blob_by_path.return_value.__iter__.return_value = ['two']
+ commit_datetime = datetime.now()
+ project = mock.Mock(
+ trove_topic=[],
+ trove_language=[],
+ )
+ stats.addCommit(newcommit, commit_datetime, project)
+ self.assertEqual(stats.general[0].commits[0], {'lines': 3, 'number': 1, 'language': None})
+ unified_diff.reset_mock()
+ with h.push_config(config, **{'userstats.count_lines_of_code': 'false'}):
+ stats.addCommit(newcommit, commit_datetime, project)
+ self.assertEqual(stats.general[0].commits[0], {'lines': 3, 'number': 2, 'language': None})
+ unified_diff.assert_not_called()