Skip to content

Commit

Permalink
Add API test project. (#226)
Browse files Browse the repository at this point in the history
* Refactor ConfigurationFactory to HoconConfigurationFactory to prevent name collision

* Refactor GetArray() to return a more generic IList<T> instead

* Add Hocon.API.Test project

* Make sure the approval text files aree copied to the output directory

* Exclude Hocon.API.Tests from linux build because Linux does not like ApiApprover

* Downgrade Hocon.API.Tests target framework to net461
  • Loading branch information
Arkatufus committed Feb 17, 2020
1 parent cbaf428 commit b8576e5
Show file tree
Hide file tree
Showing 29 changed files with 1,156 additions and 98 deletions.
8 changes: 7 additions & 1 deletion Hocon.sln
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Hocon.Immutable", "src\Hoco
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Hocon.Immutable.Tests", "src\Hocon.Immutable.Tests\Hocon.Immutable.Tests.csproj", "{FEEC6F6B-2511-4BEC-9568-4E6AE6C1D275}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SerializationDebug", "src\examples\SerializationDebug\SerializationDebug.csproj", "{6D1D4813-7AB6-4268-A9DF-627A60E08FB1}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SerializationDebug", "src\examples\SerializationDebug\SerializationDebug.csproj", "{6D1D4813-7AB6-4268-A9DF-627A60E08FB1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hocon.API.Tests", "src\Hocon.API.Tests\Hocon.API.Tests.csproj", "{2EC48C29-E5A7-4C3F-AB26-1C121E098867}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Expand Down Expand Up @@ -101,6 +103,10 @@ Global
{6D1D4813-7AB6-4268-A9DF-627A60E08FB1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6D1D4813-7AB6-4268-A9DF-627A60E08FB1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6D1D4813-7AB6-4268-A9DF-627A60E08FB1}.Release|Any CPU.Build.0 = Release|Any CPU
{2EC48C29-E5A7-4C3F-AB26-1C121E098867}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2EC48C29-E5A7-4C3F-AB26-1C121E098867}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2EC48C29-E5A7-4C3F-AB26-1C121E098867}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2EC48C29-E5A7-4C3F-AB26-1C121E098867}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
1 change: 1 addition & 0 deletions build.fsx
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ Target "RunTests" (fun _ ->
| true -> !! "./src/**/*.Tests.csproj"
| _ -> !! "./src/**/*.Tests.csproj"
-- "./src/**/Hocon.Configuration.Tests.csproj" // Mono barfs on this spec
-- "./src/**/Hocon.API.Tests.csproj" // Linux does not like any spec using ApiApprover

let runSingleProject project =
let arguments =
Expand Down
52 changes: 52 additions & 0 deletions src/Hocon.API.Tests/Hocon.API.Tests.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net461</TargetFramework>

<IsPackable>false</IsPackable>

<RootNamespace>Hocon.API.Tests</RootNamespace>

<AssemblyName>Hocon.API.Tests</AssemblyName>
</PropertyGroup>

<ItemGroup>
<None Remove="HoconAPISpec.ApproveConfiguration.approved.txt" />
<None Remove="HoconAPISpec.ApproveCore.approved.txt" />
<None Remove="HoconAPISpec.ApproveExtensionConfiguration.approved.txt" />
<None Remove="HoconAPISpec.ApproveImmutable.approved.txt" />
</ItemGroup>

<ItemGroup>
<Content Include="HoconAPISpec.ApproveConfiguration.approved.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="HoconAPISpec.ApproveCore.approved.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="HoconAPISpec.ApproveExtensionConfiguration.approved.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="HoconAPISpec.ApproveImmutable.approved.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>

<ItemGroup>
<PackageReference Include="ApiApprover" Version="9.3.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.2.0" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\Hocon.Configuration\Hocon.Configuration.csproj" />
<ProjectReference Include="..\Hocon.Extensions.Configuration\Hocon.Extensions.Configuration.csproj" />
<ProjectReference Include="..\Hocon.Immutable\Hocon.Immutable.csproj" />
<ProjectReference Include="..\Hocon\Hocon.csproj" />
</ItemGroup>

</Project>
83 changes: 83 additions & 0 deletions src/Hocon.API.Tests/HoconAPISpec.ApproveConfiguration.approved.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.6.1", FrameworkDisplayName=".NET Framework 4.6.1")]
namespace Hocon
{
public abstract class CDataConfigurationElement : System.Configuration.ConfigurationElement
{
protected const string ContentPropertyName = "content";
protected CDataConfigurationElement() { }
protected override void DeserializeElement(System.Xml.XmlReader reader, bool serializeCollectionKey) { }
}
public class Config : Hocon.HoconRoot, System.IEquatable<Hocon.Config>, System.Runtime.Serialization.ISerializable
{
protected Hocon.HoconValue _mergedValueCache;
[System.ObsoleteAttribute("For json serialization/deserialization only", true)]
protected Config() { }
protected Config(Hocon.HoconValue value) { }
protected Config(Hocon.HoconValue value, Hocon.Config fallback) { }
public Config(Hocon.HoconRoot root) { }
public Config(Hocon.HoconRoot root, Hocon.Config fallback) { }
[System.ObsoleteAttribute("Used for serialization only", true)]
public Config(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) { }
public static Hocon.Config Empty { get; }
public virtual System.Collections.Generic.IReadOnlyList<Hocon.HoconValue> Fallbacks { get; }
public virtual bool IsEmpty { get; }
public Hocon.HoconValue Root { get; }
protected System.Collections.Generic.List<Hocon.HoconValue> _fallbacks { get; }
public override System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, Hocon.HoconField>> AsEnumerable() { }
public virtual bool Equals(Hocon.Config other) { }
public override bool Equals(object obj) { }
public virtual Hocon.Config GetConfig(string path) { }
public virtual Hocon.Config GetConfig(Hocon.HoconPath path) { }
protected override Hocon.HoconValue GetNode(Hocon.HoconPath path) { }
public void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) { }
public string ToString(bool useFallbackValues) { }
protected override bool TryGetNode(Hocon.HoconPath path, out Hocon.HoconValue result) { }
public virtual Hocon.Config WithFallback(Hocon.Config fallback) { }
public static Hocon.Config +(Hocon.Config config, string fallback) { }
public static Hocon.Config +(string configHocon, Hocon.Config fallbackConfig) { }
public static Hocon.Config op_Implicit(string str) { }
}
public class static ConfigExtensions
{
public static bool IsNullOrEmpty(this Hocon.Config config) { }
public static Hocon.Config SafeWithFallback(this Hocon.Config config, Hocon.Config fallback) { }
}
public class ConfigurationException : System.Exception
{
public ConfigurationException(string message) { }
public ConfigurationException(string message, System.Exception exception) { }
protected ConfigurationException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) { }
public static Hocon.ConfigurationException NullOrEmptyConfig<T>(string path = null) { }
}
public class static DebuggingExtensions
{
public static string DumpConfig(this Hocon.Config c, bool dumpAsFallbacks = True) { }
}
public class HoconConfigurationElement : Hocon.CDataConfigurationElement
{
public HoconConfigurationElement() { }
[System.Configuration.ConfigurationPropertyAttribute("content", IsKey=true, IsRequired=true)]
public string Content { get; set; }
}
public class static HoconConfigurationFactory
{
public static Hocon.Config Empty { get; }
public static Hocon.Config Default() { }
public static Hocon.Config FromFile(string filePath) { }
public static Hocon.Config FromResource(string resourceName, object instanceInAssembly) { }
public static Hocon.Config FromResource<TAssembly>(string resourceName) { }
public static Hocon.Config FromResource(string resourceName, System.Reflection.Assembly assembly) { }
[System.ObsoleteAttribute("Call the ConfigurationFactory.Default method instead.")]
public static Hocon.Config Load() { }
public static Hocon.Config Load(string sectionName) { }
public static Hocon.Config ParseString(string hocon, Hocon.HoconIncludeCallbackAsync includeCallback) { }
public static Hocon.Config ParseString(string hocon) { }
}
public class HoconConfigurationSection : System.Configuration.ConfigurationSection
{
public HoconConfigurationSection() { }
public Hocon.Config Config { get; }
[System.Configuration.ConfigurationPropertyAttribute("hocon", IsRequired=true)]
public Hocon.HoconConfigurationElement Hocon { get; set; }
}
}
Loading

0 comments on commit b8576e5

Please sign in to comment.