@@ -76,7 +76,10 @@ internal static Dictionary<string, object> Build(string sourcePath, int lineNumb
76
76
internal static Type ? ParseType ( String classPath )
77
77
{
78
78
if ( String . IsNullOrEmpty ( classPath ) || ! new FileInfo ( classPath ) . Exists )
79
+ {
80
+ Console . Error . WriteLine ( $ "Class `{ classPath } ` not exists .") ;
79
81
return null ;
82
+ }
80
83
try
81
84
{
82
85
var root = CSharpSyntaxTree . ParseText ( File . ReadAllText ( classPath ) ) . GetCompilationUnitRoot ( ) ;
@@ -116,36 +119,36 @@ private static string LoadTestSuiteTemplate()
116
119
117
120
private static string FillFromTemplate ( string template , Type type , string classPath ) =>
118
121
template
119
- . Replace ( TAG_TEST_SUITE_NAMESPACE , type . Namespace )
122
+ . Replace ( TAG_TEST_SUITE_NAMESPACE , String . IsNullOrEmpty ( type . Namespace ) ? "GdUnitDefaultTestNamespace" : type . Namespace )
120
123
. Replace ( TAG_TEST_SUITE_CLASS , type . Name + "Test" )
121
124
. Replace ( TAG_SOURCE_RESOURCE_PATH , classPath )
122
125
. Replace ( TAG_SOURCE_CLASS_NAME , type . Name )
123
126
. Replace ( TAG_SOURCE_CLASS_VARNAME , type . Name ) ;
124
127
128
+ internal static ClassDeclarationSyntax ClassDeclaration ( CompilationUnitSyntax root )
129
+ {
130
+ NamespaceDeclarationSyntax namespaceSyntax = root . Members . OfType < NamespaceDeclarationSyntax > ( ) . FirstOrDefault ( ) ;
131
+ return namespaceSyntax == null
132
+ ? root . Members . OfType < ClassDeclarationSyntax > ( ) . First ( )
133
+ : namespaceSyntax . Members . OfType < ClassDeclarationSyntax > ( ) . First ( ) ;
134
+ }
135
+
125
136
internal static int TestCaseLineNumber ( CompilationUnitSyntax root , string testCaseName )
126
137
{
127
- NamespaceDeclarationSyntax namespaceSyntax = root . Members . OfType < NamespaceDeclarationSyntax > ( ) . First ( ) ;
128
- ClassDeclarationSyntax ? programClassSyntax = namespaceSyntax ? . Members . OfType < ClassDeclarationSyntax > ( ) . First ( ) ;
129
138
// lookup on test cases
130
- return programClassSyntax ? . Members . OfType < MethodDeclarationSyntax > ( )
139
+ return ClassDeclaration ( root ) . Members . OfType < MethodDeclarationSyntax > ( )
131
140
. FirstOrDefault ( method => method . Identifier . Text . Equals ( testCaseName ) )
132
141
. Body ? . GetLocation ( ) . GetLineSpan ( ) . StartLinePosition . Line ?? - 1 ;
133
142
}
134
143
135
- internal static bool TestCaseExists ( CompilationUnitSyntax root , string testCaseName )
136
- {
137
- NamespaceDeclarationSyntax namespaceSyntax = root . Members . OfType < NamespaceDeclarationSyntax > ( ) . First ( ) ;
138
- ClassDeclarationSyntax ? programClassSyntax = namespaceSyntax ? . Members . OfType < ClassDeclarationSyntax > ( ) . First ( ) ;
139
- return programClassSyntax ? . Members . OfType < MethodDeclarationSyntax > ( )
140
- . Any ( method => method . Identifier . Text . Equals ( testCaseName ) ) ?? false ;
141
- }
144
+ internal static bool TestCaseExists ( CompilationUnitSyntax root , string testCaseName ) =>
145
+ ClassDeclaration ( root ) . Members . OfType < MethodDeclarationSyntax > ( ) . Any ( method => method . Identifier . Text . Equals ( testCaseName ) ) ;
142
146
143
147
internal static CompilationUnitSyntax AddTestCase ( SyntaxTree syntaxTree , string testCaseName )
144
148
{
145
149
var root = syntaxTree . GetCompilationUnitRoot ( ) ;
146
- NamespaceDeclarationSyntax ? namespaceSyntax = root . Members . OfType < NamespaceDeclarationSyntax > ( ) . First ( ) ;
147
- ClassDeclarationSyntax ? programClassSyntax = namespaceSyntax ? . Members . OfType < ClassDeclarationSyntax > ( ) . First ( ) ;
148
- SyntaxNode insertAt = programClassSyntax ? . ChildNodes ( ) . Last ( ) ! ;
150
+ ClassDeclarationSyntax programClassSyntax = ClassDeclaration ( root ) ;
151
+ SyntaxNode insertAt = programClassSyntax . ChildNodes ( ) . Last ( ) ! ;
149
152
150
153
AttributeSyntax testCaseAttribute = SyntaxFactory . Attribute ( SyntaxFactory . IdentifierName ( "TestCase" ) ) ;
151
154
AttributeListSyntax attributes = SyntaxFactory . AttributeList ( SyntaxFactory . SingletonSeparatedList < AttributeSyntax > ( testCaseAttribute ) ) ;
@@ -171,22 +174,14 @@ internal static CompilationUnitSyntax AddTestCase(SyntaxTree syntaxTree, string
171
174
internal static string ? FindMethod ( string sourcePath , int lineNumber )
172
175
{
173
176
SyntaxTree syntaxTree = CSharpSyntaxTree . ParseText ( File . ReadAllText ( sourcePath ) ) ;
174
- var root = syntaxTree . GetCompilationUnitRoot ( ) ;
175
- var spanToFind = syntaxTree . GetText ( ) . Lines [ lineNumber - 1 ] . Span ;
176
-
177
- NamespaceDeclarationSyntax ? namespaceSyntax = root . Members . OfType < NamespaceDeclarationSyntax > ( ) . First ( ) ;
178
- if ( namespaceSyntax == null )
179
- {
180
- Console . Error . WriteLine ( $ "Can't parse method name from { sourcePath } :{ lineNumber } . Error: no namespace found.") ;
181
- return null ;
182
- }
183
- ClassDeclarationSyntax ? programClassSyntax = namespaceSyntax . Members . OfType < ClassDeclarationSyntax > ( ) . First ( ) ;
177
+ ClassDeclarationSyntax programClassSyntax = ClassDeclaration ( syntaxTree . GetCompilationUnitRoot ( ) ) ;
184
178
if ( programClassSyntax == null )
185
179
{
186
180
Console . Error . WriteLine ( $ "Can't parse method name from { sourcePath } :{ lineNumber } . Error: no class declararion found.") ;
187
181
return null ;
188
182
}
189
183
184
+ var spanToFind = syntaxTree . GetText ( ) . Lines [ lineNumber - 1 ] . Span ;
190
185
// lookup on properties
191
186
foreach ( PropertyDeclarationSyntax m in programClassSyntax . Members . OfType < PropertyDeclarationSyntax > ( ) )
192
187
{
0 commit comments