Skip to content
This repository was archived by the owner on Feb 8, 2022. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions src/ConfigurationTransform.Test/ConfigTransformManagerTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public class ConfigTransformManagerTest
const string TransformAppConfig = @"app.MockBuild.config";
const string TransformWithoutConfigExtension = @"app.MockBuild";
const string FileWith3Dots = @"mockfile.mockMiddle.mock";
const string FileWithMoreDots = @"file.with.more.dots.config";

const string BuildMock = @"MockBuild";

Expand Down Expand Up @@ -58,6 +59,21 @@ public void GetTransformConfigName_Throws_NotSupportedException()
ConfigTransformManager.GetTransformConfigName(sourceConfigName, buildConfigurationName);
}

[TestMethod]
public void GetTransformConfigName_WhenMoreDots_Success()
{
//Arrange
const string sourceConfigName = FileWithMoreDots;
const string buildConfigurationName = BuildMock;
const string expected = @"file.with.more.dots.MockBuild.config";

//Act
var actual = ConfigTransformManager.GetTransformConfigName(sourceConfigName, buildConfigurationName);

//Assert
Assert.AreEqual(expected, actual);
}

[TestMethod]
public void IsRootAppConfig_WhenAppAndConfig_ReturnTrue()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
<Compile Include="ConfigTransformManagerTest.cs" />
<Compile Include="ProjectItemExtensionsTest.cs" />
<Compile Include="ProjectItemsExtensionsTest.cs" />
<Compile Include="VsProjectXmlTransformTest.cs" />
<Compile Include="VsServicesTest.cs" />
<Compile Include="XmlTransformTest.cs" />
</ItemGroup>
Expand Down
54 changes: 54 additions & 0 deletions src/ConfigurationTransform.Test/VsProjectXmlTransformTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
using GolanAvraham.ConfigurationTransform.Services;
using GolanAvraham.ConfigurationTransform.Transform;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConfigurationTransform.Test
{
[TestClass]
public class VsProjectXmlTransformTest
{
const string FileWithMoreDots = "file.with.more.dots.config";

private VsProjectXmlTransform vsProjectXmlTransform;

[TestInitialize]
public void Setup()
{
var vsSerivces = new Mock<IVsServices>();
vsProjectXmlTransform = new VsProjectXmlTransform(vsSerivces.Object);
}

[TestMethod]
public void GetTargetTransformArgs_WhenMoreDotsConfigName_Success()
{
//Arrange
var configName = FileWithMoreDots;
var relativePrefix = @"..\my.common";
var expected = new TargetTransformArgs {
ConfigExt = "config",
Transform = @"..\my.common\file.with.more.dots.$(Configuration).config",
Source = @"..\my.common\file.with.more.dots.config",
Destination = @"$(OutputPath)file.with.more.dots.config",
Condition = @"Exists('..\my.common\file.with.more.dots.$(Configuration).config')"
};

//Act
var args = vsProjectXmlTransform.GetTargetTransformArgs(configName, relativePrefix, true);

//Assert
Assert.IsNotNull(args);
Assert.AreEqual(expected.Condition, args.Condition);
Assert.AreEqual(expected.ConfigExt, args.ConfigExt);
Assert.AreEqual(expected.Destination, args.Destination);
Assert.AreEqual(expected.Source, args.Source);
Assert.AreEqual(expected.Transform, args.Transform);
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -234,9 +234,11 @@ private static void CreateConfigFiles(Project project, ProjectItem projectItem)

public static string GetTransformConfigName(string sourceConfigName, string buildConfigurationName)
{
var configSplit = sourceConfigName.Split('.');
if (configSplit.Length < 2) throw new NotSupportedException(sourceConfigName);
var dependentConfig = $"{configSplit[0]}.{buildConfigurationName}.{configSplit[1]}";
var splitterIndex = sourceConfigName.LastIndexOf('.');
if(splitterIndex < 0)
throw new NotSupportedException(sourceConfigName);

var dependentConfig = $"{sourceConfigName.Substring(0, splitterIndex)}.{buildConfigurationName}.{sourceConfigName.Substring(splitterIndex + 1)}";
return dependentConfig;
}

Expand Down
11 changes: 8 additions & 3 deletions src/ConfigurationTransform/Transform/VsProjectXmlTransform.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using System.Xml.Linq;
using GolanAvraham.ConfigurationTransform.Services;

Expand Down Expand Up @@ -160,9 +162,12 @@ public void AddAfterBuildTarget(string anyConfigName, string relativePrefix = nu
public TargetTransformArgs GetTargetTransformArgs(string anyConfigName, string relativePrefix = null,
bool transformConfigIsLink = false)
{
var configSplit = anyConfigName.Split('.');
var configName = configSplit[0];
var configExt = configSplit[1];
var splitterIndex = anyConfigName.LastIndexOf('.');
if (splitterIndex < 0)
throw new NotSupportedException(anyConfigName);

var configName = anyConfigName.Substring(0, splitterIndex);
var configExt = anyConfigName.Substring(splitterIndex + 1);

if (relativePrefix != null)
{
Expand Down