summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStuart Preston <stuart@chef.io>2018-03-07 21:25:06 -0800
committerStuart Preston <stuart@chef.io>2018-03-07 21:25:06 -0800
commit74969239d5ab1a7a09cb69d2efdabbdad1ec5b5f (patch)
treef2d0398c3c6508e9d16547d85acbc563a7d9d622
parenta8ee50ed5021e2897f5483049acdb36c1f23125c (diff)
downloadchef-74969239d5ab1a7a09cb69d2efdabbdad1ec5b5f.tar.gz
Adding appveyor configuration for testing PowerShell interop
Signed-off-by: Stuart Preston <stuart@chef.io>
-rw-r--r--appveyor_registry.reg29
-rw-r--r--spec/unit/mixin/powershell_exec_spec.rb43
2 files changed, 72 insertions, 0 deletions
diff --git a/appveyor_registry.reg b/appveyor_registry.reg
new file mode 100644
index 0000000000..8f6a9d0115
--- /dev/null
+++ b/appveyor_registry.reg
@@ -0,0 +1,29 @@
+REGEDIT4
+
+[HKEY_CLASSES_ROOT\Chef.PowerShell]
+@="Chef.PowerShell"
+
+[HKEY_CLASSES_ROOT\Chef.PowerShell\CLSID]
+@="{9008CA83-83E4-41FF-9C07-696E2CC47B52}"
+
+[HKEY_CLASSES_ROOT\CLSID\{9008CA83-83E4-41FF-9C07-696E2CC47B52}]
+@="Chef.PowerShell"
+
+[HKEY_CLASSES_ROOT\CLSID\{9008CA83-83E4-41FF-9C07-696E2CC47B52}\InprocServer32]
+@="mscoree.dll"
+"ThreadingModel"="Both"
+"Class"="Chef.PowerShell"
+"Assembly"="Chef.PowerShell, Version=1.0.14.0, Culture=neutral, PublicKeyToken=7def9f799d039a95"
+"RuntimeVersion"="v4.0.30319"
+"CodeBase"="file:///C:/projects/chef/distro/powershell/chef/Chef.PowerShell.dll"
+
+[HKEY_CLASSES_ROOT\CLSID\{9008CA83-83E4-41FF-9C07-696E2CC47B52}\InprocServer32\1.0.0.0]
+"Class"="Chef.PowerShell"
+"Assembly"="Chef.PowerShell, Version=1.0.14.0, Culture=neutral, PublicKeyToken=7def9f799d039a95"
+"RuntimeVersion"="v4.0.30319"
+"CodeBase"="file:///C:/projects/chef/distro/powershell/chef/Chef.PowerShell.dll"
+
+[HKEY_CLASSES_ROOT\CLSID\{9008CA83-83E4-41FF-9C07-696E2CC47B52}\ProgId]
+@="Chef.PowerShell"
+
+[HKEY_CLASSES_ROOT\CLSID\{9008CA83-83E4-41FF-9C07-696E2CC47B52}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]
diff --git a/spec/unit/mixin/powershell_exec_spec.rb b/spec/unit/mixin/powershell_exec_spec.rb
new file mode 100644
index 0000000000..72619bdc8a
--- /dev/null
+++ b/spec/unit/mixin/powershell_exec_spec.rb
@@ -0,0 +1,43 @@
+#
+# Author:: Stuart Preston (<stuart@chef.io>)
+# Copyright:: Copyright 2018, Chef Software, Inc.
+# License:: Apache License, Version 2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+require "spec_helper"
+require "chef/mixin/powershell_exec"
+
+describe Chef::Mixin::PowershellExec, :windows_only do
+ let(:powershell_mixin) { Class.new { include Chef::Mixin::PowershellExec } }
+ subject(:object) { powershell_mixin.new }
+
+ describe "#powershell_exec" do
+ it "runs a basic command and returns a Chef::PowerShell object" do
+ expect(object.powershell_exec("$PSVersionTable")).to be_kind_of(Chef::PowerShell)
+ end
+
+ it "runs a command that fails with a non-terminating error and can trap the error via .error?" do
+ execution = object.powershell_exec("this-should-error")
+ expect(execution.error?).to eql(true)
+ end
+
+ it "runs a command that fails with a non-terminating error and can list the errors" do
+ execution = object.powershell_exec("this-should-error")
+ expect(execution.errors).to be_a_kind_of(Array)
+ expect(execution.errors[0]).to be_a_kind_of(String)
+ expect(execution.errors[0]).to include("CommandNotFoundException")
+ end
+ end
+end