Skip to content

Conversation

jgaskins
Copy link

The resolver places dependent shards before dependencies, but postinstall script for the dependent shard may depend on the postinstall script in its dependencies having been run first.

For example, my grpc shard depends on protobuf, and both of them have executables they install (built via shards build), but installing them in this order results in this output (the shards command from the app and the shards build command in the grpc shard are both using -v here):

➜  omg_grpc git:(master) ✗ rm -rf bin lib shard.lock && shards -v
Resolving dependencies
git ls-remote --get-url origin
Fetching https://github.com/jgaskins/grpc.git
git fetch --all --quiet
git show test-shards-install:shard.yml
git log -n 1 --pretty=%H test-shards-install
git ls-tree -r --full-tree --name-only 389f3669e09b4d6aebf20a13fb0b031a1e784145 -- shard.yml
git show 389f3669e09b4d6aebf20a13fb0b031a1e784145:shard.yml
git ls-remote --get-url origin
Fetching https://github.com/jeromegn/protobuf.cr.git
git fetch --all --quiet
git show test-shards-install:shard.yml
git log -n 1 --pretty=%H test-shards-install
git ls-tree -r --full-tree --name-only d774a2c760ea7c25160a5cb3c145eb171a73113d -- shard.yml
git show d774a2c760ea7c25160a5cb3c145eb171a73113d:shard.yml
Installing grpc (0.1.0 at 389f3669e09b4d6aebf20a13fb0b031a1e784145)
rm -rf ''/Users/jamie/Code/omg_grpc/lib/grpc''
git ls-tree -r --full-tree --name-only 389f3669e09b4d6aebf20a13fb0b031a1e784145 -- shard.yml
git archive --format=tar --prefix= 389f3669e09b4d6aebf20a13fb0b031a1e784145 | tar -x -f - -C '/Users/jamie/Code/omg_grpc/lib/grpc'
git log -n 1 --pretty=%H 389f3669e09b4d6aebf20a13fb0b031a1e784145
Link /Users/jamie/Code/omg_grpc/lib to /Users/jamie/Code/omg_grpc/lib/grpc/lib
Installing protobuf (2.2.0 at d774a2c760ea7c25160a5cb3c145eb171a73113d)
rm -rf ''/Users/jamie/Code/omg_grpc/lib/protobuf''
git ls-tree -r --full-tree --name-only d774a2c760ea7c25160a5cb3c145eb171a73113d -- shard.yml
git archive --format=tar --prefix= d774a2c760ea7c25160a5cb3c145eb171a73113d | tar -x -f - -C '/Users/jamie/Code/omg_grpc/lib/protobuf'
git log -n 1 --pretty=%H d774a2c760ea7c25160a5cb3c145eb171a73113d
Link /Users/jamie/Code/omg_grpc/lib to /Users/jamie/Code/omg_grpc/lib/protobuf/lib
Postinstall of grpc: shards build -v
rm -rf ''/Users/jamie/Code/omg_grpc/lib/grpc''
Failed postinstall of grpc on shards build -v:
Resolving dependencies
git ls-remote --get-url origin
Fetching https://github.com/jeromegn/protobuf.cr.git
git fetch --all --quiet
git show test-shards-install:shard.yml
git log -n 1 --pretty=%H test-shards-install
git ls-tree -r --full-tree --name-only d774a2c760ea7c25160a5cb3c145eb171a73113d -- shard.yml
git show d774a2c760ea7c25160a5cb3c145eb171a73113d:shard.yml
Using protobuf (2.2.0 at d774a2c760ea7c25160a5cb3c145eb171a73113d)
git ls-tree -r --full-tree --name-only d774a2c760ea7c25160a5cb3c145eb171a73113d -- shard.yml
git show d774a2c760ea7c25160a5cb3c145eb171a73113d:shard.yml
Install bin/protoc-gen-crystal
Unhandled exception: Error opening file with mode 'r': '/Users/jamie/Code/omg_grpc/lib/grpc/lib/protobuf/bin/protoc-gen-crystal': No such file or directory (File::NotFoundError)
  from File::new<String, String, File::Permissions, Nil, Nil>:File
  from Shards::Package#install_executables:Nil
  from Shards::Commands::Install@Shards::Command::run<String>:Nil
  from ~procProc(Array(String), Array(String), Nil)@src/cli.cr:39
  from __crystal_main
  from main

Iterating from the dependencies first works:

➜  omg_grpc git:(master) ✗ rm -rf bin lib shard.lock && ../shards/bin/shards -v
Resolving dependencies
git ls-remote --get-url origin
Fetching https://github.com/jgaskins/grpc.git
git fetch --all --quiet
git ls-tree -r --full-tree --name-only refs/heads/test-shards-install -- shard.yml
git show refs/heads/test-shards-install:shard.yml
git log -n 1 --pretty=%H refs/heads/test-shards-install
git ls-tree -r --full-tree --name-only 389f3669e09b4d6aebf20a13fb0b031a1e784145 -- shard.yml
git show 389f3669e09b4d6aebf20a13fb0b031a1e784145:shard.yml
git ls-remote --get-url origin
Fetching https://github.com/jeromegn/protobuf.cr.git
git fetch --all --quiet
git ls-tree -r --full-tree --name-only refs/heads/test-shards-install -- shard.yml
git show refs/heads/test-shards-install:shard.yml
git log -n 1 --pretty=%H refs/heads/test-shards-install
git ls-tree -r --full-tree --name-only d774a2c760ea7c25160a5cb3c145eb171a73113d -- shard.yml
git show d774a2c760ea7c25160a5cb3c145eb171a73113d:shard.yml
Installing grpc (0.1.0 at 389f366)
rm -rf ''/Users/jamie/Code/omg_grpc/lib/grpc''
git ls-tree -r --full-tree --name-only 389f3669e09b4d6aebf20a13fb0b031a1e784145 -- shard.yml
git archive --format=tar --prefix= 389f3669e09b4d6aebf20a13fb0b031a1e784145 | tar -x -f - -C '/Users/jamie/Code/omg_grpc/lib/grpc'
Link /Users/jamie/Code/omg_grpc/lib to /Users/jamie/Code/omg_grpc/lib/grpc/lib
Installing protobuf (2.2.0 at d774a2c)
rm -rf ''/Users/jamie/Code/omg_grpc/lib/protobuf''
git ls-tree -r --full-tree --name-only d774a2c760ea7c25160a5cb3c145eb171a73113d -- shard.yml
git archive --format=tar --prefix= d774a2c760ea7c25160a5cb3c145eb171a73113d | tar -x -f - -C '/Users/jamie/Code/omg_grpc/lib/protobuf'
Link /Users/jamie/Code/omg_grpc/lib to /Users/jamie/Code/omg_grpc/lib/protobuf/lib
Postinstall of protobuf: shards build
Postinstall of grpc: shards build -v
git ls-tree -r --full-tree --name-only 389f3669e09b4d6aebf20a13fb0b031a1e784145 -- shard.yml
git show 389f3669e09b4d6aebf20a13fb0b031a1e784145:shard.yml
Install bin/grpc_crystal
git ls-tree -r --full-tree --name-only d774a2c760ea7c25160a5cb3c145eb171a73113d -- shard.yml
git show d774a2c760ea7c25160a5cb3c145eb171a73113d:shard.yml
Install bin/protoc-gen-crystal
Writing shard.lock

Copy link
Member

@straight-shoota straight-shoota left a comment

Choose a reason for hiding this comment

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

Sounds good by me. Wouldn't hurt to add an explanation to the comment.

@bcardiff
Copy link
Member

I agree with the change, but we need a spec first.

@jgaskins
Copy link
Author

The specs don't seem to run correctly on my machine, so I didn't know how I should test it:

Finished in 17.89 seconds
155 examples, 10 failures, 65 errors, 0 pending
Full output
➜  shards git:(postinstall-dependencies-before-dependents) ✗ crystal spec
..........F.....F.....................................................EEEEEEEEEEE..E.EEEEEEEEEFEFEEEEEEEFEEE.EFE.FEEEEFFEEEEE..EEEEEEEEEEEEEEEEEEEEF.EE....

Failures:

  1) Shards::GitResolver install
     Failure/Error: File.exists?(install_path("library", "src/library.cr")).should be_true

       Expected: true
            got: false

     # spec/unit/git_resolver_spec.cr:74

  2) Shards::PathResolver install
     Failure/Error: File.exists?(install_path("library", "src/library.cr")).should be_true

       Expected: true
            got: false

     # spec/unit/path_resolver_spec.cr:24

  3) install resolves dependency spec at locked commit
     Failure/Error: assert_installed "locked", "0.1.0", git: git_commits(:locked).last

       expected locked dependency to have been installed

     # spec/integration/install_spec.cr:180

  4) install fails to install when dependency requirement changed in production
     Failure/Error: ex.stdout.should contain("Outdated shard.lock")

       Expected:   "I: Resolving dependencies\nI: Fetching file:///Users/jamie/Code/shards/spec/.repositories/web\nE: Failed to clone file:///Users/jamie/Code/shards/spec/.repositories/web\n"
       to include: "Outdated shard.lock"

     # spec/integration/install_spec.cr:206

  5) install production doesn't install new dependencies
     Failure/Error: ex.stdout.should contain("Outdated shard.lock")

       Expected:   "I: Resolving dependencies\nI: Fetching file:///Users/jamie/Code/shards/spec/.repositories/web\nE: Failed to clone file:///Users/jamie/Code/shards/spec/.repositories/web\n"
       to include: "Outdated shard.lock"

     # spec/integration/install_spec.cr:325

  6) install prints details and removes dependency when postinstall script fails
     Failure/Error: ex.stdout.should contain("E: Failed postinstall of fails on make:\n")

       Expected:   "I: Resolving dependencies\nI: Fetching file:///Users/jamie/Code/shards/spec/.repositories/fails\nE: Failed to clone file:///Users/jamie/Code/shards/spec/.repositories/fails\n"
       to include: "E: Failed postinstall of fails on make:\n"

     # spec/integration/install_spec.cr:380

  7) install fails when shard name doesn't match
     Failure/Error: ex.stdout.should contain("Error shard name (mock) doesn't match dependency name (typo)")

       Expected:   "I: Resolving dependencies\nI: Fetching file:///Users/jamie/Code/shards/spec/.repositories/mock\nE: Failed to clone file:///Users/jamie/Code/shards/spec/.repositories/mock\n"
       to include: "Error shard name (mock) doesn't match dependency name (typo)"

     # spec/integration/install_spec.cr:415

  8) install fail install old version when shard was renamed
     Failure/Error: ex.stdout.should contain("Error shard name (old_name) doesn't match dependency name (new_name)")

       Expected:   "I: Resolving dependencies\nI: Fetching file:///Users/jamie/Code/shards/spec/.repositories/renamed\nE: Failed to clone file:///Users/jamie/Code/shards/spec/.repositories/renamed\n"
       to include: "Error shard name (old_name) doesn't match dependency name (new_name)"

     # spec/integration/install_spec.cr:477

  9) install fail install new version when shard was renamed
     Failure/Error: ex.stdout.should contain("Error shard name (new_name) doesn't match dependency name (old_name)")

       Expected:   "I: Resolving dependencies\nI: Fetching file:///Users/jamie/Code/shards/spec/.repositories/renamed\nE: Failed to clone file:///Users/jamie/Code/shards/spec/.repositories/renamed\n"
       to include: "Error shard name (new_name) doesn't match dependency name (old_name)"

     # spec/integration/install_spec.cr:489

 10) update finds then updates new compatible version
     Failure/Error: assert_installed "oopsie", "1.1.0"

       expected oopsie dependency to have been installed

     # spec/integration/update_spec.cr:204

 11) lock creates lockfile

       command failed: shards lock (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/lock_spec.cr:26:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 12) lock locks is consistent with lockfile

       command failed: shards lock (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/lock_spec.cr:55:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 13) lock locks new dependencies

       command failed: shards lock (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/lock_spec.cr:67:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 14) lock removes dependencies

       command failed: shards lock (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/lock_spec.cr:80:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 15) lock updates lockfile

       command failed: shards lock --update (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/lock_spec.cr:96:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 16) outdated up_to_date

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/outdated_spec.cr:6:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 17) outdated not_latest_version

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/outdated_spec.cr:15:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 18) outdated available_version_matching_pessimistic_operator

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/outdated_spec.cr:25:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 19) outdated reports_new_prerelease

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/outdated_spec.cr:35:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 20) outdated wont_report_prereleases_by_default

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/outdated_spec.cr:46:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 21) outdated reports_prereleases_when_asked

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/outdated_spec.cr:56:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 22) install installs dependencies

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/install_spec.cr:11:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 23) install won't fail if version file is missing (backward compatibility)

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/install_spec.cr:55:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 24) install won't install prerelease version

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/install_spec.cr:66:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 25) install installs specified prerelease version

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/install_spec.cr:77:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 26) install installs prerelease version at refs

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/install_spec.cr:90:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 27) install installs dependencies at locked version

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/install_spec.cr:103:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 28) install always installs locked versions

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/install_spec.cr:118:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 29) install resolves dependency at head when no version tags

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/install_spec.cr:135:28 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 30) install installs dependency at locked commit when refs is a branch

       Error while changing directory: '/Users/jamie/Code/shards/spec/.repositories/web': No such file or directory (File::NotFoundError)
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/system/unix/dir.cr:47:7 in 'current='
         from /usr/local/Cellar/crystal/0.34.0/src/dir.cr:146:5 in 'cd'
         from spec/support/factories.cr:155:7 in 'git_commits'
         from spec/support/factories.cr:86:1 in 'git_commits'
         from spec/integration/install_spec.cr:145:38 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 31) install installs dependency at locked commit when refs is a version tag

       Error while changing directory: '/Users/jamie/Code/shards/spec/.repositories/web': No such file or directory (File::NotFoundError)
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/system/unix/dir.cr:47:7 in 'current='
         from /usr/local/Cellar/crystal/0.34.0/src/dir.cr:146:5 in 'cd'
         from spec/support/factories.cr:155:7 in 'git_commits'
         from spec/support/factories.cr:86:1 in 'git_commits'
         from spec/integration/install_spec.cr:157:38 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 32) install updates locked commit

       Error while changing directory: '/Users/jamie/Code/shards/spec/.repositories/web': No such file or directory (File::NotFoundError)
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/system/unix/dir.cr:47:7 in 'current='
         from /usr/local/Cellar/crystal/0.34.0/src/dir.cr:146:5 in 'cd'
         from spec/support/factories.cr:155:7 in 'git_commits'
         from spec/support/factories.cr:86:1 in 'git_commits'
         from spec/integration/install_spec.cr:189:52 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 33) install fails to install when dependency requirement (commit) changed in production

       Error while changing directory: '/Users/jamie/Code/shards/spec/.repositories/inprogress': No such file or directory (File::NotFoundError)
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/system/unix/dir.cr:47:7 in 'current='
         from /usr/local/Cellar/crystal/0.34.0/src/dir.cr:146:5 in 'cd'
         from spec/support/factories.cr:155:7 in 'git_commits'
         from spec/support/factories.cr:86:1 in 'git_commits'
         from spec/integration/install_spec.cr:213:80 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 34) install updates when dependency requirement changed

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/install_spec.cr:228:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 35) install install subdependency of new dependency respecting lock

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/install_spec.cr:240:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 36) install installs and updates lockfile for added dependencies

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/install_spec.cr:257:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 37) install updated lockfile on removed dependencies

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/install_spec.cr:272:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 38) install locks commit when installing git refs

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/install_spec.cr:286:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 39) install production doesn't install development dependencies

       command failed: shards install --production (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/install_spec.cr:298:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 40) install install in production mode

       command failed: shards install --production (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/install_spec.cr:335:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 41) install install in production mode with locked commit

       Error while changing directory: '/Users/jamie/Code/shards/spec/.repositories/web': No such file or directory (File::NotFoundError)
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/system/unix/dir.cr:47:7 in 'current='
         from /usr/local/Cellar/crystal/0.34.0/src/dir.cr:146:5 in 'cd'
         from spec/support/factories.cr:155:7 in 'git_commits'
         from spec/support/factories.cr:86:1 in 'git_commits'
         from spec/integration/install_spec.cr:342:39 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 42) install install in production mode with locked commit by a previous shards version

       Error while changing directory: '/Users/jamie/Code/shards/spec/.repositories/web': No such file or directory (File::NotFoundError)
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/system/unix/dir.cr:47:7 in 'current='
         from /usr/local/Cellar/crystal/0.34.0/src/dir.cr:146:5 in 'cd'
         from spec/support/factories.cr:155:7 in 'git_commits'
         from spec/support/factories.cr:86:1 in 'git_commits'
         from spec/integration/install_spec.cr:355:92 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 43) install runs postinstall script

       command failed: shards install --no-color (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/install_spec.cr:371:16 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 44) install runs postinstall with transitive dependencies

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/install_spec.cr:388:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 45) install warns when shard.yml version doesn't match git tag

       command failed: shards install --no-color (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/install_spec.cr:426:16 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 46) install doesn't warn when version mismatch is fixed

       command failed: shards install --no-color (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/install_spec.cr:439:16 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 47) install test install old with version when shard was renamed

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/install_spec.cr:452:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 48) install test install new when shard was renamed

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/install_spec.cr:464:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 49) install install untagged version when shard was renamed

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/install_spec.cr:500:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 50) install installs executables at version

       command failed: shards install --no-color (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/install_spec.cr:509:28 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 51) install installs executables at refs

       Error while changing directory: '/Users/jamie/Code/shards/spec/.repositories/binary': No such file or directory (File::NotFoundError)
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/system/unix/dir.cr:47:7 in 'current='
         from /usr/local/Cellar/crystal/0.34.0/src/dir.cr:146:5 in 'cd'
         from spec/support/factories.cr:155:7 in 'git_commits'
         from spec/support/factories.cr:86:1 in 'git_commits'
         from spec/integration/install_spec.cr:526:49 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 52) check succeeds when all dependencies are installed

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/check_spec.cr:10:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 53) check succeeds when dependencies match loose requirements

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/check_spec.cr:17:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 54) check fails when dependencies are missing

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/check_spec.cr:41:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 55) check fails when wrong versions are installed

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/check_spec.cr:57:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 56) list lists all dependencies

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/list_spec.cr:10:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 57) list production doesn't list development dependencies

       command failed: shards install --production (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/list_spec.cr:27:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 58) list lists tree all dependencies

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/list_spec.cr:43:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 59) prune removes unused dependencies

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/prune_spec.cr:15:28 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:255:3 in 'run_before_each_hooks'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:48:7 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 60) prune removes directories

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/prune_spec.cr:15:28 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:255:3 in 'run_before_each_hooks'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:48:7 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 61) prune won't remove files

       command failed: shards install (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/prune_spec.cr:15:28 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:255:3 in 'run_before_each_hooks'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:48:7 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 62) update installs dependencies

       command failed: shards update (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/update_spec.cr:11:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 63) update updates locked dependencies

       command failed: shards update (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/update_spec.cr:47:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 64) update unlocks subdependency

       command failed: shards update c (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/update_spec.cr:62:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 65) update updates specified dependencies

       command failed: shards update orm optional (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/update_spec.cr:74:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 66) update won't install prerelease version

       command failed: shards update (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/update_spec.cr:97:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 67) update installs specified prerelease version

       command failed: shards update (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/update_spec.cr:108:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 68) update updates locked specified prerelease

       command failed: shards update (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/update_spec.cr:119:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 69) update updates from prerelease to release with approximate operator

       command failed: shards update (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/update_spec.cr:130:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 70) update updates to latest prerelease with >= operator

       command failed: shards update (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/update_spec.cr:142:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 71) update updates locked commit

       Error while changing directory: '/Users/jamie/Code/shards/spec/.repositories/web': No such file or directory (File::NotFoundError)
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/system/unix/dir.cr:47:7 in 'current='
         from /usr/local/Cellar/crystal/0.34.0/src/dir.cr:146:5 in 'cd'
         from spec/support/factories.cr:155:7 in 'git_commits'
         from spec/support/factories.cr:86:1 in 'git_commits'
         from spec/integration/update_spec.cr:152:18 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 72) update installs new dependencies

       command failed: shards update (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/update_spec.cr:171:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 73) update removes dependencies

       command failed: shards update (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/update_spec.cr:186:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 74) update runs postinstall with transitive dependencies

       command failed: shards update (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/update_spec.cr:225:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


 75) update installs new executables

       command failed: shards update --no-color (FailedCommand)
         from spec/support/factories.cr:128:5 in 'run'
         from spec/integration/update_spec.cr:235:34 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:255:3 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/example.cr:35:16 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:296:23 in 'internal_run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:291:7 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/context.cr:48:23 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/spec/dsl.cr:270:7 in '->'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/at_exit_handlers.cr:255:3 in 'run'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:45:14 in 'main'
         from /usr/local/Cellar/crystal/0.34.0/src/crystal/main.cr:114:3 in 'main'


Finished in 17.89 seconds
155 examples, 10 failures, 65 errors, 0 pending

Failed examples:

crystal spec spec/unit/git_resolver_spec.cr:70 # Shards::GitResolver install
crystal spec spec/unit/path_resolver_spec.cr:21 # Shards::PathResolver install
crystal spec spec/integration/install_spec.cr:165 # install resolves dependency spec at locked commit
crystal spec spec/integration/install_spec.cr:200 # install fails to install when dependency requirement changed in production
crystal spec spec/integration/install_spec.cr:314 # install production doesn't install new dependencies
crystal spec spec/integration/install_spec.cr:377 # install prints details and removes dependency when postinstall script fails
crystal spec spec/integration/install_spec.cr:407 # install fails when shard name doesn't match
crystal spec spec/integration/install_spec.cr:469 # install fail install old version when shard was renamed
crystal spec spec/integration/install_spec.cr:481 # install fail install new version when shard was renamed
crystal spec spec/integration/update_spec.cr:196 # update finds then updates new compatible version
crystal spec spec/integration/lock_spec.cr:19 # lock creates lockfile
crystal spec spec/integration/lock_spec.cr:47 # lock locks is consistent with lockfile
crystal spec spec/integration/lock_spec.cr:62 # lock locks new dependencies
crystal spec spec/integration/lock_spec.cr:75 # lock removes dependencies
crystal spec spec/integration/lock_spec.cr:88 # lock updates lockfile
crystal spec spec/integration/outdated_spec.cr:4 # outdated up_to_date
crystal spec spec/integration/outdated_spec.cr:13 # outdated not_latest_version
crystal spec spec/integration/outdated_spec.cr:23 # outdated available_version_matching_pessimistic_operator
crystal spec spec/integration/outdated_spec.cr:33 # outdated reports_new_prerelease
crystal spec spec/integration/outdated_spec.cr:44 # outdated wont_report_prereleases_by_default
crystal spec spec/integration/outdated_spec.cr:54 # outdated reports_prereleases_when_asked
crystal spec spec/integration/install_spec.cr:4 # install installs dependencies
crystal spec spec/integration/install_spec.cr:52 # install won't fail if version file is missing (backward compatibility)
crystal spec spec/integration/install_spec.cr:61 # install won't install prerelease version
crystal spec spec/integration/install_spec.cr:72 # install installs specified prerelease version
crystal spec spec/integration/install_spec.cr:83 # install installs prerelease version at refs
crystal spec spec/integration/install_spec.cr:95 # install installs dependencies at locked version
crystal spec spec/integration/install_spec.cr:113 # install always installs locked versions
crystal spec spec/integration/install_spec.cr:133 # install resolves dependency at head when no version tags
crystal spec spec/integration/install_spec.cr:139 # install installs dependency at locked commit when refs is a branch
crystal spec spec/integration/install_spec.cr:153 # install installs dependency at locked commit when refs is a version tag
crystal spec spec/integration/install_spec.cr:184 # install updates locked commit
crystal spec spec/integration/install_spec.cr:212 # install fails to install when dependency requirement (commit) changed in production
crystal spec spec/integration/install_spec.cr:223 # install updates when dependency requirement changed
crystal spec spec/integration/install_spec.cr:235 # install install subdependency of new dependency respecting lock
crystal spec spec/integration/install_spec.cr:247 # install installs and updates lockfile for added dependencies
crystal spec spec/integration/install_spec.cr:267 # install updated lockfile on removed dependencies
crystal spec spec/integration/install_spec.cr:282 # install locks commit when installing git refs
crystal spec spec/integration/install_spec.cr:291 # install production doesn't install development dependencies
crystal spec spec/integration/install_spec.cr:330 # install install in production mode
crystal spec spec/integration/install_spec.cr:340 # install install in production mode with locked commit
crystal spec spec/integration/install_spec.cr:351 # install install in production mode with locked commit by a previous shards version
crystal spec spec/integration/install_spec.cr:369 # install runs postinstall script
crystal spec spec/integration/install_spec.cr:386 # install runs postinstall with transitive dependencies
crystal spec spec/integration/install_spec.cr:419 # install warns when shard.yml version doesn't match git tag
crystal spec spec/integration/install_spec.cr:432 # install doesn't warn when version mismatch is fixed
crystal spec spec/integration/install_spec.cr:445 # install test install old with version when shard was renamed
crystal spec spec/integration/install_spec.cr:457 # install test install new when shard was renamed
crystal spec spec/integration/install_spec.cr:493 # install install untagged version when shard was renamed
crystal spec spec/integration/install_spec.cr:505 # install installs executables at version
crystal spec spec/integration/install_spec.cr:523 # install installs executables at refs
crystal spec spec/integration/check_spec.cr:4 # check succeeds when all dependencies are installed
crystal spec spec/integration/check_spec.cr:15 # check succeeds when dependencies match loose requirements
crystal spec spec/integration/check_spec.cr:39 # check fails when dependencies are missing
crystal spec spec/integration/check_spec.cr:55 # check fails when wrong versions are installed
crystal spec spec/integration/list_spec.cr:4 # list lists all dependencies
crystal spec spec/integration/list_spec.cr:21 # list production doesn't list development dependencies
crystal spec spec/integration/list_spec.cr:37 # list lists tree all dependencies
crystal spec spec/integration/prune_spec.cr:23 # prune removes unused dependencies
crystal spec spec/integration/prune_spec.cr:29 # prune removes directories
crystal spec spec/integration/prune_spec.cr:35 # prune won't remove files
crystal spec spec/integration/update_spec.cr:4 # update installs dependencies
crystal spec spec/integration/update_spec.cr:39 # update updates locked dependencies
crystal spec spec/integration/update_spec.cr:57 # update unlocks subdependency
crystal spec spec/integration/update_spec.cr:69 # update updates specified dependencies
crystal spec spec/integration/update_spec.cr:92 # update won't install prerelease version
crystal spec spec/integration/update_spec.cr:103 # update installs specified prerelease version
crystal spec spec/integration/update_spec.cr:114 # update updates locked specified prerelease
crystal spec spec/integration/update_spec.cr:125 # update updates from prerelease to release with approximate operator
crystal spec spec/integration/update_spec.cr:137 # update updates to latest prerelease with >= operator
crystal spec spec/integration/update_spec.cr:148 # update updates locked commit
crystal spec spec/integration/update_spec.cr:161 # update installs new dependencies
crystal spec spec/integration/update_spec.cr:181 # update removes dependencies
crystal spec spec/integration/update_spec.cr:223 # update runs postinstall with transitive dependencies
crystal spec spec/integration/update_spec.cr:232 # update installs new executables

This includes what appears to be the only place this particular class is tested. It makes it hard to know if a spec I wrote would be correct. :-\

@asterite
Copy link
Member

Did you run make test or make spec? Can't remember which one is it

@jgaskins
Copy link
Author

Oh, I was running crystal spec. make test does result in a successful run, but it looks like it's doing basically the same thing — it explicitly builds the binary, but I'd already done that. It looks like you can't run the unit and integration specs in the same run.

Either way, now that I know how to get a passing run I can try to come up with a spec. Any tips y'all have would be super helpful, since it looks like this is only done in an integration spec.

@ysbaddaden
Copy link
Contributor

I'm not sure this actually fixes the issue.

Unless molinillo returns dependencies in some specific order, I see little reasons why the installed array of dependencies would be properly ordered. Your dependencies end up in some order where it fails. Reversing workarounds the issue, but that's about it. There is no guarantee that the postinstall script of nested dependencies will be built before parent dependencies in the tree.

@jgaskins
Copy link
Author

@ysbaddaden It looks like molinillo stores dependencies in a hash. First-order dependencies are inserted up front and nested dependencies inserted during resolution. When it collects the packages, it iterates over that hash, which maintains insertion order. Do you have an example of a scenario where iterating in reverse does not fix the problem?

@waj
Copy link
Member

waj commented Apr 19, 2020

I'm afraid this doesn't solve the issue. If you have a shard.yml with both grpc and protobuf, depending on which dependency you declare first, the result will be sorted differently. So, no, this is not the solution.

Actually dependencies form an acyclic graph, so doing a topological sort is possible. Or, a more naive approach would be loop through the dependencies multiple times, skipping those with sub-dependencies still not installed, until all of them are done. Let me know if you want to take care of that. Otherwise, just open an issue and I'll take care of it.

@jgaskins
Copy link
Author

Oof, you're right. I added protobuf to my app's shard.yml before grpc and, sure enough, same error.

Let me know if you want to take care of that. Otherwise, just open an issue and I'll take care of it.

Unfortunately, this PR is the first time I've looked into the internals here and it took 2 hours before I arrived at reverse_each, so I think you'll have a much easier time with this than I would. I'll go ahead and open an issue. Thanks for your help @waj!

@jgaskins jgaskins closed this Apr 19, 2020
@jgaskins jgaskins deleted the postinstall-dependencies-before-dependents branch April 19, 2020 02:54
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.

6 participants