|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System;
using System.Collections.Generic;
using Microsoft.Build.Experimental.BuildCheck;
using Microsoft.Build.Experimental.BuildCheck.Infrastructure;
namespace Microsoft.Build.BuildCheck.UnitTests
{
internal sealed class MockBuildCheckRegistrationContext : IBuildCheckRegistrationContext
{
private event Action<BuildCheckDataContext<TaskInvocationCheckData>>? _taskInvocationAction;
private event Action<BuildCheckDataContext<EvaluatedPropertiesCheckData>>? _evaluatedPropertiesAction;
public List<BuildCheckResult> Results { get; } = new();
public void RegisterEvaluatedPropertiesAction(Action<BuildCheckDataContext<EvaluatedPropertiesCheckData>> evaluatedPropertiesAction)
=> _evaluatedPropertiesAction += evaluatedPropertiesAction;
#pragma warning disable CS0618 // Type or member is obsolete
public void RegisterParsedItemsAction(Action<BuildCheckDataContext<ParsedItemsCheckData>> parsedItemsAction) => throw new NotImplementedException();
#pragma warning restore CS0618 // Type or member is obsolete
public void RegisterEvaluatedItemsAction(Action<BuildCheckDataContext<EvaluatedItemsCheckData>> evaluatedItemsAction) => throw new NotImplementedException();
public void RegisterTaskInvocationAction(Action<BuildCheckDataContext<TaskInvocationCheckData>> taskInvocationAction)
=> _taskInvocationAction += taskInvocationAction;
public void RegisterBuildFinishedAction(Action<BuildCheckDataContext<BuildFinishedCheckData>> buildFinishedAction) => throw new NotImplementedException();
public void TriggerTaskInvocationAction(TaskInvocationCheckData data)
{
if (_taskInvocationAction is not null)
{
BuildCheckDataContext<TaskInvocationCheckData> context = new BuildCheckDataContext<TaskInvocationCheckData>(
null!,
null!,
null!,
ResultHandler,
data);
_taskInvocationAction(context);
}
}
public void TriggerEvaluatedPropertiesAction(EvaluatedPropertiesCheckData data)
{
if (_evaluatedPropertiesAction is not null)
{
BuildCheckDataContext<EvaluatedPropertiesCheckData> context = new BuildCheckDataContext<EvaluatedPropertiesCheckData>(
null!,
null!,
null!,
ResultHandler,
data);
_evaluatedPropertiesAction(context);
}
}
private void ResultHandler(CheckWrapper wrapper, ICheckContext context, CheckConfigurationEffective[] configs, BuildCheckResult result)
=> Results.Add(result);
public void RegisterEnvironmentVariableReadAction(Action<BuildCheckDataContext<EnvironmentVariableCheckData>> environmentVariableAction) => throw new NotImplementedException();
public void RegisterProjectImportedAction(Action<BuildCheckDataContext<ProjectImportedCheckData>> projectImportedAction) => throw new NotImplementedException();
}
}
|