CSharpUpgradeProject.cs 4.8 KB
Newer Older
Š
Šimon Koníček 已提交
1 2
// Copyright (c) Microsoft.  All Rights Reserved.  Licensed under the Apache License, Version 2.0.  See License.txt in the project root for license information.

3
using Microsoft.CodeAnalysis;
Š
Šimon Koníček 已提交
4 5 6 7
using Microsoft.CodeAnalysis.Test.Utilities;
using Microsoft.VisualStudio.IntegrationTest.Utilities;
using Roslyn.Test.Utilities;
using Xunit;
8
using Xunit.Abstractions;
Š
Šimon Koníček 已提交
9 10
using ProjectUtils = Microsoft.VisualStudio.IntegrationTest.Utilities.Common.ProjectUtils;

11
namespace Roslyn.VisualStudio.IntegrationTests.CSharp
Š
Šimon Koníček 已提交
12 13
{
    [Collection(nameof(SharedIntegrationHostFixture))]
Š
Šimon Koníček 已提交
14
    public class CSharpUpgradeProject : AbstractUpdateProjectTest
Š
Šimon Koníček 已提交
15
    {
16 17
        public CSharpUpgradeProject(VisualStudioInstanceFactory instanceFactory, ITestOutputHelper testOutputHelper)
            : base(instanceFactory, testOutputHelper)
18 19 20
        {
        }

21
        private void InvokeFix()
22
        {
23
            VisualStudio.Editor.SetText(@"
24
#error version:latest
25 26
");
            VisualStudio.Editor.Activate();
27

28
            VisualStudio.Editor.PlaceCaret("version:latest");
29
            VisualStudio.Editor.InvokeCodeActionList();
30
            VisualStudio.Editor.Verify.CodeAction("Upgrade this project to C# language version 'latest'", applyFix: true);
Š
Šimon Koníček 已提交
31 32
        }

J
Joey Robichaud 已提交
33
        [WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/38301"), Trait(Traits.Feature, Traits.Features.CodeActionsUpgradeProject)]
Š
Šimon Koníček 已提交
34 35 36 37
        public void CPSProject_GeneralPropertyGroupUpdated()
        {
            var project = new ProjectUtils.Project(ProjectName);

Š
Šimon Koníček 已提交
38
            VisualStudio.SolutionExplorer.CreateSolution(SolutionName);
Š
Šimon Koníček 已提交
39
            VisualStudio.SolutionExplorer.AddProject(project, WellKnownProjectTemplates.CSharpNetStandardClassLibrary, LanguageNames.CSharp);
40
            VisualStudio.SolutionExplorer.RestoreNuGetPackages(project);
41

42
            InvokeFix();
43
            VerifyPropertyOutsideConfiguration(GetProjectFileElement(project), "LangVersion", "latest");
44 45 46 47 48 49 50
        }

        [WpfFact, Trait(Traits.Feature, Traits.Features.CodeActionsUpgradeProject)]
        public void LegacyProject_AllConfigurationsUpdated()
        {
            var project = new ProjectUtils.Project(ProjectName);

Š
Šimon Koníček 已提交
51
            VisualStudio.SolutionExplorer.CreateSolution(SolutionName);
52 53
            VisualStudio.SolutionExplorer.AddProject(project, WellKnownProjectTemplates.ClassLibrary, LanguageNames.CSharp);

54
            InvokeFix();
55
            VerifyPropertyInEachConfiguration(GetProjectFileElement(project), "LangVersion", "latest");
56 57 58 59 60 61 62 63
        }

        [WorkItem(23342, "https://github.com/dotnet/roslyn/issues/23342")]
        [WpfFact, Trait(Traits.Feature, Traits.Features.CodeActionsUpgradeProject)]
        public void LegacyProject_MultiplePlatforms_AllConfigurationsUpdated()
        {
            var project = new ProjectUtils.Project(ProjectName);

Š
Šimon Koníček 已提交
64
            VisualStudio.SolutionExplorer.CreateSolution(SolutionName);
65
            VisualStudio.SolutionExplorer.AddCustomProject(project, ".csproj", $@"<?xml version=""1.0"" encoding=""utf-8""?>
Š
Šimon Koníček 已提交
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
<Project ToolsVersion=""15.0"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
  <Import Project=""$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props"" Condition=""Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')"" />
  <PropertyGroup>
    <Configuration Condition=""'$(Configuration)' == ''"">Debug</Configuration>
    <Platform Condition=""'$(Platform)' == ''"">x64</Platform>
    <ProjectGuid>{{F4233BA4-A4CB-498B-BBC1-65A42206B1BA}}</ProjectGuid>
    <OutputType>Library</OutputType>
    <RootNamespace>{ProjectName}</RootNamespace>
    <AssemblyName>{ProjectName}</AssemblyName>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
  </PropertyGroup>
  <PropertyGroup Condition=""'$(Configuration)|$(Platform)' == 'Debug|x86'"">
    <OutputPath>bin\x86\Debug\</OutputPath>
    <PlatformTarget>x86</PlatformTarget>
  </PropertyGroup>
  <PropertyGroup Condition=""'$(Configuration)|$(Platform)' == 'Release|x86'"">
    <OutputPath>bin\x86\Release\</OutputPath>
    <PlatformTarget>x86</PlatformTarget>
    <LangVersion>7.1</LangVersion>
  </PropertyGroup>
  <PropertyGroup Condition=""'$(Configuration)|$(Platform)' == 'Debug|x64'"">
    <OutputPath>bin\x64\Debug\</OutputPath>
    <PlatformTarget>x64</PlatformTarget>
    <LangVersion>7.0</LangVersion>
  </PropertyGroup>
  <PropertyGroup Condition=""'$(Configuration)|$(Platform)' == 'Release|x64'"">
    <OutputPath>bin\x64\Release\</OutputPath>
    <PlatformTarget>x64</PlatformTarget>
  </PropertyGroup>
  <ItemGroup>
  </ItemGroup>
  <Import Project=""$(MSBuildToolsPath)\Microsoft.CSharp.targets"" />
98
</Project>");
Š
Šimon Koníček 已提交
99

100 101 102
            VisualStudio.SolutionExplorer.AddFile(project, "C.cs", open: true);

            InvokeFix();
103
            VerifyPropertyInEachConfiguration(GetProjectFileElement(project), "LangVersion", "latest");
Š
Šimon Koníček 已提交
104 105 106
        }
    }
}