Skip to content
This repository has been archived by the owner on Jul 30, 2024. It is now read-only.
/ NuGet.Jobs Public archive

Commit

Permalink
[PackageType] Add PackageType to catalog (#702)
Browse files Browse the repository at this point in the history
* Enable insertion of packageTypes node into catalog.
* Add test data for package type.
* force addition of new test data
* More test fixes.
* Fix spacing.
* Update for case sensitivity in generation, update strip trailing/leading space.
* Remove loose nuspec. Add more test cases.
* add actual packages. whoops
  • Loading branch information
ryuyu authored Dec 11, 2019
1 parent 5e9e754 commit 2649384
Show file tree
Hide file tree
Showing 44 changed files with 1,358 additions and 248 deletions.
3 changes: 2 additions & 1 deletion src/Catalog/context/PackageDetails.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"dependencies" : { "@id" : "dependency", "@container" : "@set" },
"dependencyGroups" : { "@id" : "dependencyGroup", "@container" : "@set" },
"packageEntries": { "@id": "packageEntry", "@container": "@set" },
"packageTypes": { "@id": "packageType", "@container": "@set" },
"supportedFrameworks": { "@id": "supportedFramework", "@container": "@set" },
"tags": { "@id": "tag", "@container": "@set" },
"published": { "@type": "xsd:dateTime" },
Expand All @@ -14,4 +15,4 @@
"catalog:commitTimeStamp" : { "@type" : "xsd:dateTime" },
"reasons" : { "@container" : "@set" }
}
}
}
119 changes: 81 additions & 38 deletions src/Catalog/xslt/nuspec.xslt
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
</xsl:template>

<xsl:template match="/nuget:package/nuget:metadata">

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

<ng:PackageDetails>
Expand All @@ -34,21 +34,27 @@
<xsl:value-of select="@minClientVersion" />
</ng:minClientVersion>
</xsl:if>

<xsl:for-each select="*">
<xsl:choose>
<xsl:when test="self::nuget:packageTypes">
<xsl:apply-templates select="nuget:packageType">
<xsl:with-param name="path" select="$path" />
<xsl:with-param name="parent_fragment" select="'#packageTypes'" />
</xsl:apply-templates>
</xsl:when>

<xsl:when test="self::nuget:dependencies">

<xsl:choose>

<xsl:when test="nuget:group">
<xsl:apply-templates select="nuget:group">
<xsl:with-param name="path" select="$path" />
<xsl:with-param name="parent_fragment" select="'#dependencyGroup'" />
</xsl:apply-templates>
</xsl:when>

<xsl:otherwise>
<ng:dependencyGroup>
<ng:PackageDependencyGroup>
Expand All @@ -62,9 +68,9 @@
</ng:PackageDependencyGroup>
</ng:dependencyGroup>
</xsl:otherwise>

</xsl:choose>

</xsl:when>

<xsl:when test="self::nuget:references">
Expand Down Expand Up @@ -110,7 +116,7 @@

<xsl:when test="self::nuget:owners">
</xsl:when>

<xsl:when test="self::nuget:license">
<xsl:choose>
<xsl:when test="@type='file'">
Expand Down Expand Up @@ -164,13 +170,13 @@
<xsl:value-of select="obj:IsPrerelease(.)"/>
</ng:isPrerelease>
</xsl:when>

<xsl:when test="self::nuget:frameworkAssemblies">
<xsl:apply-templates select=".">
<xsl:with-param name="path" select="$path" />
</xsl:apply-templates>
</xsl:when>

<xsl:otherwise>
<xsl:element name="{concat('ng:', local-name())}">
<xsl:value-of select="."/>
Expand Down Expand Up @@ -234,6 +240,43 @@
</ng:dependencyGroup>
</xsl:template>

<xsl:template match="nuget:packageType">
<xsl:param name="position" />
<xsl:param name="path" />
<xsl:param name="parent_fragment" />
<ng:packageType>
<ng:PackageType>

<xsl:choose>
<xsl:when test="@version">
<xsl:variable name="fragment" select="concat(normalize-space(@name), '/', normalize-space(@version))" />
<xsl:attribute name="rdf:about">
<xsl:value-of select="concat(obj:LowerCase(concat($base, $path, $extension, $parent_fragment, '/')), $fragment)" />
</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="rdf:about">
<xsl:value-of select="concat(obj:LowerCase(concat($base, $path, $extension, $parent_fragment, '/')), normalize-space(@name))" />
</xsl:attribute>
</xsl:otherwise>
</xsl:choose>

<xsl:if test="@name">
<ng:name>
<xsl:value-of select="normalize-space(@name)"/>
</ng:name>
</xsl:if>

<xsl:if test="@version">
<ng:version>
<xsl:value-of select="normalize-space(@version)" />
</ng:version>
</xsl:if>

</ng:PackageType>
</ng:packageType>
</xsl:template>

<xsl:template match="nuget:dependency">
<xsl:param name="path" />
<xsl:param name="parent_fragment" />
Expand All @@ -246,9 +289,9 @@
<xsl:attribute name="rdf:about">
<xsl:value-of select="obj:LowerCase(concat($base, $path, $extension, $fragment))" />
</xsl:attribute>

<ng:id>
<xsl:value-of select="@id"/>
<xsl:value-of select="@id"/>
</ng:id>

<ng:range>
Expand Down Expand Up @@ -290,39 +333,39 @@
<xsl:template match="nuget:frameworkAssembly">
<xsl:param name="path" />

<xsl:choose>
<xsl:when test="string-length(@targetFramework) &gt; 0">
<xsl:variable name="assemblyName" select="@assemblyName" />
<xsl:for-each select="obj:Split(@targetFramework)//item">
<ng:frameworkAssemblyGroup>
<rdf:Description>
<xsl:attribute name="rdf:about">
<xsl:value-of select="obj:LowerCase(concat($base, $path, $extension, '#frameworkAssemblyGroup/', .))"/>
</xsl:attribute>
<ng:assembly>
<xsl:value-of select="$assemblyName" />
</ng:assembly>
<ng:targetFramework>
<xsl:value-of select="." />
</ng:targetFramework>
</rdf:Description>
</ng:frameworkAssemblyGroup>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="string-length(@targetFramework) &gt; 0">
<xsl:variable name="assemblyName" select="@assemblyName" />
<xsl:for-each select="obj:Split(@targetFramework)//item">
<ng:frameworkAssemblyGroup>
<rdf:Description>
<xsl:attribute name="rdf:about">
<xsl:value-of select="obj:LowerCase(concat($base, $path, $extension, '#frameworkAssemblyGroup'))"/>
<xsl:value-of select="obj:LowerCase(concat($base, $path, $extension, '#frameworkAssemblyGroup/', .))"/>
</xsl:attribute>
<ng:assembly>
<xsl:value-of select="@assemblyName" />
<xsl:value-of select="$assemblyName" />
</ng:assembly>
<ng:targetFramework>
<xsl:value-of select="." />
</ng:targetFramework>
</rdf:Description>
</ng:frameworkAssemblyGroup>
</xsl:otherwise>
</xsl:choose>

</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<ng:frameworkAssemblyGroup>
<rdf:Description>
<xsl:attribute name="rdf:about">
<xsl:value-of select="obj:LowerCase(concat($base, $path, $extension, '#frameworkAssemblyGroup'))"/>
</xsl:attribute>
<ng:assembly>
<xsl:value-of select="@assemblyName" />
</ng:assembly>
</rdf:Description>
</ng:frameworkAssemblyGroup>
</xsl:otherwise>
</xsl:choose>

</xsl:template>

</xsl:stylesheet>
60 changes: 60 additions & 0 deletions tests/CatalogTests/CatalogTests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,66 @@
<None Include="TestData\OneValidDependencyOneEmptyIdWithGroups.0.1.0.nupkg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\PackageTypeCollapseDuplicate.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\PackageTypeCollapseDuplicate.nupkg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\PackageTypeMultiple.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\PackageTypeMultiple.nupkg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\PackageTypeMultipleTypesNodes.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\PackageTypeMultipleTypesNodes.nupkg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\PackageTypeSameTypeDifferentCase.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\PackageTypeSameTypeDifferentCase.nupkg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\PackageTypeSameTypeDifferentVersionType.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\PackageTypeSameTypeDifferentVersionType.nupkg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\PackageTypeSameTypeTwoVersion.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\PackageTypeSameTypeTwoVersion.nupkg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\PackageTypeSingle.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\PackageTypeSingle.nupkg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\PackageTypeSingleWithVersion.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\PackageTypeSingleWithVersion.nupkg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\PackageTypeWhiteSpace.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\PackageTypeWhiteSpace.nupkg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\PackageTypeWhiteSpaceVersion.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\PackageTypeWhiteSpaceVersion.nupkg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\TestPackage.IconAndIconUrl.0.4.2.nupkg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@ internal sealed class CatalogIndependentPackageDetails
""@id"": ""packageEntry"",
""@container"": ""@set""
},
""packageTypes"": {
""@id"": ""packageType"",
""@container"": ""@set""
},
""supportedFrameworks"": {
""@id"": ""supportedFramework"",
""@container"": ""@set""
Expand Down
10 changes: 10 additions & 0 deletions tests/CatalogTests/PackageCatalogItemTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,16 @@ public class PackageCatalogItemTests
[InlineData("InvalidDependencyVersionRange.0.1.0")] //A dependency with a version range that is invalid
[InlineData("MissingDependencyVersionRange.0.1.0")] // A dependency with no version range attribute
[InlineData("WhitespaceDependencyVersionRange.0.1.0")] // A dependency with a version range that is whitespace
[InlineData("PackageTypeCollapseDuplicate")]
[InlineData("PackageTypeMultiple")]
[InlineData("PackageTypeMultipleTypesNodes")]
[InlineData("PackageTypeSingle")]
[InlineData("PackageTypeSingleWithVersion")]
[InlineData("PackageTypeSameTypeDifferentCase")]
[InlineData("PackageTypeSameTypeDifferentVersionType")]
[InlineData("PackageTypeSameTypeTwoVersion")]
[InlineData("PackageTypeWhiteSpace")]
[InlineData("PackageTypeWhiteSpaceVersion")]
public void CreateContent_ProducesExpectedJson(string packageName)
{
// Arrange
Expand Down
4 changes: 4 additions & 0 deletions tests/CatalogTests/TestData/CatalogTestData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -633,6 +633,10 @@ internal static class CatalogTestData
""@id"": ""packageEntry"",
""@container"": ""@set""
}},
""packageTypes"": {{
""@id"": ""packageType"",
""@container"": ""@set""
}},
""supportedFrameworks"": {{
""@id"": ""supportedFramework"",
""@container"": ""@set""
Expand Down
4 changes: 4 additions & 0 deletions tests/CatalogTests/TestData/DependencyMissingId.0.1.0.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@
"@id": "packageEntry",
"@container": "@set"
},
"packageTypes": {
"@id": "packageType",
"@container": "@set"
},
"supportedFrameworks": {
"@id": "supportedFramework",
"@container": "@set"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@
"@id": "packageEntry",
"@container": "@set"
},
"packageTypes": {
"@id": "packageType",
"@container": "@set"
},
"supportedFrameworks": {
"@id": "supportedFramework",
"@container": "@set"
Expand Down
4 changes: 4 additions & 0 deletions tests/CatalogTests/TestData/EmptyDependencyId.0.1.0.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@
"@id": "packageEntry",
"@container": "@set"
},
"packageTypes": {
"@id": "packageType",
"@container": "@set"
},
"supportedFrameworks": {
"@id": "supportedFramework",
"@container": "@set"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,10 @@
"@id": "packageEntry",
"@container": "@set"
},
"packageTypes": {
"@id": "packageType",
"@container": "@set"
},
"supportedFrameworks": {
"@id": "supportedFramework",
"@container": "@set"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,10 @@
"@id": "packageEntry",
"@container": "@set"
},
"packageTypes": {
"@id": "packageType",
"@container": "@set"
},
"supportedFrameworks": {
"@id": "supportedFramework",
"@container": "@set"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,10 @@
"@id": "packageEntry",
"@container": "@set"
},
"packageTypes": {
"@id": "packageType",
"@container": "@set"
},
"supportedFrameworks": {
"@id": "supportedFramework",
"@container": "@set"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,10 @@
"@id": "packageEntry",
"@container": "@set"
},
"packageTypes": {
"@id": "packageType",
"@container": "@set"
},
"supportedFrameworks": {
"@id": "supportedFramework",
"@container": "@set"
Expand Down
Loading

0 comments on commit 2649384

Please sign in to comment.