@@ -36,7 +36,7 @@ public Task<TestCaseDiscoveryResult> HandleRequestAsync(TestCaseDiscoveryParams
36
36
var buildResult = true ;
37
37
var testCaseDiscoveryResult = true ;
38
38
39
- var targetFiles = FilterProjectsOutIfPartOfAnSolutionTarget ( testCaseDiscoveryParams . Targets )
39
+ var targetFiles = BuildHelper . FilterProjectsOutIfPartOfAnSolutionTarget ( testCaseDiscoveryParams . Targets )
40
40
. Select ( x => x . ToString ( ) ) ;
41
41
var initParams = _initializeManager . GetInitializeParams ( ) ;
42
42
if ( initParams . RootUri . IsFile )
@@ -45,41 +45,27 @@ public Task<TestCaseDiscoveryResult> HandleRequestAsync(TestCaseDiscoveryParams
45
45
context . Logger . LogInformation ( "GetLoadedProjects from {}" , workspacePath ) ;
46
46
_baseProtocolClientManager . SendClearDiagnosticsMessage ( ) ;
47
47
48
- var graph = new ProjectGraph ( targetFiles , projects ) ;
49
- var testProjects = graph . ProjectNodesTopologicallySorted
50
- . Where ( x => x . ProjectInstance . IsTestProject ( ) ) ;
51
- foreach ( var proj in testProjects )
52
- {
53
- var globalProps = proj . ProjectInstance . GlobalProperties
54
- . Select ( x => string . Format ( "{0}={1}" , x . Key , x . Value ) )
55
- . ToArray ( ) ;
56
- context . Logger . LogInformation ( "Global Properties: {}" , string . Join ( "\n " , globalProps ) ) ;
57
- context . Logger . LogInformation ( "Start restore target: {}" , proj . ProjectInstance . FullPath ) ;
58
- var msBuildLogger = new MSBuildLogger ( _baseProtocolClientManager , testCaseDiscoveryParams . OriginId , workspacePath , proj . ProjectInstance . FullPath ) ;
59
- var result = proj . ProjectInstance . Build ( [ "Restore" ] , [ msBuildLogger ] ) ;
60
- context . Logger . LogInformation ( $ "{ proj . ProjectInstance . FullPath } restore result: { result } ") ;
61
- buildResult &= result ;
62
- }
48
+ var msBuildLogger = new MSBuildLogger ( _baseProtocolClientManager , testCaseDiscoveryParams . OriginId , workspacePath ) ;
49
+ buildResult &= BuildHelper . RestoreTestTargets (
50
+ targetFiles ,
51
+ projects ,
52
+ context . Logger ,
53
+ msBuildLogger ) ;
63
54
64
55
if ( buildResult )
65
56
{
66
- graph = new ProjectGraph ( targetFiles , projects ) ;
67
- testProjects = graph . ProjectNodesTopologicallySorted
68
- . Where ( x => x . ProjectInstance . IsTestProject ( ) ) ;
69
- foreach ( var projNode in testProjects )
70
- {
71
- context . Logger . LogInformation ( "Start building target: {}" , projNode . ProjectInstance . FullPath ) ;
72
- var msBuildLogger = new MSBuildLogger ( _baseProtocolClientManager , testCaseDiscoveryParams . OriginId , workspacePath , projNode . ProjectInstance . FullPath ) ;
73
- var result = projNode . ProjectInstance . Build ( [ "Build" ] , [ msBuildLogger ] ) ;
74
- context . Logger . LogInformation ( $ "{ projNode . ProjectInstance . FullPath } build result: { result } ") ;
75
- buildResult &= result ;
76
- }
57
+ msBuildLogger = new MSBuildLogger ( _baseProtocolClientManager , testCaseDiscoveryParams . OriginId , workspacePath ) ;
58
+ buildResult &= BuildHelper . BuildTestTargets (
59
+ targetFiles ,
60
+ projects ,
61
+ context . Logger ,
62
+ msBuildLogger ) ;
77
63
}
78
64
79
65
if ( buildResult )
80
66
{
81
- graph = new ProjectGraph ( targetFiles , projects ) ;
82
- testProjects = graph . ProjectNodesTopologicallySorted
67
+ var graph = new ProjectGraph ( targetFiles , projects ) ;
68
+ var testProjects = graph . ProjectNodesTopologicallySorted
83
69
. Where ( x => x . ProjectInstance . IsTestProject ( ) ) ;
84
70
foreach ( var proj in testProjects )
85
71
{
@@ -104,34 +90,6 @@ public Task<TestCaseDiscoveryResult> HandleRequestAsync(TestCaseDiscoveryParams
104
90
} ) ;
105
91
}
106
92
107
- private IEnumerable < BuildTargetIdentifier > FilterProjectsOutIfPartOfAnSolutionTarget ( BuildTargetIdentifier [ ] targets )
108
- {
109
- var filteredTargets = targets . ToList ( ) ;
110
- var slnList = targets
111
- . Where ( x => Path . GetExtension ( x . ToString ( ) ) == ".sln" ) ;
112
- var projList = targets
113
- . Where ( x => Path . GetExtension ( x . ToString ( ) ) == ".csproj" )
114
- . Select ( x => x . Uri . AbsolutePath )
115
- . ToList ( ) ;
116
- foreach ( var target in slnList )
117
- {
118
- var slnFile = SolutionFile . Parse ( target . ToString ( ) ) ;
119
- if ( slnFile is not null )
120
- {
121
- var projectFilesInSln = slnFile . ProjectsInOrder
122
- . Select ( x => x . AbsolutePath ) ;
123
-
124
- var includedProj = projectFilesInSln
125
- . Intersect ( projList ) ;
126
-
127
- filteredTargets
128
- . RemoveAll ( x => includedProj . Contains ( x . Uri . AbsolutePath ) ) ;
129
- }
130
- }
131
-
132
- return filteredTargets ;
133
- }
134
-
135
93
private bool RunTestDiscovery ( string ? originId , ProjectInstance proj , IEnumerable < string > targets , RequestContext context )
136
94
{
137
95
var outputPath = proj . Properties . First ( x => x . Name == "OutputPath" ) . EvaluatedValue ;
0 commit comments