public void TestDirectoryTranslatorUsedForJunctionsInCloudBuild() { var context = BuildXLContext.CreateInstanceForTesting(); var pathTable = context.PathTable; var translations = new[] { CreateInputTranslation(pathTable, new string[] { "K", "dbs", "sh", "dtb", "b" }, new string[] { "d", "dbs", "sh", "dtb", "0629_120346" }), CreateInputTranslation(pathTable, new string[] { "d", "dbs", "sh", "dtb", "0629_120346", "Build" }, new string[] { "d", "dbs", "el", "dtb", "Build" }), CreateInputTranslation(pathTable, new string[] { "d", "dbs", "sh", "dtb", "0629_120346", "Target" }, new string[] { "d", "dbs", "el", "dtb", "Target" }) }; string error; XAssert.IsTrue(DirectoryTranslator.ValidateDirectoryTranslation(pathTable, translations, out error)); var translator = new DirectoryTranslator(); translator.AddTranslations(translations, pathTable); translator.Seal(); AssertEqualTranslatedPath(translator, pathTable, new string[] { "d", "dbs", "el", "dtb", "Build", "x64", "debug", "perl.cmd" }, new string[] { "K", "dbs", "sh", "dtb", "b", "Build", "x64", "debug", "perl.cmd" }); AssertEqualTranslatedPath(translator, pathTable, new string[] { "d", "dbs", "el", "dtb", "Target", "x64", "debug", "perl.cmd" }, new string[] { "K", "dbs", "sh", "dtb", "b", "Target", "x64", "debug", "perl.cmd" }); AssertEqualTranslatedPath(translator, pathTable, new string[] { "d", "dbs", "sh", "dtb", "0629_120346" }, new string[] { "K", "dbs", "sh", "dtb", "b" }); AssertEqualTranslatedPath(translator, new string[] { @"\\?\d", "dbs", "el", "dtb", "Build", "x64", "debug", "perl.cmd" }, new string[] { @"\\?\K", "dbs", "sh", "dtb", "b", "Build", "x64", "debug", "perl.cmd" }); AssertEqualTranslatedPath(translator, new string[] { @"\??\d", "dbs", "el", "dtb", "Build", "x64", "debug", "perl.cmd" }, new string[] { @"\??\K", "dbs", "sh", "dtb", "b", "Build", "x64", "debug", "perl.cmd" }); }
public void TestMalformedPaths() { var context = BuildXLContext.CreateInstanceForTesting(); var pathTable = context.PathTable; var translations = new[] { CreateInputTranslation(pathTable, new string[] { "K", "dbs", "sh", "dtb", "b" }, new string[] { "d", "dbs", "sh", "dtb", "0629_120346" }), }; var translator = new DirectoryTranslator(); translator.AddTranslations(translations, pathTable); translator.Seal(); // None of these paths should be mutated by DirectoryTranslator foreach (string pathToTest in new string[] { @"\??\", @"\\?\", @":", @"d", @"k", @"", }) { // Test edge cases for various paths. Note these explicitly don't go through path generation utilities because they can // massage away malformed paths that we explicitly want to test. AssertAreEqual(pathToTest, translator.Translate(pathToTest)); } }