From 0ced67f8777e8aaae657ef343c710a270ab5bee1 Mon Sep 17 00:00:00 2001 From: Stephen Monaco <1782158+stevemonaco@users.noreply.github.com> Date: Sun, 5 May 2024 10:20:28 -0400 Subject: [PATCH] Add [GeneratedCode] and [ExcludeFromCodeCoverage] to Name Generator output members (#15616) --- .../InitializeComponentCodeGenerator.cs | 12 +++++++++++- .../NameGenerator/OnlyPropertiesCodeGenerator.cs | 5 +++++ .../GeneratedInitializeComponent/AttachedProps.txt | 3 +++ .../AttachedPropsWithDevTools.txt | 3 +++ .../ControlWithoutWindow.txt | 3 +++ .../GeneratedInitializeComponent/CustomControls.txt | 5 +++++ .../GeneratedInitializeComponent/DataTemplates.txt | 4 ++++ .../GeneratedInitializeComponent/FieldModifier.txt | 8 ++++++++ .../GeneratedInitializeComponent/NamedControl.txt | 3 +++ .../GeneratedInitializeComponent/NamedControls.txt | 5 +++++ .../GeneratedInitializeComponent/NoNamedControls.txt | 2 ++ .../GeneratedInitializeComponent/SignUpView.txt | 12 ++++++++++++ .../GeneratedInitializeComponent/xNamedControl.txt | 3 +++ .../GeneratedInitializeComponent/xNamedControls.txt | 5 +++++ .../InitializeComponent/InitializeComponentTests.cs | 8 +++++--- .../OnlyProperties/GeneratedCode/AttachedProps.txt | 1 + .../GeneratedCode/ControlWithoutWindow.txt | 1 + .../OnlyProperties/GeneratedCode/CustomControls.txt | 3 +++ .../OnlyProperties/GeneratedCode/DataTemplates.txt | 2 ++ .../OnlyProperties/GeneratedCode/FieldModifier.txt | 6 ++++++ .../OnlyProperties/GeneratedCode/NamedControl.txt | 1 + .../OnlyProperties/GeneratedCode/NamedControls.txt | 3 +++ .../OnlyProperties/GeneratedCode/SignUpView.txt | 10 ++++++++++ .../OnlyProperties/GeneratedCode/xNamedControl.txt | 1 + .../OnlyProperties/GeneratedCode/xNamedControls.txt | 3 +++ .../OnlyProperties/OnlyPropertiesTests.cs | 9 +++++++-- 26 files changed, 115 insertions(+), 6 deletions(-) diff --git a/src/tools/Avalonia.Generators/NameGenerator/InitializeComponentCodeGenerator.cs b/src/tools/Avalonia.Generators/NameGenerator/InitializeComponentCodeGenerator.cs index 295104abe4..3dd058af0b 100644 --- a/src/tools/Avalonia.Generators/NameGenerator/InitializeComponentCodeGenerator.cs +++ b/src/tools/Avalonia.Generators/NameGenerator/InitializeComponentCodeGenerator.cs @@ -6,6 +6,8 @@ namespace Avalonia.Generators.NameGenerator; internal class InitializeComponentCodeGenerator : ICodeGenerator { + private string _generatorName = typeof(InitializeComponentCodeGenerator).FullName; + private string _generatorVersion = typeof(InitializeComponentCodeGenerator).Assembly.GetName().Version.ToString(); private readonly bool _diagnosticsAreConnected; private const string AttachDevToolsCodeBlock = @" #if DEBUG @@ -31,6 +33,7 @@ internal class InitializeComponentCodeGenerator : ICodeGenerator var initializations = new List(); const string thisFindNameScopeVariable = " var __thisNameScope__ = this.FindNameScope();"; bool hasNames = false; + foreach (var resolvedName in names) { if (!hasNames) @@ -39,7 +42,12 @@ internal class InitializeComponentCodeGenerator : ICodeGenerator } var (typeName, name, fieldModifier) = resolvedName; - properties.Add($" {fieldModifier} {typeName} {name};"); + var propertySource = + $""" + [global::System.CodeDom.Compiler.GeneratedCode("{_generatorName}", "{_generatorVersion}")] + {fieldModifier} {typeName} {name}; + """; + properties.Add(propertySource); initializations.Add($" {name} = __thisNameScope__?.Find<{typeName}>(\"{name}\");"); hasNames = true; @@ -64,6 +72,8 @@ namespace {nameSpace} /// /// Should the XAML be loaded into the component. {(attachDevTools ? AttachDevToolsParameterDocumentation : string.Empty)} + [global::System.CodeDom.Compiler.GeneratedCode(""{_generatorName}"", ""{_generatorVersion}"")] + [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] public void InitializeComponent(bool loadXaml = true{(attachDevTools ? ", bool attachDevTools = true" : string.Empty)}) {{ if (loadXaml) diff --git a/src/tools/Avalonia.Generators/NameGenerator/OnlyPropertiesCodeGenerator.cs b/src/tools/Avalonia.Generators/NameGenerator/OnlyPropertiesCodeGenerator.cs index 367874e212..8b295acd6b 100644 --- a/src/tools/Avalonia.Generators/NameGenerator/OnlyPropertiesCodeGenerator.cs +++ b/src/tools/Avalonia.Generators/NameGenerator/OnlyPropertiesCodeGenerator.cs @@ -7,10 +7,15 @@ namespace Avalonia.Generators.NameGenerator; internal class OnlyPropertiesCodeGenerator : ICodeGenerator { + private string _generatorName = typeof(OnlyPropertiesCodeGenerator).FullName; + private string _generatorVersion = typeof(OnlyPropertiesCodeGenerator).Assembly.GetName().Version.ToString(); + public string GenerateCode(string className, string nameSpace, IXamlType xamlType, IEnumerable names) { var namedControls = names .Select(info => " " + + $"[global::System.CodeDom.Compiler.GeneratedCode(\"{_generatorName}\", \"{_generatorVersion}\")]\n" + + " " + $"{info.FieldModifier} {info.TypeName} {info.Name} => " + $"this.FindNameScope()?.Find<{info.TypeName}>(\"{info.Name}\");") .ToList(); diff --git a/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/AttachedProps.txt b/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/AttachedProps.txt index 836f366d69..083d66d824 100644 --- a/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/AttachedProps.txt +++ b/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/AttachedProps.txt @@ -8,6 +8,7 @@ namespace Sample.App { partial class SampleView { + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBox UserNameTextBox; /// @@ -15,6 +16,8 @@ namespace Sample.App /// /// Should the XAML be loaded into the component. + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] + [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] public void InitializeComponent(bool loadXaml = true) { if (loadXaml) diff --git a/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/AttachedPropsWithDevTools.txt b/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/AttachedPropsWithDevTools.txt index 2b7562947f..ea8b9a3f50 100644 --- a/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/AttachedPropsWithDevTools.txt +++ b/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/AttachedPropsWithDevTools.txt @@ -8,6 +8,7 @@ namespace Sample.App { partial class SampleView { + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBox UserNameTextBox; /// @@ -16,6 +17,8 @@ namespace Sample.App /// Should the XAML be loaded into the component. /// Should the dev tools be attached. + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] + [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] public void InitializeComponent(bool loadXaml = true, bool attachDevTools = true) { if (loadXaml) diff --git a/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/ControlWithoutWindow.txt b/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/ControlWithoutWindow.txt index 836f366d69..083d66d824 100644 --- a/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/ControlWithoutWindow.txt +++ b/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/ControlWithoutWindow.txt @@ -8,6 +8,7 @@ namespace Sample.App { partial class SampleView { + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBox UserNameTextBox; /// @@ -15,6 +16,8 @@ namespace Sample.App /// /// Should the XAML be loaded into the component. + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] + [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] public void InitializeComponent(bool loadXaml = true) { if (loadXaml) diff --git a/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/CustomControls.txt b/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/CustomControls.txt index 843f1b9af1..5911e30e56 100644 --- a/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/CustomControls.txt +++ b/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/CustomControls.txt @@ -8,8 +8,11 @@ namespace Sample.App { partial class SampleView { + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.ReactiveUI.RoutedViewHost ClrNamespaceRoutedViewHost; + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.ReactiveUI.RoutedViewHost UriRoutedViewHost; + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Controls.CustomTextBox UserNameTextBox; /// @@ -17,6 +20,8 @@ namespace Sample.App /// /// Should the XAML be loaded into the component. + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] + [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] public void InitializeComponent(bool loadXaml = true) { if (loadXaml) diff --git a/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/DataTemplates.txt b/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/DataTemplates.txt index 4bb89b83f5..33a875af3e 100644 --- a/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/DataTemplates.txt +++ b/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/DataTemplates.txt @@ -8,7 +8,9 @@ namespace Sample.App { partial class SampleView { + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBox UserNameTextBox; + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.ListBox NamedListBox; /// @@ -16,6 +18,8 @@ namespace Sample.App /// /// Should the XAML be loaded into the component. + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] + [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] public void InitializeComponent(bool loadXaml = true) { if (loadXaml) diff --git a/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/FieldModifier.txt b/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/FieldModifier.txt index 2e458f62a4..63471ed852 100644 --- a/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/FieldModifier.txt +++ b/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/FieldModifier.txt @@ -8,11 +8,17 @@ namespace Sample.App { partial class SampleView { + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] public global::Avalonia.Controls.TextBox FirstNameTextBox; + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] public global::Avalonia.Controls.TextBox LastNameTextBox; + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] protected global::Avalonia.Controls.TextBox PasswordTextBox; + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] private global::Avalonia.Controls.TextBox ConfirmPasswordTextBox; + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.Button SignUpButton; + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.Button RegisterButton; /// @@ -20,6 +26,8 @@ namespace Sample.App /// /// Should the XAML be loaded into the component. + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] + [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] public void InitializeComponent(bool loadXaml = true) { if (loadXaml) diff --git a/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/NamedControl.txt b/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/NamedControl.txt index 836f366d69..083d66d824 100644 --- a/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/NamedControl.txt +++ b/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/NamedControl.txt @@ -8,6 +8,7 @@ namespace Sample.App { partial class SampleView { + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBox UserNameTextBox; /// @@ -15,6 +16,8 @@ namespace Sample.App /// /// Should the XAML be loaded into the component. + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] + [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] public void InitializeComponent(bool loadXaml = true) { if (loadXaml) diff --git a/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/NamedControls.txt b/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/NamedControls.txt index 644e8b5a91..ed4a2ea6e5 100644 --- a/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/NamedControls.txt +++ b/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/NamedControls.txt @@ -8,8 +8,11 @@ namespace Sample.App { partial class SampleView { + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBox UserNameTextBox; + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBox PasswordTextBox; + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.Button SignUpButton; /// @@ -17,6 +20,8 @@ namespace Sample.App /// /// Should the XAML be loaded into the component. + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] + [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] public void InitializeComponent(bool loadXaml = true) { if (loadXaml) diff --git a/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/NoNamedControls.txt b/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/NoNamedControls.txt index b68dce6170..ff293f9c23 100644 --- a/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/NoNamedControls.txt +++ b/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/NoNamedControls.txt @@ -15,6 +15,8 @@ namespace Sample.App /// /// Should the XAML be loaded into the component. + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] + [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] public void InitializeComponent(bool loadXaml = true) { if (loadXaml) diff --git a/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/SignUpView.txt b/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/SignUpView.txt index 747692c481..4118a3b682 100644 --- a/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/SignUpView.txt +++ b/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/SignUpView.txt @@ -8,15 +8,25 @@ namespace Sample.App { partial class SampleView { + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Controls.CustomTextBox UserNameTextBox; + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBlock UserNameValidation; + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBox PasswordTextBox; + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBlock PasswordValidation; + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.ListBox AwesomeListView; + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBox ConfirmPasswordTextBox; + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBlock ConfirmPasswordValidation; + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.Documents.Run SignUpButtonDescription; + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.Button SignUpButton; + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBlock CompoundValidation; /// @@ -24,6 +34,8 @@ namespace Sample.App /// /// Should the XAML be loaded into the component. + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] + [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] public void InitializeComponent(bool loadXaml = true) { if (loadXaml) diff --git a/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/xNamedControl.txt b/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/xNamedControl.txt index 836f366d69..083d66d824 100644 --- a/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/xNamedControl.txt +++ b/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/xNamedControl.txt @@ -8,6 +8,7 @@ namespace Sample.App { partial class SampleView { + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBox UserNameTextBox; /// @@ -15,6 +16,8 @@ namespace Sample.App /// /// Should the XAML be loaded into the component. + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] + [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] public void InitializeComponent(bool loadXaml = true) { if (loadXaml) diff --git a/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/xNamedControls.txt b/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/xNamedControls.txt index 644e8b5a91..ed4a2ea6e5 100644 --- a/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/xNamedControls.txt +++ b/tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/xNamedControls.txt @@ -8,8 +8,11 @@ namespace Sample.App { partial class SampleView { + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBox UserNameTextBox; + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBox PasswordTextBox; + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.Button SignUpButton; /// @@ -17,6 +20,8 @@ namespace Sample.App /// /// Should the XAML be loaded into the component. + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")] + [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] public void InitializeComponent(bool loadXaml = true) { if (loadXaml) diff --git a/tests/Avalonia.Generators.Tests/InitializeComponent/InitializeComponentTests.cs b/tests/Avalonia.Generators.Tests/InitializeComponent/InitializeComponentTests.cs index 1653796f52..1d0070f2f1 100644 --- a/tests/Avalonia.Generators.Tests/InitializeComponent/InitializeComponentTests.cs +++ b/tests/Avalonia.Generators.Tests/InitializeComponent/InitializeComponentTests.cs @@ -48,15 +48,17 @@ public class InitializeComponentTests var names = nameResolver.ResolveNames(classInfo.Xaml); var generator = new InitializeComponentCodeGenerator(types, devToolsMode); + var generatorVersion = typeof(InitializeComponentCodeGenerator).Assembly.GetName().Version.ToString(); var code = generator .GenerateCode("SampleView", "Sample.App", classInfo.XamlType, names) .Replace("\r", string.Empty); - var expected = await InitializeComponentCode.Load(expectation); - + var expected = (await InitializeComponentCode.Load(expectation)) + .Replace("\r", string.Empty) + .Replace("$GeneratorVersion", generatorVersion); CSharpSyntaxTree.ParseText(code); - Assert.Equal(expected.Replace("\r", string.Empty), code); + Assert.Equal(expected, code); } } diff --git a/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/AttachedProps.txt b/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/AttachedProps.txt index 8a3a65773c..17658bacff 100644 --- a/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/AttachedProps.txt +++ b/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/AttachedProps.txt @@ -6,6 +6,7 @@ namespace Sample.App { partial class SampleView { + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBox UserNameTextBox => this.FindNameScope()?.Find("UserNameTextBox"); } } diff --git a/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/ControlWithoutWindow.txt b/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/ControlWithoutWindow.txt index 8a3a65773c..17658bacff 100644 --- a/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/ControlWithoutWindow.txt +++ b/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/ControlWithoutWindow.txt @@ -6,6 +6,7 @@ namespace Sample.App { partial class SampleView { + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBox UserNameTextBox => this.FindNameScope()?.Find("UserNameTextBox"); } } diff --git a/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/CustomControls.txt b/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/CustomControls.txt index d9328b4b0d..46175e85ef 100644 --- a/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/CustomControls.txt +++ b/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/CustomControls.txt @@ -6,8 +6,11 @@ namespace Sample.App { partial class SampleView { + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.ReactiveUI.RoutedViewHost ClrNamespaceRoutedViewHost => this.FindNameScope()?.Find("ClrNamespaceRoutedViewHost"); + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.ReactiveUI.RoutedViewHost UriRoutedViewHost => this.FindNameScope()?.Find("UriRoutedViewHost"); + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Controls.CustomTextBox UserNameTextBox => this.FindNameScope()?.Find("UserNameTextBox"); } } diff --git a/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/DataTemplates.txt b/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/DataTemplates.txt index ee73a529e9..ad1f4649b2 100644 --- a/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/DataTemplates.txt +++ b/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/DataTemplates.txt @@ -6,7 +6,9 @@ namespace Sample.App { partial class SampleView { + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBox UserNameTextBox => this.FindNameScope()?.Find("UserNameTextBox"); + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.ListBox NamedListBox => this.FindNameScope()?.Find("NamedListBox"); } } diff --git a/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/FieldModifier.txt b/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/FieldModifier.txt index 250e8c98f3..a3897ce27d 100644 --- a/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/FieldModifier.txt +++ b/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/FieldModifier.txt @@ -6,11 +6,17 @@ namespace Sample.App { partial class SampleView { + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] public global::Avalonia.Controls.TextBox FirstNameTextBox => this.FindNameScope()?.Find("FirstNameTextBox"); + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] public global::Avalonia.Controls.TextBox LastNameTextBox => this.FindNameScope()?.Find("LastNameTextBox"); + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] protected global::Avalonia.Controls.TextBox PasswordTextBox => this.FindNameScope()?.Find("PasswordTextBox"); + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] private global::Avalonia.Controls.TextBox ConfirmPasswordTextBox => this.FindNameScope()?.Find("ConfirmPasswordTextBox"); + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.Button SignUpButton => this.FindNameScope()?.Find("SignUpButton"); + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.Button RegisterButton => this.FindNameScope()?.Find("RegisterButton"); } } diff --git a/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/NamedControl.txt b/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/NamedControl.txt index 8a3a65773c..17658bacff 100644 --- a/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/NamedControl.txt +++ b/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/NamedControl.txt @@ -6,6 +6,7 @@ namespace Sample.App { partial class SampleView { + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBox UserNameTextBox => this.FindNameScope()?.Find("UserNameTextBox"); } } diff --git a/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/NamedControls.txt b/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/NamedControls.txt index 1129600cea..a946da4791 100644 --- a/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/NamedControls.txt +++ b/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/NamedControls.txt @@ -6,8 +6,11 @@ namespace Sample.App { partial class SampleView { + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBox UserNameTextBox => this.FindNameScope()?.Find("UserNameTextBox"); + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBox PasswordTextBox => this.FindNameScope()?.Find("PasswordTextBox"); + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.Button SignUpButton => this.FindNameScope()?.Find("SignUpButton"); } } diff --git a/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/SignUpView.txt b/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/SignUpView.txt index c70abaf6af..d6db79a284 100644 --- a/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/SignUpView.txt +++ b/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/SignUpView.txt @@ -6,15 +6,25 @@ namespace Sample.App { partial class SampleView { + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Controls.CustomTextBox UserNameTextBox => this.FindNameScope()?.Find("UserNameTextBox"); + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBlock UserNameValidation => this.FindNameScope()?.Find("UserNameValidation"); + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBox PasswordTextBox => this.FindNameScope()?.Find("PasswordTextBox"); + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBlock PasswordValidation => this.FindNameScope()?.Find("PasswordValidation"); + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.ListBox AwesomeListView => this.FindNameScope()?.Find("AwesomeListView"); + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBox ConfirmPasswordTextBox => this.FindNameScope()?.Find("ConfirmPasswordTextBox"); + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBlock ConfirmPasswordValidation => this.FindNameScope()?.Find("ConfirmPasswordValidation"); + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.Documents.Run SignUpButtonDescription => this.FindNameScope()?.Find("SignUpButtonDescription"); + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.Button SignUpButton => this.FindNameScope()?.Find("SignUpButton"); + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBlock CompoundValidation => this.FindNameScope()?.Find("CompoundValidation"); } } diff --git a/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/xNamedControl.txt b/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/xNamedControl.txt index 8a3a65773c..17658bacff 100644 --- a/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/xNamedControl.txt +++ b/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/xNamedControl.txt @@ -6,6 +6,7 @@ namespace Sample.App { partial class SampleView { + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBox UserNameTextBox => this.FindNameScope()?.Find("UserNameTextBox"); } } diff --git a/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/xNamedControls.txt b/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/xNamedControls.txt index 1129600cea..a946da4791 100644 --- a/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/xNamedControls.txt +++ b/tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/xNamedControls.txt @@ -6,8 +6,11 @@ namespace Sample.App { partial class SampleView { + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBox UserNameTextBox => this.FindNameScope()?.Find("UserNameTextBox"); + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.TextBox PasswordTextBox => this.FindNameScope()?.Find("PasswordTextBox"); + [global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")] internal global::Avalonia.Controls.Button SignUpButton => this.FindNameScope()?.Find("SignUpButton"); } } diff --git a/tests/Avalonia.Generators.Tests/OnlyProperties/OnlyPropertiesTests.cs b/tests/Avalonia.Generators.Tests/OnlyProperties/OnlyPropertiesTests.cs index 937fd323b7..ceb15af629 100644 --- a/tests/Avalonia.Generators.Tests/OnlyProperties/OnlyPropertiesTests.cs +++ b/tests/Avalonia.Generators.Tests/OnlyProperties/OnlyPropertiesTests.cs @@ -41,12 +41,17 @@ public class OnlyPropertiesTests var names = nameResolver.ResolveNames(classInfo.Xaml); var generator = new OnlyPropertiesCodeGenerator(); + var generatorVersion = typeof(OnlyPropertiesCodeGenerator).Assembly.GetName().Version.ToString(); + var code = generator .GenerateCode("SampleView", "Sample.App", classInfo.XamlType, names) .Replace("\r", string.Empty); - var expected = await OnlyPropertiesCode.Load(expectation); + var expected = (await OnlyPropertiesCode.Load(expectation)) + .Replace("\r", string.Empty) + .Replace("$GeneratorVersion", generatorVersion); + CSharpSyntaxTree.ParseText(code); - Assert.Equal(expected.Replace("\r", string.Empty), code); + Assert.Equal(expected, code); } }