Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support RC for dot net versions #142

Merged
merged 1 commit into from
Sep 22, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
234 changes: 117 additions & 117 deletions Source/GenerateSharp/Opal/Logger/Log.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,121 +4,121 @@

namespace Opal
{
using global::System;

/// <summary>
/// The static logger class.
/// </summary>
public class Log
{
private static int activeId = 0;
private static TraceListener? listener = null;

/// <summary>
/// Register the single event listener.
/// </summary>
/// <param name="listener">The listener.</param>
public static void RegisterListener(TraceListener? listener)
{
Log.listener = listener;
}

/// <summary>
/// Get access to the single event listener.
/// </summary>
public static TraceListener EnsureListener()
{
if (listener == null)
throw new InvalidOperationException("No Listener registered.");
return listener;
}

/// <summary>
/// Set the active ids to use for each event.
/// </summary>
public static int GetActiveId()
{
return activeId;
}

public static void SetActiveId(int value)
{
activeId = value;
}

/// <summary>
/// Log a high priority message.
/// </summary>
/// <param name="message">The message.</param>
/// <param name="id">The message id.</param>
public static void HighPriority(string message, int id)
{
EnsureListener().TraceEvent(TraceEventFlag.HighPriority, id, message);
}

public static void HighPriority(string message)
{
HighPriority(message, activeId);
}

/// <summary>
/// Log a generic infomational message.
/// </summary>
/// <param name="message">The message.</param>
/// <param name="id">The message id.</param>
public static void Info(string message, int id)
{
EnsureListener().TraceEvent(TraceEventFlag.Information, id, message);
}

public static void Info(string message)
{
Info(message, activeId);
}

/// <summary>
/// Log a diagnostic message.
/// </summary>
/// <param name="message">The message.</param>
/// <param name="id">The message id.</param>
public static void Diag(string message, int id)
{
EnsureListener().TraceEvent(TraceEventFlag.Diagnostic, id, message);
}

public static void Diag(string message)
{
Diag(message, activeId);
}

/// <summary>
/// Log a warning message.
/// </summary>
/// <param name="message">The message.</param>
/// <param name="id">The message id.</param>
public static void Warning(string message, int id)
{
EnsureListener().TraceEvent(TraceEventFlag.Warning, id, message);
}

public static void Warning(string message)
{
Warning(message, activeId);
}

/// <summary>
/// Log an error message.
/// </summary>
/// <param name="message">The message.</param>
/// <param name="id">The message id.</param>
public static void Error(string message, int id)
{
EnsureListener().TraceEvent(TraceEventFlag.Error, id, message);
}

public static void Error(string message)
{
Error(message, activeId);
}
}
using global::System;

/// <summary>
/// The static logger class.
/// </summary>
public class Log
{
private static int activeId = 0;
private static TraceListener? listener = null;

/// <summary>
/// Register the single event listener.
/// </summary>
/// <param name="listener">The listener.</param>
public static void RegisterListener(TraceListener? listener)
{
Log.listener = listener;
}

/// <summary>
/// Get access to the single event listener.
/// </summary>
public static TraceListener EnsureListener()
{
if (listener == null)
throw new InvalidOperationException("No Listener registered.");
return listener;
}

/// <summary>
/// Set the active ids to use for each event.
/// </summary>
public static int GetActiveId()
{
return activeId;
}

public static void SetActiveId(int value)
{
activeId = value;
}

/// <summary>
/// Log a high priority message.
/// </summary>
/// <param name="message">The message.</param>
/// <param name="id">The message id.</param>
public static void HighPriority(string message, int id)
{
EnsureListener().TraceEvent(TraceEventFlag.HighPriority, id, message);
}

public static void HighPriority(string message)
{
HighPriority(message, activeId);
}

/// <summary>
/// Log a generic infomational message.
/// </summary>
/// <param name="message">The message.</param>
/// <param name="id">The message id.</param>
public static void Info(string message, int id)
{
EnsureListener().TraceEvent(TraceEventFlag.Information, id, message);
}

public static void Info(string message)
{
Info(message, activeId);
}

/// <summary>
/// Log a diagnostic message.
/// </summary>
/// <param name="message">The message.</param>
/// <param name="id">The message id.</param>
public static void Diag(string message, int id)
{
EnsureListener().TraceEvent(TraceEventFlag.Diagnostic, id, message);
}

public static void Diag(string message)
{
Diag(message, activeId);
}

/// <summary>
/// Log a warning message.
/// </summary>
/// <param name="message">The message.</param>
/// <param name="id">The message id.</param>
public static void Warning(string message, int id)
{
EnsureListener().TraceEvent(TraceEventFlag.Warning, id, message);
}

public static void Warning(string message)
{
Warning(message, activeId);
}

/// <summary>
/// Log an error message.
/// </summary>
/// <param name="message">The message.</param>
/// <param name="id">The message id.</param>
public static void Error(string message, int id)
{
EnsureListener().TraceEvent(TraceEventFlag.Error, id, message);
}

public static void Error(string message)
{
Error(message, activeId);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
// <copyright file="DotNetSDKUtilitiesUnitTests.cs" company="Soup">
// Copyright (c) Soup. All rights reserved.
// </copyright>

using Opal;
using Opal.System;
using System.Collections.Generic;
using Xunit;

namespace Soup.Build.Discover.UnitTests
{
[Collection("Opal")]
public class DotNetSDKUtilitiesUnitTests
{
[Fact]
public void FindDotNet6Refs()
{
// Register the test listener
var testListener = new TestTraceListener();
using var scopedTraceListener = new ScopedTraceListenerRegister(testListener);

var mockFileSystem = new MockFileSystem();
using var scopedFileSystem = new ScopedSingleton<IFileSystem>(mockFileSystem);

mockFileSystem.RegisterDirectoryChildren(
new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/"),
new List<Path>()
{
new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0"),
new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.7"),
new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.8"),
new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.9"),
});

var result = DotNetSDKUtilities.FindDotNet6Refs();

Assert.Equal("6.0.9", result.Version);
Assert.Equal(new Path("C:/Program Files/dotnet/"), result.Path);

// Verify expected logs
Assert.Equal(
new List<string>()
{
"HIGH: FindNewestDotNet6RuntimeVersion: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/",
"INFO: CheckFile: 5.0.0",
"INFO: CheckFile: 6.0.7",
"INFO: CheckFile: 6.0.8",
"INFO: CheckFile: 6.0.9",
},
testListener.GetMessages());

// Verify expected file system requests
Assert.Equal(
new List<string>()
{
"GetDirectoryChildren: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/",
},
mockFileSystem.GetRequests());
}

[Fact]
public void FindDotNet6Refs_SkipReleaseCandidate()
{
// Register the test listener
var testListener = new TestTraceListener();
using var scopedTraceListener = new ScopedTraceListenerRegister(testListener);

var mockFileSystem = new MockFileSystem();
using var scopedFileSystem = new ScopedSingleton<IFileSystem>(mockFileSystem);

mockFileSystem.RegisterDirectoryChildren(
new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/"),
new List<Path>()
{
new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0"),
new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.7"),
new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.8"),
new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.9"),
new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.0-rc.1.22426.10"),
});

var result = DotNetSDKUtilities.FindDotNet6Refs();

Assert.Equal("6.0.9", result.Version);
Assert.Equal(new Path("C:/Program Files/dotnet/"), result.Path);

// Verify expected logs
Assert.Equal(
new List<string>()
{
"HIGH: FindNewestDotNet6RuntimeVersion: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/",
"INFO: CheckFile: 5.0.0",
"INFO: CheckFile: 6.0.7",
"INFO: CheckFile: 6.0.8",
"INFO: CheckFile: 6.0.9",
"INFO: CheckFile: 7.0.0-rc.1.22426.10",
},
testListener.GetMessages());

// Verify expected file system requests
Assert.Equal(
new List<string>()
{
"GetDirectoryChildren: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/",
},
mockFileSystem.GetRequests());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

namespace Soup.Build.Discover.UnitTests
{
[Collection("Opal")]
public class SwhereManagerUnitTests
{
[Fact]
Expand Down
Loading