ruby / syntax_suggest

Searching for unexpected `end` syntax errors takes a lot of time. Let this gem do it for you!

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Investigate output: Dead end triggers manually, but not automatically via `.rspec`

schneems opened this issue Β· comments

In the heroku/buildpacks-nodejs project

$ rspec test/specs/node/cutlass/

An error occurred while loading ./test/specs/node/cutlass/basic_spec.rb.
Failure/Error: dead_end_original_load(file)

SyntaxError:
  /Users/rschneeman/Documents/projects/work/cnb/buildpacks-nodejs/test/specs/node/cutlass/basic_spec.rb:18: syntax error, unexpected local variable or method, expecting ')'
        app.pack_build do |pack_result|
        ^~~
  /Users/rschneeman/Documents/projects/work/cnb/buildpacks-nodejs/test/specs/node/cutlass/basic_spec.rb:25: syntax error, unexpected local variable or method, expecting ')'
        app.pack_build do |pack_result|
        ^~~
# /Users/rschneeman/.gem/ruby/3.0.1/gems/dead_end-1.1.7/lib/dead_end/auto.rb:15:in `load'
# /Users/rschneeman/.gem/ruby/3.0.1/gems/dead_end-1.1.7/lib/dead_end/auto.rb:15:in `load'
# /Users/rschneeman/.gem/ruby/3.0.1/gems/dead_end-1.1.7/lib/dead_end/auto.rb:44:in `load'
No examples found.


Finished in 0.00564 seconds (files took 0.1702 seconds to load)
0 examples, 0 failures, 1 error occurred outside of examples

β›„ 3.0.1 πŸš€  ~/Documents/projects/work/cnb/buildpacks-nodejs (schneems/test-version-downgrade)
$ dead_end test/specs/node
node/          node-function/
β›„ 3.0.1 πŸš€  ~/Documents/projects/work/cnb/buildpacks-nodejs (schneems/test-version-downgrade)
$ dead_end test/specs/node
node/          node-function/
β›„ 3.0.1 πŸš€  ~/Documents/projects/work/cnb/buildpacks-nodejs (schneems/test-version-downgrade)
$ dead_end test/specs/node/cutlass/basic_spec.rb

DeadEnd: Unmatched `)` detected

file: /Users/rschneeman/Documents/projects/work/cnb/buildpacks-nodejs/test/specs/node/cutlass/basic_spec.rb
simplified:

      12  describe "Heroku's Nodejs CNB" do
      13    it "handles a downgrade of node engine" do
      14      Cutlass::App.new("simple-function").transaction do |app|
    ❯ 15        set_node_version(app.tmpdir, version: "^16.0"
    ❯ 18        app.pack_build do |pack_result|
    ❯ 21        end
    ❯ 23        set_node_version(app.tmpdir, version: "^14.0"
    ❯ 25        app.pack_build do |pack_result|
    ❯ 28        end
      29      end
      30    end
      31  end

β›„ 3.0.1 πŸš€  ~/Documents/projects/work/cnb/buildpacks-nodejs (schneems/test-version-downgrade)
$ cat test/specs/node/cutlass/basic_spec.rb
# frozen_string_literal: true

require_relative "../spec_helper"

def set_node_version(dir, version: )
  package_json = dir.join("package.json")
  package_json_hash = JSON.parse(package_json.read)
  package_json_hash["engines"]["node"] = version
  package_json.write(package_json_hash.to_json)
end

describe "Heroku's Nodejs CNB" do
  it "handles a downgrade of node engine" do
    Cutlass::App.new("simple-function").transaction do |app|
      set_node_version(app.tmpdir, version: "^16.0"


      app.pack_build do |pack_result|
        puts pack_result.stdout
        expect(pack_result.stdout).to include("Installing Node.js function runtime")
      end

      set_node_version(app.tmpdir, version: "^14.0"

      app.pack_build do |pack_result|
        puts pack_result.stdout
        expect(pack_result.stdout).to include("Installing Node.js function runtime")
      end
    end
  end
end
β›„ 3.0.1 πŸš€  ~/Documents/projects/work/cnb/buildpacks-nodejs (schneems/test-version-downgrade)
$ cat .rspec
--require dead_end
β›„ 3.0.1 πŸš€  ~/Documents/projects/work/cnb/buildpacks-nodejs (schneems/test-version-downgrade)
$ gitx .
β›„ 3.0.1 πŸš€  ~/Documents/projects/work/cnb/buildpacks-nodejs (schneems/test-version-downgrade)
$ dead_end test/specs/node/cutlass/basic_spec.rb

DeadEnd: Unmatched `)` detected

file: /Users/rschneeman/Documents/projects/work/cnb/buildpacks-nodejs/test/specs/node/cutlass/basic_spec.rb
simplified:

      12  describe "Heroku's Nodejs CNB" do
      13    it "handles a downgrade of node engine" do
      14      Cutlass::App.new("simple-function").transaction do |app|
    ❯ 15        set_node_version(app.tmpdir, version: "^16.0"
    ❯ 18        app.pack_build do |pack_result|
    ❯ 21        end
    ❯ 23        set_node_version(app.tmpdir, version: "^14.0"
    ❯ 25        app.pack_build do |pack_result|
    ❯ 28        end
      29      end
      30    end
      31  end

β›„ 3.0.1 πŸš€  ~/Documents/projects/work/cnb/buildpacks-nodejs (schneems/test-version-downgrade)
$ git log
commit d31e9a371c5f37d57ce6fa463de7efd4b461c667 (HEAD -> schneems/test-version-downgrade)
Author: Richard Schneeman <rschneeman@salesforce.com>
Date:   Wed Jun 9 13:57:14 2021 -0500

    Basic spec and helper

Closing unless this comes up again, that format of private; attr_* <args>; public is extremely uncommon. Especially now that ruby supports private attr_* directly.