Skip to content

Commit c14b2c2

Browse files
author
Oren Novotny
authored
Merge pull request #581 from Styxxy/preserveattribute-namespace
Conflicting PreserveAttribute when using InternalsVisibleTo
2 parents dc69773 + 9a3837a commit c14b2c2

8 files changed

Lines changed: 90 additions & 58 deletions

File tree

InterfaceStubGenerator.App/Program.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,20 @@ static int Main(string[] args)
1414
{
1515
// NB: @Compile passes us a list of files relative to the project
1616
// directory - pass in the project and use its dir
17-
var generator = new InterfaceStubGenerator(msg => Console.Out.WriteLine(msg));
17+
18+
string refitInternalNamespace = null;
19+
if (args.Length >= 4)
20+
{
21+
refitInternalNamespace = args[3];
22+
}
23+
24+
var generator = new InterfaceStubGenerator(refitInternalNamespace, msg => Console.Out.WriteLine(msg));
1825
var target = new FileInfo(args[0]);
1926
var targetDir = new DirectoryInfo(args[1]);
2027

2128
var files = default(FileInfo[]);
2229

23-
if (args.Length == 3)
30+
if (args.Length >= 3)
2431
{
2532
// We get a file with each line being a file
2633
files = File.ReadLines(args[2])

InterfaceStubGenerator.BuildTasks/GenerateStubsTask.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public class GenerateStubsTask : ContextAwareTask
2020
[Required]
2121
public ITaskItem[] SourceFiles { get; set; }
2222

23+
public string RefitInternalNamespace { get; set; }
2324

2425
protected override bool ExecuteInner()
2526
{
@@ -46,7 +47,7 @@ protected override bool ExecuteInner()
4647
.Where(x => x.Name.Contains("RefitStubs") == false && x.Exists && x.Length > 0)
4748
.ToArray();
4849

49-
var generator = new InterfaceStubGenerator(msg => Log.LogWarning(msg));
50+
var generator = new InterfaceStubGenerator(RefitInternalNamespace, msg => Log.LogWarning(msg));
5051
var template = generator.GenerateInterfaceStubs(files.Select(x => x.FullName).ToArray()).Trim();
5152

5253
string contents = null;

InterfaceStubGenerator.Core/GeneratedInterfaceStubTemplate.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ using {{Item}};
1515
* in the Refit package */
1616

1717
#pragma warning disable
18-
namespace RefitInternalGenerated
18+
namespace {{RefitInternalNamespace}}RefitInternalGenerated
1919
{
2020
[ExcludeFromCodeCoverage]
2121
[AttributeUsage (AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Interface | AttributeTargets.Delegate)]
@@ -35,7 +35,7 @@ namespace RefitInternalGenerated
3535
{{#ClassList}}
3636
namespace {{Namespace}}
3737
{
38-
using RefitInternalGenerated;
38+
using {{RefitInternalNamespace}}RefitInternalGenerated;
3939

4040
/// <inheritdoc />
4141
[ExcludeFromCodeCoverage]

InterfaceStubGenerator.Core/InterfaceStubGenerator.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,24 @@ public class InterfaceStubGenerator
2828
new[] { "Get", "Head", "Post", "Put", "Delete", "Patch" }
2929
.SelectMany(x => new[] { "{0}", "{0}Attribute" }.Select(f => string.Format(f, x))));
3030

31-
public InterfaceStubGenerator() : this(null) { }
31+
public InterfaceStubGenerator() : this(null, null) { }
3232

33-
public InterfaceStubGenerator(Action<string> logWarning)
33+
public InterfaceStubGenerator(Action<string> logWarning) : this(null, logWarning) { }
34+
35+
public InterfaceStubGenerator(string refitInternalNamespace) : this(refitInternalNamespace, null) { }
36+
37+
public InterfaceStubGenerator(string refitInternalNamespace, Action<string> logWarning)
3438
{
3539
Log = logWarning;
40+
41+
if (!string.IsNullOrWhiteSpace(refitInternalNamespace))
42+
{
43+
RefitInternalNamespace = $"{refitInternalNamespace.Trim().TrimEnd('.')}.";
44+
}
3645
}
3746

47+
public string RefitInternalNamespace { get; }
48+
3849
public Action<string> Log { get; }
3950

4051
public static string ExtractTemplateSource()
@@ -165,6 +176,7 @@ public TemplateInformation GenerateTemplateInfoForInterfaceList(List<InterfaceDe
165176

166177
var ret = new TemplateInformation
167178
{
179+
RefitInternalNamespace = RefitInternalNamespace ?? string.Empty,
168180
ClassList = interfaceList.Select(GenerateClassInfoForInterface).ToList(),
169181
UsingList = usings.ToList()
170182
};
@@ -250,6 +262,7 @@ public class MethodTemplateInfo
250262

251263
public class TemplateInformation
252264
{
265+
public string RefitInternalNamespace { get; set; }
253266
public List<ClassTemplateInfo> ClassList;
254267
public List<UsingDeclaration> UsingList { get; set; }
255268
}

Refit.Tests/Refit.Tests.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@
3737
</PropertyGroup>
3838
<WriteLinesToFile File="$(RefitParameterFile)" Lines="@(Compile)" Overwrite="true" />
3939
<PropertyGroup Condition="'$(OS)' == 'Windows_NT'">
40-
<RefitExecCmd>"$(MSBuildThisFileDirectory)..\InterfaceStubGenerator.App\bin\$(ConfigurationName)\net46\InterfaceStubGenerator.App.exe" "$(OutputStubsFile)" "$(MSBuildProjectDirectory)" "$(RefitParameterFile)"</RefitExecCmd>
40+
<RefitExecCmd>"$(MSBuildThisFileDirectory)..\InterfaceStubGenerator.App\bin\$(ConfigurationName)\net46\InterfaceStubGenerator.App.exe" "$(OutputStubsFile)" "$(MSBuildProjectDirectory)" "$(RefitParameterFile)" "$(RootNamespace)"</RefitExecCmd>
4141
</PropertyGroup>
4242
<PropertyGroup Condition="'$(OS)' != 'Windows_NT'">
43-
<RefitExecCmd>mono "$(MSBuildThisFileDirectory)../InterfaceStubGenerator.App/bin/$(Configuration)/net46/InterfaceStubGenerator.App.exe" "$(OutputStubsFile)" "$(MSBuildProjectDirectory)" "$(RefitParameterFile)"</RefitExecCmd>
43+
<RefitExecCmd>mono "$(MSBuildThisFileDirectory)../InterfaceStubGenerator.App/bin/$(Configuration)/net46/InterfaceStubGenerator.App.exe" "$(OutputStubsFile)" "$(MSBuildProjectDirectory)" "$(RefitParameterFile)" "$(RootNamespace)"</RefitExecCmd>
4444
</PropertyGroup>
4545
<Message Text="Executing: $(RefitExecCmd)" Importance="High" />
4646
<Exec Command="$(RefitExecCmd)" />
@@ -55,10 +55,10 @@
5555
</PropertyGroup>
5656
<WriteLinesToFile File="$(RefitParameterFile)" Lines="@(Compile)" Overwrite="true" />
5757
<PropertyGroup Condition="'$(OS)' == 'Windows_NT'">
58-
<RefitExecCmd>dotnet "$(MSBuildThisFileDirectory)..\InterfaceStubGenerator.App\bin\$(ConfigurationName)\netcoreapp2.1\InterfaceStubGenerator.App.dll" "$(OutputStubsFile)" "$(MSBuildProjectDirectory)" "$(RefitParameterFile)"</RefitExecCmd>
58+
<RefitExecCmd>dotnet "$(MSBuildThisFileDirectory)..\InterfaceStubGenerator.App\bin\$(ConfigurationName)\netcoreapp2.1\InterfaceStubGenerator.App.dll" "$(OutputStubsFile)" "$(MSBuildProjectDirectory)" "$(RefitParameterFile)" "$(RootNamespace)"</RefitExecCmd>
5959
</PropertyGroup>
6060
<PropertyGroup Condition="'$(OS)' != 'Windows_NT'">
61-
<RefitExecCmd>dotnet "$(MSBuildThisFileDirectory)../InterfaceStubGenerator.App/bin/$(Configuration)/netcoreapp2.1/InterfaceStubGenerator.App.dll" "$(OutputStubsFile)" "$(MSBuildProjectDirectory)" "$(RefitParameterFile)"</RefitExecCmd>
61+
<RefitExecCmd>dotnet "$(MSBuildThisFileDirectory)../InterfaceStubGenerator.App/bin/$(Configuration)/netcoreapp2.1/InterfaceStubGenerator.App.dll" "$(OutputStubsFile)" "$(MSBuildProjectDirectory)" "$(RefitParameterFile)" "$(RootNamespace)"</RefitExecCmd>
6262
</PropertyGroup>
6363
<Message Text="Executing: $(RefitExecCmd)" Importance="High" />
6464
<Exec Command="$(RefitExecCmd)" />

Refit.Tests/RefitStubs.Net46.cs

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
* in the Refit package */
3636

3737
#pragma warning disable
38-
namespace RefitInternalGenerated
38+
namespace Refit.Tests.RefitInternalGenerated
3939
{
4040
[ExcludeFromCodeCoverage]
4141
[AttributeUsage (AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Interface | AttributeTargets.Delegate)]
@@ -54,7 +54,7 @@ sealed class PreserveAttribute : Attribute
5454

5555
namespace Refit.Tests
5656
{
57-
using RefitInternalGenerated;
57+
using Refit.Tests.RefitInternalGenerated;
5858

5959
/// <inheritdoc />
6060
[ExcludeFromCodeCoverage]
@@ -115,7 +115,7 @@ public virtual Task ReservedWordsForParameterNames(int @int,string @string,float
115115

116116
namespace Refit.Tests
117117
{
118-
using RefitInternalGenerated;
118+
using Refit.Tests.RefitInternalGenerated;
119119

120120
/// <inheritdoc />
121121
[ExcludeFromCodeCoverage]
@@ -152,7 +152,7 @@ public virtual Task Get()
152152

153153
namespace Refit.Tests
154154
{
155-
using RefitInternalGenerated;
155+
using Refit.Tests.RefitInternalGenerated;
156156

157157
/// <inheritdoc />
158158
[ExcludeFromCodeCoverage]
@@ -183,7 +183,7 @@ public virtual Task<string> GetWithDecimal(decimal value)
183183

184184
namespace Refit.Tests
185185
{
186-
using RefitInternalGenerated;
186+
using Refit.Tests.RefitInternalGenerated;
187187

188188
/// <inheritdoc />
189189
[ExcludeFromCodeCoverage]
@@ -230,7 +230,7 @@ public virtual Task Head()
230230

231231
namespace Refit.Tests
232232
{
233-
using RefitInternalGenerated;
233+
using Refit.Tests.RefitInternalGenerated;
234234

235235
/// <inheritdoc />
236236
[ExcludeFromCodeCoverage]
@@ -296,7 +296,7 @@ public virtual Task Delete(TKey key)
296296

297297
namespace Refit.Tests
298298
{
299-
using RefitInternalGenerated;
299+
using Refit.Tests.RefitInternalGenerated;
300300

301301
/// <inheritdoc />
302302
[ExcludeFromCodeCoverage]
@@ -327,7 +327,7 @@ public virtual Task<bool> PostAValue(string derp)
327327

328328
namespace Refit.Tests
329329
{
330-
using RefitInternalGenerated;
330+
using Refit.Tests.RefitInternalGenerated;
331331

332332
/// <inheritdoc />
333333
[ExcludeFromCodeCoverage]
@@ -454,7 +454,7 @@ public virtual Task<ApiResponse<User>> CreateUserWithMetadata(User user)
454454

455455
namespace Refit.Tests
456456
{
457-
using RefitInternalGenerated;
457+
using Refit.Tests.RefitInternalGenerated;
458458

459459
/// <inheritdoc />
460460
[ExcludeFromCodeCoverage]
@@ -513,7 +513,7 @@ public virtual Task<TValue> GetQuery1<TValue>(TParam param)
513513

514514
namespace Refit.Tests
515515
{
516-
using RefitInternalGenerated;
516+
using Refit.Tests.RefitInternalGenerated;
517517

518518
/// <inheritdoc />
519519
[ExcludeFromCodeCoverage]
@@ -552,7 +552,7 @@ public virtual Task<ApiResponse<HttpContent>> PostFileUploadWithMetadata(HttpCon
552552

553553
namespace Refit.Tests
554554
{
555-
using RefitInternalGenerated;
555+
using Refit.Tests.RefitInternalGenerated;
556556

557557
/// <inheritdoc />
558558
[ExcludeFromCodeCoverage]
@@ -583,7 +583,7 @@ public virtual Task<TestAliasObject> GetTestObject()
583583

584584
namespace Refit.Tests
585585
{
586-
using RefitInternalGenerated;
586+
using Refit.Tests.RefitInternalGenerated;
587587

588588
/// <inheritdoc />
589589
[ExcludeFromCodeCoverage]
@@ -622,7 +622,7 @@ public virtual Task<string> GetAuthenticated()
622622

623623
namespace Refit.Tests
624624
{
625-
using RefitInternalGenerated;
625+
using Refit.Tests.RefitInternalGenerated;
626626

627627
/// <inheritdoc />
628628
[ExcludeFromCodeCoverage]
@@ -653,7 +653,7 @@ public virtual Task<SomeType> SomeRequest()
653653

654654
namespace Refit.Tests
655655
{
656-
using RefitInternalGenerated;
656+
using Refit.Tests.RefitInternalGenerated;
657657

658658
/// <inheritdoc />
659659
[ExcludeFromCodeCoverage]
@@ -740,7 +740,7 @@ public virtual Task NothingToSeeHere()
740740

741741
namespace Refit.Tests
742742
{
743-
using RefitInternalGenerated;
743+
using Refit.Tests.RefitInternalGenerated;
744744

745745
/// <inheritdoc />
746746
[ExcludeFromCodeCoverage]
@@ -781,7 +781,7 @@ public virtual Task PostMessage<T, U, V>(T message,U param1,V param2)
781781

782782
namespace Refit.Tests
783783
{
784-
using RefitInternalGenerated;
784+
using Refit.Tests.RefitInternalGenerated;
785785

786786
/// <inheritdoc />
787787
[ExcludeFromCodeCoverage]
@@ -812,7 +812,7 @@ public virtual Task<RootObject> GetCongruence()
812812

813813
namespace Refit.Tests
814814
{
815-
using RefitInternalGenerated;
815+
using Refit.Tests.RefitInternalGenerated;
816816

817817
/// <inheritdoc />
818818
[ExcludeFromCodeCoverage]
@@ -875,7 +875,7 @@ public virtual Task PostGeneric<T>(T param)
875875

876876
namespace Refit.Tests
877877
{
878-
using RefitInternalGenerated;
878+
using Refit.Tests.RefitInternalGenerated;
879879

880880
/// <inheritdoc />
881881
[ExcludeFromCodeCoverage]
@@ -986,7 +986,7 @@ public virtual Task<HttpResponseMessage> UploadHttpContent(HttpContent content)
986986

987987
namespace AutoGeneratedIServiceWithoutNamespace
988988
{
989-
using RefitInternalGenerated;
989+
using Refit.Tests.RefitInternalGenerated;
990990

991991
/// <inheritdoc />
992992
[ExcludeFromCodeCoverage]
@@ -1025,7 +1025,7 @@ public virtual Task PostRoot()
10251025

10261026
namespace Refit.Tests
10271027
{
1028-
using RefitInternalGenerated;
1028+
using Refit.Tests.RefitInternalGenerated;
10291029

10301030
/// <inheritdoc />
10311031
[ExcludeFromCodeCoverage]
@@ -1064,7 +1064,7 @@ public virtual Task<ApiResponse<Stream>> GetRemoteFileWithMetadata(string filena
10641064

10651065
namespace Refit.Tests
10661066
{
1067-
using RefitInternalGenerated;
1067+
using Refit.Tests.RefitInternalGenerated;
10681068

10691069
/// <inheritdoc />
10701070
[ExcludeFromCodeCoverage]
@@ -1147,7 +1147,7 @@ public virtual Task Get<TInput1, TInput2>(TInput1 input1,TInput2 input2)
11471147

11481148
namespace Refit.Tests
11491149
{
1150-
using RefitInternalGenerated;
1150+
using Refit.Tests.RefitInternalGenerated;
11511151

11521152
/// <inheritdoc />
11531153
[ExcludeFromCodeCoverage]

0 commit comments

Comments
 (0)