Select latest based on version then date - #41
Merged
Conversation
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).
Menglu Wang (mengluwang121)
approved these changes
Mar 16, 2018
| 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 }, |
There was a problem hiding this comment.
Maybe add new object[] { Mock(v2, ft1), Mock(v2, ft1), 0}?
Member
Author
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
Oops, thanks. Didn't notice default(FILETIME) :P.
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.
Heath Stewart (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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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).