Skip to content

Commit eff5b6c

Browse files
committed
Merge remote-tracking branch 'remotes/upstream/master' into network-april
# Conflicts: # src/Network/Network/ChangeLog.md
2 parents da20abe + 58385a7 commit eff5b6c

File tree

483 files changed

+145440
-69103
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

483 files changed

+145440
-69103
lines changed

.azure-pipelines/util/analyze-steps.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ steps:
1515
inputs:
1616
command: custom
1717
custom: msbuild
18-
arguments: 'build.proj /t:GenerateHelp /p:Configuration=${{ parameters.configuration }}'
18+
arguments: 'build.proj /t:GenerateHelp /p:Configuration=${{ parameters.configuration }};PullRequestNumber=$(System.PullRequest.PullRequestNumber)'
1919

2020
- task: DotNetCoreCLI@2
2121
displayName: 'Static Analysis'
2222
inputs:
2323
command: custom
2424
custom: msbuild
25-
arguments: 'build.proj /t:StaticAnalysis /p:Configuration=${{ parameters.configuration }}'
25+
arguments: 'build.proj /t:StaticAnalysis /p:Configuration=${{ parameters.configuration }};PullRequestNumber=$(System.PullRequest.PullRequestNumber)'
2626

2727
- template: publish-artifacts-steps.yml
2828
parameters:

.azure-pipelines/util/build-steps.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ steps:
99
inputs:
1010
command: custom
1111
custom: msbuild
12-
arguments: 'build.proj /t:Build /p:Configuration=${{ parameters.configuration }};TestFramework=${{ parameters.testFramework }}'
12+
arguments: 'build.proj /t:Build /p:Configuration=${{ parameters.configuration }};TestFramework=${{ parameters.testFramework }};PullRequestNumber=$(System.PullRequest.PullRequestNumber)'
1313

1414
- template: publish-artifacts-steps.yml
1515
parameters:

.azure-pipelines/util/test-steps.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ steps:
1414
inputs:
1515
command: custom
1616
custom: msbuild
17-
arguments: 'build.proj /t:${{ parameters.testTarget }} /p:Configuration=${{ parameters.configuration }};TestFramework=${{ parameters.testFramework }}'
17+
arguments: 'build.proj /t:${{ parameters.testTarget }} /p:Configuration=${{ parameters.configuration }};TestFramework=${{ parameters.testFramework }};PullRequestNumber=$(System.PullRequest.PullRequestNumber)'
1818

1919
- template: publish-artifacts-steps.yml
2020
parameters:

.github/ISSUE_TEMPLATE/feature_request.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
name: Feature request
33
about: Suggest a new feature or improvement
44
title: ''
5-
labels: Feature Request
5+
labels: Azure PS Team, Feature Request
66
assignees: ''
77

88
---

.gitignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,9 +222,8 @@ Package
222222
launchSettings.json
223223
/src/StackAdmin/AzureRM/AzureRM.psm1
224224
/src/StackAdmin/AzureStack/AzureStack.psm1
225+
/CsprojMappings.json
225226
/ModuleMappings.json
226-
/SolutionMappings.json
227-
/TestMappings.json
228227
/tools/Modules/tmp
229228
/tools/Az/Az.psm1
230229
/Azure.PowerShell.sln

ChangeLog.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,66 @@
1+
## 2.2.0 - June 2019
2+
#### Az.Cdn
3+
* Updated cmdlets to support rulesEngine feature based on API version 2019-04-15.
4+
5+
#### Az.Compute
6+
* Added `NoWait` parameter that starts the operation and returns immediately, before the operation is completed.
7+
- Updated cmdlets:
8+
Export-AzLogAnalyticRequestRateByInterval
9+
Export-AzLogAnalyticThrottledRequest
10+
Remove-AzVM
11+
Remove-AzVMAccessExtension
12+
Remove-AzVMAEMExtension
13+
Remove-AzVMChefExtension
14+
Remove-AzVMCustomScriptExtension
15+
Remove-AzVMDiagnosticsExtension
16+
Remove-AzVMDiskEncryptionExtension
17+
Remove-AzVMDscExtension
18+
Remove-AzVMSqlServerExtension
19+
Restart-AzVM
20+
Set-AzVM
21+
Set-AzVMAccessExtension
22+
Set-AzVMADDomainExtension
23+
Set-AzVMAEMExtension
24+
Set-AzVMBginfoExtension
25+
Set-AzVMChefExtension
26+
Set-AzVMCustomScriptExtension
27+
Set-AzVMDiagnosticsExtension
28+
Set-AzVMDscExtension
29+
Set-AzVMExtension
30+
Start-AzVM
31+
Stop-AzVM
32+
Update-AzVM
33+
34+
#### Az.EventHub
35+
* Fix for #9231 - Get-AzEventHubNamespace does not return tags
36+
* Fix for #9230 - Get-AzEventHubNamespace returns ResourceGroup instead of ResourceGroupName
37+
38+
#### Az.Network
39+
* Update ResourceId and InputObject for Nat Gateway
40+
- Add alias for ResourceId and InputObject
41+
42+
#### Az.PolicyInsights
43+
* Fix Null reference issue in Get-AzPolicyEvent
44+
45+
#### Az.RecoveryServices
46+
* IaaSVM policy minimum retention in days changed to 7 from 1
47+
48+
#### Az.ServiceBus
49+
* Fix for issue #9182 - Get-AzServiceBusNamespace returns ResourceGroup instead of ResourceGroupName
50+
51+
#### Az.ServiceFabric
52+
* Fix typo in error message for 'Update-AzServiceFabricReliability'
53+
* Fix missing character in Service Fabric cmdlines
54+
55+
#### Az.Sql
56+
* Add DnsZonePartner Parameter for New-AzureSqlInstance cmdlet to support AutoDr for Managed Instance.
57+
* Deprecating Get-AzSqlDatabaseSecureConnectionPolicy cmdlet
58+
* Rename Threat Detection cmdlets to Advanced Threat Protection
59+
* New-AzSqlInstance -StorageSizeInGB and -LicenseType parameters are now optional.
60+
61+
#### Az.Websites
62+
* fixes the issue where using Set-AzWebApp and Set-AzWebAppSlot with -WebApp property was removing the tags
63+
164
## 2.1.0 - May 2019
265
#### Az.ApiManagement
366
* Created new Cmdlets for managing diagnostics at the global and API Scope

build.proj

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@
8181
<UsingTask Condition="$(OnPremiseBuild)" TaskName="CorporateValidation" AssemblyFile="$(CIToolsPath)/Microsoft.WindowsAzure.Tools.Build.Tasks.OnPremise.dll" />
8282
<Import Condition="$(OnPremiseBuild)" Project="$(CIToolsPath)/Microsoft.WindowsAzure.Build.OnPremise.msbuild" />
8383
<UsingTask TaskName="ESRPSignTask" AssemblyFile="$(CISignRepoPath)/tools/sdkbuildtools/tasks/MS.Az.Sdk.OnPremise.Build.Tasks.dll" />
84+
<UsingTask TaskName="FilesChangedTask" AssemblyFile="$(RepoArtifacts)Microsoft.Azure.Build.Tasks/Microsoft.Azure.Build.Tasks.dll" />
85+
<UsingTask TaskName="FilterTask" AssemblyFile="$(RepoArtifacts)Microsoft.Azure.Build.Tasks/Microsoft.Azure.Build.Tasks.dll" />
8486

8587
<Target Name="Clean">
8688
<Message Importance="high" Text="Cleaning Cmdlets..." />
@@ -93,9 +95,13 @@
9395
<Exec Command="$(PowerShellCoreCommandPrefix) &quot;Get-ChildItem -Path $(MSBuildThisFileDirectory) -Recurse -Include 'bin','obj','TestResults' | Remove-Item -Recurse -Force -ErrorAction Ignore&quot;" IgnoreExitCode="true" />
9496
</Target>
9597

96-
<Target Name="FilterBuild">
98+
<Target Name="FilterBuild" Condition="$(PullRequestNumber) != ''">
99+
<Message Importance="high" Text="Filtering projects and modules..." />
97100
<Exec Command="$(PowerShellCoreCommandPrefix) &quot;. $(RepoTools)/CreateFilterMappings.ps1&quot;" />
98101

102+
<!-- Build the Microsoft.Azure.Build.Tasks project -->
103+
<Exec Command="dotnet publish $(RepoTools)BuildPackagesTask/Microsoft.Azure.Build.Tasks/Microsoft.Azure.Build.Tasks.csproj -c $(Configuration) -f netstandard2.0" />
104+
99105
<!-- Get all of the files changed in the given pull request -->
100106
<FilesChangedTask RepositoryOwner="Azure" RepositoryName="azure-powershell" PullRequestNumber="$(PullRequestNumber)">
101107
<Output TaskParameter="FilesChanged" ItemName="FilesChanged" />
@@ -105,33 +111,23 @@
105111
<FilterTask FilesChanged="@(FilesChanged)" MapFilePath="./ModuleMappings.json">
106112
<Output TaskParameter="Output" ItemName="ModulesChanged" />
107113
</FilterTask>
108-
<Message Text="Filtering help generation and StaticAnalysis by the following modules:" />
109-
<Message Text="%(ModulesChanged.Identity)" />
110-
<Message Text="Total: @(ModulesChanged->Count())" />
111-
<Message Text="" />
112-
113-
<!-- Get the list of solutions to build -->
114-
<FilterTask FilesChanged="@(FilesChanged)" MapFilePath="./SolutionMappings.json">
115-
<Output TaskParameter="Output" ItemName="CmdletSolutionsToBuild" />
116-
</FilterTask>
117-
<Message Text="Filtering solutions to build by the following:" />
118-
<Message Text="%(CmdletSolutionsToBuild.Identity)" />
119-
<Message Text="Total: @(CmdletSolutionsToBuild->Count())" />
120-
<Message Text="" />
121-
122-
<!--Get the list of tests to be run based on files changed from a specified PullRequestNumber. Mapping between paths and test DLLs is used to produce the list.-->
123-
<FilterTask FilesChanged="@(FilesChanged)" MapFilePath="./TestMappings.json">
124-
<Output TaskParameter="Output" ItemName="XUnitTests" />
114+
<Message Importance="high" Text="Filtering help generation and StaticAnalysis by the following modules:" />
115+
<Message Importance="high" Text="%(ModulesChanged.Identity)" />
116+
<Message Importance="high" Text="Total: @(ModulesChanged->Count())" />
117+
<Message Importance="high" Text="" />
118+
119+
<!-- Get the list of projects to build -->
120+
<FilterTask FilesChanged="@(FilesChanged)" MapFilePath="./CsprojMappings.json">
121+
<Output TaskParameter="Output" ItemName="ProjectsToBuild" />
125122
</FilterTask>
126-
<Message Text="Using these test assemblies:" />
127-
<Message Text="%(XUnitTests.Identity)" />
128-
<Message Text="Total: @(XunitTests->Count())" />
129-
<Message Text="" />
123+
<Message Importance="high" Text="Filtering projects to build by the following:" />
124+
<Message Importance="high" Text="%(ProjectsToBuild.Identity)" />
125+
<Message Importance="high" Text="Total: @(ProjectsToBuild->Count())" />
126+
<Message Importance="high" Text="" />
130127
</Target>
131128

132129
<!-- Build all flavors of the Cmdlets -->
133-
<!-- TODO: Reimplement the FilterBuild and update RepoTasks to NetStandard -->
134-
<Target Name="Build">
130+
<Target Name="Build" DependsOnTargets="FilterBuild">
135131
<Message Importance="high" Text="Building Cmdlets..." />
136132

137133
<MakeDir Directories="$(RepoArtifacts)" />
@@ -142,13 +138,19 @@
142138
<!-- Build and create package content -->
143139
<Exec Command="dotnet --version" />
144140
<Exec Command="dotnet new sln -n Azure.PowerShell -o $(RepoArtifacts) --force" />
145-
<ItemGroup>
141+
<ItemGroup Condition="$(PullRequestNumber) == ''">
146142
<CsprojFiles Include="$(RepoRoot)src/**/*.csproj" Exclude="$(RepoRoot)src/**/*.Test.csproj;$(RepoRoot)src/**/Authenticators.csproj" />
147143
<CsprojFiles Include="$(RepoRoot)src/**/*.Test.csproj" Exclude="$(Net472TestExclude)" Condition="'$(Configuration)' != 'Release' and '$(TestsToRun)' == 'All'" />
148144
<CsprojFiles Include="$(RepoRoot)src/**/*.Test.csproj" Exclude="$(CoreTests)$(Net472TestExclude)" Condition="'$(Configuration)' != 'Release' and '$(TestsToRun)' == 'NonCore'" />
149145
<CsprojFiles Include="$(CoreTests)" Exclude="$(Net472TestExclude)" Condition="'$(Configuration)' != 'Release' and '$(TestsToRun)' == 'Core'" />
150146
<CsprojFiles Include="$(RepoRoot)src/**/Authenticators.csproj" Condition="'$([MSBuild]::IsOsPlatform(&quot;Windows&quot;))' == 'true' and '$(TestFramework)' != 'net472'" />
151147
</ItemGroup>
148+
<ItemGroup Condition="$(PullRequestNumber) != ''">
149+
<!-- Always build and test common code -->
150+
<CsprojFiles Include="$(LibraryRoot)src/Accounts/**/*.csproj;$(LibraryRoot)tools/TestFx/TestFx.csproj" Exclude="$(LibraryRoot)src/**/Authenticators.csproj" />
151+
<CsprojFiles Include="%(ProjectsToBuild.Identity)" />
152+
<CsprojFiles Include="$(LibraryRoot)src/**/Authenticators.csproj" Condition="'$([MSBuild]::IsOsPlatform(&quot;Windows&quot;))' == 'true'" />
153+
</ItemGroup>
152154
<!-- https://github.com/dotnet/cli/issues/6295#issuecomment-346973582 -->
153155
<Exec Command="dotnet sln $(RepoArtifacts)Azure.PowerShell.sln add &quot;%(CsprojFiles.FullPath)&quot;" />
154156
<PropertyGroup>
@@ -297,7 +299,7 @@ $(RepoArtifacts)/$(Configuration)/**/Microsoft.Azure.PowerShell.Authenticators.d
297299
<!-- RemoveCodeSignArtifacts.ps1 -->
298300
<Message Text="variables.Remove artifacts section" Importance="high" />
299301
<Exec Command="$(PowerShellCoreCommandPrefix) &quot;Get-ChildItem -Path $(RepoArtifacts) -Recurse -Include 'Signed','Unsigned' | Remove-Item -Recurse -Force -Confirm:$false -ErrorAction Ignore&quot;" IgnoreExitCode="true" />
300-
302+
301303
<!-- CheckSignature.ps1 -->
302304
<Message Text="variables.CheckSignature section" Importance="high" />
303305
<Exec Command="$(PowerShellCoreCommandPrefix) &quot;. $(RepoTools)/CheckSignature.ps1 -CustomPath $(RepoArtifacts)/$(Configuration)&quot;" Condition="'$(Scope)' != 'Stack'" />
@@ -326,4 +328,4 @@ $(RepoArtifacts)/$(Configuration)/**/Microsoft.Azure.PowerShell.Authenticators.d
326328
<SetEnvVar EnvName="SignedMsiDir" EnvValue="$(SignedOutputRootDir)" />
327329
</Target>
328330

329-
</Project>
331+
</Project>

documentation/troubleshoot-module-load.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,4 +156,12 @@ If you see a version of Az.Accounts installed in the session, you can resolve th
156156

157157
Azure PowerShell is a set of binary modules, meaning that cmdlets are defined and implemented in .NET Standard code. PowerShell loads cmdlet assemblies into a single AppDomain, and these assemblies cannot be unloaded, even if the module is removed. Therefore, a module assembly and all its dependent assemblies remain loaded in the PowerShell session once it is imported until the PowerShell session is closed. Additionally, the types defined in a .NET Standard assembly are strongly tied to the assembly version, so that the types from version `A` and version `B` of the same assembly will appear as different types in the PowerShell session. When these types are used in common by multiple assemblies (as in the authentication types in Az.Accounts), then the types that are meant to be common are actually different for each module version. This causes problems when authentication information is instantiated using types from version `X` of Az.Accounts, but an assembly requires version `Y` of these types.
158158

159-
This underlying problem is solved in Az by requiring all authentication types used by the modules to be fully backward compatible.
159+
This underlying problem is solved in Az by requiring all authentication types used by the modules to be fully backward compatible.
160+
161+
### Newtonsoft.Json versions per PowerShell edition
162+
163+
The library `Newtonsoft.Json` is used throughout our cmdlets to handle JSON information. However, we do not have control of the version of this library that is loaded in PowerShell. To troubleshoot serialization issues, here is a table of the versions of `Newtonsoft.Json` that are loaded by the various editions of PowerShell.
164+
165+
| | Windows PowerShell 5.1 | PowerShell Core 6.0 | PowerShell Core 6.1 | PowerShell Core 6.2
166+
| - | - | - | - | - |
167+
| **Newtonsoft.Json** | 6.0.8 | 10.0.3 | 11.0.2 | 12.0.1

src/Accounts/Accounts/ChangeLog.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
- Additional information about change #1
1919
-->
2020
## Upcoming Release
21+
* Fix bug with incorrect URL being used in some cases for Functions calls
22+
- More information here: https://github.com/Azure/azure-powershell/issues/8983
2123

2224
## Version 1.5.2
2325
* Update Authentication Library to fix ADFS issues with username/password auth

src/Accounts/Authentication.Test/AuthenticationFactoryTests.cs

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,5 +399,100 @@ public void AppServiceManagedIdentity()
399399
Assert.Equal(expectedAccessToken, accessToken);
400400
Assert.Equal(expectedExpiresOn, msat.ExpiresOn);
401401
}
402+
403+
[Fact]
404+
[Trait(Category.AcceptanceType, Category.CheckIn)]
405+
public void AppServiceManagedIdentityWithDataPlane()
406+
{
407+
AzureSessionInitializer.InitializeAzureSession();
408+
var tenant = Guid.NewGuid().ToString();
409+
var userId = Guid.NewGuid().ToString();
410+
var environment = AzureEnvironment.PublicEnvironments["AzureCloud"];
411+
var account = new AzureAccount
412+
{
413+
Id = userId,
414+
Type = AzureAccount.AccountType.ManagedService
415+
};
416+
const string resource = @"https://vault.azure.com/";
417+
const string endpoint = @"http://127.0.0.1:41217/MSI/token/";
418+
var expectedUri = $"{endpoint}?resource={resource}&api-version=2017-09-01";
419+
account.SetProperty(AzureAccount.Property.MSILoginUri, endpoint);
420+
account.SetProperty(AzureAccount.Property.MSILoginSecret, @"bar");
421+
const string expectedAccessToken = "foo";
422+
var expectedExpiresOn = DateTimeOffset.Parse("1/23/2019 7:15:42 AM +00:00");
423+
var responses = new Dictionary<string, ManagedServiceAppServiceTokenInfo>(StringComparer.OrdinalIgnoreCase)
424+
{
425+
{
426+
expectedUri,
427+
new ManagedServiceAppServiceTokenInfo()
428+
{
429+
AccessToken = expectedAccessToken,
430+
ExpiresOn = expectedExpiresOn,
431+
Resource = resource,
432+
TokenType = "Bearer",
433+
}
434+
}
435+
};
436+
AzureSession.Instance.RegisterComponent(HttpClientOperationsFactory.Name, () => TestHttpOperationsFactory.Create(responses, _output), true);
437+
var msat = new ManagedServiceAppServiceAccessToken(account, environment, environment.GetEndpoint(resource) ?? resource, tenant);
438+
Assert.Equal(expectedUri, msat.RequestUris.Peek());
439+
var accessToken = msat.AccessToken;
440+
Assert.Equal(expectedAccessToken, accessToken);
441+
Assert.Equal(expectedExpiresOn, msat.ExpiresOn);
442+
}
443+
444+
[Fact]
445+
[Trait(Category.AcceptanceType, Category.CheckIn)]
446+
public void AppServiceManagedIdentityWithServiceManagement()
447+
{
448+
AzureSessionInitializer.InitializeAzureSession();
449+
var tenant = Guid.NewGuid().ToString();
450+
var userId = Guid.NewGuid().ToString();
451+
var environment = AzureEnvironment.PublicEnvironments["AzureCloud"];
452+
var account = new AzureAccount
453+
{
454+
Id = userId,
455+
Type = AzureAccount.AccountType.ManagedService
456+
};
457+
const string resource = @"https://management.azure.com/";
458+
const string serviceManagementResource = @"https://management.core.windows.net/";
459+
const string endpoint = @"http://127.0.0.1:41217/MSI/token/";
460+
var expectedUri = $"{endpoint}?resource={resource}&api-version=2017-09-01";
461+
account.SetProperty(AzureAccount.Property.MSILoginUri, endpoint);
462+
account.SetProperty(AzureAccount.Property.MSILoginSecret, @"bar");
463+
const string expectedAccessToken = "foo";
464+
var expectedExpiresOn = DateTimeOffset.Parse("1/23/2019 7:15:42 AM +00:00");
465+
var responses = new Dictionary<string, ManagedServiceAppServiceTokenInfo>(StringComparer.OrdinalIgnoreCase)
466+
{
467+
{
468+
expectedUri,
469+
new ManagedServiceAppServiceTokenInfo()
470+
{
471+
AccessToken = expectedAccessToken,
472+
ExpiresOn = expectedExpiresOn,
473+
Resource = resource,
474+
TokenType = "Bearer",
475+
}
476+
}
477+
};
478+
AzureSession.Instance.RegisterComponent(HttpClientOperationsFactory.Name, () => TestHttpOperationsFactory.Create(responses, _output), true);
479+
var msat = new ManagedServiceAppServiceAccessToken(account, environment, GetFunctionsResourceId(serviceManagementResource, environment), tenant);
480+
Assert.Equal(expectedUri, msat.RequestUris.Peek());
481+
var accessToken = msat.AccessToken;
482+
Assert.Equal(expectedAccessToken, accessToken);
483+
Assert.Equal(expectedExpiresOn, msat.ExpiresOn);
484+
}
485+
private string GetFunctionsResourceId(string resourceIdOrEndpointName, IAzureEnvironment environment)
486+
{
487+
var resourceId = environment.GetEndpoint(resourceIdOrEndpointName) ?? resourceIdOrEndpointName;
488+
if (string.Equals(
489+
environment.GetEndpoint(AzureEnvironment.Endpoint.ActiveDirectoryServiceEndpointResourceId),
490+
resourceId, StringComparison.OrdinalIgnoreCase))
491+
{
492+
resourceId = environment.GetEndpoint(AzureEnvironment.Endpoint.ResourceManager);
493+
}
494+
495+
return resourceId;
496+
}
402497
}
403498
}

src/Accounts/Authentication.Test/LongRunningCmdletTests.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,21 @@ public void JobCopiesCmdletParameterSet()
208208
}
209209

210210

211+
[Fact]
212+
[Trait(Category.AcceptanceType, Category.CheckIn)]
213+
public void NoWaitWithAsJob()
214+
{
215+
var mock = new Mock<ICommandRuntime>();
216+
var cmdlet = new AzureStreamTestCmdlet();
217+
cmdlet.MyInvocation.BoundParameters["AsJob"] = true;
218+
cmdlet.MyInvocation.BoundParameters["NoWait"] = true;
219+
220+
mock.Setup(m => m.WriteObject(It.IsAny<object>())).Throws(new InvalidOperationException("Should not execute as job"));
221+
222+
cmdlet.CommandRuntime = mock.Object;
223+
cmdlet.ExecuteSynchronouslyOrAsJob();
224+
}
225+
211226
AzureStreamTestCmdlet SetupCmdlet(bool CallShouldProcess, bool CallShouldContinue, out Mock<ICommandRuntime> mockRuntime)
212227
{
213228
var cmdlet = new AzureStreamTestCmdlet();

0 commit comments

Comments
 (0)