Skip to content

Commit 4506e42

Browse files
authored
Merge pull request #12 from SteeltoeOSS/fix-schema-warning-in-vs
Fix warning in Visual Studio
2 parents 32a50cd + 1dfeb7b commit 4506e42

7 files changed

Lines changed: 93 additions & 138 deletions

File tree

.github/workflows/build.yml

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
name: build-and-test
2+
on:
3+
pull_request:
4+
branches:
5+
- main
6+
push:
7+
branches:
8+
- main
9+
10+
concurrency:
11+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
12+
cancel-in-progress: true
13+
14+
env:
15+
DOTNET_NOLOGO: true
16+
DOTNET_CLI_TELEMETRY_OPTOUT: true
17+
18+
jobs:
19+
build-and-test:
20+
timeout-minutes: 60
21+
strategy:
22+
fail-fast: false
23+
matrix:
24+
os: [ubuntu-latest, windows-latest, macos-latest]
25+
runs-on: ${{ matrix.os }}
26+
steps:
27+
- name: Setup .NET
28+
uses: actions/setup-dotnet@v4
29+
with:
30+
dotnet-version: |
31+
8.0.*
32+
- name: Git checkout Schema
33+
uses: actions/checkout@v4
34+
with:
35+
path: Schema
36+
- name: Git checkout Steeltoe
37+
uses: actions/checkout@v2
38+
with:
39+
repository: SteeltoeOSS/Steeltoe
40+
path: Steeltoe
41+
ref: main
42+
- name: Restore packages
43+
run: |
44+
dotnet restore Schema
45+
- name: Build
46+
run: |
47+
dotnet build Schema --no-restore --configuration Release
48+
- name: Test
49+
run: |
50+
dotnet test Schema --no-build --configuration Release --collect:"XPlat Code Coverage" --logger "GitHubActions;summary.includeSkippedTests=true"

ConfigurationSchemaGenerator/JsonSchemaMerger.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,31 @@ public void AddSourceText(string text)
4343
MergeSchema(sourceSchema, _root);
4444
}
4545

46+
public void RemoveLogLevels()
47+
{
48+
// Workaround for Visual Studio displaying the following warning when the schema is downloaded from a URL:
49+
// There are problems with this document's schema impacting one or more items in the document. Please report this issue to schema owner.
50+
// With the following text in the Output Window:
51+
// Reference could not be resolved
52+
// at (line 6, column 19) in document https://steeltoe.io/schema/v4/schema.json
53+
// at schema text "#/definitions/logLevelThreshold"
54+
// When the schema is embedded in a NuGet package, Visual Studio merges it with its own definition for "logLevelThreshold",
55+
// but that doesn't happen when the schema is downloaded from a URL.
56+
57+
if (_root.ExtensionData.TryGetValue("definitions", out JToken? definitionsToken) && definitionsToken is JObject definitionsObject)
58+
{
59+
if (definitionsObject.TryGetValue("logLevel", out JToken? logLevelToken))
60+
{
61+
logLevelToken.Parent!.Remove();
62+
}
63+
64+
if (definitionsObject.Count == 0)
65+
{
66+
_root.ExtensionData.Remove("definitions");
67+
}
68+
}
69+
}
70+
4671
public string? GetResult()
4772
{
4873
return Sorter.Sort(_root);

ConfigurationSchemaGenerator/Program.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
merger.AddSourceFile(path);
2626
}
2727

28+
merger.RemoveLogLevels();
2829
string? json = merger.GetResult();
2930

3031
Console.WriteLine($"Writing results to file: {Path.GetFullPath(outputPath)}");

ConfigurationSchemaGeneratorTest/Baseline/merge-actual.json

Lines changed: 0 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,4 @@
11
{
2-
"definitions": {
3-
"logLevel": {
4-
"properties": {
5-
"Steeltoe": {
6-
"$ref": "#/definitions/logLevelThreshold"
7-
},
8-
"Steeltoe.Common": {
9-
"$ref": "#/definitions/logLevelThreshold"
10-
},
11-
"Steeltoe.Common.Certificates": {
12-
"$ref": "#/definitions/logLevelThreshold"
13-
},
14-
"Steeltoe.Configuration": {
15-
"$ref": "#/definitions/logLevelThreshold"
16-
},
17-
"Steeltoe.Configuration.ConfigServer": {
18-
"$ref": "#/definitions/logLevelThreshold"
19-
},
20-
"Steeltoe.Configuration.Encryption": {
21-
"$ref": "#/definitions/logLevelThreshold"
22-
},
23-
"Steeltoe.Connectors": {
24-
"$ref": "#/definitions/logLevelThreshold"
25-
},
26-
"Steeltoe.Discovery": {
27-
"$ref": "#/definitions/logLevelThreshold"
28-
},
29-
"Steeltoe.Discovery.Configuration": {
30-
"$ref": "#/definitions/logLevelThreshold"
31-
},
32-
"Steeltoe.Discovery.Consul": {
33-
"$ref": "#/definitions/logLevelThreshold"
34-
},
35-
"Steeltoe.Discovery.Eureka": {
36-
"$ref": "#/definitions/logLevelThreshold"
37-
},
38-
"Steeltoe.Logging": {
39-
"$ref": "#/definitions/logLevelThreshold"
40-
},
41-
"Steeltoe.Logging.DynamicSerilog": {
42-
"$ref": "#/definitions/logLevelThreshold"
43-
},
44-
"Steeltoe.Management": {
45-
"$ref": "#/definitions/logLevelThreshold"
46-
},
47-
"Steeltoe.Management.Endpoint": {
48-
"$ref": "#/definitions/logLevelThreshold"
49-
},
50-
"Steeltoe.Management.Prometheus": {
51-
"$ref": "#/definitions/logLevelThreshold"
52-
},
53-
"Steeltoe.Management.Tasks": {
54-
"$ref": "#/definitions/logLevelThreshold"
55-
},
56-
"Steeltoe.Security": {
57-
"$ref": "#/definitions/logLevelThreshold"
58-
},
59-
"Steeltoe.Security.Authorization": {
60-
"$ref": "#/definitions/logLevelThreshold"
61-
},
62-
"Steeltoe.Security.Authorization.Certificate": {
63-
"$ref": "#/definitions/logLevelThreshold"
64-
}
65-
}
66-
}
67-
},
682
"type": "object",
693
"properties": {
704
"Certificates": {

ConfigurationSchemaGeneratorTest/Baseline/merge-expected.json

Lines changed: 0 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,4 @@
11
{
2-
"definitions": {
3-
"logLevel": {
4-
"properties": {
5-
"Steeltoe": {
6-
"$ref": "#/definitions/logLevelThreshold"
7-
},
8-
"Steeltoe.Common": {
9-
"$ref": "#/definitions/logLevelThreshold"
10-
},
11-
"Steeltoe.Common.Certificates": {
12-
"$ref": "#/definitions/logLevelThreshold"
13-
},
14-
"Steeltoe.Configuration": {
15-
"$ref": "#/definitions/logLevelThreshold"
16-
},
17-
"Steeltoe.Configuration.ConfigServer": {
18-
"$ref": "#/definitions/logLevelThreshold"
19-
},
20-
"Steeltoe.Configuration.Encryption": {
21-
"$ref": "#/definitions/logLevelThreshold"
22-
},
23-
"Steeltoe.Connectors": {
24-
"$ref": "#/definitions/logLevelThreshold"
25-
},
26-
"Steeltoe.Discovery": {
27-
"$ref": "#/definitions/logLevelThreshold"
28-
},
29-
"Steeltoe.Discovery.Configuration": {
30-
"$ref": "#/definitions/logLevelThreshold"
31-
},
32-
"Steeltoe.Discovery.Consul": {
33-
"$ref": "#/definitions/logLevelThreshold"
34-
},
35-
"Steeltoe.Discovery.Eureka": {
36-
"$ref": "#/definitions/logLevelThreshold"
37-
},
38-
"Steeltoe.Logging": {
39-
"$ref": "#/definitions/logLevelThreshold"
40-
},
41-
"Steeltoe.Logging.DynamicSerilog": {
42-
"$ref": "#/definitions/logLevelThreshold"
43-
},
44-
"Steeltoe.Management": {
45-
"$ref": "#/definitions/logLevelThreshold"
46-
},
47-
"Steeltoe.Management.Endpoint": {
48-
"$ref": "#/definitions/logLevelThreshold"
49-
},
50-
"Steeltoe.Management.Prometheus": {
51-
"$ref": "#/definitions/logLevelThreshold"
52-
},
53-
"Steeltoe.Management.Tasks": {
54-
"$ref": "#/definitions/logLevelThreshold"
55-
},
56-
"Steeltoe.Security": {
57-
"$ref": "#/definitions/logLevelThreshold"
58-
},
59-
"Steeltoe.Security.Authorization": {
60-
"$ref": "#/definitions/logLevelThreshold"
61-
},
62-
"Steeltoe.Security.Authorization.Certificate": {
63-
"$ref": "#/definitions/logLevelThreshold"
64-
}
65-
}
66-
}
67-
},
682
"type": "object",
693
"properties": {
704
"Certificates": {

ConfigurationSchemaGeneratorTest/ConfigurationSchemaGeneratorTest.csproj

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
44
<TargetFramework>net8.0</TargetFramework>
@@ -9,11 +9,13 @@
99
</PropertyGroup>
1010

1111
<ItemGroup>
12-
<PackageReference Include="coverlet.collector" Version="6.0.2" PrivateAssets="All" />
13-
<PackageReference Include="FluentAssertions" Version="6.12.0" />
14-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
15-
<PackageReference Include="xunit" Version="2.8.1" />
16-
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.1" PrivateAssets="All" />
12+
<PackageReference Include="coverlet.collector" Version="$(CoverletCollectorVersion)" PrivateAssets="All" />
13+
<PackageReference Include="FluentAssertions" Version="$(FluentAssertionsVersion)" />
14+
<PackageReference Include="GitHubActionsTestLogger" Version="$(GitHubActionsTestLoggerVersion)" PrivateAssets="All" />
15+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(MicrosoftNetTestSdkVersion)" />
16+
<PackageReference Include="xunit" Version="$(XunitVersion)" />
17+
<PackageReference Include="xunit.runner.console" Version="$(XunitVersion)" />
18+
<PackageReference Include="xunit.runner.visualstudio" Version="$(XunitVersion)" PrivateAssets="All" />
1719
</ItemGroup>
1820

1921
<ItemGroup>

Directory.Build.props

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<Project>
2+
<PropertyGroup>
3+
<CoverletCollectorVersion>6.0.*</CoverletCollectorVersion>
4+
<FluentAssertionsVersion>7.2.*</FluentAssertionsVersion>
5+
<GitHubActionsTestLoggerVersion>2.4.*</GitHubActionsTestLoggerVersion>
6+
<MicrosoftNetTestSdkVersion>17.13.*</MicrosoftNetTestSdkVersion>
7+
<XunitVersion>2.*</XunitVersion>
8+
</PropertyGroup>
9+
</Project>

0 commit comments

Comments
 (0)