File: RepoWithConditionalProjectsToBuildTests.cs
Web Access
Project: src\src\Microsoft.DotNet.Arcade.Sdk.Tests\Microsoft.DotNet.Arcade.Sdk.Tests.csproj (Microsoft.DotNet.Arcade.Sdk.Tests)
// 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.IO;
using System.Runtime.InteropServices;
using Xunit;
using Xunit.Abstractions;
 
namespace Microsoft.DotNet.Arcade.Sdk.Tests
{
    [Collection(TestProjectCollection.Name)]
    public class RepoWithConditionalProjectsToBuildTests
    {
        private readonly ITestOutputHelper _output;
        private readonly TestProjectFixture _fixture;
 
        public RepoWithConditionalProjectsToBuildTests(ITestOutputHelper output, TestProjectFixture fixture)
        {
            _output = output;
            _fixture = fixture;
        }
 
        [Theory(Skip = "https://github.com/dotnet/arcade/issues/7092")]
        [InlineData(false, 1, false)]
        [InlineData(false, 1, true)]
        [InlineData(true, 2, false)]
        [InlineData(true, 2, true)]
        public void RepoProducesPackages(bool buildAdditionalProject, int expectedPackages, bool stablePackages)
        {
            var app = _fixture.CreateTestApp("RepoWithConditionalProjectsToBuild");
            var packArg = RuntimeInformation.IsOSPlatform(OSPlatform.Windows)
                ? "-pack"
                : "--pack";
            var finalVersionKindarg = stablePackages ? "/p:DotNetFinalVersionKind=release" : "/p:DotNetFinalVersionKind=prerelease";
            var exitCode = app.ExecuteBuild(_output,
                packArg,
                $"/p:ShouldBuildMaybe={buildAdditionalProject}",
                // these properties are required for projects that are not in a git repo
                "/p:EnableSourceLink=false",
                "/p:EnableSourceControlManagerQueries=false",
                finalVersionKindarg);
            Assert.Equal(0, exitCode);
            var nupkgFiles = Directory.GetFiles(Path.Combine(app.WorkingDirectory, "artifacts", "packages", "Debug", "Shipping"), "*.nupkg");
 
            _output.WriteLine("Packages produced:");
 
            foreach(var file in nupkgFiles)
            {
                _output.WriteLine(file);
            }
 
            Assert.Equal(expectedPackages, nupkgFiles.Length);
        }
    }
}