Skip to content
This repository has been archived by the owner on Apr 14, 2021. It is now read-only.

Conservative updates #4676

Merged
merged 31 commits into from
Jul 9, 2016
Merged

Conservative updates #4676

merged 31 commits into from
Jul 9, 2016

Commits on Jul 9, 2016

  1. Starter update_specs

    chrismo committed Jul 9, 2016
    Configuration menu
    Copy the full SHA
    b57b1df View commit details
    Browse the repository at this point in the history
  2. UpdateOptions added and passed thru all_the_things

    First shot adding new update CLI options and passing those through
    Definition into Resolver where they're needed.
    
    I opted for three separate options to reduce typing, vs. a --level
    [patch|minor|major].
    
    It's a little painful merely extending parameter lists in places, but
    bigger refactorings prolly be more painful.
    chrismo committed Jul 9, 2016
    Configuration menu
    Copy the full SHA
    c821411 View commit details
    Browse the repository at this point in the history
  3. bundler-patch resolver code ported over.

    Putting all this code into Resolver itself, when it's almost completely
    isolated, didn't make sense. UpdateOptions was the best place for it,
    prompting me to think that class needs renaming and see if the current
    search_for method could be moved into it as well. Except for `index_for`
    it's a cinch.
    
    `install_spec` and `update_spec` are still passing with this addition,
    first new spec for conservative update isn't yet.
    chrismo committed Jul 9, 2016
    Configuration menu
    Copy the full SHA
    a404dad View commit details
    Browse the repository at this point in the history
  4. minor/patch resolution code invokable.

    Prior commit added in the code but it only worked in the default :major
    case by staying out of the way, so it at least didn't break existing
    functionality. But the GemsToPatch class hadn't been brought over from
    bundler-patch yet, so none of the patch/minor code could work as it was
    referencing an ivar that didn't exist yet.
    
    Bundler-patch not only will handle an update to whatever is the latest
    patch/minor version, but will also handle an update to a version
    specified in an advisory from ruby-advisory-db. At this point I don't
    believe we'll be adding the advisory behavior to Bundler proper, so this
    commit can bring over simply the array of gem names being updated
    without the GemsToPatch class or the extra sorting code that takes a
    specific version number into account.
    
    With these simplifications, the starter update_spec can run without
    exception, though for some reason it's behaving as if the :minor level
    were specified, instead of :patch.
    
    Rather than keep debugging from an integration level, it's time to start
    bringing over resolver tests.
    chrismo committed Jul 9, 2016
    Configuration menu
    Copy the full SHA
    100c3bb View commit details
    Browse the repository at this point in the history
  5. First resolver spec and bug fix.

    I stared at that code 2 or 3 times before seeing the obvious bug. Sigh.
    Anyway - needed to get these resolver specs going sooner or later. Both
    the first new resolver spec is passing as is the first update_spec spec
    (plus the pre-existing ones).
    chrismo committed Jul 9, 2016
    Configuration menu
    Copy the full SHA
    80e1b17 View commit details
    Browse the repository at this point in the history
  6. 1st pass thorough specs on conservative resolver.

    Ported over resolver specs from bundler-patch README (which don't match
    the actual specs for no particular reason other than dev lolz) and
    expanded on some of the cases after a few weird cases resolved ... a
    little unexpectedly.
    
    They're passing, but some discussion to be had on some of the cases
    perhaps. See inline spec comments.
    chrismo committed Jul 9, 2016
    Configuration menu
    Copy the full SHA
    0ccdb21 View commit details
    Browse the repository at this point in the history
  7. RuboCop fixes

    chrismo committed Jul 9, 2016
    Configuration menu
    Copy the full SHA
    949dea2 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    5f63cad View commit details
    Browse the repository at this point in the history
  9. GemVersionPromoter refactor

    UpdateOptions which was then renamed to DependencySearch is now called
    GemVersionPromoter, cuz I can't name this damn class. It's in its own
    file now, so there's that.
    
    I took a shot at moving Resolver#search_for into it, but had naively
    overlooked a few instance variables and such and it just didn't make as
    much sense as I'd first envisioned. Probably some other smaller classes
    in between perhaps.
    
    GemVersionPromoter class now caching its results, too, and I moved out
    the return from it back into Resolver as it made more sense there. As a
    standalone class, it may make sense to have this actually implement
    :major sorting, but maybe later.
    chrismo committed Jul 9, 2016
    Configuration menu
    Copy the full SHA
    b26b54c View commit details
    Browse the repository at this point in the history
  10. Ensure locked_specs provided in unlock all case.

    Another bit brought over from bundler-patch, this code in Definition
    ensures the GemVersionPromoter has the locked specs it needs in the
    'unlock all' case. Everywhere else in Definition, empty @locked_specs
    means unlock all, but doing conservative updates requires knowing the
    current locked version so it always needs this list.
    chrismo committed Jul 9, 2016
    Configuration menu
    Copy the full SHA
    20426a8 View commit details
    Browse the repository at this point in the history
  11. Configuration menu
    Copy the full SHA
    bdc1df5 View commit details
    Browse the repository at this point in the history
  12. Configuration menu
    Copy the full SHA
    3630f18 View commit details
    Browse the repository at this point in the history
  13. Clarified changing dependency specs.

    A couple of confusing cases that should be clearer now and the
    differences called out. Details in the spec code and comments.
    
    Plus some MODO additions and other pending spec additions.
    chrismo committed Jul 9, 2016
    Configuration menu
    Copy the full SHA
    3d3aeda View commit details
    Browse the repository at this point in the history
  14. Remove minimal option

    chrismo committed Jul 9, 2016
    Configuration menu
    Copy the full SHA
    93fac82 View commit details
    Browse the repository at this point in the history
  15. Configuration menu
    Copy the full SHA
    a444014 View commit details
    Browse the repository at this point in the history
  16. Use readers instead of ivars

    chrismo committed Jul 9, 2016
    Configuration menu
    Copy the full SHA
    d88ef5c View commit details
    Browse the repository at this point in the history
  17. Invalid level in GemVersionPromoter now raises.

    This shouldn't ever surface to the user, would be the result of a coding
    mistake.
    chrismo committed Jul 9, 2016
    Configuration menu
    Copy the full SHA
    6af8ef7 View commit details
    Browse the repository at this point in the history
  18. Cleanup DEBUG var and output

    chrismo committed Jul 9, 2016
    Configuration menu
    Copy the full SHA
    cb2f8c8 View commit details
    Browse the repository at this point in the history
  19. Moved GemVersionPromoter inside search_for cache.

    In the process I was able to simplify some of the code inside
    GemVersionPromoter dealing with SpecGroups.
    
    I also attempted to implement the :major behavior into
    GemVersionPromoter as that would eliminate the logic to skip it in
    `#search_for`, however I ran into some test failures that I need to
    investigate further, though unit specs are working so far.
    chrismo committed Jul 9, 2016
    Configuration menu
    Copy the full SHA
    8cbe425 View commit details
    Browse the repository at this point in the history
  20. Fix up major support in GVP.

    If GVP handles the default :major case, it now passes all the specs, but
    that's a lot of existing functionality to hand off to it at this stage,
    so I kept in the conditional to just roll with existing results if
    :major.
    
    Got rid of a couple of superfluous begin/end I'd included to make
    RubyMine auto-format the code in a way that made Rubocop happy.
    chrismo committed Jul 9, 2016
    Configuration menu
    Copy the full SHA
    861eb2b View commit details
    Browse the repository at this point in the history
  21. Configuration menu
    Copy the full SHA
    00b8064 View commit details
    Browse the repository at this point in the history
  22. No need to dupe cached GVP output

    ...now that its output is inside the Resolver's cache.
    chrismo committed Jul 9, 2016
    Configuration menu
    Copy the full SHA
    d025055 View commit details
    Browse the repository at this point in the history
  23. Mark new options as hidden

    chrismo committed Jul 9, 2016
    Configuration menu
    Copy the full SHA
    f37c76f View commit details
    Browse the repository at this point in the history
  24. Hook-up --strict option, flesh out update specs.

    Getting caught up on missing update_specs, realized `--strict` flagged
    wasn't being passed through. Fixed.
    chrismo committed Jul 9, 2016
    Configuration menu
    Copy the full SHA
    3d1e6e3 View commit details
    Browse the repository at this point in the history
  25. Remove old pending spec

    chrismo committed Jul 9, 2016
    Configuration menu
    Copy the full SHA
    57d70be View commit details
    Browse the repository at this point in the history
  26. Add some additional GVP specs per TODO.

    When I ported over specs from bundler-patch, I had a TODO on a
    combination that had no specs, so that's taken care of now.
    chrismo committed Jul 9, 2016
    Configuration menu
    Copy the full SHA
    257c8b2 View commit details
    Browse the repository at this point in the history
  27. Support for reverting to older versions.

    This is the first behavior change from bundler-patch. Used to be older
    versions would never be an option, but Bundler proper has always
    supported this (if necessary to resolve the dependency tree) and there
    can be some legit cases for doing this.
    
    The `--strict` flag could be used to override this behavior, but I'm
    running into a Molinillo behavior that I'm not sure is correct, so the
    specs involving the strict option are failing right now. I'm going to
    push so @segiddins and I can discuss.
    chrismo committed Jul 9, 2016
    Configuration menu
    Copy the full SHA
    60f64fd View commit details
    Browse the repository at this point in the history
  28. Add docs to GemVersionPromoter.

    Also some pending specs cleanup. These may be added as new issues and
    addressed later.
    chrismo committed Jul 9, 2016
    Configuration menu
    Copy the full SHA
    3e56e8f View commit details
    Browse the repository at this point in the history
  29. Mark pending two failing specs.

    segiddins and I are agreed there appears to be an issue with Molinillo
    in these cases, but they are unusual and for now we're looking to do an
    undocumented release of the new conservative updates, so we can start to
    get feedback. We'll revisit these cases.
    chrismo committed Jul 9, 2016
    Configuration menu
    Copy the full SHA
    f16f129 View commit details
    Browse the repository at this point in the history
  30. Configuration menu
    Copy the full SHA
    9022339 View commit details
    Browse the repository at this point in the history
  31. Don't parse empty Lockfile during GVP init

    Not a common case, but glitch is triggered by new plugin integration
    tests when there's no Gemfile or .bundle directory. A GemfileNotFound
    exception is raised deeper down the call stack trying to access the
    cache_path when executed in a non-bundler dir. That case apparently is
    legit for plugins.
    chrismo committed Jul 9, 2016
    Configuration menu
    Copy the full SHA
    263c187 View commit details
    Browse the repository at this point in the history