From 58f9cb20657a7be01777c920a37279f30dc1fce6 Mon Sep 17 00:00:00 2001 From: Paul Allen Date: Thu, 12 Jun 2014 17:50:55 +0100 Subject: Spec tests for p4 provider Test create, destroy and exists? access points. --- spec/unit/puppet/provider/vcsrepo/p4_spec.rb | 73 ++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 spec/unit/puppet/provider/vcsrepo/p4_spec.rb (limited to 'spec') diff --git a/spec/unit/puppet/provider/vcsrepo/p4_spec.rb b/spec/unit/puppet/provider/vcsrepo/p4_spec.rb new file mode 100644 index 0000000..822106d --- /dev/null +++ b/spec/unit/puppet/provider/vcsrepo/p4_spec.rb @@ -0,0 +1,73 @@ +require 'spec_helper' + +describe Puppet::Type.type(:vcsrepo).provider(:p4) do + + let(:resource) { Puppet::Type.type(:vcsrepo).new({ + :name => 'test', + :ensure => :present, + :provider => :p4, + :path => '/tmp/vcsrepo', + })} + + let(:provider) { resource.provider } + + before :each do + Puppet::Util.stubs(:which).with('p4').returns('/usr/local/bin/p4') + end + + spec = { + :input => "Root: /tmp/vcsrepo\nDescription: Generated by Puppet VCSrepo\n\nView:\n", + :marshal => false + } + + describe 'creating' do + context 'with source and revision' do + it "should execute 'p4 sync' with the revision" do + resource[:source] = 'something' + resource[:p4client] = 'client_ws' + resource[:revision] = '1' + provider.expects(:p4).with(['client', '-o', resource.value(:p4client)]).returns({}) + provider.expects(:p4).with(['client', '-i'], spec) + provider.expects(:p4).with(['sync', resource.value(:source) + "@" + resource.value(:revision)]) + provider.create + end + end + + context 'without revision' do + it "should just execute 'p4 sync' without a revision" do + resource[:source] = 'something' + resource[:p4client] = 'client_ws' + provider.expects(:p4).with(['client', '-o', resource.value(:p4client)]).returns({}) + provider.expects(:p4).with(['client', '-i'], spec) + provider.expects(:p4).with(['sync', resource.value(:source)]) + provider.create + end + end + + context "when a client and source are not given" do + it "should execute 'p4 client'" do + provider.expects(:p4).with(['client', '-o', "puppet-51f0a4b45dbfc10614df94f0a189c16f"]).returns({}) + provider.expects(:p4).with(['client', '-i'], spec) + provider.create + end + end + end + + describe 'destroying' do + it "it should remove the directory" do + resource[:p4client] = 'test_client' + provider.expects(:p4).with(['client', '-d', '-f', resource.value(:p4client)]) + expects_rm_rf + provider.destroy + end + end + + describe "checking existence" do + it "should check for the directory" do + provider.expects(:p4).with(['info'], {:marshal => false}).returns({}) + provider.expects(:p4).with(['where', resource.value(:path) + "..."], {:raise => false}).returns({}) + provider.exists? + end + end + +end -- cgit v1.2.3 From 24e2f91ffb0091bc6f67b4d90f9702690bc1179f Mon Sep 17 00:00:00 2001 From: Paul Allen Date: Fri, 20 Jun 2014 09:59:42 +0100 Subject: Detab to 2 spaces. --- spec/unit/puppet/provider/vcsrepo/p4_spec.rb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'spec') diff --git a/spec/unit/puppet/provider/vcsrepo/p4_spec.rb b/spec/unit/puppet/provider/vcsrepo/p4_spec.rb index 822106d..2c202f2 100644 --- a/spec/unit/puppet/provider/vcsrepo/p4_spec.rb +++ b/spec/unit/puppet/provider/vcsrepo/p4_spec.rb @@ -15,7 +15,7 @@ describe Puppet::Type.type(:vcsrepo).provider(:p4) do Puppet::Util.stubs(:which).with('p4').returns('/usr/local/bin/p4') end - spec = { + spec = { :input => "Root: /tmp/vcsrepo\nDescription: Generated by Puppet VCSrepo\n\nView:\n", :marshal => false } @@ -46,17 +46,17 @@ describe Puppet::Type.type(:vcsrepo).provider(:p4) do context "when a client and source are not given" do it "should execute 'p4 client'" do - provider.expects(:p4).with(['client', '-o', "puppet-51f0a4b45dbfc10614df94f0a189c16f"]).returns({}) - provider.expects(:p4).with(['client', '-i'], spec) - provider.create + provider.expects(:p4).with(['client', '-o', "puppet-51f0a4b45dbfc10614df94f0a189c16f"]).returns({}) + provider.expects(:p4).with(['client', '-i'], spec) + provider.create end end end describe 'destroying' do it "it should remove the directory" do - resource[:p4client] = 'test_client' - provider.expects(:p4).with(['client', '-d', '-f', resource.value(:p4client)]) + resource[:p4client] = 'test_client' + provider.expects(:p4).with(['client', '-d', '-f', resource.value(:p4client)]) expects_rm_rf provider.destroy end -- cgit v1.2.3 From 319f9fbe1954fd172da638f3ccd76e58c3ec8c7f Mon Sep 17 00:00:00 2001 From: Paul Allen Date: Mon, 23 Jun 2014 15:51:28 +0100 Subject: Added support for p4config. - Removed p4port, p4client, p4user to keep name space clean. - Changed notify to Puppet.debug - Updated markdown and examples - Updated unit tests --- spec/unit/puppet/provider/vcsrepo/p4_spec.rb | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'spec') diff --git a/spec/unit/puppet/provider/vcsrepo/p4_spec.rb b/spec/unit/puppet/provider/vcsrepo/p4_spec.rb index 2c202f2..2bb81c8 100644 --- a/spec/unit/puppet/provider/vcsrepo/p4_spec.rb +++ b/spec/unit/puppet/provider/vcsrepo/p4_spec.rb @@ -24,9 +24,10 @@ describe Puppet::Type.type(:vcsrepo).provider(:p4) do context 'with source and revision' do it "should execute 'p4 sync' with the revision" do resource[:source] = 'something' - resource[:p4client] = 'client_ws' resource[:revision] = '1' - provider.expects(:p4).with(['client', '-o', resource.value(:p4client)]).returns({}) + ENV['P4CLIENT'] = 'client_ws1' + + provider.expects(:p4).with(['client', '-o', 'client_ws1']).returns({}) provider.expects(:p4).with(['client', '-i'], spec) provider.expects(:p4).with(['sync', resource.value(:source) + "@" + resource.value(:revision)]) provider.create @@ -36,8 +37,9 @@ describe Puppet::Type.type(:vcsrepo).provider(:p4) do context 'without revision' do it "should just execute 'p4 sync' without a revision" do resource[:source] = 'something' - resource[:p4client] = 'client_ws' - provider.expects(:p4).with(['client', '-o', resource.value(:p4client)]).returns({}) + ENV['P4CLIENT'] = 'client_ws2' + + provider.expects(:p4).with(['client', '-o', 'client_ws2']).returns({}) provider.expects(:p4).with(['client', '-i'], spec) provider.expects(:p4).with(['sync', resource.value(:source)]) provider.create @@ -55,8 +57,9 @@ describe Puppet::Type.type(:vcsrepo).provider(:p4) do describe 'destroying' do it "it should remove the directory" do - resource[:p4client] = 'test_client' - provider.expects(:p4).with(['client', '-d', '-f', resource.value(:p4client)]) + ENV['P4CLIENT'] = 'test_client' + + provider.expects(:p4).with(['client', '-d', '-f', 'test_client']) expects_rm_rf provider.destroy end -- cgit v1.2.3 From 457035ec1c15df0d53abf7232dad63b2722b1720 Mon Sep 17 00:00:00 2001 From: Paul Allen Date: Mon, 23 Jun 2014 16:22:35 +0100 Subject: Add hostname to Digest for default client name. --- spec/unit/puppet/provider/vcsrepo/p4_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'spec') diff --git a/spec/unit/puppet/provider/vcsrepo/p4_spec.rb b/spec/unit/puppet/provider/vcsrepo/p4_spec.rb index 2bb81c8..e45650a 100644 --- a/spec/unit/puppet/provider/vcsrepo/p4_spec.rb +++ b/spec/unit/puppet/provider/vcsrepo/p4_spec.rb @@ -48,7 +48,7 @@ describe Puppet::Type.type(:vcsrepo).provider(:p4) do context "when a client and source are not given" do it "should execute 'p4 client'" do - provider.expects(:p4).with(['client', '-o', "puppet-51f0a4b45dbfc10614df94f0a189c16f"]).returns({}) + provider.expects(:p4).with(['client', '-o', "puppet-1c5e7a8e4f702e5091dfba173bc0e7c0"]).returns({}) provider.expects(:p4).with(['client', '-i'], spec) provider.create end -- cgit v1.2.3 From f88ae5fd6c746de3b454e38a8616f016ada8cff9 Mon Sep 17 00:00:00 2001 From: Paul Allen Date: Tue, 24 Jun 2014 14:16:05 +0100 Subject: Sort keys on hash generate same test result. Keys in the Client spec were processed out of order and failing tests. --- spec/unit/puppet/provider/vcsrepo/p4_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'spec') diff --git a/spec/unit/puppet/provider/vcsrepo/p4_spec.rb b/spec/unit/puppet/provider/vcsrepo/p4_spec.rb index e45650a..1261915 100644 --- a/spec/unit/puppet/provider/vcsrepo/p4_spec.rb +++ b/spec/unit/puppet/provider/vcsrepo/p4_spec.rb @@ -16,7 +16,7 @@ describe Puppet::Type.type(:vcsrepo).provider(:p4) do end spec = { - :input => "Root: /tmp/vcsrepo\nDescription: Generated by Puppet VCSrepo\n\nView:\n", + :input => "Description: Generated by Puppet VCSrepo\nRoot: /tmp/vcsrepo\n\nView:\n", :marshal => false } -- cgit v1.2.3 From 0435f81a3b8821a36dedc038982c3efdab90a3b1 Mon Sep 17 00:00:00 2001 From: Paul Allen Date: Fri, 27 Jun 2014 14:14:47 +0100 Subject: Clear P4CLIENT Environment before test --- spec/unit/puppet/provider/vcsrepo/p4_spec.rb | 2 ++ 1 file changed, 2 insertions(+) (limited to 'spec') diff --git a/spec/unit/puppet/provider/vcsrepo/p4_spec.rb b/spec/unit/puppet/provider/vcsrepo/p4_spec.rb index 1261915..3a4605b 100644 --- a/spec/unit/puppet/provider/vcsrepo/p4_spec.rb +++ b/spec/unit/puppet/provider/vcsrepo/p4_spec.rb @@ -48,6 +48,8 @@ describe Puppet::Type.type(:vcsrepo).provider(:p4) do context "when a client and source are not given" do it "should execute 'p4 client'" do + ENV['P4CLIENT'] = nil + provider.expects(:p4).with(['client', '-o', "puppet-1c5e7a8e4f702e5091dfba173bc0e7c0"]).returns({}) provider.expects(:p4).with(['client', '-i'], spec) provider.create -- cgit v1.2.3 From b5b2dd296eb30df25ea3d4ca125ca451b162393c Mon Sep 17 00:00:00 2001 From: Paul Allen Date: Fri, 27 Jun 2014 17:44:27 +0100 Subject: Calculate client workspace name for test case (The value of host will be different) --- spec/unit/puppet/provider/vcsrepo/p4_spec.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'spec') diff --git a/spec/unit/puppet/provider/vcsrepo/p4_spec.rb b/spec/unit/puppet/provider/vcsrepo/p4_spec.rb index 3a4605b..2d382da 100644 --- a/spec/unit/puppet/provider/vcsrepo/p4_spec.rb +++ b/spec/unit/puppet/provider/vcsrepo/p4_spec.rb @@ -50,7 +50,11 @@ describe Puppet::Type.type(:vcsrepo).provider(:p4) do it "should execute 'p4 client'" do ENV['P4CLIENT'] = nil - provider.expects(:p4).with(['client', '-o', "puppet-1c5e7a8e4f702e5091dfba173bc0e7c0"]).returns({}) + path = resource.value(:path) + host = Facter.value('hostname') + default = "puppet-" + Digest::MD5.hexdigest(path + host) + + provider.expects(:p4).with(['client', '-o', default]).returns({}) provider.expects(:p4).with(['client', '-i'], spec) provider.create end -- cgit v1.2.3