Skip to content
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
50 changes: 50 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: build-and-test
on:
pull_request:
branches:
- main
push:
branches:
- main

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

env:
DOTNET_NOLOGO: true
DOTNET_CLI_TELEMETRY_OPTOUT: true

jobs:
build-and-test:
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: |
8.0.*
- name: Git checkout Schema
uses: actions/checkout@v4
with:
path: Schema
- name: Git checkout Steeltoe
uses: actions/checkout@v2
with:
repository: SteeltoeOSS/Steeltoe
path: Steeltoe
ref: main
- name: Restore packages
run: |
dotnet restore Schema
- name: Build
run: |
dotnet build Schema --no-restore --configuration Release
- name: Test
run: |
dotnet test Schema --no-build --configuration Release --collect:"XPlat Code Coverage" --logger "GitHubActions;summary.includeSkippedTests=true"
25 changes: 25 additions & 0 deletions ConfigurationSchemaGenerator/JsonSchemaMerger.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,31 @@ public void AddSourceText(string text)
MergeSchema(sourceSchema, _root);
}

public void RemoveLogLevels()
{
// Workaround for Visual Studio displaying the following warning when the schema is downloaded from a URL:
// There are problems with this document's schema impacting one or more items in the document. Please report this issue to schema owner.
// With the following text in the Output Window:
// Reference could not be resolved
// at (line 6, column 19) in document https://steeltoe.io/schema/v4/schema.json
// at schema text "#/definitions/logLevelThreshold"
// When the schema is embedded in a NuGet package, Visual Studio merges it with its own definition for "logLevelThreshold",
// but that doesn't happen when the schema is downloaded from a URL.

if (_root.ExtensionData.TryGetValue("definitions", out JToken? definitionsToken) && definitionsToken is JObject definitionsObject)
{
if (definitionsObject.TryGetValue("logLevel", out JToken? logLevelToken))
{
logLevelToken.Parent!.Remove();
}

if (definitionsObject.Count == 0)
{
_root.ExtensionData.Remove("definitions");
}
}
}

public string? GetResult()
{
return Sorter.Sort(_root);
Expand Down
1 change: 1 addition & 0 deletions ConfigurationSchemaGenerator/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
merger.AddSourceFile(path);
}

merger.RemoveLogLevels();
string? json = merger.GetResult();

Console.WriteLine($"Writing results to file: {Path.GetFullPath(outputPath)}");
Expand Down
66 changes: 0 additions & 66 deletions ConfigurationSchemaGeneratorTest/Baseline/merge-actual.json
Original file line number Diff line number Diff line change
@@ -1,70 +1,4 @@
{
"definitions": {
"logLevel": {
"properties": {
"Steeltoe": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Common": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Common.Certificates": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Configuration": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Configuration.ConfigServer": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Configuration.Encryption": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Connectors": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Discovery": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Discovery.Configuration": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Discovery.Consul": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Discovery.Eureka": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Logging": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Logging.DynamicSerilog": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Management": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Management.Endpoint": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Management.Prometheus": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Management.Tasks": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Security": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Security.Authorization": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Security.Authorization.Certificate": {
"$ref": "#/definitions/logLevelThreshold"
}
}
}
},
"type": "object",
"properties": {
"Certificates": {
Expand Down
66 changes: 0 additions & 66 deletions ConfigurationSchemaGeneratorTest/Baseline/merge-expected.json
Original file line number Diff line number Diff line change
@@ -1,70 +1,4 @@
{
"definitions": {
"logLevel": {
"properties": {
"Steeltoe": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Common": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Common.Certificates": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Configuration": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Configuration.ConfigServer": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Configuration.Encryption": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Connectors": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Discovery": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Discovery.Configuration": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Discovery.Consul": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Discovery.Eureka": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Logging": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Logging.DynamicSerilog": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Management": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Management.Endpoint": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Management.Prometheus": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Management.Tasks": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Security": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Security.Authorization": {
"$ref": "#/definitions/logLevelThreshold"
},
"Steeltoe.Security.Authorization.Certificate": {
"$ref": "#/definitions/logLevelThreshold"
}
}
}
},
"type": "object",
"properties": {
"Certificates": {
Expand Down
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>net8.0</TargetFramework>
Expand All @@ -9,11 +9,13 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="coverlet.collector" Version="6.0.2" PrivateAssets="All" />
<PackageReference Include="FluentAssertions" Version="6.12.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
<PackageReference Include="xunit" Version="2.8.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.1" PrivateAssets="All" />
<PackageReference Include="coverlet.collector" Version="$(CoverletCollectorVersion)" PrivateAssets="All" />
<PackageReference Include="FluentAssertions" Version="$(FluentAssertionsVersion)" />
<PackageReference Include="GitHubActionsTestLogger" Version="$(GitHubActionsTestLoggerVersion)" PrivateAssets="All" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(MicrosoftNetTestSdkVersion)" />
<PackageReference Include="xunit" Version="$(XunitVersion)" />
<PackageReference Include="xunit.runner.console" Version="$(XunitVersion)" />
<PackageReference Include="xunit.runner.visualstudio" Version="$(XunitVersion)" PrivateAssets="All" />
</ItemGroup>

<ItemGroup>
Expand Down
9 changes: 9 additions & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<Project>
<PropertyGroup>
<CoverletCollectorVersion>6.0.*</CoverletCollectorVersion>
<FluentAssertionsVersion>7.2.*</FluentAssertionsVersion>
<GitHubActionsTestLoggerVersion>2.4.*</GitHubActionsTestLoggerVersion>
<MicrosoftNetTestSdkVersion>17.13.*</MicrosoftNetTestSdkVersion>
<XunitVersion>2.*</XunitVersion>
</PropertyGroup>
</Project>