Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1430)

Unified Diff: appengine/findit/crash/test/changelist_classifier_test.py

Issue 2605943002: Removing the mutation in the factories for getting dep repositories (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: appengine/findit/crash/test/changelist_classifier_test.py
diff --git a/appengine/findit/crash/test/changelist_classifier_test.py b/appengine/findit/crash/test/changelist_classifier_test.py
index e1ca7374e9f7325699f9dd2388925bd063372a0a..db315ea73f3c58190554dbeed5ea2edd57581c86 100644
--- a/appengine/findit/crash/test/changelist_classifier_test.py
+++ b/appengine/findit/crash/test/changelist_classifier_test.py
@@ -121,25 +121,21 @@ DUMMY_REPORT = CrashReport(None, None, None, Stacktrace(DUMMY_CALLSTACKS,
class ChangelistClassifierTest(CrashTestSuite):
+ @property
+ def _mock_http_gitiles_repo_factory(self):
+ # N.B., we must return a lambda rather than taking ``repo_url``
+ # as an additional argument to the method/property, to ensure that
+ # things have the right arity when this is eventually called. That
+ # is, we want a function of ``repo_url`` which closes over ``self``,
+ # rather than a function taking two arguments at once.
+ return lambda repo_url: GitilesRepository(
+ self.GetMockHttpClient(), repo_url)
+
def setUp(self):
super(ChangelistClassifierTest, self).setUp()
- repository = GitilesRepository(self.GetMockHttpClient())
-
- # TODO(crbug.com/677224): should replace this with an actual factory.
- def MutateTheRepo(dep_url): # pragma: no cover
- """A factory function for returning ``Repository`` objects.
-
- The current definition captures the functionality of before
- we factored out this factory method. That is, it's not really a
- "factory" but rather mutates the main repo object in place. In
- the future this should be changed to do the right thing instead.
- """
- repository.repo_url = dep_url
- return repository
-
self.changelist_classifier = changelist_classifier.ChangelistClassifier(
- repository, MutateTheRepo, 7)
+ self._mock_http_gitiles_repo_factory, 7)
def testSkipAddedAndDeletedRegressionRolls(self):
self.mock(chrome_dependency_fetcher.ChromeDependencyFetcher,
@@ -215,8 +211,9 @@ class ChangelistClassifierTest(CrashTestSuite):
dep_file_to_changelogs, ignore_cls = (
changelist_classifier.GetChangeLogsForFilesGroupedByDeps(
- regression_deps_rolls, stack_deps,
- GitilesRepository(self.GetMockHttpClient())))
+ regression_deps_rolls,
+ stack_deps,
+ self._mock_http_gitiles_repo_factory))
dep_file_to_changelogs_json = defaultdict(lambda: defaultdict(list))
for dep, file_to_changelogs in dep_file_to_changelogs.iteritems():
for file_path, changelogs in file_to_changelogs.iteritems():
@@ -328,7 +325,7 @@ class ChangelistClassifierTest(CrashTestSuite):
suspects = changelist_classifier.FindSuspects(
dep_file_to_changelogs, dep_file_to_stack_infos, stack_deps,
- lambda repo_url: GitilesRepository(self.GetMockHttpClient(), repo_url))
+ self._mock_http_gitiles_repo_factory)
self.assertListEqual([suspect.ToDict() for suspect in suspects],
expected_suspects)

Powered by Google App Engine
This is Rietveld 408576698