Show meaningful error when failing to migrate invalid scripts (#4842)

This commit is contained in:
Martin Andreas Ullrich 2016-12-01 05:36:13 +01:00 committed by Piotr Puszkiewicz
parent 7312e1cb3a
commit 4af30914c9
3 changed files with 25 additions and 1 deletions

View file

@ -31,6 +31,9 @@ namespace Microsoft.DotNet.ProjectJsonMigration
public static Func<string, MigrationError> MIGRATE1018 public static Func<string, MigrationError> MIGRATE1018
=> (message) => new MigrationError(nameof(MIGRATE1018), "Dependency Project not found", message); => (message) => new MigrationError(nameof(MIGRATE1018), "Dependency Project not found", message);
public static Func<string, MigrationError> MIGRATE1019
=> (message) => new MigrationError(nameof(MIGRATE1019), "Unsupported Script Event Hook", message);
// Potentially Temporary (Point in Time) Errors // Potentially Temporary (Point in Time) Errors
public static Func<string, MigrationError> MIGRATE20011 public static Func<string, MigrationError> MIGRATE20011
=> (message) => new MigrationError(nameof(MIGRATE20011), "Multi-TFM", message); => (message) => new MigrationError(nameof(MIGRATE20011), "Multi-TFM", message);

View file

@ -87,7 +87,14 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Rules
private ProjectTargetElement CreateTarget(ProjectRootElement csproj, string scriptSetName) private ProjectTargetElement CreateTarget(ProjectRootElement csproj, string scriptSetName)
{ {
var targetName = $"{scriptSetName[0].ToString().ToUpper()}{string.Concat(scriptSetName.Skip(1))}Script"; var targetName = $"{scriptSetName[0].ToString().ToUpper()}{string.Concat(scriptSetName.Skip(1))}Script";
var targetHookInfo = ScriptSetToMSBuildHookTargetMap[scriptSetName];
TargetHookInfo targetHookInfo;
if(!ScriptSetToMSBuildHookTargetMap.TryGetValue(scriptSetName, out targetHookInfo))
{
MigrationErrorCodes.MIGRATE1019(
$"{scriptSetName} is an unsupported script event hook for project migration")
.Throw();
}
var target = csproj.CreateTargetElement(targetName); var target = csproj.CreateTargetElement(targetName);
csproj.InsertBeforeChild(target, csproj.LastChild); csproj.InsertBeforeChild(target, csproj.LastChild);

View file

@ -154,5 +154,19 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests
var target = scriptMigrationRule.MigrateScriptSet(mockProj, mockProj.AddPropertyGroup(), commands, "prepublish"); var target = scriptMigrationRule.MigrateScriptSet(mockProj, mockProj.AddPropertyGroup(), commands, "prepublish");
target.Condition.Should().Be(" '$(IsCrossTargetingBuild)' != 'true' "); target.Condition.Should().Be(" '$(IsCrossTargetingBuild)' != 'true' ");
} }
[Fact]
public void Migrating_scripts_throws_on_invalid_ScriptSet()
{
var scriptMigrationRule = new MigrateScriptsRule();
ProjectRootElement mockProj = ProjectRootElement.Create();
var commands = new string[] { "fakecommand" };
Action action = () => scriptMigrationRule.MigrateScriptSet(mockProj, mockProj.AddPropertyGroup(), commands, "invalidScriptSet");
action.ShouldThrow<MigrationException>()
.WithMessage("MIGRATE1019::Unsupported Script Event Hook: invalidScriptSet is an unsupported script event hook for project migration");
}
} }
} }