diff --git a/tools/BuildAssets/BuildTasks/Microsoft.Azure.Sdk.Build.Tasks/BootstrapTasks/GetBuildTools.cs b/tools/BuildAssets/BuildTasks/Microsoft.Azure.Sdk.Build.Tasks/BootstrapTasks/GetBuildTools.cs index 152923af33ce..480d73a148d9 100644 --- a/tools/BuildAssets/BuildTasks/Microsoft.Azure.Sdk.Build.Tasks/BootstrapTasks/GetBuildTools.cs +++ b/tools/BuildAssets/BuildTasks/Microsoft.Azure.Sdk.Build.Tasks/BootstrapTasks/GetBuildTools.cs @@ -136,7 +136,15 @@ private void Init() if (string.IsNullOrEmpty(RemoteRootDir)) { - RemoteRootDir = DEFAULT_REMOTE_ROOT_DIR; + string localCopyFrom = Path.Combine(LocalBranchRootDir, COPY_FROM_RELATIVEPATH); + if(!Directory.Exists(localCopyFrom)) + { + RemoteRootDir = DEFAULT_REMOTE_ROOT_DIR; + } + else + { + RemoteRootDir = LocalBranchRootDir; + } } if (RemoteRootDir.StartsWith("http")) diff --git a/tools/BuildAssets/BuildTasks/Microsoft.Azure.Sdk.Build.Tasks/BootstrapTasks/Microsoft.Azure.Build.BootstrapTasks.csproj b/tools/BuildAssets/BuildTasks/Microsoft.Azure.Sdk.Build.Tasks/BootstrapTasks/Microsoft.Azure.Build.BootstrapTasks.csproj index 2ef7f4f213af..452f5ea50aca 100644 --- a/tools/BuildAssets/BuildTasks/Microsoft.Azure.Sdk.Build.Tasks/BootstrapTasks/Microsoft.Azure.Build.BootstrapTasks.csproj +++ b/tools/BuildAssets/BuildTasks/Microsoft.Azure.Sdk.Build.Tasks/BootstrapTasks/Microsoft.Azure.Build.BootstrapTasks.csproj @@ -1,10 +1,14 @@ - - + - net46 + Microsoft.Azure.Build.BootstrapTasks + Provides .NET SDK Build bootstrapper tasks + Microsoft.Azure.Build.BootstrapperTasks + Microsoft.Azure.Build.BootstrapTasks + 1.0.0 - ..\..\..\tasks + net46 + ..\..\..\tasks @@ -12,5 +16,10 @@ - + + + \ No newline at end of file diff --git a/tools/BuildAssets/BuildTasks/Microsoft.Azure.Sdk.Build.Tasks/SdkBuildTasks/Microsoft.Azure.Sdk.Build.Tasks.csproj b/tools/BuildAssets/BuildTasks/Microsoft.Azure.Sdk.Build.Tasks/SdkBuildTasks/Microsoft.Azure.Sdk.Build.Tasks.csproj index 880be31fd1a2..264ba795d9db 100644 --- a/tools/BuildAssets/BuildTasks/Microsoft.Azure.Sdk.Build.Tasks/SdkBuildTasks/Microsoft.Azure.Sdk.Build.Tasks.csproj +++ b/tools/BuildAssets/BuildTasks/Microsoft.Azure.Sdk.Build.Tasks/SdkBuildTasks/Microsoft.Azure.Sdk.Build.Tasks.csproj @@ -1,9 +1,14 @@  - net46 + Microsoft.Azure.Sdk.Build.Tasks + Provides .NET SDK Build tools tasks + Microsoft.Azure.Sdk.Build.Tasks + Microsoft.Azure.Sdk.Build.Tasks + 1.0.0 - ..\..\..\tasks + net46 + ..\..\..\tasks @@ -14,15 +19,4 @@ - - - - \ No newline at end of file diff --git a/tools/BuildAssets/BuildTasks/Microsoft.Azure.Sdk.Build.Tasks/SdkBuildTasks/SDKCategorizeProjects.cs b/tools/BuildAssets/BuildTasks/Microsoft.Azure.Sdk.Build.Tasks/SdkBuildTasks/SDKCategorizeProjects.cs index 62b11d90354b..261570007dee 100644 --- a/tools/BuildAssets/BuildTasks/Microsoft.Azure.Sdk.Build.Tasks/SdkBuildTasks/SDKCategorizeProjects.cs +++ b/tools/BuildAssets/BuildTasks/Microsoft.Azure.Sdk.Build.Tasks/SdkBuildTasks/SDKCategorizeProjects.cs @@ -36,6 +36,7 @@ public class SDKCategorizeProjects : Task #region fields private string KV_IGNOREDIRNAME = "Microsoft.Azure.KeyVault.Samples"; private string _ignoreDirNameForSearchingProjects; + private string _searchProjectFileExt; #endregion public SDKCategorizeProjects() @@ -79,9 +80,24 @@ public string IgnoreDirNameForSearchingProjects /// /// List of project file extension. - /// Currently only hard coded to .csproj files /// - private string SearchProjectFileExt { get; set; } + public string SearchProjectFileExt + { + get + { + if(_searchProjectFileExt == null) + { + _searchProjectFileExt = string.Empty; + } + + return _searchProjectFileExt; + } + + set + { + _searchProjectFileExt = value; + } + } #region OUTPUT /// @@ -123,6 +139,8 @@ public string IgnoreDirNameForSearchingProjects /// [Output] public ITaskItem[] WellKnowTestSDKNet452Projects { get; private set; } + + public string[] UnFilteredProjects { get; private set; } #endregion /// @@ -151,7 +169,9 @@ public override bool Execute() { ignorePathList.Add(KV_IGNOREDIRNAME); } - ProjectSearchUtility ProjUtil = new ProjectSearchUtility(SourceRootDirPath, ignorePathList); + + string[] projExtList = SearchProjectFileExt?.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); + ProjectSearchUtility ProjUtil = new ProjectSearchUtility(SourceRootDirPath, ignorePathList, projExtList); if (BuildScope.Equals("All", StringComparison.OrdinalIgnoreCase)) { sdkProjects = ProjUtil.GetAllSDKProjects(); @@ -190,6 +210,7 @@ public override bool Execute() netCore11TestProjectsToBuild = testNetCore11Projects?.ToArray(); net452TestProjectsToBuild = testNet452Projects?.ToArray(); unSupportedProjectsToBuild = unSupportedProjects?.ToArray(); + UnFilteredProjects = allProjects.ToArray(); return true; } diff --git a/tools/BuildAssets/BuildTasks/Microsoft.Azure.Sdk.Build.Tasks/SdkBuildTasks/Utilities/ProjectSearchUtility.cs b/tools/BuildAssets/BuildTasks/Microsoft.Azure.Sdk.Build.Tasks/SdkBuildTasks/Utilities/ProjectSearchUtility.cs index 4f672c363801..db7e43ffd5ef 100644 --- a/tools/BuildAssets/BuildTasks/Microsoft.Azure.Sdk.Build.Tasks/SdkBuildTasks/Utilities/ProjectSearchUtility.cs +++ b/tools/BuildAssets/BuildTasks/Microsoft.Azure.Sdk.Build.Tasks/SdkBuildTasks/Utilities/ProjectSearchUtility.cs @@ -173,7 +173,8 @@ public List GetAllSDKProjects() public List GetScopedSDKProjects(string scopePath) { List scopedProjects = new List(); - string searchProjInDirPath = Path.Combine(RootDirForSearch, scopePath); + //string searchProjInDirPath = Path.Combine(RootDirForSearch, scopePath); + string searchProjInDirPath = AdjustPathForScopedProjects(RootDirForSearch, scopePath); if (Directory.Exists(searchProjInDirPath)) { scopedProjects = SearchProjects(searchProjInDirPath); @@ -192,7 +193,8 @@ public List GetScopedTestProjects(string scopePath) { List testScopedProjects = new List(); - string searchDir = Path.Combine(RootDirForSearch, scopePath); + //string searchDir = Path.Combine(RootDirForSearch, scopePath); + string searchDir = AdjustPathForScopedProjects(RootDirForSearch, scopePath); if (Directory.Exists(searchDir)) { testScopedProjects = SearchTestProjects(searchDir); @@ -236,5 +238,32 @@ private List SearchTestProjects(string searchDirPath) return _testProjs; } #endregion + + #region Private functions + /// + /// This function checks if the scope path (which is a relative path) is found under src directory + /// If not found, it will adjust the root directory from the actul root of repo (one level up) + /// Earlier: RootDirForSearch use to be \src + /// But we adjust and move one level up and then search again (if prior attempt resulted in no matching directories) + /// + /// + /// + /// + private string AdjustPathForScopedProjects(string rootDir, string scopePath) + { + string rootParentDir = Directory.GetParent(rootDir).FullName; + string searchProjInDirPath = Path.Combine(RootDirForSearch, scopePath); + if (!Directory.Exists(searchProjInDirPath)) + { + searchProjInDirPath = Path.Combine(rootParentDir, scopePath); + if (!Directory.Exists(searchProjInDirPath)) + { + searchProjInDirPath = string.Empty; + } + } + + return searchProjInDirPath; + } + #endregion } } \ No newline at end of file diff --git a/tools/BuildAssets/BuildTasks/Microsoft.Azure.Sdk.Build.Tasks/Tests/Build.Tasks.Tests/CategorizeProjectTaskTest.cs b/tools/BuildAssets/BuildTasks/Microsoft.Azure.Sdk.Build.Tasks/Tests/Build.Tasks.Tests/CategorizeProjectTaskTest.cs index 485c1387b006..d8ad62eee72f 100644 --- a/tools/BuildAssets/BuildTasks/Microsoft.Azure.Sdk.Build.Tasks/Tests/Build.Tasks.Tests/CategorizeProjectTaskTest.cs +++ b/tools/BuildAssets/BuildTasks/Microsoft.Azure.Sdk.Build.Tasks/Tests/Build.Tasks.Tests/CategorizeProjectTaskTest.cs @@ -26,6 +26,40 @@ public CategorizeProjectTaskTest() //System.Environment.SetEnvironmentVariable("MSBuildSDKsPath", @"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdks"); } + + [Fact] + public void EmptyProjectExtList() + { + SDKCategorizeProjects cproj = new SDKCategorizeProjects(); + cproj.SearchProjectFileExt = null; + cproj.SourceRootDirPath = sourceRootDir; + cproj.BuildScope = @"tools\ProjectTemplates\AzureDotNetSDK-TestProject"; + cproj.IgnoreDirNameForSearchingProjects = Path.Combine(ignoreDir); + + + if (cproj.Execute()) + { + Assert.Equal(cproj.UnFilteredProjects.Count(), 0); + } + } + + [Fact] + public void GetProjectOutsideSourceDir() + { + SDKCategorizeProjects cproj = new SDKCategorizeProjects(); + cproj.SearchProjectFileExt = "*.xproj"; + cproj.SourceRootDirPath = sourceRootDir; + cproj.BuildScope = @"tools\ProjectTemplates\AzureDotNetSDK-TestProject"; + cproj.IgnoreDirNameForSearchingProjects = Path.Combine(ignoreDir); + + + if (cproj.Execute()) + { + Assert.Equal(cproj.UnFilteredProjects.Count(), 1); + } + } + + [Fact] public void IgnoreDirTokens() { diff --git a/tools/BuildAssets/tasks/net46/Microsoft.Azure.Build.BootstrapTasks.dll b/tools/BuildAssets/tasks/net46/Microsoft.Azure.Build.BootstrapTasks.dll index f7170f35cd9c..9662441e4c84 100644 Binary files a/tools/BuildAssets/tasks/net46/Microsoft.Azure.Build.BootstrapTasks.dll and b/tools/BuildAssets/tasks/net46/Microsoft.Azure.Build.BootstrapTasks.dll differ diff --git a/tools/BuildAssets/tasks/net46/Microsoft.Azure.Sdk.Build.Tasks.dll b/tools/BuildAssets/tasks/net46/Microsoft.Azure.Sdk.Build.Tasks.dll index 4f6f092c472a..a641a909a6f0 100644 Binary files a/tools/BuildAssets/tasks/net46/Microsoft.Azure.Sdk.Build.Tasks.dll and b/tools/BuildAssets/tasks/net46/Microsoft.Azure.Sdk.Build.Tasks.dll differ diff --git a/tools/BuildAssets/tasks/net46/Microsoft.Build.Framework.dll b/tools/BuildAssets/tasks/net46/Microsoft.Build.Framework.dll index 2f51d7eed8ab..709e75a9faa7 100644 Binary files a/tools/BuildAssets/tasks/net46/Microsoft.Build.Framework.dll and b/tools/BuildAssets/tasks/net46/Microsoft.Build.Framework.dll differ diff --git a/tools/BuildAssets/tasks/net46/Microsoft.Build.Tasks.Core.dll b/tools/BuildAssets/tasks/net46/Microsoft.Build.Tasks.Core.dll index 033d5c54b446..a0e09d5d54e5 100644 Binary files a/tools/BuildAssets/tasks/net46/Microsoft.Build.Tasks.Core.dll and b/tools/BuildAssets/tasks/net46/Microsoft.Build.Tasks.Core.dll differ diff --git a/tools/BuildAssets/tasks/net46/Microsoft.Build.Utilities.Core.dll b/tools/BuildAssets/tasks/net46/Microsoft.Build.Utilities.Core.dll index 6e5b66e4506a..e9fd61b50b43 100644 Binary files a/tools/BuildAssets/tasks/net46/Microsoft.Build.Utilities.Core.dll and b/tools/BuildAssets/tasks/net46/Microsoft.Build.Utilities.Core.dll differ diff --git a/tools/BuildAssets/tasks/net46/Microsoft.Build.dll b/tools/BuildAssets/tasks/net46/Microsoft.Build.dll index 864f36c570ed..f0418158741b 100644 Binary files a/tools/BuildAssets/tasks/net46/Microsoft.Build.dll and b/tools/BuildAssets/tasks/net46/Microsoft.Build.dll differ diff --git a/tools/bootstrapTools/Microsoft.Azure.Build.BootstrapTasks.dll b/tools/bootstrapTools/Microsoft.Azure.Build.BootstrapTasks.dll index 65524287717b..609a2f39d550 100644 Binary files a/tools/bootstrapTools/Microsoft.Azure.Build.BootstrapTasks.dll and b/tools/bootstrapTools/Microsoft.Azure.Build.BootstrapTasks.dll differ diff --git a/tools/bootstrapTools/taskBinaries/Microsoft.Azure.Build.BootstrapTasks.dll b/tools/bootstrapTools/taskBinaries/Microsoft.Azure.Build.BootstrapTasks.dll index 65aaa417bffe..9662441e4c84 100644 Binary files a/tools/bootstrapTools/taskBinaries/Microsoft.Azure.Build.BootstrapTasks.dll and b/tools/bootstrapTools/taskBinaries/Microsoft.Azure.Build.BootstrapTasks.dll differ