foodtaster 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Foodtæster
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/foodtaster.png)](http://badge.fury.io/rb/foodtaster)
4
+
3
5
  Foodtaster is a library for testing your Chef code with RSpec. Specs
4
6
  are actually executed on VirtualBox machine(s) managed by
5
7
  [Vagrant](http://www.vagrantup.com/).
@@ -96,8 +98,22 @@ You are ready to write cookbook specs. Run them as usual with command:
96
98
 
97
99
  bundle exec rspec spec
98
100
 
101
+ ## Roadmap
102
+
103
+ - foodtaster-example-single-cookbook repo
104
+ - tests/specs
105
+ - documentation
106
+ - comments in code
107
+ - inline sahara plugin into vagrant-foodtaster-server
108
+ - Capistrno support or just an example
109
+ - Puppet support
110
+ - LXC support
111
+
99
112
  ## Contributing
100
113
 
114
+ If you found a bug or you wish to implement something from Roadmap,
115
+ use this workflow:
116
+
101
117
  1. Fork it
102
118
  2. Create your feature branch (`git checkout -b my-new-feature`)
103
119
  3. Commit your changes (`git commit -am 'Add some feature'`)
data/foodtaster.gemspec CHANGED
@@ -6,7 +6,7 @@ require 'foodtaster/version'
6
6
  Gem::Specification.new do |gem|
7
7
  gem.name = "foodtaster"
8
8
  gem.version = Foodtaster::VERSION
9
- gem.authors = ["Mike Lapshin"]
9
+ gem.authors = ["Mike Lapshin", "Serzh Nechyporchuk"]
10
10
  gem.email = ["mikhail.a.lapshin@gmail.com"]
11
11
  gem.description = %q{RSpec for Chef cookbooks run on Vagrant}
12
12
  gem.summary = %q{Foodtaster is a library for testing your Chef code with RSpec.}
@@ -25,10 +25,11 @@ module Foodtaster
25
25
  client
26
26
  end
27
27
 
28
- [:vm_defined?, :prepare_vm, :rollback_vm,
28
+ [:vm_defined?, :rollback_vm,
29
29
  :run_chef_on_vm, :execute_command_on_vm,
30
30
  :shutdown_vm, :vm_running?, :initial_snapshot_made_on_vm?,
31
- :start_vm, :make_initial_snapshot_on_vm].each do |method_name|
31
+ :start_vm, :make_initial_snapshot_on_vm, :vm_ip,
32
+ :put_file_to_vm, :get_file_from_vm].each do |method_name|
32
33
  define_method method_name do |*args|
33
34
  begin
34
35
  @v.send(method_name, *args)
@@ -2,20 +2,17 @@ module Foodtaster
2
2
  module RSpec
3
3
  module DslMethods
4
4
  def require_vm(vm_name)
5
- let(vm_name) do
6
- get_vm(vm_name)
7
- end
8
-
5
+ define_method(vm_name) { get_vm(vm_name) }
9
6
  before(:all) { get_vm(vm_name) }
10
7
  end
11
8
 
12
9
  def run_chef_on(vm_name, options = {}, &block)
13
10
  require_vm(vm_name)
14
- skip_rollback = Foodtaster.config.skip_rollback || options[:skip_rollback]
11
+ rollback = options.key?(:rollback) ? options[:rollback] : !Foodtaster.config.skip_rollback
15
12
 
16
13
  before(:all) do
17
14
  vm = get_vm(vm_name)
18
- vm.rollback unless skip_rollback
15
+ vm.rollback if rollback
19
16
 
20
17
  run_chef_on(vm_name, &block)
21
18
  end
@@ -8,11 +8,14 @@ module Foodtaster
8
8
  end
9
9
 
10
10
  def run_chef_on(vm_name, &block)
11
- chef_config = ChefConfig.new.tap{ |conf| block.call(conf) }.to_hash
12
- @previous_chef_config = chef_config
11
+ chef_config = ChefConfig.new
12
+ instance_exec chef_config, &block
13
+ chef_config_as_hash = chef_config.to_hash
14
+
15
+ @previous_chef_config = chef_config_as_hash
13
16
 
14
17
  vm = get_vm(vm_name)
15
- vm.run_chef(chef_config)
18
+ vm.run_chef(chef_config_as_hash)
16
19
  end
17
20
 
18
21
  def rerun_chef_on(vm_name)
@@ -0,0 +1,18 @@
1
+ RSpec::Matchers.define :have_running_service do |service|
2
+ match do |vm|
3
+ @result = vm.execute("status #{service}").stdout
4
+ @result =~ /start\/running/
5
+ end
6
+
7
+ failure_message_for_should do |vm|
8
+ "expected that #{vm.name} should have running service '#{service}' but was '#{@result}'"
9
+ end
10
+
11
+ failure_message_for_should_not do |vm|
12
+ "expected that #{vm.name} should not have running service '#{service}' but was '#{@result}'"
13
+ end
14
+
15
+ description do
16
+ "running service '#{service}'"
17
+ end
18
+ end
@@ -38,18 +38,17 @@ RSpec::Matchers.define :have_package do |package|
38
38
  end
39
39
  end
40
40
 
41
- # TODO: I'm not sure if lsof is installed by default
42
41
  RSpec::Matchers.define :listen_port do |port|
43
42
  match do |vm|
44
- ->{ vm.execute("sudo lsof -i :#{port.to_s} > /dev/null") }.should be_successful
43
+ vm.execute("lsof -i :#{port.to_s}").should be_successful
45
44
  end
46
45
 
47
46
  failure_message_for_should do |vm|
48
- "expected that #{vm.name} should listen port '#{port}'"
47
+ "expected that #{vm.name} should listen to port '#{port}'"
49
48
  end
50
49
 
51
50
  failure_message_for_should_not do |vm|
52
- "expected that #{vm.name} should not listen port '#{port}'"
51
+ "expected that #{vm.name} should not listen to port '#{port}'"
53
52
  end
54
53
 
55
54
  description do
@@ -1,3 +1,3 @@
1
1
  module Foodtaster
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
data/lib/foodtaster/vm.rb CHANGED
@@ -87,6 +87,18 @@ module Foodtaster
87
87
  self.running? && self.initial_snapshot_made?
88
88
  end
89
89
 
90
+ def ip
91
+ @client.vm_ip(name)
92
+ end
93
+
94
+ def put_file(local_fn, vm_fn)
95
+ @client.put_file_to_vm(name, local_fn, vm_fn)
96
+ end
97
+
98
+ def get_file(vm_fn, local_fn)
99
+ @client.get_file_from_vm(name, vm_fn, local_fn)
100
+ end
101
+
90
102
  def shutdown
91
103
  Foodtaster.logger.debug "#{name}: Shutting down VM"
92
104
  @client.shutdown_vm(name)
metadata CHANGED
@@ -2,14 +2,15 @@
2
2
  name: foodtaster
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.7
5
+ version: 0.0.8
6
6
  platform: ruby
7
7
  authors:
8
8
  - Mike Lapshin
9
+ - Serzh Nechyporchuk
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2013-11-05 00:00:00.000000000 Z
13
+ date: 2013-11-08 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  prerelease: false
@@ -48,6 +49,7 @@ files:
48
49
  - lib/foodtaster/rspec/dsl_methods.rb
49
50
  - lib/foodtaster/rspec/example_methods.rb
50
51
  - lib/foodtaster/rspec/matchers/file_matcher.rb
52
+ - lib/foodtaster/rspec/matchers/service_matcher.rb
51
53
  - lib/foodtaster/rspec/matchers/simple_matchers.rb
52
54
  - lib/foodtaster/rspec/matchers/user_matcher.rb
53
55
  - lib/foodtaster/rspec_run.rb