Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Select latest based on version then date #41

Merged
merged 1 commit into from
Mar 16, 2018
Merged

Select latest based on version then date #41

merged 1 commit into from
Mar 16, 2018

Conversation

heaths
Copy link
Member

@heaths heaths commented Mar 16, 2018

Fixes #40 and updates the test data to make sure we're properly sorting and selecting. Also made a corresponding test-only change to Microsoft/vswhere to make sure this case isn't regressed there (was already handled correctly).

Fixes #40 and updates the test data to make sure we're properly sorting and selecting. Also made a corresponding test-only change to Microsoft/vswhere to make sure this case isn't regressed there (was already handled correctly).
@AppVeyorBot
Copy link

new object[] { Mock(v1), Mock(v2), -1 },
new object[] { Mock(v2), Mock(v1), 1 },
new object[] { Mock(v2, ft1), Mock(v2, ft2), -1 },
new object[] { Mock(v2, ft2), Mock(v2, ft1), 1 },

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe add new object[] { Mock(v2, ft1), Mock(v2, ft1), 0}?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Already covered with line 45. FILETIME is a struct so, by default, all zeros; thus, we already checked for equality when the version was equal.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oops, thanks. Didn't notice default(FILETIME) :P.

@heaths heaths merged commit b15ec51 into develop Mar 16, 2018
@heaths heaths deleted the issue40 branch March 16, 2018 20:43
b-higginbotham added a commit to b-higginbotham/vssetup.powershell that referenced this pull request Jun 21, 2019
The InstanceComparer that was added as part of microsoft#41 to fix microsoft#40 isn't actually able to solve the problem due to the implementation of the ProcessRecord method in SelectInstanceCommand. InstanceComparer is used to sort instances by version and then date, but when iterating over all instances, the latestInstance variable is only set when the latestInstance date is less than the date of the current instance in the loop.

This completely ignores the previous OrderBy that was done using InstanceComparer. The simplest solution at this point is to always set the latestInstance variable when the Latest flag is set because the collection is already sorted in the desired order and no additional comparisons are necessary.
heaths pushed a commit that referenced this pull request Jul 31, 2019
The InstanceComparer that was added as part of #41 to fix #40 isn't actually able to solve the problem due to the implementation of the ProcessRecord method in SelectInstanceCommand. InstanceComparer is used to sort instances by version and then date, but when iterating over all instances, the latestInstance variable is only set when the latestInstance date is less than the date of the current instance in the loop.

This completely ignores the previous OrderBy that was done using InstanceComparer. The simplest solution at this point is to always set the latestInstance variable when the Latest flag is set because the collection is already sorted in the desired order and no additional comparisons are necessary.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants