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

Side by Side Diff: appengine/findit/crash/test/findit_for_chromecrash_test.py

Issue 2344443005: [Findit] Factoring the gitiles (etc) stuff out into its own directory (Closed)
Patch Set: reordering imports Created 4 years, 1 month 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 unified diff | Download patch
OLDNEW
1 # Copyright 2016 The Chromium Authors. All rights reserved. 1 # Copyright 2016 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 from common import chrome_dependency_fetcher 5 from common import chrome_dependency_fetcher
6 from common import git_repository
7 from common.dependency import DependencyRoll 6 from common.dependency import DependencyRoll
8 from common.http_client_appengine import HttpClientAppengine 7 from common.http_client_appengine import HttpClientAppengine
9 from crash import chromecrash_parser 8 from crash import chromecrash_parser
10 from crash import detect_regression_range 9 from crash import detect_regression_range
11 from crash import findit_for_chromecrash 10 from crash import findit_for_chromecrash
12 from crash.changelist_classifier import ChangelistClassifier 11 from crash.changelist_classifier import ChangelistClassifier
13 from crash.chromecrash_parser import ChromeCrashParser 12 from crash.chromecrash_parser import ChromeCrashParser
14 from crash.component_classifier import ComponentClassifier 13 from crash.component_classifier import ComponentClassifier
15 from crash.crash_report import CrashReport 14 from crash.crash_report import CrashReport
16 from crash.culprit import Culprit 15 from crash.culprit import Culprit
17 from crash.culprit import NullCulprit 16 from crash.culprit import NullCulprit
18 from crash.findit_for_chromecrash import FinditForChromeCrash 17 from crash.findit_for_chromecrash import FinditForChromeCrash
19 from crash.findit_for_chromecrash import FinditForFracas 18 from crash.findit_for_chromecrash import FinditForFracas
20 from crash.findit import Findit 19 from crash.findit import Findit
21 from crash.project_classifier import ProjectClassifier 20 from crash.project_classifier import ProjectClassifier
22 from crash.results import MatchResult 21 from crash.results import MatchResult
23 from crash.stacktrace import CallStack 22 from crash.stacktrace import CallStack
24 from crash.stacktrace import Stacktrace 23 from crash.stacktrace import Stacktrace
25 from crash.test.crash_pipeline_test import DummyCrashData 24 from crash.test.crash_pipeline_test import DummyCrashData
26 from crash.test.crash_testcase import CrashTestCase 25 from crash.test.crash_testcase import CrashTestCase
27 from crash.type_enums import CrashClient 26 from crash.type_enums import CrashClient
27 from lib.gitiles import gitiles_repository
28 from model import analysis_status 28 from model import analysis_status
29 from model.crash.crash_analysis import CrashAnalysis 29 from model.crash.crash_analysis import CrashAnalysis
30 from model.crash.fracas_crash_analysis import FracasCrashAnalysis 30 from model.crash.fracas_crash_analysis import FracasCrashAnalysis
31 31
32 # In production we'd use CrashWrapperPipeline. And that'd work fine here, 32 # In production we'd use CrashWrapperPipeline. And that'd work fine here,
33 # since we never actually call the method that uses it. But just to be 33 # since we never actually call the method that uses it. But just to be
34 # absolutely sure we don't go over the wire due to some mocking failure, 34 # absolutely sure we don't go over the wire due to some mocking failure,
35 # we'll use this dummy class instead. (In fact, since it's never used, 35 # we'll use this dummy class instead. (In fact, since it's never used,
36 # we don't even need to give a real class; |None| works just fine.) 36 # we don't even need to give a real class; |None| works just fine.)
37 MOCK_PIPELINE_CLS = None 37 MOCK_PIPELINE_CLS = None
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 return {} 70 return {}
71 71
72 def _FinditForFracas(): 72 def _FinditForFracas():
73 """A helper to pass in the standard pipeline class.""" 73 """A helper to pass in the standard pipeline class."""
74 return FinditForFracas(MOCK_REPOSITORY, MOCK_PIPELINE_CLS) 74 return FinditForFracas(MOCK_REPOSITORY, MOCK_PIPELINE_CLS)
75 75
76 76
77 class FinditForChromeCrashTest(CrashTestCase): 77 class FinditForChromeCrashTest(CrashTestCase):
78 78
79 chrome_dep_fetcher = chrome_dependency_fetcher.ChromeDependencyFetcher( 79 chrome_dep_fetcher = chrome_dependency_fetcher.ChromeDependencyFetcher(
80 git_repository.GitRepository(http_client=HttpClientAppengine())) 80 gitiles_repository.GitilesRepository(http_client=HttpClientAppengine()))
81 81
82 # TODO(wrengr): what was the purpose of this test? As written it's 82 # TODO(wrengr): what was the purpose of this test? As written it's
83 # just testing that mocking works. I'm guessing it was to check that 83 # just testing that mocking works. I'm guessing it was to check that
84 # we fail when the analysis is for the wrong client_id; but if so, 84 # we fail when the analysis is for the wrong client_id; but if so,
85 # then we shouldn't need to mock FindCulprit... 85 # then we shouldn't need to mock FindCulprit...
86 def testFindCulprit(self): 86 def testFindCulprit(self):
87 self.mock(FinditForChromeCrash, 'FindCulprit', 87 self.mock(FinditForChromeCrash, 'FindCulprit',
88 lambda self, *_: NullCulprit()) 88 lambda self, *_: NullCulprit())
89 89
90 # TODO(wrengr): would be less fragile to call 90 # TODO(wrengr): would be less fragile to call
91 # FinditForFracas.CreateAnalysis instead; though if I'm right about 91 # FinditForFracas.CreateAnalysis instead; though if I'm right about
92 # the original purpose of this test, then this is one of the few 92 # the original purpose of this test, then this is one of the few
93 # places where calling FracasCrashAnalysis directly would actually 93 # places where calling FracasCrashAnalysis directly would actually
94 # make sense. 94 # make sense.
95 analysis = FracasCrashAnalysis.Create({'signature': 'sig'}) 95 analysis = FracasCrashAnalysis.Create({'signature': 'sig'})
96 # TODO(wrengr): shouldn't FracasCrashAnalysis.Create already have set 96 # TODO(wrengr): shouldn't FracasCrashAnalysis.Create already have set
97 # the client_id? 97 # the client_id?
98 analysis.client_id = CrashClient.FRACAS 98 analysis.client_id = CrashClient.FRACAS
99 99
100 findit_client = _FinditForChromeCrash( 100 findit_client = _FinditForChromeCrash(
101 git_repository.GitRepository(http_client=HttpClientAppengine())) 101 gitiles_repository.GitilesRepository(http_client=HttpClientAppengine()))
102 result, tags = findit_client.FindCulprit(analysis).ToDicts() 102 result, tags = findit_client.FindCulprit(analysis).ToDicts()
103 # TODO(wrengr): just test for the NullCulprit directly; instead of 103 # TODO(wrengr): just test for the NullCulprit directly; instead of
104 # going through |ToDicts|. 104 # going through |ToDicts|.
105 expected_result, expected_tags = NullCulprit().ToDicts() 105 expected_result, expected_tags = NullCulprit().ToDicts()
106 self.assertDictEqual(result, expected_result) 106 self.assertDictEqual(result, expected_result)
107 self.assertDictEqual(tags, expected_tags) 107 self.assertDictEqual(tags, expected_tags)
108 108
109 109
110 class FinditForFracasTest(CrashTestCase): 110 class FinditForFracasTest(CrashTestCase):
111 111
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 expected_tag = { 309 expected_tag = {
310 'found_suspects': False, 310 'found_suspects': False,
311 'found_project': False, 311 'found_project': False,
312 'found_components': False, 312 'found_components': False,
313 'has_regression_range': False, 313 'has_regression_range': False,
314 'solution': 'core_algorithm', 314 'solution': 'core_algorithm',
315 } 315 }
316 316
317 self.assertDictEqual(expected_results, results) 317 self.assertDictEqual(expected_results, results)
318 self.assertDictEqual(expected_tag, tag) 318 self.assertDictEqual(expected_tag, tag)
OLDNEW
« no previous file with comments | « appengine/findit/crash/test/crash_testcase.py ('k') | appengine/findit/crash/test/results_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698