You can't refer to the node local accessor outside of the
serverspec/rspec contexts; due to the way it is implemented.
Move puts node['port'] approximately 3~4 lines down to within the
describe block, preferably within a before do..end block, or similar.
In general, avoid writing a string to the standard output buffer of
your terminal: many side effects are involved - eventually you will
come to value this less as a diagnostic tool.
Then try to access it like so in: test/integration/server/serverspec/git_daemon_spec.rb
require 'serverspec'
Required by serverspec
set :backend, :exec
puts node['port']
describe "Git Daemon" do
/tmp/busser/suites/serverspec/git_daemon_spec.rb:6:in <top (required)>': undefined local variable or method node' for main:Object (NameError)
Can you see where I'm going wrong here?
Node attributes are only available (directly) from your Chef recipe code. Serverspec runs independent of Chef so node data isn't a thing there. There are circuitous ways to expose things but I would avoid them. Assuming the reason you want to get the port in your serverspec to check that it is listening on that port, it is Correct™ to hard-code the port a second time. Test code tends to violate some DRY principles because it is designed to favor safety over maintenance (you run tests more then you edit old ones).
Then try to access it like so in: test/integration/server/serverspec/git_daemon_spec.rb
require 'serverspec'
Required by serverspec
set :backend, :exec
puts node['port']
describe "Git Daemon" do
/tmp/busser/suites/serverspec/git_daemon_spec.rb:6:in <top (required)>': undefined local variable or method node' for main:Object (NameError)
Can you see where I'm going wrong here?
Node attributes are only available (directly) from your Chef recipe code. Serverspec runs independent of Chef so node data isn't a thing there. There are circuitous ways to expose things but I would avoid them. Assuming the reason you want to get the port in your serverspec to check that it is listening on that port, it is Correct™ to hard-code the port a second time. Test code tends to violate some DRY principles because it is designed to favor safety over maintenance (you run tests more then you edit old ones).
Then try to access it like so in:
test/integration/server/serverspec/git_daemon_spec.rb
require 'serverspec'
Required by serverspec
set :backend, :exec
puts node['port']
describe "Git Daemon" do
/tmp/busser/suites/serverspec/git_daemon_spec.rb:6:in <top (required)>': undefined local variable or method node' for main:Object
(NameError)
Can you see where I'm going wrong here?
Node attributes are only available (directly) from your Chef recipe
code. Serverspec runs independent of Chef so node data isn't a thing there.
There are circuitous ways to expose things but I would avoid them. Assuming
the reason you want to get the port in your serverspec to check that it is
listening on that port, it is Correct™ to hard-code the port a second time.
Test code tends to violate some DRY principles because it is designed to
favor safety over maintenance (you run tests more then you edit old ones).
Where would you actually use the 'foo' property?
My assumption was inside the test suites.
For when a recipe can be configured via Chef attributes and you want to test how it behaves with non-default values. It is just slightly faster than making a test-only wrapper cookbook and setting them that way even if thats how you would do it in production.
Where would you actually use the 'foo' property?
My assumption was inside the test suites.
For when a recipe can be configured via Chef attributes and you want to
test how it behaves with non-default values. It is just slightly faster
than making a test-only wrapper cookbook and setting them that way even if
thats how you would do it in production.