diff --git a/AsyncConverter.Tests/AsyncConverter.Rider.Tests.csproj b/AsyncConverter.Tests/AsyncConverter.Rider.Tests.csproj index d80b902..c8f2950 100644 --- a/AsyncConverter.Tests/AsyncConverter.Rider.Tests.csproj +++ b/AsyncConverter.Tests/AsyncConverter.Rider.Tests.csproj @@ -30,6 +30,6 @@ - + \ No newline at end of file diff --git a/AsyncConverter.Tests/AsyncConverter.Tests.csproj b/AsyncConverter.Tests/AsyncConverter.Tests.csproj index e7b4d0f..e79316f 100644 --- a/AsyncConverter.Tests/AsyncConverter.Tests.csproj +++ b/AsyncConverter.Tests/AsyncConverter.Tests.csproj @@ -26,7 +26,7 @@ - + diff --git a/AsyncConverter.Tests/Highlightings/ConfigureAwait/ConfigureAwaitOnTestTests.cs b/AsyncConverter.Tests/Highlightings/ConfigureAwait/ConfigureAwaitOnTestTests.cs new file mode 100644 index 0000000..bc724dd --- /dev/null +++ b/AsyncConverter.Tests/Highlightings/ConfigureAwait/ConfigureAwaitOnTestTests.cs @@ -0,0 +1,11 @@ +using AsyncConverter.Settings.General; +using JetBrains.ReSharper.TestFramework; + +namespace AsyncConverter.Tests.Highlightings +{ + [TestSetting(typeof(GeneralSettings), nameof(GeneralSettings.ExcludeTestMethodsFromConfigureAwait), false)] + public class ConfigureAwaitOnTestTests : HighlightingsTestsBase + { + protected override string Folder => "ConfigureAwait/OnTest"; + } +} \ No newline at end of file diff --git a/AsyncConverter.Tests/Highlightings/ConfigureAwait/ConfigureAwaitTests.cs b/AsyncConverter.Tests/Highlightings/ConfigureAwait/ConfigureAwaitTests.cs new file mode 100644 index 0000000..b061a48 --- /dev/null +++ b/AsyncConverter.Tests/Highlightings/ConfigureAwait/ConfigureAwaitTests.cs @@ -0,0 +1,7 @@ +namespace AsyncConverter.Tests.Highlightings +{ + public class ConfigureAwaitTests : HighlightingsTestsBase + { + protected override string Folder => "ConfigureAwait/Common"; + } +} \ No newline at end of file diff --git a/AsyncConverter.Tests/Highlightings/ConfigureAwaitWithAttributeTests.cs b/AsyncConverter.Tests/Highlightings/ConfigureAwait/ConfigureAwaitWithAttributeTests.cs similarity index 79% rename from AsyncConverter.Tests/Highlightings/ConfigureAwaitWithAttributeTests.cs rename to AsyncConverter.Tests/Highlightings/ConfigureAwait/ConfigureAwaitWithAttributeTests.cs index fa48e4a..9d50f4a 100644 --- a/AsyncConverter.Tests/Highlightings/ConfigureAwaitWithAttributeTests.cs +++ b/AsyncConverter.Tests/Highlightings/ConfigureAwait/ConfigureAwaitWithAttributeTests.cs @@ -1,4 +1,4 @@ -using AsyncConverter.Settings.ConfigureAwaitOptions; +using AsyncConverter.Settings.ConfigureAwaitOptions; using JetBrains.Application.Settings; namespace AsyncConverter.Tests.Highlightings @@ -9,6 +9,6 @@ protected override void MutateSettings(IContextBoundSettingsStore settingsStore) { settingsStore.SetIndexedValue((AsyncConverterConfigureAwaitSettings s) => s.ConfigureAwaitIgnoreAttributeTypes, "MyCustomAttribute", "AsyncConverter.Tests.Test.Data.Highlightings.ConfigureAwaitWithAttribute.MyCustomAttribute"); } - protected override string Folder => "ConfigureAwaitWithAttribute"; + protected override string Folder => "ConfigureAwait/WithAttribute"; } } \ No newline at end of file diff --git a/AsyncConverter.Tests/Highlightings/ConfigureAwaitTests.cs b/AsyncConverter.Tests/Highlightings/ConfigureAwaitTests.cs deleted file mode 100644 index 445c0d9..0000000 --- a/AsyncConverter.Tests/Highlightings/ConfigureAwaitTests.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace AsyncConverter.Tests.Highlightings -{ - public class ConfigureAwaitTests : HighlightingsTestsBase - { - protected override string Folder => "ConfigureAwait"; - } -} \ No newline at end of file diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/MsTestAttr.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/MsTestAttr.cs new file mode 100644 index 0000000..f8a7bbe --- /dev/null +++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/MsTestAttr.cs @@ -0,0 +1,21 @@ +using System; +using System.Threading.Tasks; + +namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests +{ + using Microsoft.VisualStudio.TestTools.UnitTesting; + public class Class + { + [TestMethod] + public async Task Test() + { + await Task.Delay(1000); + } + } +} + +namespace Microsoft.VisualStudio.TestTools.UnitTesting +{ + public class TestMethodAttribute : Attribute + { } +} \ No newline at end of file diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/MsTestAttr.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/MsTestAttr.cs.gold new file mode 100644 index 0000000..2171058 --- /dev/null +++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/MsTestAttr.cs.gold @@ -0,0 +1,22 @@ +using System; +using System.Threading.Tasks; + +namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests +{ + using Microsoft.VisualStudio.TestTools.UnitTesting; + public class Class + { + [TestMethod] + public async Task Test() + { + await Task.Delay(1000); + } + } +} + +namespace Microsoft.VisualStudio.TestTools.UnitTesting +{ + public class TestMethodAttribute : Attribute + { } +} +--------------------------------------------------------- diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithAttributeOnClass.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithAttributeOnClass.cs new file mode 100644 index 0000000..59df8bd --- /dev/null +++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithAttributeOnClass.cs @@ -0,0 +1,21 @@ +using System; +using System.Threading.Tasks; + +namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests +{ + using NUnit.Framework; + public class Class + { + [Test] + public async Task Test() + { + await Task.Delay(1000); + } + } +} + +namespace NUnit.Framework +{ + public class TestAttribute : Attribute + { } +} diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithAttributeOnClass.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithAttributeOnClass.cs.gold new file mode 100644 index 0000000..3a77abf --- /dev/null +++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithAttributeOnClass.cs.gold @@ -0,0 +1,23 @@ +using System; +using System.Threading.Tasks; + +namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests +{ + using NUnit.Framework; + public class Class + { + [Test] + public async Task Test() + { + await Task.Delay(1000); + } + } +} + +namespace NUnit.Framework +{ + public class TestAttribute : Attribute + { } +} + +--------------------------------------------------------- diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithFalse.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithFalse.cs similarity index 100% rename from AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithFalse.cs rename to AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithFalse.cs diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithFalse.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithFalse.cs.gold similarity index 100% rename from AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithFalse.cs.gold rename to AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithFalse.cs.gold diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithTrue.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithTrue.cs similarity index 100% rename from AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithTrue.cs rename to AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithTrue.cs diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithTrue.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithTrue.cs.gold similarity index 100% rename from AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithTrue.cs.gold rename to AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithTrue.cs.gold diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Without.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/Without.cs similarity index 100% rename from AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Without.cs rename to AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/Without.cs diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Without.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/Without.cs.gold similarity index 100% rename from AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Without.cs.gold rename to AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/Without.cs.gold diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/MsTestAttr.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/MsTestAttr.cs new file mode 100644 index 0000000..f8a7bbe --- /dev/null +++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/MsTestAttr.cs @@ -0,0 +1,21 @@ +using System; +using System.Threading.Tasks; + +namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests +{ + using Microsoft.VisualStudio.TestTools.UnitTesting; + public class Class + { + [TestMethod] + public async Task Test() + { + await Task.Delay(1000); + } + } +} + +namespace Microsoft.VisualStudio.TestTools.UnitTesting +{ + public class TestMethodAttribute : Attribute + { } +} \ No newline at end of file diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/MsTestAttr.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/MsTestAttr.cs.gold new file mode 100644 index 0000000..cc498ba --- /dev/null +++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/MsTestAttr.cs.gold @@ -0,0 +1,23 @@ +using System; +using System.Threading.Tasks; + +namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests +{ + using Microsoft.VisualStudio.TestTools.UnitTesting; + public class Class + { + [TestMethod] + public async Task Test() + { + |await Task.Delay(1000)|(0); + } + } +} + +namespace Microsoft.VisualStudio.TestTools.UnitTesting +{ + public class TestMethodAttribute : Attribute + { } +} +--------------------------------------------------------- +(0): ReSharper Warning: (T) 'If await not configured it may cause deadlock, if this code will be call synchronously' (E) 'Await not configured' diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/NUnitTestAttr.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/NUnitTestAttr.cs new file mode 100644 index 0000000..8e0b648 --- /dev/null +++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/NUnitTestAttr.cs @@ -0,0 +1,21 @@ +using System; +using System.Threading.Tasks; + +namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests +{ + using NUnit.Framework; + public class Class + { + [Test] + public async Task Test() + { + await Task.Delay(1000); + } + } +} + +namespace NUnit.Framework +{ + public class TestAttribute : Attribute + { } +} \ No newline at end of file diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/NUnitTestAttr.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/NUnitTestAttr.cs.gold new file mode 100644 index 0000000..c8018dd --- /dev/null +++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/NUnitTestAttr.cs.gold @@ -0,0 +1,23 @@ +using System; +using System.Threading.Tasks; + +namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests +{ + using NUnit.Framework; + public class Class + { + [Test] + public async Task Test() + { + |await Task.Delay(1000)|(0); + } + } +} + +namespace NUnit.Framework +{ + public class TestAttribute : Attribute + { } +} +--------------------------------------------------------- +(0): ReSharper Warning: (T) 'If await not configured it may cause deadlock, if this code will be call synchronously' (E) 'Await not configured' diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/NUnitTestCaseAttr.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/NUnitTestCaseAttr.cs new file mode 100644 index 0000000..9ed6e2c --- /dev/null +++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/NUnitTestCaseAttr.cs @@ -0,0 +1,21 @@ +using System; +using System.Threading.Tasks; + +namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests +{ + using NUnit.Framework; + public class Class + { + [TestCase] + public async Task Test() + { + await Task.Delay(1000); + } + } +} + +namespace NUnit.Framework +{ + public class TestCaseAttribute : Attribute + { } +} \ No newline at end of file diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/NUnitTestCaseAttr.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/NUnitTestCaseAttr.cs.gold new file mode 100644 index 0000000..aaafe95 --- /dev/null +++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/NUnitTestCaseAttr.cs.gold @@ -0,0 +1,23 @@ +using System; +using System.Threading.Tasks; + +namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests +{ + using NUnit.Framework; + public class Class + { + [TestCase] + public async Task Test() + { + |await Task.Delay(1000)|(0); + } + } +} + +namespace NUnit.Framework +{ + public class TestCaseAttribute : Attribute + { } +} +--------------------------------------------------------- +(0): ReSharper Warning: (T) 'If await not configured it may cause deadlock, if this code will be call synchronously' (E) 'Await not configured' diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/XunitFactAttr.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/XunitFactAttr.cs new file mode 100644 index 0000000..5b96cf6 --- /dev/null +++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/XunitFactAttr.cs @@ -0,0 +1,21 @@ +using System; +using System.Threading.Tasks; + +namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests +{ + using Xunit; + public class Class + { + [Fact] + public async Task Test() + { + await Task.Delay(1000); + } + } +} + +namespace Xunit +{ + public class FactAttribute : Attribute + { } +} \ No newline at end of file diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/XunitFactAttr.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/XunitFactAttr.cs.gold new file mode 100644 index 0000000..4213673 --- /dev/null +++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/XunitFactAttr.cs.gold @@ -0,0 +1,23 @@ +using System; +using System.Threading.Tasks; + +namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests +{ + using Xunit; + public class Class + { + [Fact] + public async Task Test() + { + |await Task.Delay(1000)|(0); + } + } +} + +namespace Xunit +{ + public class FactAttribute : Attribute + { } +} +--------------------------------------------------------- +(0): ReSharper Warning: (T) 'If await not configured it may cause deadlock, if this code will be call synchronously' (E) 'Await not configured' diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/XunitTheoryAttr.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/XunitTheoryAttr.cs new file mode 100644 index 0000000..1963956 --- /dev/null +++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/XunitTheoryAttr.cs @@ -0,0 +1,21 @@ +using System; +using System.Threading.Tasks; + +namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests +{ + using Xunit; + public class Class + { + [Theory] + public async Task Test() + { + await Task.Delay(1000); + } + } +} + +namespace Xunit +{ + public class TheoryAttribute : Attribute + { } +} \ No newline at end of file diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/XunitTheoryAttr.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/XunitTheoryAttr.cs.gold new file mode 100644 index 0000000..5be9601 --- /dev/null +++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/XunitTheoryAttr.cs.gold @@ -0,0 +1,23 @@ +using System; +using System.Threading.Tasks; + +namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests +{ + using Xunit; + public class Class + { + [Theory] + public async Task Test() + { + |await Task.Delay(1000)|(0); + } + } +} + +namespace Xunit +{ + public class TheoryAttribute : Attribute + { } +} +--------------------------------------------------------- +(0): ReSharper Warning: (T) 'If await not configured it may cause deadlock, if this code will be call synchronously' (E) 'Await not configured' diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwaitWithAttribute/WithAttributeOnClass.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithAttribute/WithAttributeOnClass.cs similarity index 100% rename from AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwaitWithAttribute/WithAttributeOnClass.cs rename to AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithAttribute/WithAttributeOnClass.cs diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwaitWithAttribute/WithAttributeOnClass.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithAttribute/WithAttributeOnClass.cs.gold similarity index 100% rename from AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwaitWithAttribute/WithAttributeOnClass.cs.gold rename to AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithAttribute/WithAttributeOnClass.cs.gold diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwaitWithAttribute/WithAttributeOnMethod.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithAttribute/WithAttributeOnMethod.cs similarity index 100% rename from AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwaitWithAttribute/WithAttributeOnMethod.cs rename to AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithAttribute/WithAttributeOnMethod.cs diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwaitWithAttribute/WithAttributeOnMethod.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithAttribute/WithAttributeOnMethod.cs.gold similarity index 100% rename from AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwaitWithAttribute/WithAttributeOnMethod.cs.gold rename to AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithAttribute/WithAttributeOnMethod.cs.gold diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwaitWithAttribute/WithoutAttribute.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithAttribute/WithoutAttribute.cs similarity index 100% rename from AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwaitWithAttribute/WithoutAttribute.cs rename to AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithAttribute/WithoutAttribute.cs diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwaitWithAttribute/WithoutAttribute.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithAttribute/WithoutAttribute.cs.gold similarity index 100% rename from AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwaitWithAttribute/WithoutAttribute.cs.gold rename to AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithAttribute/WithoutAttribute.cs.gold diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/Naming/NUnitTestCaseSource.cs b/AsyncConverter.Tests/Test/Data/Highlightings/Naming/NUnitTestCaseSource.cs new file mode 100644 index 0000000..8cb55c7 --- /dev/null +++ b/AsyncConverter.Tests/Test/Data/Highlightings/Naming/NUnitTestCaseSource.cs @@ -0,0 +1,36 @@ +using System; +using System.Threading.Tasks; + +namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests +{ + using NUnit.Framework; + public class Class + { + [TestCaseSource(nameof(FileNames))] + public async Task Test() + { + await Task.Delay(1000).ConfigureAwait(false); + await Task.Delay(1000).ConfigureAwait(false); + } + + protected TestCaseData[] FileNames() + { + return new TestCaseData[0]; + } + } +} + +namespace NUnit.Framework +{ + public class TestCaseSourceAttribute : Attribute + { + public TestCaseSourceAttribute(string sourceName) + { + + } + } + + public class TestCaseData + { + } +} \ No newline at end of file diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/Naming/NUnitTestCaseSource.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/Naming/NUnitTestCaseSource.cs.gold new file mode 100644 index 0000000..69baba1 --- /dev/null +++ b/AsyncConverter.Tests/Test/Data/Highlightings/Naming/NUnitTestCaseSource.cs.gold @@ -0,0 +1,38 @@ +using System; +using System.Threading.Tasks; + +namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests +{ + using NUnit.Framework; + public class Class + { + [TestCaseSource(nameof(FileNames))] + public async Task Test() + { + await Task.Delay(1000).ConfigureAwait(false); + await Task.Delay(1000).ConfigureAwait(false); + } + + protected TestCaseData[] FileNames() + { + return new TestCaseData[0]; + } + } +} + +namespace NUnit.Framework +{ + public class TestCaseSourceAttribute : Attribute + { + public TestCaseSourceAttribute(string |sourceName|(0)) + { + + } + } + + public class TestCaseData + { + } +} +--------------------------------------------------------- +(0): ReSharper Dead Code: Parameter 'sourceName' is never used diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/NamingWithExcludeTestMethods/NUnitTestCaseSource.cs b/AsyncConverter.Tests/Test/Data/Highlightings/NamingWithExcludeTestMethods/NUnitTestCaseSource.cs new file mode 100644 index 0000000..8cb55c7 --- /dev/null +++ b/AsyncConverter.Tests/Test/Data/Highlightings/NamingWithExcludeTestMethods/NUnitTestCaseSource.cs @@ -0,0 +1,36 @@ +using System; +using System.Threading.Tasks; + +namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests +{ + using NUnit.Framework; + public class Class + { + [TestCaseSource(nameof(FileNames))] + public async Task Test() + { + await Task.Delay(1000).ConfigureAwait(false); + await Task.Delay(1000).ConfigureAwait(false); + } + + protected TestCaseData[] FileNames() + { + return new TestCaseData[0]; + } + } +} + +namespace NUnit.Framework +{ + public class TestCaseSourceAttribute : Attribute + { + public TestCaseSourceAttribute(string sourceName) + { + + } + } + + public class TestCaseData + { + } +} \ No newline at end of file diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/NamingWithExcludeTestMethods/NUnitTestCaseSource.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/NamingWithExcludeTestMethods/NUnitTestCaseSource.cs.gold new file mode 100644 index 0000000..0838bc6 --- /dev/null +++ b/AsyncConverter.Tests/Test/Data/Highlightings/NamingWithExcludeTestMethods/NUnitTestCaseSource.cs.gold @@ -0,0 +1,39 @@ +using System; +using System.Threading.Tasks; + +namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests +{ + using NUnit.Framework; + public class Class + { + [TestCaseSource(nameof(FileNames))] + public async Task |Test|(0)() + { + await Task.Delay(1000).ConfigureAwait(false); + await Task.Delay(1000).ConfigureAwait(false); + } + + protected TestCaseData[] FileNames() + { + return new TestCaseData[0]; + } + } +} + +namespace NUnit.Framework +{ + public class TestCaseSourceAttribute : Attribute + { + public TestCaseSourceAttribute(string |sourceName|(1)) + { + + } + } + + public class TestCaseData + { + } +} +--------------------------------------------------------- +(0): ReSharper Warning: (T) '' (E) 'Async method must ends on "Async"' +(1): ReSharper Dead Code: Parameter 'sourceName' is never used diff --git a/AsyncConverter.Tests/Test/Data/MethodToAsyncConverterTests/AnnotateItemCanBeNull.cs b/AsyncConverter.Tests/Test/Data/MethodToAsyncConverterTests/AnnotateItemCanBeNull.cs new file mode 100644 index 0000000..0a40511 --- /dev/null +++ b/AsyncConverter.Tests/Test/Data/MethodToAsyncConverterTests/AnnotateItemCanBeNull.cs @@ -0,0 +1,11 @@ +namespace AsyncConverter.Tests.Test.Data.MethodToAsyncConverterTests +{ + public class Class + { + [CanBeNull] + public string {caret}Test() + { + return 5; + } + } +} diff --git a/AsyncConverter.Tests/Test/Data/MethodToAsyncConverterTests/AnnotateItemCanBeNull.cs.gold b/AsyncConverter.Tests/Test/Data/MethodToAsyncConverterTests/AnnotateItemCanBeNull.cs.gold new file mode 100644 index 0000000..f27f48e --- /dev/null +++ b/AsyncConverter.Tests/Test/Data/MethodToAsyncConverterTests/AnnotateItemCanBeNull.cs.gold @@ -0,0 +1,14 @@ +using System.Threading.Tasks; +using JetBrains.Annotations; + +namespace AsyncConverter.Tests.Test.Data.MethodToAsyncConverterTests +{ + public class Class + { + [ItemCanBeNull] + public async Task {caret}TestAsync() + { + return 5; + } + } +} diff --git a/AsyncConverter.Tests/Test/Data/MethodToAsyncConverterTests/AnnotateItemNotNull.cs b/AsyncConverter.Tests/Test/Data/MethodToAsyncConverterTests/AnnotateItemNotNull.cs new file mode 100644 index 0000000..aa130c2 --- /dev/null +++ b/AsyncConverter.Tests/Test/Data/MethodToAsyncConverterTests/AnnotateItemNotNull.cs @@ -0,0 +1,11 @@ +namespace AsyncConverter.Tests.Test.Data.MethodToAsyncConverterTests +{ + public class Class + { + [NotNull] + public string {caret}Test() + { + return 5; + } + } +} diff --git a/AsyncConverter.Tests/Test/Data/MethodToAsyncConverterTests/AnnotateItemNotNull.cs.gold b/AsyncConverter.Tests/Test/Data/MethodToAsyncConverterTests/AnnotateItemNotNull.cs.gold new file mode 100644 index 0000000..437f8e6 --- /dev/null +++ b/AsyncConverter.Tests/Test/Data/MethodToAsyncConverterTests/AnnotateItemNotNull.cs.gold @@ -0,0 +1,14 @@ +using System.Threading.Tasks; +using JetBrains.Annotations; + +namespace AsyncConverter.Tests.Test.Data.MethodToAsyncConverterTests +{ + public class Class + { + [ItemNotNull] + public async Task {caret}TestAsync() + { + return 5; + } + } +} diff --git a/AsyncConverter/Analyzers/ConfigureAwaitAnalyzer.cs b/AsyncConverter/Analyzers/ConfigureAwaitAnalyzer.cs index 5a7db5a..60a3d9b 100644 --- a/AsyncConverter/Analyzers/ConfigureAwaitAnalyzer.cs +++ b/AsyncConverter/Analyzers/ConfigureAwaitAnalyzer.cs @@ -1,10 +1,7 @@ -using AsyncConverter.AsyncHelpers.Checker; -using AsyncConverter.Checkers; +using AsyncConverter.AsyncHelpers.ConfigureAwaitCheckers; using AsyncConverter.Highlightings; using JetBrains.ProjectModel; -using JetBrains.ReSharper.Feature.Services.CSharp.PostfixTemplates; using JetBrains.ReSharper.Feature.Services.Daemon; -using JetBrains.ReSharper.Psi; using JetBrains.ReSharper.Psi.CSharp.Tree; using JetBrains.ReSharper.Psi.Tree; @@ -15,18 +12,9 @@ public class ConfigureAwaitAnalyzer : ElementProblemAnalyzer { protected override void Run(IAwaitExpression element, ElementProblemAnalyzerData data, IHighlightingConsumer consumer) { - var attributeFunctionChecker = element.GetSolution().GetComponent(); - var attributeTypeChecker = element.GetSolution().GetComponent(); + var needConfAwaitCheckers = element.GetSolution().GetComponent(); - var declaredType = element.Task?.GetExpressionType() as IDeclaredType; - - if (declaredType.IsConfigurableAwaitable() || declaredType.IsGenericConfigurableAwaitable()) - return; - - if (attributeFunctionChecker.IsUnder(element)) - return; - - if (attributeTypeChecker.IsUnder(element)) + if(!needConfAwaitCheckers.NeedAdding(element)) return; consumer.AddHighlighting(new ConfigureAwaitHighlighting(element)); diff --git a/AsyncConverter/AsyncConverter.Rider.csproj b/AsyncConverter/AsyncConverter.Rider.csproj index 709401b..b01764a 100644 --- a/AsyncConverter/AsyncConverter.Rider.csproj +++ b/AsyncConverter/AsyncConverter.Rider.csproj @@ -3,7 +3,7 @@ net461 true AsyncConverter.Rider - 1.1.8.10 + 1.1.8.11 i.mamay @@ -12,6 +12,7 @@ Plugin for resharper, for converting code to async. async https://github.com/BigBabay/AsyncConverter + AsyncConverter bin\Rider\Debug diff --git a/AsyncConverter/AsyncConverter.csproj b/AsyncConverter/AsyncConverter.csproj index d253850..aef06d9 100644 --- a/AsyncConverter/AsyncConverter.csproj +++ b/AsyncConverter/AsyncConverter.csproj @@ -3,7 +3,7 @@ net461 true AsyncConverter.AsyncConverter - 1.1.8.10 + 1.1.8.11 i.mamay @@ -25,7 +25,7 @@ - + \ No newline at end of file diff --git a/AsyncConverter/AsyncHelpers/AwaitEliders/MethodAwaitElider.cs b/AsyncConverter/AsyncHelpers/AwaitEliders/MethodAwaitElider.cs index 4a18f95..11ceac2 100644 --- a/AsyncConverter/AsyncHelpers/AwaitEliders/MethodAwaitElider.cs +++ b/AsyncConverter/AsyncHelpers/AwaitEliders/MethodAwaitElider.cs @@ -9,7 +9,7 @@ internal class MethodAwaitElider : ICustomAwaitElider { public bool CanElide(ICSharpDeclaration declarationOrClosure) => declarationOrClosure is IMethodDeclaration; - public void Elide(ICSharpDeclaration declarationOrClosure, ICSharpExpression awaitExpression) + public void Elide(ICSharpDeclaration declarationOrClosure, ICSharpExpression awaitExpression) { var factory = CSharpElementFactory.GetInstance(awaitExpression); diff --git a/AsyncConverter/AsyncHelpers/Checker/AttributeFunctionChecker.cs b/AsyncConverter/AsyncHelpers/Checker/AttributeFunctionChecker.cs index 3857023..a201115 100644 --- a/AsyncConverter/AsyncHelpers/Checker/AttributeFunctionChecker.cs +++ b/AsyncConverter/AsyncHelpers/Checker/AttributeFunctionChecker.cs @@ -1,10 +1,10 @@ using System.Linq; using AsyncConverter.Helpers; using AsyncConverter.Settings; -using JetBrains.ReSharper.Psi.Tree; using JetBrains.Application.Settings; using JetBrains.ProjectModel; using JetBrains.ReSharper.Psi.CSharp.Tree; +using JetBrains.ReSharper.Psi.Tree; using JetBrains.Util; namespace AsyncConverter.AsyncHelpers.Checker diff --git a/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/ConfigureAwaitChecker.cs b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/ConfigureAwaitChecker.cs new file mode 100644 index 0000000..3cbfc16 --- /dev/null +++ b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/ConfigureAwaitChecker.cs @@ -0,0 +1,24 @@ +using System.Collections.Generic; +using System.Linq; +using AsyncConverter.AsyncHelpers.ConfigureAwaitCheckers.CustomCheckers; +using JetBrains.ProjectModel; +using JetBrains.ReSharper.Psi.CSharp.Tree; + +namespace AsyncConverter.AsyncHelpers.ConfigureAwaitCheckers +{ + [SolutionComponent] + internal class ConfigureAwaitChecker : IConfigureAwaitChecker + { + private readonly IConfigureAwaitCustomChecker[] awaitCustomCheckers; + + public ConfigureAwaitChecker(IEnumerable awaitCustomCheckers) + { + this.awaitCustomCheckers = awaitCustomCheckers.ToArray(); + } + + public bool NeedAdding(IAwaitExpression element) + { + return awaitCustomCheckers.All(x => x.CanBeAdded(element)); + } + } +} \ No newline at end of file diff --git a/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/AttributeFunctionChecker.cs b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/AttributeFunctionChecker.cs new file mode 100644 index 0000000..4741fe3 --- /dev/null +++ b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/AttributeFunctionChecker.cs @@ -0,0 +1,22 @@ +using AsyncConverter.AsyncHelpers.Checker; +using JetBrains.ProjectModel; +using JetBrains.ReSharper.Psi.CSharp.Tree; + +namespace AsyncConverter.AsyncHelpers.ConfigureAwaitCheckers.CustomCheckers +{ + [SolutionComponent] + internal class AttributeFunctionChecker: IConfigureAwaitCustomChecker + { + private readonly IAttributeFunctionChecker attributeFunctionChecker; + + public AttributeFunctionChecker(IAttributeFunctionChecker attributeFunctionChecker) + { + this.attributeFunctionChecker = attributeFunctionChecker; + } + + public bool CanBeAdded(IAwaitExpression element) + { + return !attributeFunctionChecker.IsUnder(element); + } + } +} \ No newline at end of file diff --git a/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/AttributeTypeChecker.cs b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/AttributeTypeChecker.cs new file mode 100644 index 0000000..ccc4233 --- /dev/null +++ b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/AttributeTypeChecker.cs @@ -0,0 +1,19 @@ +using AsyncConverter.Checkers; +using JetBrains.ProjectModel; +using JetBrains.ReSharper.Psi.CSharp.Tree; + +namespace AsyncConverter.AsyncHelpers.ConfigureAwaitCheckers.CustomCheckers +{ + [SolutionComponent] + class AttributeTypeChecker : IConfigureAwaitCustomChecker + { + private readonly IAttributeTypeChecker attributeTypeChecker; + + public AttributeTypeChecker(IAttributeTypeChecker attributeTypeChecker) + { + this.attributeTypeChecker = attributeTypeChecker; + } + + public bool CanBeAdded(IAwaitExpression element) => !attributeTypeChecker.IsUnder(element); + } +} \ No newline at end of file diff --git a/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/BaseChecker.cs b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/BaseChecker.cs new file mode 100644 index 0000000..b2d1139 --- /dev/null +++ b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/BaseChecker.cs @@ -0,0 +1,18 @@ +using JetBrains.ProjectModel; +using JetBrains.ReSharper.Feature.Services.CSharp.PostfixTemplates; +using JetBrains.ReSharper.Psi; +using JetBrains.ReSharper.Psi.CSharp.Tree; + +namespace AsyncConverter.AsyncHelpers.ConfigureAwaitCheckers.CustomCheckers +{ + [SolutionComponent] + internal class BaseChecker : IConfigureAwaitCustomChecker + { + public bool CanBeAdded(IAwaitExpression element) + { + var declaredType = element.Task?.GetExpressionType() as IDeclaredType; + + return !declaredType.IsConfigurableAwaitable() && !declaredType.IsGenericConfigurableAwaitable(); + } + } +} \ No newline at end of file diff --git a/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/IConfigureAwaitCustomChecker.cs b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/IConfigureAwaitCustomChecker.cs new file mode 100644 index 0000000..f5d5b6d --- /dev/null +++ b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/IConfigureAwaitCustomChecker.cs @@ -0,0 +1,9 @@ +using JetBrains.ReSharper.Psi.CSharp.Tree; + +namespace AsyncConverter.AsyncHelpers.ConfigureAwaitCheckers.CustomCheckers +{ + public interface IConfigureAwaitCustomChecker + { + bool CanBeAdded(IAwaitExpression element); + } +} \ No newline at end of file diff --git a/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/OnTestChecker.cs b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/OnTestChecker.cs new file mode 100644 index 0000000..b06b2b3 --- /dev/null +++ b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/OnTestChecker.cs @@ -0,0 +1,30 @@ +using AsyncConverter.Checkers; +using AsyncConverter.Settings; +using JetBrains.Application.Settings; +using JetBrains.ProjectModel; +using JetBrains.ReSharper.Psi.CSharp.Tree; +using JetBrains.ReSharper.Psi.Tree; + +namespace AsyncConverter.AsyncHelpers.ConfigureAwaitCheckers.CustomCheckers +{ + [SolutionComponent] + internal class OnTestChecker : IConfigureAwaitCustomChecker + { + private readonly IUnderTestChecker underTestChecker; + + public OnTestChecker(IUnderTestChecker underTestChecker) + { + this.underTestChecker = underTestChecker; + } + + public bool CanBeAdded(IAwaitExpression element) + { + var excludeTestMethods = element.GetSettingsStore().GetValue(AsyncConverterSettingsAccessor.ExcludeTestMethodsFromConfigureAwait); + var methodDeclaration = + element.GetContainingTypeMemberDeclarationIgnoringClosures() as IMethodDeclaration; + if (methodDeclaration == null) + return true; + return !excludeTestMethods || !underTestChecker.IsUnder(methodDeclaration); + } + } +} \ No newline at end of file diff --git a/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/IConfigureAwaitChecker.cs b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/IConfigureAwaitChecker.cs new file mode 100644 index 0000000..bb9c346 --- /dev/null +++ b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/IConfigureAwaitChecker.cs @@ -0,0 +1,9 @@ +using JetBrains.ReSharper.Psi.CSharp.Tree; + +namespace AsyncConverter.AsyncHelpers.ConfigureAwaitCheckers +{ + public interface IConfigureAwaitChecker + { + bool NeedAdding(IAwaitExpression element); + } +} \ No newline at end of file diff --git a/AsyncConverter/AsyncHelpers/RenameCheckers/ControllerRenameChecker.cs b/AsyncConverter/AsyncHelpers/RenameCheckers/ControllerRenameChecker.cs index de76ac7..ba2b713 100644 --- a/AsyncConverter/AsyncHelpers/RenameCheckers/ControllerRenameChecker.cs +++ b/AsyncConverter/AsyncHelpers/RenameCheckers/ControllerRenameChecker.cs @@ -1,5 +1,5 @@ -using System.Linq; -using System.Collections.Generic; +using System.Collections.Generic; +using System.Linq; using JetBrains.Metadata.Reader.Impl; using JetBrains.ProjectModel; using JetBrains.ReSharper.Psi; diff --git a/AsyncConverter/Checkers/UnderTestChecker.cs b/AsyncConverter/Checkers/UnderTestChecker.cs index 81aa4d8..d93a07d 100644 --- a/AsyncConverter/Checkers/UnderTestChecker.cs +++ b/AsyncConverter/Checkers/UnderTestChecker.cs @@ -16,7 +16,8 @@ public class UnderTestChecker : IUnderTestChecker new ClrTypeName("Xunit.FactAttribute"), new ClrTypeName("Xunit.TheoryAttribute"), new ClrTypeName("NUnit.Framework.TestAttribute"), - new ClrTypeName("NUnit.Framework.TestCaseAttribute") + new ClrTypeName("NUnit.Framework.TestCaseAttribute"), + new ClrTypeName("NUnit.Framework.TestCaseSourceAttribute"), }; public bool IsUnder(IMethodDeclaration method) => method.AttributeSectionList != null && method.ContainsAttribute(testAttributesClass); diff --git a/AsyncConverter/Helpers/AsyncReplacer.cs b/AsyncConverter/Helpers/AsyncReplacer.cs index 57991b7..f45b254 100644 --- a/AsyncConverter/Helpers/AsyncReplacer.cs +++ b/AsyncConverter/Helpers/AsyncReplacer.cs @@ -1,8 +1,11 @@ +using System; using System.Linq; using AsyncConverter.AsyncHelpers.AwaitEliders; using JetBrains.Annotations; using JetBrains.ProjectModel; +using JetBrains.ReSharper.Feature.Services.CSharp.Util; using JetBrains.ReSharper.Psi; +using JetBrains.ReSharper.Psi.CodeAnnotations; using JetBrains.ReSharper.Psi.CSharp.Tree; using JetBrains.ReSharper.Psi.Search; using JetBrains.ReSharper.Psi.Tree; @@ -91,6 +94,7 @@ private void ReplaceMethodSignatureToAsync([NotNull] IParametersOwner parameters if (task == null) return; newReturnValue = TypeFactory.CreateType(task, returnType); + ChangeJetbrainsAnnotations(methodDeclaration); } var name = GenerateAsyncMethodName(methodDeclaration.DeclaredName); @@ -101,6 +105,35 @@ private void ReplaceMethodSignatureToAsync([NotNull] IParametersOwner parameters awaitElider.Elide(methodDeclaration); } + private static void ChangeJetbrainsAnnotations([NotNull] IMethodDeclaration methodDeclaration) + { + var itemCanBeNull = CodeAnnotationsUtil.GetNullabilityCache(methodDeclaration.UserData, methodDeclaration).ItemCanBeNullAnnotation; + ChangeAnnotationAttribute( + methodDeclaration, + "CanBeNull", + itemCanBeNull); + + var itemNotNull = CodeAnnotationsUtil.GetNullabilityCache(methodDeclaration.UserData, methodDeclaration).ItemNotNullAnnotation; + ChangeAnnotationAttribute( + methodDeclaration, + "NotNull", + itemNotNull); + } + + private static void ChangeAnnotationAttribute(IMethodDeclaration methodDeclaration, string toReplace, ITypeElement replacement) + { + var toReplaceAttribute = methodDeclaration.Attributes + .FirstOrDefault(a => string.Compare(a.Name.QualifiedName, toReplace, StringComparison.InvariantCultureIgnoreCase) == 0); + if (toReplaceAttribute != null && replacement != null) + { + var annotation = CSharpAnnotationsUtil.Annotate(methodDeclaration, replacement); + if (annotation.Status == CSharpAnnotationsUtil.Status.AnnotationInserted) + { + methodDeclaration.RemoveAttribute(toReplaceAttribute); + } + } + } + private static void SetSignature([NotNull] IMethodDeclaration methodDeclaration, [NotNull] IType newReturnValue, [NotNull] string newName) { methodDeclaration.SetType(newReturnValue); diff --git a/AsyncConverter/Highlightings/AsyncAwaitMayBeElidedHighlighting.cs b/AsyncConverter/Highlightings/AsyncAwaitMayBeElidedHighlighting.cs index 9ee01f1..08d01e3 100644 --- a/AsyncConverter/Highlightings/AsyncAwaitMayBeElidedHighlighting.cs +++ b/AsyncConverter/Highlightings/AsyncAwaitMayBeElidedHighlighting.cs @@ -1,4 +1,5 @@ using AsyncConverter.Highlightings; +using AsyncConverter.Settings; using JetBrains.DocumentModel; using JetBrains.ReSharper.Feature.Services.Daemon; using JetBrains.ReSharper.Psi.CSharp; diff --git a/AsyncConverter/Highlightings/AsyncMethodNamingHighlighting.cs b/AsyncConverter/Highlightings/AsyncMethodNamingHighlighting.cs index bc56682..7dce6df 100644 --- a/AsyncConverter/Highlightings/AsyncMethodNamingHighlighting.cs +++ b/AsyncConverter/Highlightings/AsyncMethodNamingHighlighting.cs @@ -1,4 +1,5 @@ using AsyncConverter.Highlightings; +using AsyncConverter.Settings; using JetBrains.DocumentModel; using JetBrains.ReSharper.Feature.Services.Daemon; using JetBrains.ReSharper.Psi.CSharp; diff --git a/AsyncConverter/Highlightings/CanBeUseAsyncMethodHighlighting.cs b/AsyncConverter/Highlightings/CanBeUseAsyncMethodHighlighting.cs index 53c26bf..03b94a4 100644 --- a/AsyncConverter/Highlightings/CanBeUseAsyncMethodHighlighting.cs +++ b/AsyncConverter/Highlightings/CanBeUseAsyncMethodHighlighting.cs @@ -1,4 +1,5 @@ using AsyncConverter.Highlightings; +using AsyncConverter.Settings; using JetBrains.DocumentModel; using JetBrains.ReSharper.Feature.Services.Daemon; using JetBrains.ReSharper.Psi.CSharp; diff --git a/AsyncConverter/Highlightings/ConfigureAwaitHighlighting.cs b/AsyncConverter/Highlightings/ConfigureAwaitHighlighting.cs index 858e810..760506c 100644 --- a/AsyncConverter/Highlightings/ConfigureAwaitHighlighting.cs +++ b/AsyncConverter/Highlightings/ConfigureAwaitHighlighting.cs @@ -1,4 +1,5 @@ using AsyncConverter.Highlightings; +using AsyncConverter.Settings; using JetBrains.DocumentModel; using JetBrains.ReSharper.Feature.Services.Daemon; using JetBrains.ReSharper.Psi.CSharp; diff --git a/AsyncConverter/Highlightings/NullReturnAsTaskHighlighting.cs b/AsyncConverter/Highlightings/NullReturnAsTaskHighlighting.cs index 5a97b63..bb7dd63 100644 --- a/AsyncConverter/Highlightings/NullReturnAsTaskHighlighting.cs +++ b/AsyncConverter/Highlightings/NullReturnAsTaskHighlighting.cs @@ -1,4 +1,5 @@ using AsyncConverter.Highlightings; +using AsyncConverter.Settings; using JetBrains.DocumentModel; using JetBrains.ReSharper.Feature.Services.Daemon; using JetBrains.ReSharper.Psi; diff --git a/AsyncConverter/Highlightings/AsyncConverterGroupSettings.cs b/AsyncConverter/Settings/AsyncConverterGroupSettings.cs similarity index 81% rename from AsyncConverter/Highlightings/AsyncConverterGroupSettings.cs rename to AsyncConverter/Settings/AsyncConverterGroupSettings.cs index 85b4043..12afce1 100644 --- a/AsyncConverter/Highlightings/AsyncConverterGroupSettings.cs +++ b/AsyncConverter/Settings/AsyncConverterGroupSettings.cs @@ -1,9 +1,9 @@ -using AsyncConverter.Highlightings; +using AsyncConverter.Settings; using JetBrains.ReSharper.Feature.Services.Daemon; [assembly: RegisterConfigurableHighlightingsGroup(AsyncConverterGroupSettings.Id, AsyncConverterGroupSettings.Name)] -namespace AsyncConverter.Highlightings +namespace AsyncConverter.Settings { public static class AsyncConverterGroupSettings { diff --git a/AsyncConverter/Settings/AsyncConverterSettingsAccessor.cs b/AsyncConverter/Settings/AsyncConverterSettingsAccessor.cs index 149fb87..3a0710e 100644 --- a/AsyncConverter/Settings/AsyncConverterSettingsAccessor.cs +++ b/AsyncConverter/Settings/AsyncConverterSettingsAccessor.cs @@ -17,6 +17,10 @@ public static readonly Expression> public static readonly Expression> ExcludeTestMethodsFromEliding = x => x.ExcludeTestMethodsFromEliding; + [NotNull] + public static readonly Expression> + ExcludeTestMethodsFromConfigureAwait = x => x.ExcludeTestMethodsFromConfigureAwait; + [NotNull] public static readonly Expression>> ConfigureAwaitIgnoreAttributeTypes = diff --git a/AsyncConverter/Settings/General/GeneralSettings.cs b/AsyncConverter/Settings/General/GeneralSettings.cs index 238d9d7..ed7093a 100644 --- a/AsyncConverter/Settings/General/GeneralSettings.cs +++ b/AsyncConverter/Settings/General/GeneralSettings.cs @@ -10,5 +10,9 @@ public class GeneralSettings [SettingsEntry(true, "Do not suggest add 'Async' suffix to test method.")] public bool ExcludeTestMethodsFromRanaming { get; set; } + + [SettingsEntry(true, "Do not suggest add 'ConfigureAwait' into test method.")] + public bool ExcludeTestMethodsFromConfigureAwait { get; set; } + } } \ No newline at end of file diff --git a/Rider/AsyncConverter.Rider/META-INF/plugin.xml b/Rider/AsyncConverter.Rider/META-INF/plugin.xml index 95c0110..598dd08 100644 --- a/Rider/AsyncConverter.Rider/META-INF/plugin.xml +++ b/Rider/AsyncConverter.Rider/META-INF/plugin.xml @@ -1,8 +1,8 @@ - + AsyncConverter.AsyncConverter AsyncConverter Plugin for converting code to async. - 1.1.8.10 + 1.1.8.11 i.mamay