Skip to content

Commit

Permalink
Add remaining pack inference items from SDK pack
Browse files Browse the repository at this point in the history
The test showcases how the mechanism is itself extensible (which is what we basically did with the new built-in ones) and how the same rules can be applied to any custom item types.

Corresponding PackXXX properties were added for each new item type, so they can also be defaulted to Pack=true (or false) automatically like the existing Content/Compile/None/EmbeddedResource.
  • Loading branch information
kzu committed Oct 1, 2020
1 parent 9ebaa40 commit 4cb96d4
Show file tree
Hide file tree
Showing 2 changed files with 111 additions and 5 deletions.
67 changes: 62 additions & 5 deletions src/NuGetizer.Tasks/NuGetizer.Inference.targets
Original file line number Diff line number Diff line change
Expand Up @@ -41,21 +41,76 @@ Copyright (c) .NET Foundation. All rights reserved.
<Compile>
<!-- For Compile, the CodeLanguage should default to the project's default source extension -->
<CodeLanguage>$(DefaultLanguageSourceExtension.TrimStart('.'))</CodeLanguage>
<Pack Condition="'$(PackCompile)' == 'true'">true</Pack>
<DefaultKind>content</DefaultKind>
<Pack Condition="'$(PackCompile)' == 'true'">true</Pack>
<BuildAction>Compile</BuildAction>
</Compile>
<Content>
<Pack Condition="'$(PackContent)' == true">true</Pack>
<DefaultKind>content</DefaultKind>
<Pack Condition="'$(PackContent)' == true">true</Pack>
<BuildAction>Content</BuildAction>
</Content>
<EmbeddedResource>
<Pack Condition="'$(PackEmbeddedResource)' == true">true</Pack>
<DefaultKind>content</DefaultKind>
<Pack Condition="'$(PackEmbeddedResource)' == true">true</Pack>
<BuildAction>EmbeddedResource</BuildAction>
</EmbeddedResource>
<None>
<Pack Condition="'$(PackNone)' == true">true</Pack>
<DefaultKind>none</DefaultKind>
<Pack Condition="'$(PackNone)' == true">true</Pack>
<BuildAction>None</BuildAction>
</None>
<ApplicationDefinition>
<DefaultKind>content</DefaultKind>
<Pack Condition="'$(PackApplicationDefinition)' == true">true</Pack>
<BuildAction>ApplicationDefinition</BuildAction>
</ApplicationDefinition>
<Page>
<DefaultKind>content</DefaultKind>
<Pack Condition="'$(PackPage)' == true">true</Pack>
<BuildAction>Page</BuildAction>
</Page>
<Resource>
<DefaultKind>content</DefaultKind>
<Pack Condition="'$(PackResource)' == true">true</Pack>
<BuildAction>Resource</BuildAction>
</Resource>
<SplashScreen>
<DefaultKind>content</DefaultKind>
<Pack Condition="'$(PackSplashScreen)' == true">true</Pack>
<BuildAction>SplashScreen</BuildAction>
</SplashScreen>
<DesignData>
<DefaultKind>content</DefaultKind>
<Pack Condition="'$(PackDesignData)' == true">true</Pack>
<BuildAction>DesignData</BuildAction>
</DesignData>
<DesignDataWithDesignTimeCreatableTypes>
<DefaultKind>content</DefaultKind>
<Pack Condition="'$(PackDesignDataWithDesignTimeCreatableTypes)' == true">true</Pack>
<BuildAction>DesignDataWithDesignTimeCreatableTypes</BuildAction>
</DesignDataWithDesignTimeCreatableTypes>
<CodeAnalysisDictionary>
<DefaultKind>content</DefaultKind>
<Pack Condition="'$(PackCodeAnalysisDictionary)' == true">true</Pack>
<BuildAction>CodeAnalysisDictionary</BuildAction>
</CodeAnalysisDictionary>
<AndroidAsset>
<DefaultKind>content</DefaultKind>
<Pack Condition="'$(PackAndroidAsset)' == true">true</Pack>
<BuildAction>AndroidAsset</BuildAction>
</AndroidAsset>
<AndroidResource>
<DefaultKind>content</DefaultKind>
<Pack Condition="'$(PackAndroidResource)' == true">true</Pack>
<BuildAction>AndroidResource</BuildAction>
</AndroidResource>
<BundleResource>
<DefaultKind>content</DefaultKind>
<Pack Condition="'$(PackBundleResource)' == true">true</Pack>
<BuildAction>BundleResource</BuildAction>
</BundleResource>

<InferenceCandidate>
<DefaultKind />
<Pack />
Expand Down Expand Up @@ -113,7 +168,9 @@ Copyright (c) .NET Foundation. All rights reserved.
</Target>

<ItemGroup>
<PackInference Include="Compile;Content;EmbeddedResource;None" />
<PackInference Include="Compile;Content;EmbeddedResource;None;ApplicationDefinition;Page;
Resource;SplashScreen;DesignData;DesignDataWithDesignTimeCreatableTypes;
CodeAnalysisDictionary;AndroidAsset;AndroidResource;BundleResource" />
</ItemGroup>

<Target Name="InferPackageContents" DependsOnTargets="$(InferPackageContentsDependsOn)" Returns="@(PackageFile)">
Expand Down
49 changes: 49 additions & 0 deletions src/NuGetizer.Tests/given_packinference.cs
Original file line number Diff line number Diff line change
Expand Up @@ -491,5 +491,54 @@ public void when_PackCompile_true_and_TargetFramework_then_can_change_framework_
PackagePath = "contentFiles\\cs\\net472\\Bar.cs"
}));
}

[Fact]
public void when_adding_new_inference_then_can_change_defaults()
{
var result = Builder.BuildProject(@"
<Project Sdk='Microsoft.NET.Sdk'>
<PropertyGroup>
<PackageId>Library</PackageId>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemDefinitionGroup>
<Data>
<Kind>content</Kind>
<Pack>true</Pack>
<BuildAction>Data</BuildAction>
<CopyToOutput>true</CopyToOutput>
<Flatten>true</Flatten>
<FrameworkSpecific>false</FrameworkSpecific>
</Data>
</ItemDefinitionGroup>
<ItemGroup>
<PackInference Include='Data' />
<Data Include='Main.sql' />
<Data Include='Backup.sql' BuildAction='EmbeddedResource' CopyToOutput='false' />
<Data Include='None.sql' Pack='false' />
</ItemGroup>
</Project>",
"GetPackageContents", output);

result.AssertSuccess(output);
Assert.Contains(result.Items, item => item.Matches(new
{
PackagePath = "contentFiles\\any\\any\\Main.sql",
BuildAction = "Data",
Flatten = true,
CopyToOutput = true,
}));
Assert.Contains(result.Items, item => item.Matches(new
{
PackagePath = "contentFiles\\any\\any\\Backup.sql",
BuildAction = "EmbeddedResource",
CopyToOutput = false,
}));
Assert.DoesNotContain(result.Items, item => item.Matches(new
{
Filename = "None",
Extension = ".sql",
}));
}
}
}

0 comments on commit 4cb96d4

Please sign in to comment.