Skip to content
This repository has been archived by the owner on Jul 20, 2023. It is now read-only.

Commit

Permalink
test: Add test to verify the assembly's public API surface
Browse files Browse the repository at this point in the history
ap0llo committed Oct 13, 2021
1 parent 5e44d2b commit 91e553e
Showing 5 changed files with 106 additions and 3 deletions.
4 changes: 3 additions & 1 deletion src/Cake.GitHubReleases.Test/Cake.GitHubReleases.Test.csproj
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
@@ -10,9 +10,11 @@
<PackageReference Include="Grynwald.Utilities" Version="1.5.54" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
<PackageReference Include="Moq" Version="4.16.1" />
<PackageReference Include="Verify.Xunit" Version="13.1.0" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3" PrivateAssets="all" />
<PackageReference Include="coverlet.collector" Version="3.1.0" PrivateAssets="All" />
<PackageReference Include="PublicApiGenerator" Version="10.2.0" />
</ItemGroup>

<ItemGroup>
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("Cake.GitHubReleases.Test")]
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("DynamicProxyGenAssembly2")]
[assembly: System.Runtime.Versioning.TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName="")]
namespace Cake.GitHubReleases
{
public class AmbiguousTagNameException : Cake.GitHubReleases.GitHubReleaseException
{
public AmbiguousTagNameException(string message) { }
}
public sealed class AssetConflictException : Cake.GitHubReleases.GitHubReleaseException
{
public AssetConflictException(string message) { }
}
public sealed class GitHubRelease
{
public GitHubRelease(int id, string htmlUrl, string tagName, string targetCommitish, string name, string body, bool draft, bool prerelease, System.DateTime createdAt, System.DateTime? publishedAt) { }
public System.Collections.Generic.IReadOnlyList<Cake.GitHubReleases.GitHubReleaseAsset> Assets { get; }
public string Body { get; }
public System.DateTime CreatedAt { get; }
public bool Draft { get; }
public string HtmlUrl { get; }
public int Id { get; }
public string Name { get; }
public bool Prerelease { get; }
public System.DateTime? PublishedAt { get; }
public string TagName { get; }
public string TargetCommitish { get; }
}
[Cake.Core.Annotations.CakeAliasCategory("GitHubRelease")]
public static class GitHubReleaseAliases
{
[Cake.Core.Annotations.CakeMethodAlias]
public static System.Threading.Tasks.Task<Cake.GitHubReleases.GitHubRelease> GitHubReleaseCreateAsync(this Cake.Core.ICakeContext context, Cake.GitHubReleases.GitHubReleaseCreateSettings settings) { }
}
public sealed class GitHubReleaseAsset
{
public GitHubReleaseAsset(int id, string name, long size, string contentType, string browserDownloadUrl) { }
public string BrowserDownloadUrl { get; }
public string ContentType { get; }
public int Id { get; }
public string Name { get; }
public long Size { get; }
}
public sealed class GitHubReleaseCreateSettings : Cake.GitHubReleases.GitHubSettings
{
public GitHubReleaseCreateSettings(string repositoryOwner, string repositoryName, string tagName) { }
public System.Collections.Generic.IList<Cake.Core.IO.FilePath> Assets { get; set; }
public string? Body { get; set; }
public bool Draft { get; set; }
public string? Name { get; set; }
public bool Overwrite { get; set; }
public bool Prerelease { get; set; }
public string TagName { get; }
public string? TargetCommitish { get; set; }
}
public abstract class GitHubReleaseException : System.Exception
{
protected GitHubReleaseException() { }
protected GitHubReleaseException(string message) { }
protected GitHubReleaseException(string message, System.Exception innerException) { }
}
public abstract class GitHubSettings
{
protected GitHubSettings(string repositoryOwner, string repositoryName) { }
public string? AccessToken { get; set; }
public string HostName { get; set; }
public string RepositoryName { get; set; }
public string RepositoryOwner { get; set; }
}
public class ReleaseExistsException : Cake.GitHubReleases.GitHubReleaseException
{
public ReleaseExistsException(string message) { }
}
}
26 changes: 26 additions & 0 deletions src/Cake.GitHubReleases.Test/PublicApiApproval.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
using System.Threading.Tasks;
using PublicApiGenerator;
using VerifyXunit;
using Xunit;

namespace Cake.GitHubReleases.Test
{
[Trait("Category", "SkipWhenLiveUnitTesting")]
[UsesVerify]
public class PublicApiApproval
{
[Fact]
public Task Assembly_does_not_have_unapproved_API_changes()
{
// ARRANGE
var assembly = typeof(GitHubReleaseAliases).Assembly;

// ACT
var publicApi = ApiGenerator.GeneratePublicApi(assembly, options: null);

// ASSERT
return Verifier.Verify(publicApi);
}
}

}
3 changes: 2 additions & 1 deletion src/Cake.GitHubReleases/Cake.GitHubReleases.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<GenerateRepositoryUrlAttribute>false</GenerateRepositoryUrlAttribute>
</PropertyGroup>

<ItemGroup>
2 changes: 1 addition & 1 deletion src/Cake.GitHubReleases/Nullable.cs
Original file line number Diff line number Diff line change
@@ -12,7 +12,7 @@ internal sealed class AllowNullAttribute : Attribute

[ExcludeFromCodeCoverage]
[AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
public sealed class NotNullWhenAttribute : Attribute
internal sealed class NotNullWhenAttribute : Attribute
{
public bool ReturnValue { get; }

0 comments on commit 91e553e

Please sign in to comment.