Cleanup project files and workaround, run tests on .NET Core 1.1
This commit is contained in:
parent
7019c55219
commit
5a444fa75c
|
|
@ -1,38 +1,29 @@
|
|||
{
|
||||
"adx": {
|
||||
"rules": [
|
||||
"AdxVerificationCompositeRule"
|
||||
],
|
||||
"packages": {
|
||||
"Microsoft.DotNet.Watcher.Tools": {
|
||||
"exclusions": {
|
||||
"DOC_MISSING": {
|
||||
"lib/netcoreapp1.0/dotnet-watch.dll": "xmldocs not required for DotnetCliTool packages"
|
||||
}
|
||||
},
|
||||
"packageTypes": ["DotnetCliTool"]
|
||||
},
|
||||
"Microsoft.Extensions.Caching.SqlConfig.Tools": {
|
||||
"exclusions": {
|
||||
"DOC_MISSING": {
|
||||
"lib/netcoreapp1.0/dotnet-sql-cache.dll": "xmldocs not required for DotnetCliTool packages"
|
||||
}
|
||||
},
|
||||
"packageTypes": ["DotnetCliTool"]
|
||||
},
|
||||
"Microsoft.Extensions.SecretManager.Tools": {
|
||||
"exclusions": {
|
||||
"DOC_MISSING": {
|
||||
"lib/netcoreapp1.0/dotnet-user-secrets.dll": "xmldocs not required for DotnetCliTool packages"
|
||||
}
|
||||
},
|
||||
"packageTypes": ["DotnetCliTool"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"Default": {
|
||||
"rules": [
|
||||
"DefaultCompositeRule"
|
||||
"adx": {
|
||||
"rules": [
|
||||
"AdxVerificationCompositeRule"
|
||||
],
|
||||
"packages": {
|
||||
"Microsoft.DotNet.Watcher.Tools": {
|
||||
"packageTypes": [
|
||||
"DotnetCliTool"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Caching.SqlConfig.Tools": {
|
||||
"packageTypes": [
|
||||
"DotnetCliTool"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.SecretManager.Tools": {
|
||||
"packageTypes": [
|
||||
"DotnetCliTool"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Default": {
|
||||
"rules": [
|
||||
"DefaultCompositeRule"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<Import Project="..\..\build\common.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
|
|
@ -9,7 +10,6 @@
|
|||
<PackageId>Microsoft.DotNet.Watcher.Tools</PackageId>
|
||||
<PackageTags>dotnet;watch</PackageTags>
|
||||
<PackageType>DotnetCliTool</PackageType>
|
||||
<NetCoreAppImplicitPackageVersion>1.0.0</NetCoreAppImplicitPackageVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
@ -23,4 +23,4 @@
|
|||
<PackageReference Include="Microsoft.Extensions.Process.Sources" Version="1.2.0-*" PrivateAssets="All" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -4,5 +4,3 @@
|
|||
using System.Runtime.CompilerServices;
|
||||
|
||||
[assembly: InternalsVisibleTo("Microsoft.DotNet.Watcher.Tools.Tests, PublicKey = 0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")]
|
||||
// TODO remove when .Source packages work
|
||||
[assembly: InternalsVisibleTo("Microsoft.DotNet.Watcher.Tools.FunctionalTests, PublicKey = 0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")]
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<Import Project="..\..\build\common.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp1.0</TargetFramework>
|
||||
<AssemblyName>dotnet-sql-cache</AssemblyName>
|
||||
|
|
@ -8,7 +10,6 @@
|
|||
<PackageId>Microsoft.Extensions.Caching.SqlConfig.Tools</PackageId>
|
||||
<PackageTags>cache;distributedcache;sqlserver</PackageTags>
|
||||
<PackageType>DotnetCliTool</PackageType>
|
||||
<NetCoreAppImplicitPackageVersion>1.0.0</NetCoreAppImplicitPackageVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
@ -20,4 +21,4 @@
|
|||
<PackageReference Include="System.Data.SqlClient" Version="4.1.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<Import Project="..\..\build\common.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp1.0</TargetFramework>
|
||||
<AssemblyName>dotnet-user-secrets</AssemblyName>
|
||||
|
|
@ -9,7 +11,6 @@
|
|||
<PackageTags>configuration;secrets;usersecrets</PackageTags>
|
||||
<PackageType>DotnetCliTool</PackageType>
|
||||
<GenerateUserSecretsAttribute>false</GenerateUserSecretsAttribute>
|
||||
<NetCoreAppImplicitPackageVersion>1.0.0</NetCoreAppImplicitPackageVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
@ -22,4 +23,4 @@
|
|||
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="1.0.1" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<Import Project="..\..\build\common.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>netcoreapp1.0;netcoreapp1.1</TargetFrameworks>
|
||||
<TargetFramework>netcoreapp1.1</TargetFramework>
|
||||
<DefaultItemExcludes>$(DefaultItemExcludes);TestProjects\**\*</DefaultItemExcludes>
|
||||
</PropertyGroup>
|
||||
|
||||
|
|
@ -18,6 +18,10 @@
|
|||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\src\Microsoft.DotNet.Watcher.Tools\Microsoft.DotNet.Watcher.Tools.csproj" />
|
||||
<ProjectReference Include="..\Microsoft.DotNet.Watcher.Tools.Tests\Microsoft.DotNet.Watcher.Tools.Tests.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.Process.Sources" Version="1.2.0-*" PrivateAssets="All" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0-*" />
|
||||
<PackageReference Include="xunit" Version="2.2.0-*" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0-*" />
|
||||
|
|
@ -27,4 +31,4 @@
|
|||
<RemoveDir Directories="$(TargetDir)TestProjects" Condition="Exists('$(TargetDir)TestProjects')" />
|
||||
</Target>
|
||||
|
||||
</Project>
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp1.0</TargetFramework>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard1.5</TargetFramework>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp1.0</TargetFramework>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp1.0</TargetFramework>
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<Import Project="..\..\build\common.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp1.0</TargetFramework>
|
||||
<TargetFramework>netcoreapp1.1</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
|
|
@ -28,11 +28,9 @@ namespace Microsoft.DotNet.Watcher.Tools.Tests
|
|||
[Fact]
|
||||
public async Task FindsCustomWatchItems()
|
||||
{
|
||||
TemporaryCSharpProject target;
|
||||
_tempDir
|
||||
.WithCSharpProject("Project1", out target)
|
||||
.WithCSharpProject("Project1", out var target)
|
||||
.WithTargetFrameworks("netcoreapp1.0")
|
||||
.WithDefaultGlobs()
|
||||
.WithItem(new ItemSpec { Name = "Watch", Include = "*.js", Exclude = "gulpfile.js" })
|
||||
.Dir()
|
||||
.WithFile("Program.cs")
|
||||
|
|
@ -56,12 +54,10 @@ namespace Microsoft.DotNet.Watcher.Tools.Tests
|
|||
[Fact]
|
||||
public async Task ExcludesDefaultItemsWithWatchFalseMetadata()
|
||||
{
|
||||
TemporaryCSharpProject target;
|
||||
_tempDir
|
||||
.WithCSharpProject("Project1", out target)
|
||||
.WithCSharpProject("Project1", out var target)
|
||||
.WithTargetFrameworks("net40")
|
||||
.WithItem(new ItemSpec { Name = "Compile", Include = "*.cs" })
|
||||
.WithItem(new ItemSpec { Name = "EmbeddedResource", Include = "*.resx", Watch = false })
|
||||
.WithItem(new ItemSpec { Name = "EmbeddedResource", Update = "*.resx", Watch = false })
|
||||
.Dir()
|
||||
.WithFile("Program.cs")
|
||||
.WithFile("Strings.resx");
|
||||
|
|
@ -82,14 +78,11 @@ namespace Microsoft.DotNet.Watcher.Tools.Tests
|
|||
[Fact]
|
||||
public async Task SingleTfm()
|
||||
{
|
||||
TemporaryCSharpProject target;
|
||||
|
||||
_tempDir
|
||||
.SubDir("src")
|
||||
.SubDir("Project1")
|
||||
.WithCSharpProject("Project1", out target)
|
||||
.WithCSharpProject("Project1", out var target)
|
||||
.WithTargetFrameworks("netcoreapp1.0")
|
||||
.WithDefaultGlobs()
|
||||
.Dir()
|
||||
.WithFile("Program.cs")
|
||||
.WithFile("Class1.cs")
|
||||
|
|
@ -117,12 +110,12 @@ namespace Microsoft.DotNet.Watcher.Tools.Tests
|
|||
[Fact]
|
||||
public async Task MultiTfm()
|
||||
{
|
||||
TemporaryCSharpProject target;
|
||||
_tempDir
|
||||
_tempDir
|
||||
.SubDir("src")
|
||||
.SubDir("Project1")
|
||||
.WithCSharpProject("Project1", out target)
|
||||
.WithCSharpProject("Project1", out var target)
|
||||
.WithTargetFrameworks("netcoreapp1.0", "net451")
|
||||
.WithProperty("EnableDefaultCompileItems", "false")
|
||||
.WithItem("Compile", "Class1.netcore.cs", "'$(TargetFramework)'=='netcoreapp1.0'")
|
||||
.WithItem("Compile", "Class1.desktop.cs", "'$(TargetFramework)'=='net451'")
|
||||
.Dir()
|
||||
|
|
@ -147,22 +140,18 @@ namespace Microsoft.DotNet.Watcher.Tools.Tests
|
|||
[Fact]
|
||||
public async Task ProjectReferences_OneLevel()
|
||||
{
|
||||
TemporaryCSharpProject target;
|
||||
TemporaryCSharpProject proj2;
|
||||
_tempDir
|
||||
.SubDir("src")
|
||||
.SubDir("Project2")
|
||||
.WithCSharpProject("Project2", out proj2)
|
||||
.WithCSharpProject("Project2", out var proj2)
|
||||
.WithTargetFrameworks("netstandard1.1")
|
||||
.WithDefaultGlobs()
|
||||
.Dir()
|
||||
.WithFile("Class2.cs")
|
||||
.Up()
|
||||
.SubDir("Project1")
|
||||
.WithCSharpProject("Project1", out target)
|
||||
.WithCSharpProject("Project1", out var target)
|
||||
.WithTargetFrameworks("netcoreapp1.0", "net451")
|
||||
.WithProjectReference(proj2)
|
||||
.WithDefaultGlobs()
|
||||
.Dir()
|
||||
.WithFile("Class1.cs");
|
||||
|
||||
|
|
@ -184,31 +173,25 @@ namespace Microsoft.DotNet.Watcher.Tools.Tests
|
|||
[Fact]
|
||||
public async Task TransitiveProjectReferences_TwoLevels()
|
||||
{
|
||||
TemporaryCSharpProject target;
|
||||
TemporaryCSharpProject proj2;
|
||||
TemporaryCSharpProject proj3;
|
||||
_tempDir
|
||||
.SubDir("src")
|
||||
.SubDir("Project3")
|
||||
.WithCSharpProject("Project3", out proj3)
|
||||
.WithCSharpProject("Project3", out var proj3)
|
||||
.WithTargetFrameworks("netstandard1.0")
|
||||
.WithDefaultGlobs()
|
||||
.Dir()
|
||||
.WithFile("Class3.cs")
|
||||
.Up()
|
||||
.SubDir("Project2")
|
||||
.WithCSharpProject("Project2", out proj2)
|
||||
.WithCSharpProject("Project2", out TemporaryCSharpProject proj2)
|
||||
.WithTargetFrameworks("netstandard1.1")
|
||||
.WithProjectReference(proj3)
|
||||
.WithDefaultGlobs()
|
||||
.Dir()
|
||||
.WithFile("Class2.cs")
|
||||
.Up()
|
||||
.SubDir("Project1")
|
||||
.WithCSharpProject("Project1", out target)
|
||||
.WithCSharpProject("Project1", out TemporaryCSharpProject target)
|
||||
.WithTargetFrameworks("netcoreapp1.0", "net451")
|
||||
.WithProjectReference(proj2)
|
||||
.WithDefaultGlobs()
|
||||
.Dir()
|
||||
.WithFile("Class1.cs");
|
||||
|
||||
|
|
@ -233,7 +216,7 @@ namespace Microsoft.DotNet.Watcher.Tools.Tests
|
|||
public async Task ProjectReferences_Graph()
|
||||
{
|
||||
var graph = new TestProjectGraph(_tempDir);
|
||||
graph.OnCreate(p => p.WithTargetFrameworks("net45").WithDefaultGlobs());
|
||||
graph.OnCreate(p => p.WithTargetFrameworks("net45"));
|
||||
var matches = Regex.Matches(@"
|
||||
A->B B->C C->D D->E
|
||||
B->E
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
|
|
@ -11,8 +11,7 @@ namespace Microsoft.DotNet.Watcher.Tools.Tests
|
|||
public class TemporaryCSharpProject
|
||||
{
|
||||
private const string Template =
|
||||
@"<Project ToolsVersion=""15.0"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
|
||||
<Import Project=""$(MSBuildExtensionsPath)/$(MSBuildToolsVersion)/Microsoft.Common.props"" />
|
||||
@"<Project Sdk=""Microsoft.NET.Sdk"">
|
||||
<PropertyGroup>
|
||||
{0}
|
||||
<OutputType>Exe</OutputType>
|
||||
|
|
@ -20,13 +19,8 @@ namespace Microsoft.DotNet.Watcher.Tools.Tests
|
|||
<ItemGroup>
|
||||
{1}
|
||||
</ItemGroup>
|
||||
<Import Project=""$(MSBuildToolsPath)/Microsoft.CSharp.targets"" />
|
||||
</Project>";
|
||||
|
||||
private const string DefaultGlobs =
|
||||
@"<Compile Include=""**/*.cs"" Exclude=""obj/**/*;bin/**/*"" />
|
||||
<EmbeddedResource Include=""**/*.resx"" Exclude=""obj/**/*;bin/**/*"" />";
|
||||
|
||||
private readonly string _filename;
|
||||
private readonly TemporaryDirectory _directory;
|
||||
private List<string> _items = new List<string>();
|
||||
|
|
@ -37,9 +31,6 @@ namespace Microsoft.DotNet.Watcher.Tools.Tests
|
|||
Name = name;
|
||||
_filename = name + ".csproj";
|
||||
_directory = directory;
|
||||
|
||||
// workaround CLI issue
|
||||
WithProperty("SkipInvalidConfigurations", "true");
|
||||
}
|
||||
|
||||
public string Name { get; }
|
||||
|
|
@ -81,6 +72,7 @@ namespace Microsoft.DotNet.Watcher.Tools.Tests
|
|||
sb.Append(item.Name).Append(" ");
|
||||
if (item.Include != null) sb.Append(" Include=\"").Append(item.Include).Append('"');
|
||||
if (item.Remove != null) sb.Append(" Remove=\"").Append(item.Remove).Append('"');
|
||||
if (item.Update != null) sb.Append(" Update=\"").Append(item.Update).Append('"');
|
||||
if (item.Exclude != null) sb.Append(" Exclude=\"").Append(item.Exclude).Append('"');
|
||||
if (item.Condition != null) sb.Append(" Exclude=\"").Append(item.Condition).Append('"');
|
||||
if (!item.Watch) sb.Append(" Watch=\"false\" ");
|
||||
|
|
@ -99,12 +91,6 @@ namespace Microsoft.DotNet.Watcher.Tools.Tests
|
|||
return WithItem(new ItemSpec { Name = "ProjectReference", Include = reference.Path, Watch = watch });
|
||||
}
|
||||
|
||||
public TemporaryCSharpProject WithDefaultGlobs()
|
||||
{
|
||||
_items.Add(DefaultGlobs);
|
||||
return this;
|
||||
}
|
||||
|
||||
public TemporaryDirectory Dir() => _directory;
|
||||
|
||||
public void Create()
|
||||
|
|
@ -117,6 +103,7 @@ namespace Microsoft.DotNet.Watcher.Tools.Tests
|
|||
public string Name { get; set; }
|
||||
public string Include { get; set; }
|
||||
public string Exclude { get; set; }
|
||||
public string Update { get; set; }
|
||||
public string Remove { get; set; }
|
||||
public bool Watch { get; set; } = true;
|
||||
public string Condition { get; set; }
|
||||
|
|
@ -128,4 +115,4 @@ namespace Microsoft.DotNet.Watcher.Tools.Tests
|
|||
public string Value { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<Import Project="..\..\build\common.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp1.0</TargetFramework>
|
||||
<TargetFramework>netcoreapp1.1</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
@ -17,4 +17,4 @@
|
|||
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0-*" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<Import Project="..\..\build\common.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp1.0</TargetFramework>
|
||||
<TargetFramework>netcoreapp1.1</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
@ -16,4 +16,4 @@
|
|||
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0-*" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -4,4 +4,4 @@
|
|||
<VersionPrefix>1.0.1</VersionPrefix>
|
||||
<VersionSuffix>alpha</VersionSuffix>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
</Project>
|
||||
|
|
|
|||
Loading…
Reference in New Issue