Skip to content
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
9 changes: 9 additions & 0 deletions src/common/PqSdkNugetPackageService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ export class PqSdkNugetPackageService {
private readonly nullableMaximumPqTestNugetVersion?: NugetVersions = ExtensionConstants.MaximumPqTestNugetVersion
? NugetVersions.createFromFuzzyVersionString(ExtensionConstants.MaximumPqTestNugetVersion)
: undefined;
private readonly nullableMinimumPqTestNugetVersion?: NugetVersions = ExtensionConstants.MinimumPqTestNugetVersion
? NugetVersions.createFromFuzzyVersionString(ExtensionConstants.MinimumPqTestNugetVersion)
: undefined;

constructor(
readonly vscExtCtx: vscode.ExtensionContext,
Expand Down Expand Up @@ -56,6 +59,7 @@ export class PqSdkNugetPackageService {
public async findNullableNewPqSdkVersion(
options: {
maximumNugetVersion?: NugetVersions;
minimumNugetVersion?: NugetVersions;
} = {},
): Promise<string | undefined> {
let sortedNugetVersions: NugetVersions[];
Expand All @@ -66,6 +70,11 @@ export class PqSdkNugetPackageService {
// always restrain the version found beneath the MaximumPqTestNugetVersion
options.maximumNugetVersion = this.nullableMaximumPqTestNugetVersion;
}

if (!options.minimumNugetVersion) {
// always restrain the version found above the MinimumPqTestNugetVersion
options.minimumNugetVersion = this.nullableMinimumPqTestNugetVersion;
}
} else {
// in other cases, always force returning the whole list of the nuget versions
options = {};
Expand Down
10 changes: 10 additions & 0 deletions src/common/nuget/NugetCommandService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,7 @@ export class NugetCommandService {
packageName: string,
options: {
maximumNugetVersion?: NugetVersions;
minimumNugetVersion?: NugetVersions;
} = {},
): Promise<NugetVersions[]> {
let sortedNugetVersions: NugetVersions[] = (
Expand All @@ -156,6 +157,15 @@ export class NugetCommandService {
);
}

if (options.minimumNugetVersion) {
const minimumNugetVersion: NugetVersions = assertNotNull(options.minimumNugetVersion);

// filter out any version gt maximumNugetVersion in sortedNugetVersions
sortedNugetVersions = sortedNugetVersions.filter(
(one: NugetVersions) => minimumNugetVersion.compare(one) <= 0,
);
}

return sortedNugetVersions;
}

Expand Down
10 changes: 10 additions & 0 deletions src/common/nuget/NugetLiteHttpService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ export class NugetLiteHttpService {
packageName: string,
options: {
maximumNugetVersion?: NugetVersions;
minimumNugetVersion?: NugetVersions;
} = {},
): Promise<NugetVersions[]> {
const preReleasedVersionIncludeVersions: { versions: string[] } = await this.getPackageReleasedVersions(
Expand All @@ -134,6 +135,15 @@ export class NugetLiteHttpService {
);
}

if (options.minimumNugetVersion) {
const minimumNugetVersion: NugetVersions = assertNotNull(options.minimumNugetVersion);

// filter out any version gt maximumNugetVersion in sortedNugetVersions
sortedNugetVersions = sortedNugetVersions.filter(
(one: NugetVersions) => minimumNugetVersion.compare(one) <= 0,
);
}

return sortedNugetVersions;
}

Expand Down
9 changes: 8 additions & 1 deletion src/constants/PowerQuerySdkExtension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,15 @@ const NugetBaseFolder: string = ".nuget" as const;
const InternalMsftPqSdkToolsNugetName: string = "Microsoft.PowerQuery.SdkTools" as const;
const PublicMsftPqSdkToolsNugetName: string = InternalMsftPqSdkToolsNugetName;
/**
* 2.114 or 2.114.x wil limit the version of the sdkTool seized beneath 2.115
* Inclusive maximum nuget version
* 2.117 or 2.117.x wil limit the version of the sdkTool seized beneath 2.118
*/
const MaximumPqTestNugetVersion: string = "2.114.x" as const;
/**
* Exclusive minimum nuget version
* 2.114 or 2.114.x wil limit the version of the sdkTool seized above 2.114.x like 2.115.0
*/
const MinimumPqTestNugetVersion: string = "2.112.x" as const;
/**
* A suggestedPqTestNugetVersion that would be used as the initially tried pqTest version
* thus, make sure it is lower than `MaximumPqTestNugetVersion` if it were specified
Expand Down Expand Up @@ -111,6 +117,7 @@ export const ExtensionConstants = Object.freeze({
PublicMsftPqSdkToolsNugetName,
SuggestedPqTestNugetVersion,
MaximumPqTestNugetVersion,
MinimumPqTestNugetVersion,
PqTestSubPath,
MakePQXExecutableName,
buildNugetPackageSubPath,
Expand Down
20 changes: 20 additions & 0 deletions unit-tests/common/nuget/NugetVersions.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ const dummyNugetVersionsArrV2 = [
NugetVersions.createFromReleasedVersionString("2.116.201"),
NugetVersions.createFromReleasedVersionString("2.114.4"),
NugetVersions.createFromReleasedVersionString("2.112.4"),
NugetVersions.createFromReleasedVersionString("2.112.3"),
NugetVersions.createFromReleasedVersionString("2.111.5"),
NugetVersions.createFromReleasedVersionString("2.111.3"),
NugetVersions.createFromReleasedVersionString("2.110.3"),
Expand Down Expand Up @@ -187,4 +188,23 @@ describe("NugetVersions.spec unit testes", () => {
expect(closestNuGetVersion.minor).eq("116");
expect(closestNuGetVersion.patch).eq("201");
});

it("filter out nuget version arr v1", () => {
let maximumPqTestNugetVersion: NugetVersions = NugetVersions.createFromFuzzyVersionString("2.112.x");
let minimumPqTestNugetVersion: NugetVersions = NugetVersions.createFromFuzzyVersionString("2.110.x");

let filteredVersion = dummyNugetVersionsArrV2;

filteredVersion = filteredVersion.filter((one: NugetVersions) => one.compare(maximumPqTestNugetVersion) <= 0);

filteredVersion = filteredVersion.filter((one: NugetVersions) => minimumPqTestNugetVersion.compare(one) <= 0);

expect(filteredVersion.length === 4).ok;
expect(filteredVersion[0].major).eq("2");
expect(filteredVersion[0].minor).eq("111");
expect(filteredVersion[0].patch).eq("3");
expect(filteredVersion[3].major).eq("2");
expect(filteredVersion[3].minor).eq("112");
expect(filteredVersion[3].patch).eq("4");
});
});