Skip to content

Commit 0187283

Browse files
committed
Add new test
1 parent d2269a7 commit 0187283

File tree

3 files changed

+50
-4
lines changed

3 files changed

+50
-4
lines changed

src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Resource.Designer.targets

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ Copyright (C) 2016 Xamarin. All rights reserved.
9393
</Target>
9494

9595
<Target Name="_GenerateResourceDesignerIntermediateClass"
96-
Condition=" '$(AndroidUseDesignerAssembly)' == 'True' "
96+
Condition=" '$(AndroidUseDesignerAssembly)' == 'True' And '$(AndroidGenerateResourceDesigner)' == 'true' "
9797
Inputs="$(MSBuildProjectFullPath)"
9898
Outputs="$(_GenerateResourceDesignerClassFile)"
9999
>
@@ -166,11 +166,11 @@ Copyright (C) 2016 Xamarin. All rights reserved.
166166
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
167167
</ReferencePath>
168168
<Compile Remove="$(_AndroidResourceDesignerFile)" />
169-
<Compile Include="$(_GenerateResourceDesignerClassFile)" Condition=" '$(Language)' != 'F#' "/>
169+
<Compile Include="$(_GenerateResourceDesignerClassFile)" Condition=" '$(Language)' != 'F#' And '$(AndroidGenerateResourceDesigner)' == 'true' "/>
170170
<!-- For F# we need to use the CompileBefore ItemGroup so that our type is processed
171171
before all the other types in the build. Otherwise we get weird compiler errors.
172172
-->
173-
<CompileBefore Include="$(_GenerateResourceDesignerClassFile)" Condition=" '$(Language)' == 'F#' "/>
173+
<CompileBefore Include="$(_GenerateResourceDesignerClassFile)" Condition=" '$(Language)' == 'F#' And '$(AndroidGenerateResourceDesigner)' == 'true' "/>
174174
</ItemGroup>
175175
</Target>
176176

src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.DefaultProperties.targets

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
<AndroidHttpClientHandlerType Condition=" '$(AndroidHttpClientHandlerType)' == '' and '$(UsingAndroidNETSdk)' == 'true' ">Xamarin.Android.Net.AndroidMessageHandler</AndroidHttpClientHandlerType>
1212
<AndroidHttpClientHandlerType Condition=" '$(AndroidHttpClientHandlerType)' == '' and '$(UsingAndroidNETSdk)' != 'true' ">Xamarin.Android.Net.AndroidClientHandler</AndroidHttpClientHandlerType>
1313
<AndroidGenerateResourceDesigner Condition=" '$(AndroidGenerateResourceDesigner)' == '' ">true</AndroidGenerateResourceDesigner>
14-
<AndroidUseDesignerAssembly Condition=" '$(AndroidUseDesignerAssembly)' == '' ">$(AndroidGenerateResourceDesigner)</AndroidUseDesignerAssembly>
1514
<AndroidUseDesignerAssembly Condition=" '$(AndroidUseDesignerAssembly)' == '' ">true</AndroidUseDesignerAssembly>
1615
<AndroidUseIntermediateDesignerFile Condition=" '$(AndroidUseDesignerAssembly)' == 'True' ">false</AndroidUseIntermediateDesignerFile>
1716
<AndroidUseIntermediateDesignerFile Condition=" '$(AndroidUseIntermediateDesignerFile)' == '' ">$(AndroidGenerateResourceDesigner)</AndroidUseIntermediateDesignerFile>

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/XASdkTests.cs

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -454,6 +454,53 @@ public void AppWithSingleJar ()
454454
}
455455
}
456456

457+
[Test]
458+
public void GenerateResourceDesigner([Values (false, true)] bool generateResourceDesigner, [Values (false, true)] bool useDesignerAssembly)
459+
{
460+
var path = Path.Combine ("temp", TestName);
461+
var libraryB = new XASdkProject (outputType: "Library") {
462+
ProjectName = "LibraryB",
463+
};
464+
libraryB.Sources.Clear ();
465+
libraryB.Sources.Add (new BuildItem.Source ("Foo.cs") {
466+
TextContent = () => @"namespace LibraryB;
467+
public class Foo {
468+
public static int foo => Resource.Drawable.foo;
469+
}",
470+
});
471+
libraryB.Sources.Add (new AndroidItem.AndroidResource (() => "Resources\\drawable\\foo.png") {
472+
BinaryContent = () => XamarinAndroidCommonProject.icon_binary_mdpi,
473+
});
474+
libraryB.SetProperty ("AndroidUseDesignerAssembly", useDesignerAssembly.ToString ());
475+
var libraryA = new XASdkProject (outputType: "Library") {
476+
ProjectName = "LibraryA",
477+
};
478+
libraryA.Sources.Clear ();
479+
libraryA.Sources.Add (new BuildItem.Source ("FooA.cs") {
480+
TextContent = () => @"namespace LibraryA;
481+
public class FooA {
482+
public int foo => 0;
483+
public int foo2 => LibraryB.Foo.foo;
484+
public int foo3 => LibraryB.Resource.Drawable.foo;
485+
}",
486+
});
487+
libraryA.AddReference (libraryB);
488+
libraryA.SetProperty ("AndroidGenerateResourceDesigner", generateResourceDesigner.ToString ());
489+
if (!useDesignerAssembly)
490+
libraryA.SetProperty ("AndroidUseDesignerAssembly", "False");
491+
var libraryBBuilder = CreateDotNetBuilder (libraryB, Path.Combine (path, libraryB.ProjectName));
492+
Assert.IsTrue (libraryBBuilder.Build (), "Build of LibraryB should succeed.");
493+
var libraryABuilder = CreateDotNetBuilder (libraryA, Path.Combine (path, libraryA.ProjectName));
494+
Assert.IsTrue (libraryABuilder.Build (), "Build of LibraryA should succeed.");
495+
var proj = new XASdkProject () {
496+
ProjectName = "App1",
497+
};
498+
proj.SetProperty ("AndroidUseDesignerAssembly", useDesignerAssembly.ToString ());
499+
proj.AddReference (libraryA);
500+
var dotnet = CreateDotNetBuilder (proj, Path.Combine (path, proj.ProjectName));
501+
Assert.IsTrue (dotnet.Build (), "Build of Proj should succeed.");
502+
}
503+
457504
[Test]
458505
public void GenerateResourceDesigner_false([Values (false, true)] bool useDesignerAssembly)
459506
{

0 commit comments

Comments
 (0)