diff --git a/src/Framework/Runner/Runner.cs b/src/Framework/Runner/Runner.cs index 0b62db7f..897f4067 100644 --- a/src/Framework/Runner/Runner.cs +++ b/src/Framework/Runner/Runner.cs @@ -48,6 +48,7 @@ public class Runner : IRunner, IDisposable private bool _gui = true; private string _revitPath; private bool _copyAddins = true; + private bool _copyUserAddins = true; private int _timeout = 120000; private bool _concat; private List _copiedAddins = new List(); @@ -211,6 +212,16 @@ public bool CopyAddins set { _copyAddins = value; } } + /// + /// Specified whether to copy addins from the + /// User App Data Revit addin folder to the current working directory + /// + public bool CopyUserAddins + { + get { return _copyUserAddins; } + set { _copyUserAddins = value; } + } + /// /// A timeout value in milliseconds, after which /// any running test will be killed. @@ -440,6 +451,19 @@ public void SetupTests() } } } + if (CopyUserAddins) + { + var files = Directory.GetFiles(GetRevitUserAddinFolder()); + foreach (var file in files) + { + if (file.EndsWith(".addin", StringComparison.OrdinalIgnoreCase)) + { + var fileName = Path.GetFileName(file); + File.Copy(file, Path.Combine(WorkingDirectory, fileName), true); + CopiedAddins.Add(fileName); + } + } + } } /// @@ -1196,8 +1220,25 @@ private void SetupIndividualTest(ITestData td, bool continuous = false) /// /// This function returns the current Revit addin folder /// - /// private string GetRevitAddinFolder() + { + var prod = GetRevitProduct(); + return prod.AllUsersAddInFolder; + } + + /// + /// This function returns the current user's Revit addin folder + /// + private string GetRevitUserAddinFolder() + { + var prod = GetRevitProduct(); + return prod.CurrentUserAddInFolder; + } + + /// + /// This function returns the Revit product + /// + private RevitProduct GetRevitProduct() { var prod = Products.FirstOrDefault( @@ -1205,7 +1246,7 @@ private string GetRevitAddinFolder() System.String.CompareOrdinal( Path.GetDirectoryName(x.InstallLocation), Path.GetDirectoryName(RevitPath)) == 0); - return prod.AllUsersAddInFolder; + return prod; } ///