Esempio n. 1
0
        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;
        }
Esempio n. 2
0
    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;
            }
    }
Esempio n. 3
0
    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;
            }
        }
    }
Esempio n. 4
0
        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);
 }
Esempio n. 7
0
 protected BuildValuePlan([NotNull] IUnitMatcher unitMatcher, [NotNull] IBuildAction getValueAction, int weight)
     : base(unitMatcher, getValueAction, weight)
 {
 }
Esempio n. 8
0
 public PropertyValueTuner([NotNull] IUnitMatcher propertyUnitMatcher, [NotNull] IBuildAction getPropertyAction, int weight)
     : base(propertyUnitMatcher, getPropertyAction, weight)
 {
 }
Esempio n. 9
0
 public PropertyValueBuildPlan(
     [NotNull] IUnitMatcher propertyMatcher,
     [NotNull] IBuildAction getPropertyAction,
     [NotNull] IBuildAction getValueAction,
     int weight)
     : base(propertyMatcher, getValueAction, weight) =>
Esempio n. 10
0
 public static string BuildAction_PostProcess(IBuildAction buildAction)
 => $"{BuildAction_Name(buildAction)}.{nameof(IBuildAction.PostProcess)}";
Esempio n. 11
0
 public static string BuildAction_Name(IBuildAction buildAction)
 => $"{buildAction.GetType().GetShortName().QuoteIfNeeded()}";
Esempio n. 12
0
 IUnitSequenceMatcher IUnitSequenceMatcher.AddBuildAction(object buildStage, IBuildAction buildAction) => throw new NotSupportedException();
Esempio n. 13
0
        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);
        }
Esempio n. 14
0
 public ParameterValueBuildPlan([NotNull] IUnitMatcher parameterMatcher, [NotNull] IBuildAction getValueAction, int weight)
     : base(parameterMatcher, getValueAction, weight)
 {
 }
Esempio n. 15
0
 public BuildActionExtensibility(IUnitMatcher unitMatcher, IBuildAction getPropertyAction, int weight) : base(unitMatcher, weight) =>