public void InjectComplexToMonoCecilAtReturn() { const string sourceAssemblyName = "Mono.Cecil.dll"; const string targetAssemblyName = "Mono.Cecil_Injectee_AtReturn.dll"; File.Copy(sourceAssemblyName, targetAssemblyName, true); InjectionConfiguration configuration = new InjectionConfiguration( new List <InjecteeAssembly> { new InjecteeAssembly( targetAssemblyName, null, IntegrationTestsHelper.GetStandardAllowedAssemblyReferences().AsReadOnly() ) }.AsReadOnly(), new List <InjectedMethod> { new InjectedMethod( InjectedLibraryPath, $"{InjectedClassName}.{nameof(TestInjectedMethods.Complex)}", MethodInjectionPosition.InjecteeMethodReturn ) }.AsReadOnly() ); ExecuteSimpleInjection(configuration); }
protected static void ExecuteSimpleInjection(InjectionConfiguration configuration) { ResolvedInjectionConfiguration resolvedConfiguration = ResolvedInjectionConfigurationLoader.LoadFromInjectionConfiguration(configuration); IntegrationTestsHelper.ExecuteInjection(resolvedConfiguration); IntegrationTestsHelper.WriteModifiedAssembliesIfRequested(resolvedConfiguration); }
protected static ResolvedInjectionConfiguration ExecuteSimpleTest( InjectionConfiguration configuration, string[] injecteeMethodNames, bool assertFirstMethodMatch = true) { ResolvedInjectionConfiguration resolvedConfiguration = IntegrationTestsHelper.GetBasicResolvedInjectionConfiguration(configuration, injecteeMethodNames); ExecuteSimpleTest(resolvedConfiguration, assertFirstMethodMatch); return(resolvedConfiguration); }
protected static void ExecuteSimpleTest(ResolvedInjectionConfiguration resolvedConfiguration, bool assertFirstMethodMatch = true) { IntegrationTestsHelper.ExecuteInjection(resolvedConfiguration); IntegrationTestsHelper.WriteModifiedAssembliesIfRequested(resolvedConfiguration); if (assertFirstMethodMatch) { bool validReferenceOutput = TestContext.CurrentContext.Test.Properties.Get(nameof(ValidReferenceOutputAttribute).RemoveAttribute()) is bool tmp1 && tmp1; bool forceRegenerateReferenceOutput = TestContext.CurrentContext.Test.Properties.Get(nameof(ForceRegenerateReferenceOutputAttribute).RemoveAttribute()) is bool tmp2 && tmp2; if (validReferenceOutput && !forceRegenerateReferenceOutput) { IntegrationTestsHelper.AssertFirstMethod(resolvedConfiguration); } else { IntegrationTestsHelper.WriteReferenceOutputFile(resolvedConfiguration); Console.WriteLine(IntegrationTestsHelper.GetFormattedReferenceOutputFile()); Assert.Fail("Reference output not validated"); } } }
private void AttemptInjectUsesThirdPartyLibraryBase(bool setThirdPartyLibraryPath) { InjectedMethod injectedMethod = new InjectedMethod( InjectedLibraryPath, $"{typeof(TestInjectedMethods).FullName}.{nameof(TestInjectedMethods.UsesThirdPartyLibrary)}" ); InjectionConfiguration configuration = IntegrationTestsHelper.GetBasicInjectionConfiguration(false, false, injectedMethod); configuration = configuration .WithInjecteeAssemblies( configuration.InjecteeAssemblies.Select( assembly => { List <IAllowedAssemblyReference> list = assembly.AllowedAssemblyReferences.ToList(); list.Add( new AllowedAssemblyReference( "Tests.ThirdPartyLibrary", false, setThirdPartyLibraryPath ? "Tests.ThirdPartyLibrary.Different.dll" : null)); List <IIgnoredMemberReference> list2 = assembly.IgnoredMemberReferences.ToList(); list2.Add(new IgnoredMemberReference("some filter")); assembly = assembly .WithAllowedAssemblyReferences(list.AsReadOnly()) .WithIgnoredMemberReferences(list2.AsReadOnly()); return(assembly); }) .ToList().AsReadOnly() ); ExecuteSimpleTest( configuration, new[] { $"{InjecteeClassName}.{nameof(TestInjectee.SingleStatement)}" }, false ); }