From 9a75a9717c6305762800ae941f06bd747fef5280 Mon Sep 17 00:00:00 2001 From: linyows Date: Tue, 28 May 2013 16:45:49 +0900 Subject: [PATCH] add npm to package provider --- lib/serverspec/commands/base.rb | 6 ++++++ spec/darwin/matchers_spec.rb | 2 ++ spec/darwin/package_spec.rb | 2 ++ spec/debian/matchers_spec.rb | 2 ++ spec/debian/package_spec.rb | 2 ++ spec/gentoo/matchers_spec.rb | 2 ++ spec/gentoo/package_spec.rb | 2 ++ spec/redhat/matchers_spec.rb | 2 ++ spec/redhat/package_spec.rb | 2 ++ spec/solaris/matchers_spec.rb | 2 ++ spec/solaris/package_spec.rb | 2 ++ spec/support/shared_commands_examples.rb | 10 ++++++++++ spec/support/shared_matcher_examples.rb | 24 ++++++++++++++++++++++++ spec/support/shared_package_examples.rb | 24 ++++++++++++++++++++++++ 14 files changed, 84 insertions(+) diff --git a/lib/serverspec/commands/base.rb b/lib/serverspec/commands/base.rb index 87b4a935..3c03d260 100644 --- a/lib/serverspec/commands/base.rb +++ b/lib/serverspec/commands/base.rb @@ -128,6 +128,12 @@ def check_installed_by_gem name, version=nil cmd end + def check_installed_by_npm name, version=nil, path=nil + cmd = "#{path || 'npm'} ls #{escape(name)} -g" + cmd = "#{cmd} | grep -w -- #{escape(version)}" unless version.nil? + cmd + end + def check_belonging_group user, group "id #{escape(user)} | awk '{print $3}' | grep -- #{escape(group)}" end diff --git a/spec/darwin/matchers_spec.rb b/spec/darwin/matchers_spec.rb index 79cff539..43a3482e 100644 --- a/spec/darwin/matchers_spec.rb +++ b/spec/darwin/matchers_spec.rb @@ -43,6 +43,8 @@ it_behaves_like 'support be_installed.by(gem) matcher', 'jekyll' it_behaves_like 'support be_installed.by(gem).with_version matcher', 'jekyll', '1.0.0' + it_behaves_like 'support be_installed.by(npm) matcher', 'bower' + it_behaves_like 'support be_installed.by(npm).with_version matcher', 'bower', '0.9.2' it_behaves_like 'support belong_to_group matcher', 'root', 'root' it_behaves_like 'support have_gid matcher', 'root', 0 diff --git a/spec/darwin/package_spec.rb b/spec/darwin/package_spec.rb index 90409567..ca2b43db 100644 --- a/spec/darwin/package_spec.rb +++ b/spec/darwin/package_spec.rb @@ -5,4 +5,6 @@ describe 'Serverspec package matchers of Darwin family' do it_behaves_like 'support package installed by gem matcher', 'jekyll' it_behaves_like 'support package installed by gem with version matcher', 'jekyll', '1.1.1' + it_behaves_like 'support package installed by npm matcher', 'bower' + it_behaves_like 'support package installed by npm with version matcher', 'bower', '0.9.2' end diff --git a/spec/debian/matchers_spec.rb b/spec/debian/matchers_spec.rb index 1568735b..9f9f847a 100644 --- a/spec/debian/matchers_spec.rb +++ b/spec/debian/matchers_spec.rb @@ -43,6 +43,8 @@ it_behaves_like 'support be_installed.by(gem) matcher', 'jekyll' it_behaves_like 'support be_installed.by(gem).with_version matcher', 'jekyll', '1.0.0' + it_behaves_like 'support be_installed.by(npm) matcher', 'bower' + it_behaves_like 'support be_installed.by(npm).with_version matcher', 'bower', '0.9.2' it_behaves_like 'support belong_to_group matcher', 'root', 'root' it_behaves_like 'support have_gid matcher', 'root', 0 diff --git a/spec/debian/package_spec.rb b/spec/debian/package_spec.rb index fc9425f1..2664a358 100644 --- a/spec/debian/package_spec.rb +++ b/spec/debian/package_spec.rb @@ -6,4 +6,6 @@ it_behaves_like 'support package installed matcher', 'httpd' it_behaves_like 'support package installed by gem matcher', 'jekyll' it_behaves_like 'support package installed by gem with version matcher', 'jekyll', '1.1.1' + it_behaves_like 'support package installed by npm matcher', 'bower' + it_behaves_like 'support package installed by npm with version matcher', 'bower', '0.9.2' end diff --git a/spec/gentoo/matchers_spec.rb b/spec/gentoo/matchers_spec.rb index 79fb1825..9822bc03 100644 --- a/spec/gentoo/matchers_spec.rb +++ b/spec/gentoo/matchers_spec.rb @@ -44,6 +44,8 @@ it_behaves_like 'support be_installed.by(gem) matcher', 'jekyll' it_behaves_like 'support be_installed.by(gem).with_version matcher', 'jekyll', '1.0.0' + it_behaves_like 'support be_installed.by(npm) matcher', 'bower' + it_behaves_like 'support be_installed.by(npm).with_version matcher', 'bower', '0.9.2' it_behaves_like 'support belong_to_group matcher', 'root', 'root' it_behaves_like 'support have_gid matcher', 'root', 0 diff --git a/spec/gentoo/package_spec.rb b/spec/gentoo/package_spec.rb index 15d17755..3e37d754 100644 --- a/spec/gentoo/package_spec.rb +++ b/spec/gentoo/package_spec.rb @@ -6,4 +6,6 @@ it_behaves_like 'support package installed matcher', 'httpd' it_behaves_like 'support package installed by gem matcher', 'jekyll' it_behaves_like 'support package installed by gem with version matcher', 'jekyll', '1.1.1' + it_behaves_like 'support package installed by npm matcher', 'bower' + it_behaves_like 'support package installed by npm with version matcher', 'bower', '0.9.2' end diff --git a/spec/redhat/matchers_spec.rb b/spec/redhat/matchers_spec.rb index fde2dc16..e1cfa1fc 100644 --- a/spec/redhat/matchers_spec.rb +++ b/spec/redhat/matchers_spec.rb @@ -45,6 +45,8 @@ it_behaves_like 'support be_installed.by(gem) matcher', 'jekyll' it_behaves_like 'support be_installed.by(gem).with_version matcher', 'jekyll', '1.0.0' + it_behaves_like 'support be_installed.by(npm) matcher', 'bower' + it_behaves_like 'support be_installed.by(npm).with_version matcher', 'bower', '0.9.2' it_behaves_like 'support belong_to_group matcher', 'root', 'root' it_behaves_like 'support have_gid matcher', 'root', 0 diff --git a/spec/redhat/package_spec.rb b/spec/redhat/package_spec.rb index ebad5ef2..f5129c47 100644 --- a/spec/redhat/package_spec.rb +++ b/spec/redhat/package_spec.rb @@ -6,4 +6,6 @@ it_behaves_like 'support package installed matcher', 'httpd' it_behaves_like 'support package installed by gem matcher', 'jekyll' it_behaves_like 'support package installed by gem with version matcher', 'jekyll', '1.1.1' + it_behaves_like 'support package installed by npm matcher', 'bower' + it_behaves_like 'support package installed by npm with version matcher', 'bower', '0.9.2' end diff --git a/spec/solaris/matchers_spec.rb b/spec/solaris/matchers_spec.rb index 76f08880..93dd3db4 100644 --- a/spec/solaris/matchers_spec.rb +++ b/spec/solaris/matchers_spec.rb @@ -44,6 +44,8 @@ it_behaves_like 'support be_installed.by(gem) matcher', 'jekyll' it_behaves_like 'support be_installed.by(gem).with_version matcher', 'jekyll', '1.0.0' + it_behaves_like 'support be_installed.by(npm) matcher', 'bower' + it_behaves_like 'support be_installed.by(npm).with_version matcher', 'bower', '0.9.2' it_behaves_like 'support belong_to_group matcher', 'root', 'root' it_behaves_like 'support have_gid matcher', 'root', 0 diff --git a/spec/solaris/package_spec.rb b/spec/solaris/package_spec.rb index c6535507..4085d356 100644 --- a/spec/solaris/package_spec.rb +++ b/spec/solaris/package_spec.rb @@ -6,4 +6,6 @@ it_behaves_like 'support package installed matcher', 'httpd' it_behaves_like 'support package installed by gem matcher', 'jekyll' it_behaves_like 'support package installed by gem with version matcher', 'jekyll', '1.1.1' + it_behaves_like 'support package installed by npm matcher', 'bower' + it_behaves_like 'support package installed by npm with version matcher', 'bower', '0.9.2' end diff --git a/spec/support/shared_commands_examples.rb b/spec/support/shared_commands_examples.rb index a8b4b2bc..0dc0c997 100644 --- a/spec/support/shared_commands_examples.rb +++ b/spec/support/shared_commands_examples.rb @@ -8,6 +8,16 @@ it { should eq "gem list --local | grep -w -- ^#{package} | grep -w -- ^#{version}" } end +shared_examples_for 'support command check_installed_by_npm' do |package| + subject { commands.check_installed_by_npm(package) } + it { should eq "npm ls #{package} -g" } +end + +shared_examples_for 'support command check_installed_by_npm with_version' do |package, version| + subject { commands.check_installed_by_npm(package) } + it { should eq "npm ls #{package} -g | grep -w -- #{version}" } +end + shared_examples_for 'support command check_file' do |file| subject { commands.check_file(file) } it { should eq "test -f #{file}" } diff --git a/spec/support/shared_matcher_examples.rb b/spec/support/shared_matcher_examples.rb index 3996f639..02558cca 100644 --- a/spec/support/shared_matcher_examples.rb +++ b/spec/support/shared_matcher_examples.rb @@ -653,6 +653,30 @@ end end +shared_examples_for 'support be_installed.by(npm) matcher' do |name| + describe 'be_installed.by(npm)' do + describe name do + it { should be_installed.by('npm') } + end + + describe 'invalid-npm' do + it { should_not be_installed.by('npm') } + end + end +end + +shared_examples_for 'support be_installed.by(npm).with_version matcher' do |name, version| + describe 'be_installed.by(npm).with_version' do + describe name do + it { should be_installed.by('npm').with_version(version) } + end + + describe name do + it { should_not be_installed.by('npm').with_version('invalid-version') } + end + end +end + shared_examples_for 'support belong_to_group matcher' do |user, group| describe 'belong_to_group' do describe user do diff --git a/spec/support/shared_package_examples.rb b/spec/support/shared_package_examples.rb index 810ad625..2bc86964 100644 --- a/spec/support/shared_package_examples.rb +++ b/spec/support/shared_package_examples.rb @@ -33,3 +33,27 @@ end end end + +shared_examples_for 'support package installed by npm matcher' do |name| + describe 'installed by npm' do + describe package(name) do + it { should be_installed.by('npm') } + end + + describe 'invalid-npm' do + it { should_not be_installed.by('npm') } + end + end +end + +shared_examples_for 'support package installed by npm with version matcher' do |name, version| + describe 'installed by npm with version' do + describe package(name) do + it { should be_installed.by('npm').with_version(version) } + end + + describe package(name) do + it { should_not be_installed.by('npm').with_version('invalid-version') } + end + end +end