private void AddBuildAction(string action) { if (activeBuildActions.ContainsKey(action)) { return; } //First, get if that action still exists Type actionType = availableActions.FirstOrDefault(x => x.Name == action); if (actionType == null) { activeBuildActions.Add(action, null); return; } //Now to create it IBuildAction buildAction = (IBuildAction)Activator.CreateInstance(actionType); activeBuildActions.Add(action, buildAction); List <string> currentBuildActions = SettingsManager.BuildActions; if (currentBuildActions.Contains(action)) { return; } currentBuildActions.Add(action); SettingsManager.BuildActions = currentBuildActions; }
private static void BuildActionProcess(IBuildAction buildAction, IBuildSession buildSession) { using (Log.NamedBlock(LogLevel.Info, () => LogConst.BuildAction_Process(buildAction))) try { buildAction.Process(buildSession); } catch (Exception exception) { if (!exception.Data.Contains(ExceptionConst.Logged)) { using (Log.NamedBlock(LogLevel.Info, () => $"{LogConst.BuildAction_Process(buildAction)}.Exception: ")) exception.WriteToLog(); } throw; } }
private static void BuildActionPostProcess(IBuildAction buildAction, IBuildSession buildSession) { using (Log.NamedBlock(LogLevel.Info, () => LogConst.BuildAction_PostProcess(buildAction))) { Log.WriteLine(LogLevel.Verbose, () => $"Build.Result = {buildSession.BuildResult.ToLogString()}"); try { buildAction.PostProcess(buildSession); } catch (Exception exc) { using (Log.NamedBlock(LogLevel.Info, () => $"{LogConst.BuildAction_PostProcess(buildAction)}.Exception: ")) exc.WriteToLog(); throw; } } }
public void should_call_ctor_with_max_number_of_parameters(IBuildAction getConstructorAction) { var target = new Builder(BuildStage.Cache, BuildStage.Create) { new SkipAllUnits { new IfFirstUnit(new IsConstructor()).UseBuildAction(getConstructorAction, BuildStage.Create), } }; target.TreatAll().UsingArguments(AutoBuild.MethodArguments.InDirectOrder, AutoBuild.MethodArguments.ByParameter.Type); // --arrange target.Treat <Subject2>() .AsIs() .UsingArguments(new object()); // set value to inject into ctor // --act var actual = target.Build <Subject2>(); // --assert actual.LongestPublicConstructorIsCalled.Should().BeTrue(); }
/// <summary> /// Adds a <see cref="IBuildAction" /> for a "to be built" unit which is matched by the branch of the pattern tree represented by this node /// with its parents. /// </summary> /// <param name="node"></param> /// <param name="buildAction">A build action.</param> /// <param name="buildStage">A build stage in which the build action is executed.</param> /// <returns>Returns 'this' in order to use fluent syntax</returns> public static IBuildChainPattern UseBuildAction(this IBuildChainPattern node, IBuildAction buildAction, object buildStage) { if (node is null) { throw new ArgumentNullException(nameof(node)); } if (buildAction is null) { throw new ArgumentNullException(nameof(buildAction)); } if (buildStage is null) { throw new ArgumentNullException(nameof(buildStage)); } var list = node.BuildActions.GetOrCreateValue(buildStage, () => new List <IBuildAction>()); if (!list.Contains(buildAction)) { list.Add(buildAction); } return(node); }
public OrderedBuildActionContainer Add(IBuildAction buildAction) { _buildActions.Add(buildAction); return(this); }
protected BuildValuePlan([NotNull] IUnitMatcher unitMatcher, [NotNull] IBuildAction getValueAction, int weight) : base(unitMatcher, getValueAction, weight) { }
public PropertyValueTuner([NotNull] IUnitMatcher propertyUnitMatcher, [NotNull] IBuildAction getPropertyAction, int weight) : base(propertyUnitMatcher, getPropertyAction, weight) { }
public PropertyValueBuildPlan( [NotNull] IUnitMatcher propertyMatcher, [NotNull] IBuildAction getPropertyAction, [NotNull] IBuildAction getValueAction, int weight) : base(propertyMatcher, getValueAction, weight) =>
public static string BuildAction_PostProcess(IBuildAction buildAction) => $"{BuildAction_Name(buildAction)}.{nameof(IBuildAction.PostProcess)}";
public static string BuildAction_Name(IBuildAction buildAction) => $"{buildAction.GetType().GetShortName().QuoteIfNeeded()}";
IUnitSequenceMatcher IUnitSequenceMatcher.AddBuildAction(object buildStage, IBuildAction buildAction) => throw new NotSupportedException();
public void should_call_constructor_marked_with_attribute(string injectPointId, IBuildAction getConstructorAction) { var target = new Builder(BuildStage.Cache, BuildStage.Create) { new SkipAllUnits { new IfFirstUnit(new IsConstructor()).UseBuildAction(getConstructorAction, BuildStage.Create), } }; target.TreatAll().UsingArguments(AutoBuild.MethodArguments.InDirectOrder, AutoBuild.MethodArguments.ByParameter.Type); // --arrange target.Treat <Subject1>() .AsIs() .UsingArguments(new object()); // set value to inject into ctor // --act var actual = target.Build <Subject1>(); // --assert actual.CalledConstructorPointId.Should().Be(injectPointId); }
public ParameterValueBuildPlan([NotNull] IUnitMatcher parameterMatcher, [NotNull] IBuildAction getValueAction, int weight) : base(parameterMatcher, getValueAction, weight) { }
public BuildActionExtensibility(IUnitMatcher unitMatcher, IBuildAction getPropertyAction, int weight) : base(unitMatcher, weight) =>