1515
1616namespace Test
1717{
18-
1918 public class CoverletExeArgumentsProvider_Tests
2019 {
20+ private const string testProjectName = "TestProject" ;
2121 [ Test ]
2222 public void Should_Have_ExcludeByAttribute_Setting_For_Each_ExcludeByAttribute ( )
2323 {
@@ -43,12 +43,99 @@ public void Should_Unqualified_Qualified_ExcludeByAttribute()
4343 AssertHasSetting ( coverletSettings , "--exclude-by-attribute ExcludeByAttribute1" ) ;
4444 }
4545
46+ [ Test ]
47+ public void Should_Not_Add_Test_Test_Assembly_To_Includes_When_IncludeTestAssembly_And_No_Other_Includes ( )
48+ {
49+ var mockCoverageProject = SafeMockCoverageProject ( ) ;
50+ mockCoverageProject . SetupGet ( cp => cp . Settings . IncludeTestAssembly ) . Returns ( true ) ;
51+
52+ var coverletExeArgumentsProvider = new CoverletExeArgumentsProvider ( ) ;
53+ var coverletSettings = coverletExeArgumentsProvider . GetArguments ( mockCoverageProject . Object ) ;
54+
55+ Assert . IsFalse ( HasIncludedTestAssemblySetting ( coverletSettings ) ) ;
56+ }
57+
58+ private bool HasIncludedTestAssemblySetting ( List < string > coverletSettings )
59+ {
60+ return coverletSettings . Any ( coverletSetting => coverletSetting == $@ "--include ""[{ testProjectName } ]*""") ;
61+ }
62+
63+ [ Test ]
64+ public void Should_Add_Test_Test_Assembly_To_Includes_When_IncludeTestAssembly_And_Other_Includes ( )
65+ {
66+ var mockCoverageProject = SafeMockCoverageProject ( ) ;
67+ mockCoverageProject . SetupGet ( cp => cp . Settings . IncludeTestAssembly ) . Returns ( true ) ;
68+ mockCoverageProject . SetupGet ( cp => cp . Settings . Include ) . Returns ( new string [ ] { "[anassembly]*" } ) ;
69+
70+ var coverletExeArgumentsProvider = new CoverletExeArgumentsProvider ( ) ;
71+ var coverletSettings = coverletExeArgumentsProvider . GetArguments ( mockCoverageProject . Object ) ;
72+
73+ Assert . IsTrue ( HasIncludedTestAssemblySetting ( coverletSettings ) ) ;
74+ }
75+
76+ [ Test ]
77+ public void Should_Add_IncludedReferencedProjects_As_Include ( )
78+ {
79+ var mockCoverageProject = SafeMockCoverageProject ( ) ;
80+ var mockReferencedProject = new Mock < IReferencedProject > ( ) ;
81+ mockReferencedProject . SetupGet ( rp => rp . AssemblyName ) . Returns ( "ReferencedProject" ) ;
82+ mockCoverageProject . SetupGet ( cp => cp . IncludedReferencedProjects ) . Returns ( new List < IReferencedProject > { mockReferencedProject . Object } ) ;
83+
84+ var coverletExeArgumentsProvider = new CoverletExeArgumentsProvider ( ) ;
85+ var coverletSettings = coverletExeArgumentsProvider . GetArguments ( mockCoverageProject . Object ) ;
86+
87+ Assert . True ( coverletSettings . Contains ( $@ "--include ""[ReferencedProject]*""") ) ;
88+
89+ }
90+
91+ [ Test ]
92+ public void Should_Include_From_Settings ( )
93+ {
94+ var mockCoverageProject = SafeMockCoverageProject ( ) ;
95+ mockCoverageProject . SetupGet ( cp => cp . Settings . Include ) . Returns ( new string [ ] { "[Include]*" } ) ;
96+
97+ var coverletExeArgumentsProvider = new CoverletExeArgumentsProvider ( ) ;
98+ var coverletSettings = coverletExeArgumentsProvider . GetArguments ( mockCoverageProject . Object ) ;
99+
100+ Assert . True ( coverletSettings . Contains ( $@ "--include ""[Include]*""") ) ;
101+
102+ }
103+
104+ public void Should_Add_ExcludedReferencedProjects_As_Exclude ( )
105+ {
106+ var mockCoverageProject = SafeMockCoverageProject ( ) ;
107+ var mockReferencedProject = new Mock < IReferencedProject > ( ) ;
108+ mockReferencedProject . SetupGet ( rp => rp . AssemblyName ) . Returns ( "ReferencedProject" ) ;
109+ mockCoverageProject . SetupGet ( cp => cp . ExcludedReferencedProjects ) . Returns ( new List < IReferencedProject > { mockReferencedProject . Object } ) ;
110+
111+ var coverletExeArgumentsProvider = new CoverletExeArgumentsProvider ( ) ;
112+ var coverletSettings = coverletExeArgumentsProvider . GetArguments ( mockCoverageProject . Object ) ;
113+
114+ Assert . True ( coverletSettings . Contains ( $@ "--exclude ""[ReferencedProject]*""") ) ;
115+
116+ }
117+
118+ [ Test ]
119+ public void Should_Exclude_From_Settings ( )
120+ {
121+ var mockCoverageProject = SafeMockCoverageProject ( ) ;
122+ mockCoverageProject . SetupGet ( cp => cp . Settings . Exclude ) . Returns ( new string [ ] { "[Exclude]*" } ) ;
123+
124+ var coverletExeArgumentsProvider = new CoverletExeArgumentsProvider ( ) ;
125+ var coverletSettings = coverletExeArgumentsProvider . GetArguments ( mockCoverageProject . Object ) ;
126+
127+ Assert . True ( coverletSettings . Contains ( $@ "--exclude ""[Exclude]*""") ) ;
128+
129+ }
130+
131+
46132 private Mock < ICoverageProject > SafeMockCoverageProject ( )
47133 {
48134 var mockCoverageProject = new Mock < ICoverageProject > ( ) ;
49135 mockCoverageProject . SetupGet ( coverageProject => coverageProject . IncludedReferencedProjects ) . Returns ( new List < IReferencedProject > ( ) ) ;
50136 mockCoverageProject . SetupGet ( coverageProject => coverageProject . ExcludedReferencedProjects ) . Returns ( new List < IReferencedProject > ( ) ) ;
51137 mockCoverageProject . SetupGet ( coverageProject => coverageProject . Settings ) . Returns ( new Mock < IAppOptions > ( ) . Object ) ;
138+ mockCoverageProject . Setup ( coverageProject => coverageProject . ProjectName ) . Returns ( testProjectName ) ;
52139 return mockCoverageProject ;
53140 }
54141
0 commit comments