Method renaming and zip allowed

This commit is contained in:
jakobdyrby
2014-06-05 11:07:17 +02:00
parent 95ff1a03fb
commit c67f0baf74
5 changed files with 121 additions and 105 deletions

View File

@@ -1,50 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="CopyUmbracoFilesToWebRoot" BeforeTargets="AfterBuild">
<PropertyGroup>
<UmbracoFilesFolder>$(MSBuildThisFileDirectory)..\UmbracoFiles\</UmbracoFilesFolder>
</PropertyGroup>
<ItemGroup>
<UmbracoFiles Include="$(UmbracoFilesFolder)**\*" />
</ItemGroup>
<Copy SourceFiles="%(UmbracoFiles.FullPath)" DestinationFiles="%(RecursiveDir)%(Filename)%(Extension)" Condition="!Exists('%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<Target Name="AddUmbracoFilesToOutput">
<!-- With help from: http://blog.samstephens.co.nz/2010-10-18/msbuild-including-extra-files-multiple-builds/ -->
<ItemGroup>
<CustomFilesToInclude Include=".\App_Browsers\**\*">
<Dir>App_Browsers</Dir>
</CustomFilesToInclude>
<CustomFilesToInclude Include=".\App_Code\**\*">
<Dir>App_Code</Dir>
</CustomFilesToInclude>
<CustomFilesToInclude Include=".\App_Plugins\**\*">
<Dir>App_Plugins</Dir>
</CustomFilesToInclude>
<CustomFilesToInclude Include=".\bin\amd64\**\*">
<Dir>bin\amd64</Dir>
</CustomFilesToInclude>
<CustomFilesToInclude Include=".\bin\x86\**\*">
<Dir>bin\x86</Dir>
</CustomFilesToInclude>
<CustomFilesToInclude Include=".\Config\Splashes\**\*">
<Dir>Config\Splashes</Dir>
</CustomFilesToInclude>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="CopyUmbracoFilesToWebRoot" BeforeTargets="AfterBuild">
<PropertyGroup>
<UmbracoFilesFolder>$(MSBuildThisFileDirectory)..\UmbracoFiles\</UmbracoFilesFolder>
</PropertyGroup>
<ItemGroup>
<UmbracoFiles Include="$(UmbracoFilesFolder)**\*" />
</ItemGroup>
<Copy SourceFiles="%(UmbracoFiles.FullPath)" DestinationFiles="%(RecursiveDir)%(Filename)%(Extension)" Condition="!Exists('%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<Target Name="AddUmbracoFilesToOutput">
<!-- With help from: http://blog.samstephens.co.nz/2010-10-18/msbuild-including-extra-files-multiple-builds/ -->
<ItemGroup>
<CustomFilesToInclude Include=".\App_Browsers\**\*">
<Dir>App_Browsers</Dir>
</CustomFilesToInclude>
<CustomFilesToInclude Include=".\App_Code\**\*">
<Dir>App_Code</Dir>
</CustomFilesToInclude>
<CustomFilesToInclude Include=".\App_Plugins\**\*">
<Dir>App_Plugins</Dir>
</CustomFilesToInclude>
<CustomFilesToInclude Include=".\bin\amd64\**\*">
<Dir>bin\amd64</Dir>
</CustomFilesToInclude>
<CustomFilesToInclude Include=".\bin\x86\**\*">
<Dir>bin\x86</Dir>
</CustomFilesToInclude>
<CustomFilesToInclude Include=".\Config\Splashes\**\*">
<Dir>Config\Splashes</Dir>
</CustomFilesToInclude>
<CustomFilesToInclude Include=".\data\**\*">
<Dir>data</Dir>
</CustomFilesToInclude>
<CustomFilesToInclude Include=".\umbraco\**\*">
<Dir>umbraco</Dir>
</CustomFilesToInclude>
<CustomFilesToInclude Include=".\umbraco_client\**\*">
<Dir>umbraco_client</Dir>
</CustomFilesToInclude>
<CustomFilesToInclude Include=".\Global.asax">
<Dir>.</Dir>
</CustomFilesToInclude>
<FilesForPackagingFromProject Include="@(CustomFilesToInclude)">
<DestinationRelativePath>%(CustomFilesToInclude.Dir)\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
<CustomFilesToInclude Include=".\umbraco\**\*">
<Dir>umbraco</Dir>
</CustomFilesToInclude>
<CustomFilesToInclude Include=".\umbraco_client\**\*">
<Dir>umbraco_client</Dir>
</CustomFilesToInclude>
<CustomFilesToInclude Include=".\Global.asax">
<Dir>.</Dir>
</CustomFilesToInclude>
<FilesForPackagingFromProject Include="@(CustomFilesToInclude)">
<DestinationRelativePath>%(CustomFilesToInclude.Dir)\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
</Project>

View File

@@ -1,56 +1,53 @@
using System.Xml.Linq;
namespace Umbraco.Core
{
public static partial class Constants
{
/// <summary>
/// Defines the constants used for Umbraco packages in the package.config xml
/// </summary>
public static class Packaging
{
public const string UmbPackageNodeName = "umbPackage";
public const string DataTypesNodeName = "DataTypes";
public const string PackageXmlFileName = "package.xml";
public const string UmbracoPackageExtention = ".umb";
public const string DataTypeNodeName = "DataType";
public const string LanguagesNodeName = "Languages";
public const string FilesNodeName = "files";
public const string StylesheetsNodeName = "Stylesheets";
public const string TemplatesNodeName = "Templates";
public const string NameNodeName = "Name";
public const string TemplateNodeName = "Template";
public const string AliasNodeNameSmall = "alias";
public const string AliasNodeNameCapital = "Alias";
public const string DictionaryItemsNodeName = "DictionaryItems";
public const string DictionaryItemNodeName = "DictionaryItem";
public const string MacrosNodeName = "Macros";
public const string DocumentSetNodeName = "DocumentSet";
public const string DocumentTypesNodeName = "DocumentTypes";
public const string DocumentTypeNodeName = "DocumentType";
public const string FileNodeName = "file";
public const string OrgNameNodeName = "orgName";
public const string OrgPathNodeName = "orgPath";
public const string GuidNodeName = "guid";
public const string StylesheetNodeName = "styleSheet";
public const string MacroNodeName = "macro";
public const string InfoNodeName = "info";
public const string PackageRequirementsMajorXpath = "./package/requirements/major";
public const string PackageRequirementsMinorXpath = "./package/requirements/minor";
public const string PackageRequirementsPatchXpath = "./package/requirements/patch";
public const string PackageNameXpath = "./package/name";
public const string PackageVersionXpath = "./package/version";
public const string PackageUrlXpath = "./package/url";
public const string PackageLicenseXpath = "./package/license";
public const string AuthorNameXpath = "./author/name";
public const string AuthorWebsiteXpath = "./author/website";
public const string ReadmeXpath = "./readme";
public const string ControlNodeName = "control";
public const string ActionNodeName = "Action";
public const string ActionsNodeName = "Actions";
public const string UndoNodeAttribute = "undo";
public const string RunatNodeAttribute = "runat";
}
}
namespace Umbraco.Core
{
public static partial class Constants
{
/// <summary>
/// Defines the constants used for Umbraco packages in the package.config xml
/// </summary>
public static class Packaging
{
public static readonly string UmbPackageNodeName = "umbPackage";
public static readonly string DataTypesNodeName = "DataTypes";
public static readonly string PackageXmlFileName = "package.xml";
public static readonly string UmbracoPackageExtention = ".umb";
public static readonly string DataTypeNodeName = "DataType";
public static readonly string LanguagesNodeName = "Languages";
public static readonly string FilesNodeName = "files";
public static readonly string StylesheetsNodeName = "Stylesheets";
public static readonly string TemplatesNodeName = "Templates";
public static readonly string NameNodeName = "Name";
public static readonly string TemplateNodeName = "Template";
public static readonly string AliasNodeNameSmall = "alias";
public static readonly string AliasNodeNameCapital = "Alias";
public static readonly string DictionaryItemsNodeName = "DictionaryItems";
public static readonly string DictionaryItemNodeName = "DictionaryItem";
public static readonly string MacrosNodeName = "Macros";
public static readonly string DocumentSetNodeName = "DocumentSet";
public static readonly string DocumentTypesNodeName = "DocumentTypes";
public static readonly string DocumentTypeNodeName = "DocumentType";
public static readonly string FileNodeName = "file";
public static readonly string OrgNameNodeName = "orgName";
public static readonly string OrgPathNodeName = "orgPath";
public static readonly string GuidNodeName = "guid";
public static readonly string StylesheetNodeName = "styleSheet";
public static readonly string MacroNodeName = "macro";
public static readonly string InfoNodeName = "info";
public static readonly string PackageRequirementsMajorXpath = "./package/requirements/major";
public static readonly string PackageRequirementsMinorXpath = "./package/requirements/minor";
public static readonly string PackageRequirementsPatchXpath = "./package/requirements/patch";
public static readonly string PackageNameXpath = "./package/name";
public static readonly string PackageVersionXpath = "./package/version";
public static readonly string PackageUrlXpath = "./package/url";
public static readonly string PackageLicenseXpath = "./package/license";
public static readonly string AuthorNameXpath = "./author/name";
public static readonly string AuthorWebsiteXpath = "./author/website";
public static readonly string ReadmeXpath = "./readme";
public static readonly string ControlNodeName = "control";
public static readonly string ActionNodeName = "Action";
public static readonly string ActionsNodeName = "Actions";
public static readonly string UndoNodeAttribute = "undo";
public static readonly string RunatNodeAttribute = "runat";
}
}
}

View File

@@ -10,7 +10,6 @@ namespace Umbraco.Core.Packaging
{
public string ReadTextFileFromArchive(string packageFilePath, string fileToRead, out string directoryInPackage)
{
string retVal = null;
bool fileFound = false;
string foundDir = null;
@@ -56,11 +55,15 @@ namespace Umbraco.Core.Packaging
throw new ArgumentException(string.Format("Package file: {0} could not be found", packageFilePath));
}
string extension = Path.GetExtension(packageFilePath).ToLower();
var alowedExtension = new[] {".umb", ".zip"};
// Check if the file is a valid package
if (Path.GetExtension(packageFilePath).Equals(".umb", StringComparison.InvariantCultureIgnoreCase) == false)
if (alowedExtension.All(ae => ae.Equals(extension) == false))
{
throw new ArgumentException(
"Error - file isn't a package (doesn't have a .umb extension). Check if the file automatically got named '.zip' upon download.");
string.Format("Error - file isn't a package. only extentions: \"{0}\" is allowed", string.Join(", ", alowedExtension)));
}
}

View File

@@ -11,6 +11,7 @@ namespace Umbraco.Tests.Services
public class PackageInstallerServiceTest : BaseServiceTest
{
private const string DOCUMENT_TYPE_PICKER_UMB = "Document_Type_Picker_1.1.umb";
private const string NETMESTER_BEST_PRACTICE_BASE_UMB = "Netmester.BestPractice.Base_0.0.0.1.umb";
private const string TEST_PACKAGES_DIR_NAME = "Packages";
[SetUp]
@@ -45,13 +46,28 @@ namespace Umbraco.Tests.Services
var path = GetTestPackagePath(DOCUMENT_TYPE_PICKER_UMB);
// Act
var importIssues = ServiceContext.PackageInstallerService.FindPackageImportIssues(path);
var importIssues = ServiceContext.PackageInstallerService.GetPreInstallWarnings(path);
// Assert
Assert.IsNotNull(importIssues);
}
[Test]
public void PackageInstallerService_TestSomethingnew()
{
// Arrange
var path = GetTestPackagePath(NETMESTER_BEST_PRACTICE_BASE_UMB);
// Act
var importIssues = ServiceContext.PackageInstallerService.GetPreInstallWarnings(path);
// Assert
Assert.IsNotNull(importIssues);
}
[Test]
public void PackageInstallerService_TestSomethingthered()
{