Skip to content

Commit b10adea

Browse files
committed
FEATURE_TEST_COM protects too much in RhinoMocksTestCase
Having dealt with some COM interop tests, I noticed that `FEATURE_TEST _COM` in `RhinoMocksTestCase` guards against tests that aren't COM- specific at all. Minimizing the span of code guarded by this conditional symbol reveals some tests that won't work on .NET Standard / Core 1.x but for reasons other than COM (missing `DataSet` API, and different reflection APIs). Let's fix those.
1 parent 4230d36 commit b10adea

File tree

5 files changed

+13
-3
lines changed

5 files changed

+13
-3
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ Symbol | NET35 | NET40 |
8383
`FEATURE_SYSTEM_CONFIGURATION` | :white_check_mark: | :white_check_mark: | :white_check_mark: | :no_entry_sign:
8484
`FEATURE_TARGETEXCEPTION` | :white_check_mark: | :white_check_mark: | :white_check_mark: | :no_entry_sign:
8585
`FEATURE_TEST_COM` | :white_check_mark: | :white_check_mark: | :white_check_mark: | :no_entry_sign:
86+
`FEATURE_TEST_DATASET` | :white_check_mark: | :white_check_mark: | :white_check_mark: | :no_entry_sign:
8687
`FEATURE_TEST_PEVERIFY` | :white_check_mark: | :white_check_mark: | :white_check_mark: | :no_entry_sign:
8788
`FEATURE_TEST_SERILOGINTEGRATION` | :no_entry_sign: | :no_entry_sign: | :white_check_mark: | :white_check_mark:
8889
--- | | | |
@@ -110,5 +111,6 @@ Symbol | NET35 | NET40 |
110111
* `FEATURE_SYSTEM_CONFIGURATION` - enables features that use System.Configuration and the ConfigurationManager.
111112
* `FEATURE_TARGETEXCEPTION` - enabled catching a `TargetException`. `System.Reflection.TargetException` is implemented by .NET Core but not exposed by corefx.
112113
* `FEATURE_TEST_COM` - enables COM Interop tests.
114+
* `FEATURE_TEST_DATASET` - enables tests that involve `System.Data.DataSet`s.
113115
* `FEATURE_TEST_PEVERIFY` - enables verification of dynamic assemblies using PEVerify during tests. (Only defined on Windows builds since Windows is currently the only platform where PEVerify is available.)
114116
* `FEATURE_TEST_SERILOGINTEGRATION` - enables Serilog integration tests.

buildscripts/common.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
<DiagnosticsConstants>DEBUG</DiagnosticsConstants>
4444
<NetStandard13Constants>TRACE;FEATURE_NETCORE_REFLECTION_API;FEATURE_TEST_SERILOGINTEGRATION</NetStandard13Constants>
4545
<NetStandard15Constants>$(NetStandard13Constants);FEATURE_CUSTOMMODIFIERS</NetStandard15Constants>
46-
<CommonDesktopClrConstants>TRACE;FEATURE_APPDOMAIN;FEATURE_ASSEMBLYBUILDER_SAVE;FEATURE_BINDINGLIST;FEATURE_DICTIONARYADAPTER_XML;FEATURE_CUSTOMMODIFIERS;FEATURE_EVENTLOG;FEATURE_GAC;FEATURE_GET_REFERENCED_ASSEMBLIES;FEATURE_IDATAERRORINFO;FEATURE_ISUPPORTINITIALIZE;FEATURE_LISTSORT;FEATURE_REMOTING;FEATURE_SECURITY_PERMISSIONS;FEATURE_SERIALIZATION;FEATURE_SMTP;FEATURE_SYSTEM_CONFIGURATION;FEATURE_TARGETEXCEPTION;FEATURE_TEST_COM;FEATURE_TEST_SERILOGINTEGRATION</CommonDesktopClrConstants>
46+
<CommonDesktopClrConstants>TRACE;FEATURE_APPDOMAIN;FEATURE_ASSEMBLYBUILDER_SAVE;FEATURE_BINDINGLIST;FEATURE_DICTIONARYADAPTER_XML;FEATURE_CUSTOMMODIFIERS;FEATURE_EVENTLOG;FEATURE_GAC;FEATURE_GET_REFERENCED_ASSEMBLIES;FEATURE_IDATAERRORINFO;FEATURE_ISUPPORTINITIALIZE;FEATURE_LISTSORT;FEATURE_REMOTING;FEATURE_SECURITY_PERMISSIONS;FEATURE_SERIALIZATION;FEATURE_SMTP;FEATURE_SYSTEM_CONFIGURATION;FEATURE_TARGETEXCEPTION;FEATURE_TEST_COM;FEATURE_TEST_DATASET;FEATURE_TEST_SERILOGINTEGRATION</CommonDesktopClrConstants>
4747
<DesktopClrConstants Condition="'$(OS)'=='Unix'">$(CommonDesktopClrConstants)</DesktopClrConstants>
4848
<DesktopClrConstants Condition="'$(OS)'=='Windows_NT'">$(CommonDesktopClrConstants);FEATURE_TEST_PEVERIFY</DesktopClrConstants>
4949
</PropertyGroup>

src/Castle.Core.Tests.WeakNamed/Castle.Core.Tests.WeakNamed.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
<PackageReference Include="System.Collections.Specialized" Version="4.3.0" />
4040
<PackageReference Include="System.ComponentModel" Version="4.3.0" />
4141
<PackageReference Include="System.ComponentModel.TypeConverter" Version="4.3.0" />
42+
<PackageReference Include="System.Runtime.CompilerServices.VisualC" Version="4.3.0" />
4243
<PackageReference Include="System.Runtime.InteropServices.RuntimeInformation" Version="4.3.0" />
4344
<PackageReference Include="System.Xml.XmlSerializer" Version="4.3.0" />
4445
<PackageReference Include="System.Xml.XPath" Version="4.3.0" />

src/Castle.Core.Tests/Castle.Core.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
<PackageReference Include="System.Collections.Specialized" Version="4.3.0" />
6060
<PackageReference Include="System.ComponentModel" Version="4.3.0" />
6161
<PackageReference Include="System.ComponentModel.TypeConverter" Version="4.3.0" />
62+
<PackageReference Include="System.Runtime.CompilerServices.VisualC" Version="4.3.0" />
6263
<PackageReference Include="System.Runtime.InteropServices.RuntimeInformation" Version="4.3.0" />
6364
<PackageReference Include="System.Xml.XmlSerializer" Version="4.3.0" />
6465
<PackageReference Include="System.Xml.XPath" Version="4.3.0" />

src/Castle.Core.Tests/DynamicProxy.Tests/RhinoMocksTestCase.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15-
#if FEATURE_TEST_COM
1615
namespace Castle.DynamicProxy.Tests
1716
{
1817
using System;
@@ -109,11 +108,13 @@ public void CanGetCorrectValuesFromIntPtr()
109108
Assert.AreEqual(IntPtr.Zero, buffer);
110109
}
111110

111+
#if FEATURE_TEST_DATASET
112112
[Test]
113113
public void CanProxyDataSet()
114114
{
115115
generator.CreateClassProxy(typeof (DataSet), new Type[0], new StandardInterceptor());
116116
}
117+
#endif
117118

118119
#if FEATURE_CUSTOMMODIFIERS
119120
private Type iHaveMethodWithModOptsType;
@@ -182,7 +183,11 @@ public void GenerateDynamicAssemblyHavingModopts()
182183
},
183184
callingConvention: CallingConventions.Standard);
184185

186+
#if FEATURE_LEGACY_REFLECTION_API
185187
var iHaveMethodWithModOptsType = typeBuilder.CreateType();
188+
#else
189+
var iHaveMethodWithModOptsType = typeBuilder.CreateTypeInfo().AsType();
190+
#endif
186191

187192
#if FEATURE_ASSEMBLYBUILDER_SAVE && FEATURE_TEST_PEVERIFY
188193
// Let's persist and PE-verify the dynamic assembly before it gets used in tests:
@@ -295,13 +300,15 @@ public void ProxyInternalMethod()
295300
Assert.AreEqual("Foo ", logging.LogContents);
296301
}
297302

303+
#if FEATURE_TEST_COM
298304
[Test]
299305
public void ProxyingComInteraces()
300306
{
301307
var o = generator
302308
.CreateInterfaceProxyWithoutTarget(typeof (IComServiceProvider), new StandardInterceptor());
303309
Assert.IsNotNull(o);
304310
}
311+
#endif
305312

306313
[Test]
307314
public void ProxyingGenericClassWithGenericClassConstraint()
@@ -494,4 +501,3 @@ public interface IStore1
494501
R[] TestMethod<R>();
495502
}
496503
}
497-
#endif

0 commit comments

Comments
 (0)