coverage/index.html in vagrant-windows-1.3.0.pre.2 vs coverage/index.html in vagrant-windows-1.3.0.pre.3

- old
+ new

@@ -12,31 +12,31 @@ <body> <div id="loading"> <img src="./assets/0.7.1/loading.gif" alt="loading"/> </div> <div id="wrapper" style="display:none;"> - <div class="timestamp">Generated <abbr class="timeago" title="2013-10-30T09:37:37-07:00">2013-10-30T09:37:37-07:00</abbr></div> + <div class="timestamp">Generated <abbr class="timeago" title="2013-11-04T14:20:57-08:00">2013-11-04T14:20:57-08:00</abbr></div> <ul class="group_tabs"></ul> <div id="content"> <div class="file_list_container" id="AllFiles"> <h2> <span class="group_name">All Files</span> - (<span class="covered_percent"><span class="red">56.36%</span></span> + (<span class="covered_percent"><span class="red">72.51%</span></span> covered at <span class="covered_strength"> <span class="green"> - 1.11 + 1.42 </span> </span> hits/line) </h2> <a name="AllFiles"></a> <div> - <b>26</b> files in total. - <b>731</b> relevant lines. - <span class="green"><b>412</b> lines covered</span> and - <span class="red"><b>319</b> lines missed </span> + <b>29</b> files in total. + <b>793</b> relevant lines. + <span class="green"><b>575</b> lines covered</span> and + <span class="red"><b>218</b> lines missed </span> </div> <table class="file_list"> <thead> <tr> <th>File</th> @@ -50,59 +50,69 @@ </thead> <tbody> <tr> <td class="strong"><a href="#a339881f7104a1cf05fd48bd4ccc36f8b0bb43e2" class="src_link" title="lib/vagrant-windows.rb">lib/vagrant-windows.rb</a></td> - <td class="green strong">90.91 %</td> + <td class="green strong">100.0 %</td> <td>24</td> <td>11</td> - <td>10</td> - <td>1</td> - <td>1.3</td> + <td>11</td> + <td>0</td> + <td>2.6</td> </tr> <tr> <td class="strong"><a href="#dec1987bc6b58f2134e55c26a9e0d4f67a0e5a04" class="src_link" title="lib/vagrant-windows/communication/guestnetwork.rb">lib/vagrant-windows/communication/guestnetwork.rb</a></td> - <td class="red strong">35.0 %</td> + <td class="yellow strong">81.67 %</td> <td>133</td> <td>60</td> - <td>21</td> - <td>39</td> - <td>0.4</td> + <td>49</td> + <td>11</td> + <td>1.5</td> </tr> <tr> <td class="strong"><a href="#9c5c265071fce540a59ec662bb558312c6c54c4b" class="src_link" title="lib/vagrant-windows/communication/winrmcommunicator.rb">lib/vagrant-windows/communication/winrmcommunicator.rb</a></td> - <td class="red strong">39.71 %</td> - <td>147</td> - <td>68</td> - <td>27</td> - <td>41</td> - <td>0.4</td> + <td class="red strong">75.0 %</td> + <td>108</td> + <td>56</td> + <td>42</td> + <td>14</td> + <td>1.3</td> </tr> <tr> <td class="strong"><a href="#46df79007581e23184efb74db86daf5c58254ec5" class="src_link" title="lib/vagrant-windows/communication/winrmfinder.rb">lib/vagrant-windows/communication/winrmfinder.rb</a></td> - <td class="red strong">70.83 %</td> - <td>48</td> - <td>24</td> - <td>17</td> - <td>7</td> - <td>1.2</td> + <td class="red strong">78.26 %</td> + <td>51</td> + <td>23</td> + <td>18</td> + <td>5</td> + <td>1.3</td> </tr> <tr> <td class="strong"><a href="#206e71d4215a183bebef0dee5b2d9ce2fe77aea6" class="src_link" title="lib/vagrant-windows/communication/winrmshell.rb">lib/vagrant-windows/communication/winrmshell.rb</a></td> - <td class="red strong">41.1 %</td> - <td>139</td> - <td>73</td> - <td>30</td> - <td>43</td> - <td>0.4</td> + <td class="green strong">92.5 %</td> + <td>159</td> + <td>80</td> + <td>74</td> + <td>6</td> + <td>5.4</td> </tr> <tr> + <td class="strong"><a href="#defc50d3a200328d3130424dcb644d83faccadaa" class="src_link" title="lib/vagrant-windows/communication/winrmshell_factory.rb">lib/vagrant-windows/communication/winrmshell_factory.rb</a></td> + <td class="yellow strong">90.0 %</td> + <td>34</td> + <td>10</td> + <td>9</td> + <td>1</td> + <td>0.9</td> + </tr> + + <tr> <td class="strong"><a href="#ec6c148e559f5558fb277fea15c45c85fa409d28" class="src_link" title="lib/vagrant-windows/config/windows.rb">lib/vagrant-windows/config/windows.rb</a></td> <td class="red strong">76.19 %</td> <td>35</td> <td>21</td> <td>16</td> @@ -140,16 +150,16 @@ <td>1.3</td> </tr> <tr> <td class="strong"><a href="#54eeb382b101f2c6d7d6a73b691b4d03621b9f54" class="src_link" title="lib/vagrant-windows/helper.rb">lib/vagrant-windows/helper.rb</a></td> - <td class="green strong">100.0 %</td> - <td>33</td> + <td class="red strong">75.0 %</td> + <td>40</td> + <td>16</td> <td>12</td> - <td>12</td> - <td>0</td> - <td>1.9</td> + <td>4</td> + <td>1.3</td> </tr> <tr> <td class="strong"><a href="#1ec97590bc444a2aa68922561c688c654fd3dfff" class="src_link" title="lib/vagrant-windows/monkey_patches/lib/vagrant/machine.rb">lib/vagrant-windows/monkey_patches/lib/vagrant/machine.rb</a></td> <td class="red strong">47.06 %</td> @@ -190,26 +200,26 @@ <td>0</td> </tr> <tr> <td class="strong"><a href="#445364063a8c3e2a428ea7fe4036b1ec8a3a1277" class="src_link" title="lib/vagrant-windows/monkey_patches/plugins/provisioners/chef/provisioner/chef_solo.rb">lib/vagrant-windows/monkey_patches/plugins/provisioners/chef/provisioner/chef_solo.rb</a></td> - <td class="red strong">32.14 %</td> - <td>131</td> - <td>56</td> - <td>18</td> - <td>38</td> + <td class="red strong">34.0 %</td> + <td>118</td> + <td>50</td> + <td>17</td> + <td>33</td> <td>0.3</td> </tr> <tr> <td class="strong"><a href="#9387455ce27f9821d2f4388bcb52524681914003" class="src_link" title="lib/vagrant-windows/monkey_patches/plugins/provisioners/puppet/provisioner/puppet.rb">lib/vagrant-windows/monkey_patches/plugins/provisioners/puppet/provisioner/puppet.rb</a></td> - <td class="red strong">21.05 %</td> - <td>118</td> - <td>57</td> - <td>12</td> - <td>45</td> - <td>0.2</td> + <td class="red strong">26.15 %</td> + <td>129</td> + <td>65</td> + <td>17</td> + <td>48</td> + <td>0.3</td> </tr> <tr> <td class="strong"><a href="#6093af51a0c7e6f795cd8cd2111d8d673bde18c3" class="src_link" title="lib/vagrant-windows/monkey_patches/plugins/provisioners/puppet/provisioner/puppet_server.rb">lib/vagrant-windows/monkey_patches/plugins/provisioners/puppet/provisioner/puppet_server.rb</a></td> <td class="green strong">100.0 %</td> @@ -220,15 +230,15 @@ <td>0</td> </tr> <tr> <td class="strong"><a href="#8dd805604e0326933cecd09151f4d1dac947b74c" class="src_link" title="lib/vagrant-windows/monkey_patches/plugins/provisioners/shell/provisioner.rb">lib/vagrant-windows/monkey_patches/plugins/provisioners/shell/provisioner.rb</a></td> - <td class="red strong">32.43 %</td> + <td class="red strong">31.58 %</td> <td>89</td> - <td>37</td> + <td>38</td> <td>12</td> - <td>25</td> + <td>26</td> <td>0.3</td> </tr> <tr> <td class="strong"><a href="#ee8701360a03270a2ab0f3354046766cf5f92da8" class="src_link" title="lib/vagrant-windows/plugin.rb">lib/vagrant-windows/plugin.rb</a></td> @@ -239,15 +249,25 @@ <td>22</td> <td>0.6</td> </tr> <tr> + <td class="strong"><a href="#2942f83d8bbaec9486dce51dfc24c9b92f3ea2ee" class="src_link" title="lib/vagrant-windows/windows_machine.rb">lib/vagrant-windows/windows_machine.rb</a></td> + <td class="red strong">68.0 %</td> + <td>76</td> + <td>25</td> + <td>17</td> + <td>8</td> + <td>1.0</td> + </tr> + + <tr> <td class="strong"><a href="#13b6aec4445d4eeafa03e964d1e1486037abd7a4" class="src_link" title="spec/vagrant-windows/helper_spec.rb">spec/vagrant-windows/helper_spec.rb</a></td> <td class="green strong">100.0 %</td> - <td>57</td> - <td>29</td> - <td>29</td> + <td>39</td> + <td>19</td> + <td>19</td> <td>0</td> <td>1.0</td> </tr> <tr> @@ -269,10 +289,20 @@ <td>0</td> <td>1.8</td> </tr> <tr> + <td class="strong"><a href="#43f77545cf4f67647d0945fb930bc745e38cb962" class="src_link" title="spec/vagrant-windows/windows_machine_spec.rb">spec/vagrant-windows/windows_machine_spec.rb</a></td> + <td class="green strong">100.0 %</td> + <td>44</td> + <td>28</td> + <td>28</td> + <td>0</td> + <td>1.0</td> + </tr> + + <tr> <td class="strong"><a href="#5a677aee80d575d53b9b20a950767cd27c7f2e9e" class="src_link" title="spec/vagrant-windows/winrm_config_spec.rb">spec/vagrant-windows/winrm_config_spec.rb</a></td> <td class="green strong">100.0 %</td> <td>31</td> <td>20</td> <td>20</td> @@ -280,36 +310,36 @@ <td>3.9</td> </tr> <tr> <td class="strong"><a href="#844842835a3c9ba296ba1e91954dcd0979df99b4" class="src_link" title="spec/vagrant-windows/winrmcommunicator_spec.rb">spec/vagrant-windows/winrmcommunicator_spec.rb</a></td> - <td class="red strong">50.0 %</td> - <td>28</td> - <td>14</td> - <td>7</td> - <td>7</td> - <td>0.5</td> + <td class="green strong">100.0 %</td> + <td>47</td> + <td>24</td> + <td>24</td> + <td>0</td> + <td>1.1</td> </tr> <tr> <td class="strong"><a href="#5bf85486dfa43acdf015a1bc09ffbc798937c5ed" class="src_link" title="spec/vagrant-windows/winrmfinder_spec.rb">spec/vagrant-windows/winrmfinder_spec.rb</a></td> <td class="green strong">100.0 %</td> - <td>44</td> - <td>24</td> - <td>24</td> + <td>42</td> + <td>22</td> + <td>22</td> <td>0</td> <td>1.2</td> </tr> <tr> <td class="strong"><a href="#25447093b9cbe29e6009455b5e95c517f212a004" class="src_link" title="spec/vagrant-windows/winrmshell_spec.rb">spec/vagrant-windows/winrmshell_spec.rb</a></td> - <td class="red strong">45.0 %</td> + <td class="green strong">100.0 %</td> <td>39</td> <td>20</td> - <td>9</td> - <td>11</td> - <td>0.5</td> + <td>20</td> + <td>0</td> + <td>1.5</td> </tr> </tbody> </table> </div> @@ -327,15 +357,15 @@ <div class="source_files"> <div class="source_table" id="a339881f7104a1cf05fd48bd4ccc36f8b0bb43e2"> <div class="header"> <h3>lib/vagrant-windows.rb</h3> - <h4><span class="green">90.91 %</span> covered</h4> + <h4><span class="green">100.0 %</span> covered</h4> <div> <b>11</b> relevant lines. - <span class="green"><b>10</b> lines covered</span> and - <span class="red"><b>1</b> lines missed.</span> + <span class="green"><b>11</b> lines covered</span> and + <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> @@ -368,12 +398,12 @@ <span class="hits">1</span> <code class="ruby"> def self.vagrant_windows_root</code> </li> - <li class="covered" data-hits="3" data-linenumber="6"> - <span class="hits">3</span> + <li class="covered" data-hits="8" data-linenumber="6"> + <span class="hits">8</span> <code class="ruby"> @vagrant_windows_root ||= Pathname.new(File.expand_path(&quot;../../&quot;, __FILE__))</code> </li> <li class="never" data-hits="" data-linenumber="7"> @@ -392,13 +422,13 @@ <span class="hits">1</span> <code class="ruby"> def self.load_script(script_file_name)</code> </li> - <li class="missed" data-hits="0" data-linenumber="10"> + <li class="covered" data-hits="5" data-linenumber="10"> + <span class="hits">5</span> - <code class="ruby"> File.read(expand_script_path(script_file_name))</code> </li> <li class="never" data-hits="" data-linenumber="11"> @@ -440,12 +470,12 @@ <span class="hits">1</span> <code class="ruby"> def self.expand_script_path(script_file_name)</code> </li> - <li class="covered" data-hits="2" data-linenumber="18"> - <span class="hits">2</span> + <li class="covered" data-hits="7" data-linenumber="18"> + <span class="hits">7</span> <code class="ruby"> File.expand_path(&quot;lib/vagrant-windows/scripts/#{script_file_name}&quot;, VagrantWindows.vagrant_windows_root)</code> </li> <li class="never" data-hits="" data-linenumber="19"> @@ -489,15 +519,15 @@ </div> <div class="source_table" id="dec1987bc6b58f2134e55c26a9e0d4f67a0e5a04"> <div class="header"> <h3>lib/vagrant-windows/communication/guestnetwork.rb</h3> - <h4><span class="red">35.0 %</span> covered</h4> + <h4><span class="yellow">81.67 %</span> covered</h4> <div> <b>60</b> relevant lines. - <span class="green"><b>21</b> lines covered</span> and - <span class="red"><b>39</b> lines missed.</span> + <span class="green"><b>49</b> lines covered</span> and + <span class="red"><b>11</b> lines missed.</span> </div> </div> <pre> <ol> @@ -608,25 +638,25 @@ <span class="hits">1</span> <code class="ruby"> def initialize(winrmshell)</code> </li> - <li class="missed" data-hits="0" data-linenumber="19"> + <li class="covered" data-hits="1" data-linenumber="19"> + <span class="hits">1</span> - <code class="ruby"> @logger = Log4r::Logger.new(&quot;vagrant_windows::communication::winrmshell&quot;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="20"> + <li class="covered" data-hits="1" data-linenumber="20"> + <span class="hits">1</span> - <code class="ruby"> @logger.debug(&quot;initializing WinRMShell&quot;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="21"> + <li class="covered" data-hits="1" data-linenumber="21"> + <span class="hits">1</span> - <code class="ruby"> @winrmshell = winrmshell</code> </li> <li class="never" data-hits="" data-linenumber="22"> @@ -668,13 +698,13 @@ <span class="hits">1</span> <code class="ruby"> def network_adapters()</code> </li> - <li class="missed" data-hits="0" data-linenumber="29"> + <li class="covered" data-hits="3" data-linenumber="29"> + <span class="hits">3</span> - <code class="ruby"> wsman_version() == 2? network_adapters_v2_winrm() : network_adapters_v3_winrm() </code> </li> <li class="never" data-hits="" data-linenumber="30"> @@ -710,49 +740,49 @@ <span class="hits">1</span> <code class="ruby"> def is_dhcp_enabled(nic_index)</code> </li> - <li class="missed" data-hits="0" data-linenumber="36"> + <li class="covered" data-hits="3" data-linenumber="36"> + <span class="hits">3</span> - <code class="ruby"> has_dhcp_enabled = false</code> </li> - <li class="missed" data-hits="0" data-linenumber="37"> + <li class="covered" data-hits="3" data-linenumber="37"> + <span class="hits">3</span> - <code class="ruby"> cmd = &quot;Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter \&quot;Index=#{nic_index} and DHCPEnabled=True\&quot;&quot;</code> </li> - <li class="missed" data-hits="0" data-linenumber="38"> + <li class="covered" data-hits="3" data-linenumber="38"> + <span class="hits">3</span> - <code class="ruby"> @winrmshell.powershell(cmd) do |type, line|</code> </li> - <li class="missed" data-hits="0" data-linenumber="39"> + <li class="covered" data-hits="6" data-linenumber="39"> + <span class="hits">6</span> - <code class="ruby"> has_dhcp_enabled = !line.nil?</code> </li> <li class="never" data-hits="" data-linenumber="40"> <code class="ruby"> end</code> </li> - <li class="missed" data-hits="0" data-linenumber="41"> + <li class="covered" data-hits="3" data-linenumber="41"> + <span class="hits">3</span> - <code class="ruby"> @logger.debug(&quot;NIC #{nic_index} has DHCP enabled: #{has_dhcp_enabled}&quot;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="42"> + <li class="covered" data-hits="3" data-linenumber="42"> + <span class="hits">3</span> - <code class="ruby"> has_dhcp_enabled</code> </li> <li class="never" data-hits="" data-linenumber="43"> @@ -794,19 +824,19 @@ <span class="hits">1</span> <code class="ruby"> def configure_dhcp_interface(nic_index, net_connection_id)</code> </li> - <li class="missed" data-hits="0" data-linenumber="50"> + <li class="covered" data-hits="1" data-linenumber="50"> + <span class="hits">1</span> - <code class="ruby"> @logger.info(&quot;Configuring NIC #{net_connection_id} for DHCP&quot;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="51"> + <li class="covered" data-hits="1" data-linenumber="51"> + <span class="hits">1</span> - <code class="ruby"> if !is_dhcp_enabled(nic_index)</code> </li> <li class="missed" data-hits="0" data-linenumber="52"> @@ -878,31 +908,31 @@ <span class="hits">1</span> <code class="ruby"> def configure_static_interface(nic_index, net_connection_id, ip, netmask)</code> </li> - <li class="missed" data-hits="0" data-linenumber="64"> + <li class="covered" data-hits="1" data-linenumber="64"> + <span class="hits">1</span> - <code class="ruby"> @logger.info(&quot;Configuring NIC #{net_connection_id} using static ip #{ip}&quot;)</code> </li> <li class="never" data-hits="" data-linenumber="65"> <code class="ruby"> #netsh interface ip set address &quot;Local Area Connection 2&quot; static 192.168.33.10 255.255.255.0</code> </li> - <li class="missed" data-hits="0" data-linenumber="66"> + <li class="covered" data-hits="1" data-linenumber="66"> + <span class="hits">1</span> - <code class="ruby"> netsh = &quot;netsh interface ip set address \&quot;#{net_connection_id}\&quot; static #{ip} #{netmask}&quot;</code> </li> - <li class="missed" data-hits="0" data-linenumber="67"> + <li class="covered" data-hits="1" data-linenumber="67"> + <span class="hits">1</span> - <code class="ruby"> @winrmshell.powershell(netsh)</code> </li> <li class="never" data-hits="" data-linenumber="68"> @@ -938,25 +968,25 @@ <span class="hits">1</span> <code class="ruby"> def set_all_networks_to_work()</code> </li> - <li class="missed" data-hits="0" data-linenumber="74"> + <li class="covered" data-hits="1" data-linenumber="74"> + <span class="hits">1</span> - <code class="ruby"> @logger.info(&quot;Setting all networks to 'Work Network'&quot;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="75"> + <li class="covered" data-hits="1" data-linenumber="75"> + <span class="hits">1</span> - <code class="ruby"> command = VagrantWindows.load_script(&quot;set_work_network.ps1&quot;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="76"> + <li class="covered" data-hits="1" data-linenumber="76"> + <span class="hits">1</span> - <code class="ruby"> @winrmshell.powershell(command)</code> </li> <li class="never" data-hits="" data-linenumber="77"> @@ -1016,49 +1046,49 @@ <span class="hits">1</span> <code class="ruby"> def wsman_version()</code> </li> - <li class="missed" data-hits="0" data-linenumber="87"> + <li class="covered" data-hits="3" data-linenumber="87"> + <span class="hits">3</span> - <code class="ruby"> @logger.debug(&quot;querying WSMan version&quot;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="88"> + <li class="covered" data-hits="3" data-linenumber="88"> + <span class="hits">3</span> - <code class="ruby"> version = ''</code> </li> - <li class="missed" data-hits="0" data-linenumber="89"> + <li class="covered" data-hits="3" data-linenumber="89"> + <span class="hits">3</span> - <code class="ruby"> @winrmshell.powershell(PS_GET_WSMAN_VER) do |type, line|</code> </li> - <li class="missed" data-hits="0" data-linenumber="90"> + <li class="covered" data-hits="6" data-linenumber="90"> + <span class="hits">6</span> - <code class="ruby"> version = version + &quot;#{line}&quot; if type == :stdout &amp;&amp; !line.nil?</code> </li> <li class="never" data-hits="" data-linenumber="91"> <code class="ruby"> end</code> </li> - <li class="missed" data-hits="0" data-linenumber="92"> + <li class="covered" data-hits="3" data-linenumber="92"> + <span class="hits">3</span> - <code class="ruby"> @logger.debug(&quot;wsman version: #{version}&quot;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="93"> + <li class="covered" data-hits="3" data-linenumber="93"> + <span class="hits">3</span> - <code class="ruby"> Integer(version)</code> </li> <li class="never" data-hits="" data-linenumber="94"> @@ -1106,13 +1136,13 @@ <span class="hits">1</span> <code class="ruby"> def network_adapters_v2_winrm()</code> </li> - <li class="missed" data-hits="0" data-linenumber="102"> + <li class="covered" data-hits="3" data-linenumber="102"> + <span class="hits">3</span> - <code class="ruby"> @logger.debug(&quot;querying network adapters&quot;)</code> </li> <li class="never" data-hits="" data-linenumber="103"> @@ -1124,25 +1154,25 @@ <code class="ruby"> # http://msdn.microsoft.com/en-us/library/windows/desktop/aa394216(v=vs.85).aspx</code> </li> - <li class="missed" data-hits="0" data-linenumber="105"> + <li class="covered" data-hits="3" data-linenumber="105"> + <span class="hits">3</span> - <code class="ruby"> adapters = @winrmshell.wql(WQL_NET_ADAPTERS_V2)[:win32_network_adapter]</code> </li> - <li class="missed" data-hits="0" data-linenumber="106"> + <li class="covered" data-hits="3" data-linenumber="106"> + <span class="hits">3</span> - <code class="ruby"> @logger.debug(&quot;#{adapters.inspect}&quot;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="107"> + <li class="covered" data-hits="3" data-linenumber="107"> + <span class="hits">3</span> - <code class="ruby"> return adapters</code> </li> <li class="never" data-hits="" data-linenumber="108"> @@ -1305,15 +1335,15 @@ </div> <div class="source_table" id="9c5c265071fce540a59ec662bb558312c6c54c4b"> <div class="header"> <h3>lib/vagrant-windows/communication/winrmcommunicator.rb</h3> - <h4><span class="red">39.71 %</span> covered</h4> + <h4><span class="red">75.0 %</span> covered</h4> <div> - <b>68</b> relevant lines. - <span class="green"><b>27</b> lines covered</span> and - <span class="red"><b>41</b> lines missed.</span> + <b>56</b> relevant lines. + <span class="green"><b>42</b> lines covered</span> and + <span class="red"><b>14</b> lines missed.</span> </div> </div> <pre> <ol> @@ -1331,11 +1361,11 @@ </li> <li class="covered" data-hits="1" data-linenumber="3"> <span class="hits">1</span> - <code class="ruby">require_relative '../errors'</code> + <code class="ruby">require_relative 'winrmshell_factory'</code> </li> <li class="covered" data-hits="1" data-linenumber="4"> <span class="hits">1</span> @@ -1346,857 +1376,623 @@ <span class="hits">1</span> <code class="ruby">require_relative 'winrmfinder'</code> </li> - <li class="never" data-hits="" data-linenumber="6"> + <li class="covered" data-hits="1" data-linenumber="6"> + <span class="hits">1</span> - - <code class="ruby"></code> + <code class="ruby">require_relative '../errors'</code> </li> <li class="covered" data-hits="1" data-linenumber="7"> <span class="hits">1</span> - <code class="ruby">module VagrantWindows</code> + <code class="ruby">require_relative '../windows_machine'</code> </li> - <li class="covered" data-hits="1" data-linenumber="8"> - <span class="hits">1</span> + <li class="never" data-hits="" data-linenumber="8"> - <code class="ruby"> module Communication</code> + + <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="9"> + <li class="covered" data-hits="1" data-linenumber="9"> + <span class="hits">1</span> - - <code class="ruby"> # Provides communication with the VM via WinRM.</code> + <code class="ruby">module VagrantWindows</code> </li> <li class="covered" data-hits="1" data-linenumber="10"> <span class="hits">1</span> - <code class="ruby"> class WinRMCommunicator &lt; Vagrant.plugin(&quot;2&quot;, :communicator)</code> + <code class="ruby"> module Communication</code> </li> <li class="never" data-hits="" data-linenumber="11"> - <code class="ruby"></code> + <code class="ruby"> # Provides communication channel for Vagrant commands via WinRM.</code> </li> <li class="covered" data-hits="1" data-linenumber="12"> <span class="hits">1</span> - <code class="ruby"> attr_reader :logger</code> + <code class="ruby"> class WinRMCommunicator &lt; Vagrant.plugin(&quot;2&quot;, :communicator)</code> </li> - <li class="covered" data-hits="1" data-linenumber="13"> - <span class="hits">1</span> + <li class="never" data-hits="" data-linenumber="13"> - <code class="ruby"> attr_reader :machine</code> - </li> - - <li class="covered" data-hits="1" data-linenumber="14"> - <span class="hits">1</span> - <code class="ruby"> attr_reader :winrm_finder</code> - </li> - - <li class="never" data-hits="" data-linenumber="15"> - - <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="16"> + <li class="covered" data-hits="1" data-linenumber="14"> <span class="hits">1</span> <code class="ruby"> def self.match?(machine)</code> </li> - <li class="missed" data-hits="0" data-linenumber="17"> + <li class="missed" data-hits="0" data-linenumber="15"> - <code class="ruby"> machine.config.vm.guest.eql? :windows</code> + <code class="ruby"> VagrantWindows::WindowsMachine.is_windows?(machine)</code> </li> - <li class="never" data-hits="" data-linenumber="18"> + <li class="never" data-hits="" data-linenumber="16"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="19"> + <li class="never" data-hits="" data-linenumber="17"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="20"> + <li class="covered" data-hits="1" data-linenumber="18"> <span class="hits">1</span> <code class="ruby"> def initialize(machine)</code> </li> - <li class="missed" data-hits="0" data-linenumber="21"> + <li class="covered" data-hits="1" data-linenumber="19"> + <span class="hits">1</span> + <code class="ruby"> @windows_machine = VagrantWindows::WindowsMachine.new(machine)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="20"> + <span class="hits">1</span> - <code class="ruby"> @machine = machine</code> + <code class="ruby"> @winrm_shell_factory = WinRMShellFactory.new(@windows_machine, WinRMFinder.new(@windows_machine))</code> </li> - <li class="missed" data-hits="0" data-linenumber="22"> + <li class="never" data-hits="" data-linenumber="21"> - <code class="ruby"> @logger = Log4r::Logger.new(&quot;vagrant_windows::communication::winrmcommunicator&quot;)</code> + <code class="ruby"> </code> </li> - <li class="missed" data-hits="0" data-linenumber="23"> + <li class="covered" data-hits="1" data-linenumber="22"> + <span class="hits">1</span> - - <code class="ruby"> @logger.debug(&quot;initializing WinRMCommunicator&quot;)</code> + <code class="ruby"> @logger = Log4r::Logger.new(&quot;vagrant_windows::communication::winrmcommunicator&quot;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="24"> + <li class="covered" data-hits="1" data-linenumber="23"> + <span class="hits">1</span> - - <code class="ruby"> @winrm_finder = WinRMFinder.new(machine)</code> + <code class="ruby"> @logger.debug(&quot;initializing WinRMCommunicator&quot;)</code> </li> - <li class="never" data-hits="" data-linenumber="25"> + <li class="never" data-hits="" data-linenumber="24"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="26"> + <li class="never" data-hits="" data-linenumber="25"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="27"> + <li class="covered" data-hits="1" data-linenumber="26"> <span class="hits">1</span> <code class="ruby"> def ready?</code> </li> - <li class="missed" data-hits="0" data-linenumber="28"> + <li class="missed" data-hits="0" data-linenumber="27"> - <code class="ruby"> logger.debug(&quot;Checking whether WinRM is ready...&quot;)</code> + <code class="ruby"> @logger.debug(&quot;Checking whether WinRM is ready...&quot;)</code> </li> - <li class="never" data-hits="" data-linenumber="29"> + <li class="never" data-hits="" data-linenumber="28"> <code class="ruby"></code> </li> - <li class="missed" data-hits="0" data-linenumber="30"> + <li class="missed" data-hits="0" data-linenumber="29"> - <code class="ruby"> Timeout.timeout(@machine.config.winrm.timeout) do</code> + <code class="ruby"> Timeout.timeout(@windows_machine.winrm_config.timeout) do</code> </li> - <li class="missed" data-hits="0" data-linenumber="31"> + <li class="missed" data-hits="0" data-linenumber="30"> - <code class="ruby"> session.powershell(&quot;hostname&quot;)</code> + <code class="ruby"> winrmshell.powershell(&quot;hostname&quot;)</code> </li> - <li class="never" data-hits="" data-linenumber="32"> + <li class="never" data-hits="" data-linenumber="31"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="33"> + <li class="never" data-hits="" data-linenumber="32"> <code class="ruby"></code> </li> - <li class="missed" data-hits="0" data-linenumber="34"> + <li class="missed" data-hits="0" data-linenumber="33"> - <code class="ruby"> logger.info(&quot;WinRM is ready!&quot;)</code> + <code class="ruby"> @logger.info(&quot;WinRM is ready!&quot;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="35"> + <li class="missed" data-hits="0" data-linenumber="34"> <code class="ruby"> return true</code> </li> - <li class="never" data-hits="" data-linenumber="36"> + <li class="never" data-hits="" data-linenumber="35"> <code class="ruby"> </code> </li> - <li class="never" data-hits="" data-linenumber="37"> + <li class="never" data-hits="" data-linenumber="36"> <code class="ruby"> rescue Vagrant::Errors::VagrantError =&gt; e</code> </li> - <li class="never" data-hits="" data-linenumber="38"> + <li class="never" data-hits="" data-linenumber="37"> <code class="ruby"> # We catch a `VagrantError` which would signal that something went</code> </li> - <li class="never" data-hits="" data-linenumber="39"> + <li class="never" data-hits="" data-linenumber="38"> <code class="ruby"> # wrong expectedly in the `connect`, which means we didn't connect.</code> </li> - <li class="missed" data-hits="0" data-linenumber="40"> + <li class="missed" data-hits="0" data-linenumber="39"> <code class="ruby"> @logger.info(&quot;WinRM not up: #{e.inspect}&quot;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="41"> + <li class="missed" data-hits="0" data-linenumber="40"> <code class="ruby"> return false</code> </li> - <li class="never" data-hits="" data-linenumber="42"> + <li class="never" data-hits="" data-linenumber="41"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="43"> + <li class="never" data-hits="" data-linenumber="42"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="44"> + <li class="covered" data-hits="1" data-linenumber="43"> <span class="hits">1</span> <code class="ruby"> def execute(command, opts={}, &amp;block)</code> </li> - <li class="missed" data-hits="0" data-linenumber="45"> + <li class="covered" data-hits="4" data-linenumber="44"> + <span class="hits">4</span> - <code class="ruby"> opts = {</code> </li> - <li class="never" data-hits="" data-linenumber="46"> + <li class="never" data-hits="" data-linenumber="45"> <code class="ruby"> :error_check =&gt; true,</code> </li> - <li class="never" data-hits="" data-linenumber="47"> + <li class="never" data-hits="" data-linenumber="46"> <code class="ruby"> :error_class =&gt; VagrantWindows::Errors::WinRMExecutionError,</code> </li> - <li class="never" data-hits="" data-linenumber="48"> + <li class="never" data-hits="" data-linenumber="47"> <code class="ruby"> :error_key =&gt; :winrm_execution_error,</code> </li> - <li class="never" data-hits="" data-linenumber="49"> + <li class="never" data-hits="" data-linenumber="48"> <code class="ruby"> :command =&gt; command,</code> </li> - <li class="never" data-hits="" data-linenumber="50"> + <li class="never" data-hits="" data-linenumber="49"> <code class="ruby"> :shell =&gt; :powershell</code> </li> - <li class="never" data-hits="" data-linenumber="51"> + <li class="never" data-hits="" data-linenumber="50"> <code class="ruby"> }.merge(opts || {})</code> </li> - <li class="missed" data-hits="0" data-linenumber="52"> + <li class="covered" data-hits="4" data-linenumber="51"> + <span class="hits">4</span> - <code class="ruby"> exit_status = do_execute(command, opts[:shell], &amp;block)</code> </li> - <li class="missed" data-hits="0" data-linenumber="53"> + <li class="covered" data-hits="4" data-linenumber="52"> + <span class="hits">4</span> - <code class="ruby"> if opts[:error_check] &amp;&amp; exit_status != 0</code> </li> - <li class="missed" data-hits="0" data-linenumber="54"> + <li class="covered" data-hits="2" data-linenumber="53"> + <span class="hits">2</span> - <code class="ruby"> raise_execution_error(opts, exit_status)</code> </li> - <li class="never" data-hits="" data-linenumber="55"> + <li class="never" data-hits="" data-linenumber="54"> <code class="ruby"> end</code> </li> - <li class="missed" data-hits="0" data-linenumber="56"> + <li class="covered" data-hits="2" data-linenumber="55"> + <span class="hits">2</span> - <code class="ruby"> exit_status</code> </li> - <li class="never" data-hits="" data-linenumber="57"> + <li class="never" data-hits="" data-linenumber="56"> <code class="ruby"> end</code> </li> - <li class="covered" data-hits="1" data-linenumber="58"> + <li class="covered" data-hits="1" data-linenumber="57"> <span class="hits">1</span> <code class="ruby"> alias_method :sudo, :execute</code> </li> - <li class="never" data-hits="" data-linenumber="59"> + <li class="never" data-hits="" data-linenumber="58"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="60"> + <li class="covered" data-hits="1" data-linenumber="59"> <span class="hits">1</span> <code class="ruby"> def test(command, opts=nil)</code> </li> - <li class="missed" data-hits="0" data-linenumber="61"> + <li class="missed" data-hits="0" data-linenumber="60"> <code class="ruby"> @logger.debug(&quot;Testing: #{command}&quot;)</code> </li> - <li class="never" data-hits="" data-linenumber="62"> + <li class="never" data-hits="" data-linenumber="61"> <code class="ruby"> </code> </li> - <li class="never" data-hits="" data-linenumber="63"> + <li class="never" data-hits="" data-linenumber="62"> <code class="ruby"> # HACK: to speed up Vagrant 1.2 OS detection, skip checking for *nix OS</code> </li> - <li class="missed" data-hits="0" data-linenumber="64"> + <li class="missed" data-hits="0" data-linenumber="63"> <code class="ruby"> return false unless (command =~ /^uname|^cat \/etc|^cat \/proc|grep 'Fedora/).nil?</code> </li> - <li class="never" data-hits="" data-linenumber="65"> + <li class="never" data-hits="" data-linenumber="64"> <code class="ruby"></code> </li> - <li class="missed" data-hits="0" data-linenumber="66"> + <li class="missed" data-hits="0" data-linenumber="65"> <code class="ruby"> opts = { :error_check =&gt; false }.merge(opts || {})</code> </li> - <li class="missed" data-hits="0" data-linenumber="67"> + <li class="missed" data-hits="0" data-linenumber="66"> <code class="ruby"> execute(command, opts) == 0</code> </li> - <li class="never" data-hits="" data-linenumber="68"> + <li class="never" data-hits="" data-linenumber="67"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="69"> + <li class="never" data-hits="" data-linenumber="68"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="70"> + <li class="covered" data-hits="1" data-linenumber="69"> <span class="hits">1</span> <code class="ruby"> def upload(from, to)</code> </li> - <li class="missed" data-hits="0" data-linenumber="71"> + <li class="covered" data-hits="2" data-linenumber="70"> + <span class="hits">2</span> - <code class="ruby"> @logger.debug(&quot;Uploading: #{from} to #{to}&quot;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="72"> + <li class="covered" data-hits="2" data-linenumber="71"> + <span class="hits">2</span> - - <code class="ruby"> file = &quot;winrm-upload-#{rand()}&quot;</code> + <code class="ruby"> winrmshell.upload(from, to)</code> </li> - <li class="missed" data-hits="0" data-linenumber="73"> + <li class="never" data-hits="" data-linenumber="72"> - <code class="ruby"> file_name = (session.cmd(&quot;echo %TEMP%\\#{file}&quot;))[:data][0][:stdout].chomp</code> - </li> - - <li class="missed" data-hits="0" data-linenumber="74"> - - - <code class="ruby"> session.powershell &lt;&lt;-EOH</code> - </li> - - <li class="never" data-hits="" data-linenumber="75"> - - - <code class="ruby"> if(Test-Path #{to})</code> - </li> - - <li class="never" data-hits="" data-linenumber="76"> - - - <code class="ruby"> {</code> - </li> - - <li class="never" data-hits="" data-linenumber="77"> - - - <code class="ruby"> rm #{to}</code> - </li> - - <li class="never" data-hits="" data-linenumber="78"> - - - <code class="ruby"> }</code> - </li> - - <li class="never" data-hits="" data-linenumber="79"> - - - <code class="ruby"> EOH</code> - </li> - - <li class="missed" data-hits="0" data-linenumber="80"> - - - <code class="ruby"> Base64.encode64(IO.binread(from)).gsub(&quot;\n&quot;,'').chars.to_a.each_slice(8000-file_name.size) do |chunk|</code> - </li> - - <li class="missed" data-hits="0" data-linenumber="81"> - - - <code class="ruby"> out = session.cmd(&quot;echo #{chunk.join} &gt;&gt; \&quot;#{file_name}\&quot;&quot;)</code> - </li> - - <li class="never" data-hits="" data-linenumber="82"> - - - <code class="ruby"> end</code> - </li> - - <li class="missed" data-hits="0" data-linenumber="83"> - - - <code class="ruby"> session.powershell(&quot;mkdir $([System.IO.Path]::GetDirectoryName(\&quot;#{to}\&quot;))&quot;)</code> - </li> - - <li class="missed" data-hits="0" data-linenumber="84"> - - - <code class="ruby"> session.powershell &lt;&lt;-EOH</code> - </li> - - <li class="never" data-hits="" data-linenumber="85"> - - - <code class="ruby"> $base64_string = Get-Content \&quot;#{file_name}\&quot;</code> - </li> - - <li class="never" data-hits="" data-linenumber="86"> - - - <code class="ruby"> $bytes = [System.Convert]::FromBase64String($base64_string) </code> - </li> - - <li class="never" data-hits="" data-linenumber="87"> - - - <code class="ruby"> $new_file = [System.IO.Path]::GetFullPath(\&quot;#{to}\&quot;)</code> - </li> - - <li class="never" data-hits="" data-linenumber="88"> - - - <code class="ruby"> [System.IO.File]::WriteAllBytes($new_file,$bytes)</code> - </li> - - <li class="never" data-hits="" data-linenumber="89"> - - - <code class="ruby"> EOH</code> - </li> - - <li class="never" data-hits="" data-linenumber="90"> - - <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="91"> + <li class="never" data-hits="" data-linenumber="73"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="92"> + <li class="covered" data-hits="1" data-linenumber="74"> <span class="hits">1</span> <code class="ruby"> def download(from, to=nil)</code> </li> - <li class="missed" data-hits="0" data-linenumber="93"> + <li class="missed" data-hits="0" data-linenumber="75"> <code class="ruby"> @logger.warn(&quot;Downloading: #{from} to #{to} not supported on Windows guests&quot;)</code> </li> - <li class="never" data-hits="" data-linenumber="94"> + <li class="never" data-hits="" data-linenumber="76"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="95"> + <li class="never" data-hits="" data-linenumber="77"> <code class="ruby"> </code> </li> - <li class="never" data-hits="" data-linenumber="96"> - - - <code class="ruby"> # Runs a remote WQL query against the VM</code> - </li> - - <li class="never" data-hits="" data-linenumber="97"> - - - <code class="ruby"> #</code> - </li> - - <li class="never" data-hits="" data-linenumber="98"> - - - <code class="ruby"> # Note: This is not part of the standard Vagrant communicator interface, but</code> - </li> - - <li class="never" data-hits="" data-linenumber="99"> - - - <code class="ruby"> # guest capabilities may need to use this.</code> - </li> - - <li class="covered" data-hits="1" data-linenumber="100"> + <li class="covered" data-hits="1" data-linenumber="78"> <span class="hits">1</span> - <code class="ruby"> def wql(query)</code> + <code class="ruby"> def winrmshell=(winrmshell)</code> </li> - <li class="missed" data-hits="0" data-linenumber="101"> - - - <code class="ruby"> session.wql(query)</code> - </li> - - <li class="never" data-hits="" data-linenumber="102"> - - - <code class="ruby"> end</code> - </li> - - <li class="never" data-hits="" data-linenumber="103"> - - - <code class="ruby"> </code> - </li> - - <li class="covered" data-hits="1" data-linenumber="104"> + <li class="covered" data-hits="1" data-linenumber="79"> <span class="hits">1</span> - <code class="ruby"> def set_winrmshell(winrmshell)</code> + <code class="ruby"> @winrmshell = winrmshell</code> </li> - <li class="missed" data-hits="0" data-linenumber="105"> + <li class="never" data-hits="" data-linenumber="80"> - <code class="ruby"> @session = winrmshell</code> - </li> - - <li class="never" data-hits="" data-linenumber="106"> - - <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="107"> + <li class="never" data-hits="" data-linenumber="81"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="108"> + <li class="covered" data-hits="1" data-linenumber="82"> <span class="hits">1</span> - <code class="ruby"> def session</code> + <code class="ruby"> def winrmshell</code> </li> - <li class="missed" data-hits="0" data-linenumber="109"> + <li class="covered" data-hits="6" data-linenumber="83"> + <span class="hits">6</span> - - <code class="ruby"> @session ||= new_session</code> + <code class="ruby"> @winrmshell ||= @winrm_shell_factory.create_winrm_shell()</code> </li> - <li class="never" data-hits="" data-linenumber="110"> + <li class="never" data-hits="" data-linenumber="84"> <code class="ruby"> end</code> </li> - <li class="covered" data-hits="1" data-linenumber="111"> - <span class="hits">1</span> + <li class="never" data-hits="" data-linenumber="85"> - <code class="ruby"> alias_method :winrmshell, :session</code> - </li> - - <li class="never" data-hits="" data-linenumber="112"> - <code class="ruby"> </code> </li> - <li class="never" data-hits="" data-linenumber="113"> + <li class="never" data-hits="" data-linenumber="86"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="114"> + <li class="covered" data-hits="1" data-linenumber="87"> <span class="hits">1</span> <code class="ruby"> protected</code> </li> - <li class="never" data-hits="" data-linenumber="115"> + <li class="never" data-hits="" data-linenumber="88"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="116"> + <li class="covered" data-hits="1" data-linenumber="89"> <span class="hits">1</span> <code class="ruby"> def do_execute(command, shell, &amp;block)</code> </li> - <li class="missed" data-hits="0" data-linenumber="117"> + <li class="covered" data-hits="4" data-linenumber="90"> + <span class="hits">4</span> - <code class="ruby"> if shell.eql? :cmd</code> </li> - <li class="missed" data-hits="0" data-linenumber="118"> + <li class="missed" data-hits="0" data-linenumber="91"> - <code class="ruby"> session.cmd(command, &amp;block)[:exitcode]</code> + <code class="ruby"> winrmshell.cmd(command, &amp;block)[:exitcode]</code> </li> - <li class="never" data-hits="" data-linenumber="119"> + <li class="never" data-hits="" data-linenumber="92"> <code class="ruby"> else</code> </li> - <li class="missed" data-hits="0" data-linenumber="120"> + <li class="covered" data-hits="4" data-linenumber="93"> + <span class="hits">4</span> - <code class="ruby"> command = VagrantWindows.load_script(&quot;command_alias.ps1&quot;) &lt;&lt; &quot;\r\n&quot; &lt;&lt; command</code> </li> - <li class="missed" data-hits="0" data-linenumber="121"> + <li class="covered" data-hits="4" data-linenumber="94"> + <span class="hits">4</span> - - <code class="ruby"> session.powershell(command, &amp;block)[:exitcode]</code> + <code class="ruby"> winrmshell.powershell(command, &amp;block)[:exitcode]</code> </li> - <li class="never" data-hits="" data-linenumber="122"> + <li class="never" data-hits="" data-linenumber="95"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="123"> + <li class="never" data-hits="" data-linenumber="96"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="124"> + <li class="never" data-hits="" data-linenumber="97"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="125"> + <li class="covered" data-hits="1" data-linenumber="98"> <span class="hits">1</span> <code class="ruby"> def raise_execution_error(opts, exit_code)</code> </li> - <li class="never" data-hits="" data-linenumber="126"> + <li class="never" data-hits="" data-linenumber="99"> <code class="ruby"> # The error classes expect the translation key to be _key, but that makes for an ugly</code> </li> - <li class="never" data-hits="" data-linenumber="127"> + <li class="never" data-hits="" data-linenumber="100"> <code class="ruby"> # configuration parameter, so we set it here from `error_key`</code> </li> - <li class="missed" data-hits="0" data-linenumber="128"> + <li class="covered" data-hits="2" data-linenumber="101"> + <span class="hits">2</span> - <code class="ruby"> msg = &quot;Command execution failed with an exit code of #{exit_code}&quot;</code> </li> - <li class="missed" data-hits="0" data-linenumber="129"> + <li class="covered" data-hits="2" data-linenumber="102"> + <span class="hits">2</span> - <code class="ruby"> error_opts = opts.merge(:_key =&gt; opts[:error_key], :message =&gt; msg)</code> </li> - <li class="missed" data-hits="0" data-linenumber="130"> + <li class="covered" data-hits="2" data-linenumber="103"> + <span class="hits">2</span> - <code class="ruby"> raise opts[:error_class], error_opts</code> </li> - <li class="never" data-hits="" data-linenumber="131"> + <li class="never" data-hits="" data-linenumber="104"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="132"> + <li class="never" data-hits="" data-linenumber="105"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="133"> - <span class="hits">1</span> + <li class="never" data-hits="" data-linenumber="106"> - <code class="ruby"> def new_session</code> - </li> - - <li class="missed" data-hits="0" data-linenumber="134"> - - <code class="ruby"> WinRMShell.new(</code> - </li> - - <li class="never" data-hits="" data-linenumber="135"> - - - <code class="ruby"> @winrm_finder.winrm_host_address(),</code> - </li> - - <li class="never" data-hits="" data-linenumber="136"> - - - <code class="ruby"> @machine.config.winrm.username,</code> - </li> - - <li class="never" data-hits="" data-linenumber="137"> - - - <code class="ruby"> @machine.config.winrm.password,</code> - </li> - - <li class="never" data-hits="" data-linenumber="138"> - - - <code class="ruby"> {</code> - </li> - - <li class="never" data-hits="" data-linenumber="139"> - - - <code class="ruby"> :port =&gt; @winrm_finder.winrm_host_port(),</code> - </li> - - <li class="never" data-hits="" data-linenumber="140"> - - - <code class="ruby"> :timeout_in_seconds =&gt; @machine.config.winrm.timeout,</code> - </li> - - <li class="never" data-hits="" data-linenumber="141"> - - - <code class="ruby"> :max_tries =&gt; @machine.config.winrm.max_tries</code> - </li> - - <li class="never" data-hits="" data-linenumber="142"> - - - <code class="ruby"> })</code> - </li> - - <li class="never" data-hits="" data-linenumber="143"> - - - <code class="ruby"> end</code> - </li> - - <li class="never" data-hits="" data-linenumber="144"> - - - <code class="ruby"> </code> - </li> - - <li class="never" data-hits="" data-linenumber="145"> - - <code class="ruby"> end #WinRM class</code> </li> - <li class="never" data-hits="" data-linenumber="146"> + <li class="never" data-hits="" data-linenumber="107"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="147"> + <li class="never" data-hits="" data-linenumber="108"> <code class="ruby">end</code> </li> @@ -2205,15 +2001,15 @@ </div> <div class="source_table" id="46df79007581e23184efb74db86daf5c58254ec5"> <div class="header"> <h3>lib/vagrant-windows/communication/winrmfinder.rb</h3> - <h4><span class="red">70.83 %</span> covered</h4> + <h4><span class="red">78.26 %</span> covered</h4> <div> - <b>24</b> relevant lines. - <span class="green"><b>17</b> lines covered</span> and - <span class="red"><b>7</b> lines missed.</span> + <b>23</b> relevant lines. + <span class="green"><b>18</b> lines covered</span> and + <span class="red"><b>5</b> lines missed.</span> </div> </div> <pre> <ol> @@ -2228,281 +2024,299 @@ <span class="hits">1</span> <code class="ruby">require_relative '../errors'</code> </li> - <li class="never" data-hits="" data-linenumber="3"> + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + <code class="ruby">require_relative '../windows_machine'</code> + </li> + + <li class="never" data-hits="" data-linenumber="4"> + <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="4"> + <li class="covered" data-hits="1" data-linenumber="5"> <span class="hits">1</span> <code class="ruby">module VagrantWindows</code> </li> - <li class="covered" data-hits="1" data-linenumber="5"> + <li class="covered" data-hits="1" data-linenumber="6"> <span class="hits">1</span> <code class="ruby"> module Communication</code> </li> - <li class="covered" data-hits="1" data-linenumber="6"> + <li class="covered" data-hits="1" data-linenumber="7"> <span class="hits">1</span> <code class="ruby"> class WinRMFinder</code> </li> - <li class="never" data-hits="" data-linenumber="7"> + <li class="never" data-hits="" data-linenumber="8"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="8"> + <li class="covered" data-hits="1" data-linenumber="9"> <span class="hits">1</span> <code class="ruby"> attr_reader :logger</code> </li> - <li class="covered" data-hits="1" data-linenumber="9"> + <li class="covered" data-hits="1" data-linenumber="10"> <span class="hits">1</span> - <code class="ruby"> attr_reader :machine</code> + <code class="ruby"> attr_reader :windows_machine</code> </li> - <li class="never" data-hits="" data-linenumber="10"> + <li class="never" data-hits="" data-linenumber="11"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="11"> + <li class="covered" data-hits="1" data-linenumber="12"> <span class="hits">1</span> - <code class="ruby"> def initialize(machine)</code> + <code class="ruby"> def initialize(windows_machine)</code> </li> - <li class="covered" data-hits="3" data-linenumber="12"> - <span class="hits">3</span> + <li class="covered" data-hits="4" data-linenumber="13"> + <span class="hits">4</span> - <code class="ruby"> @machine = machine</code> + <code class="ruby"> @windows_machine = windows_machine</code> </li> - <li class="covered" data-hits="3" data-linenumber="13"> - <span class="hits">3</span> + <li class="covered" data-hits="4" data-linenumber="14"> + <span class="hits">4</span> <code class="ruby"> @logger = Log4r::Logger.new(&quot;vagrant_windows::communication::winrmfinder&quot;)</code> </li> - <li class="never" data-hits="" data-linenumber="14"> + <li class="never" data-hits="" data-linenumber="15"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="15"> + <li class="never" data-hits="" data-linenumber="16"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="16"> + <li class="never" data-hits="" data-linenumber="17"> + + + <code class="ruby"> # Finds the address of the Windows machine.</code> + </li> + + <li class="never" data-hits="" data-linenumber="18"> + + + <code class="ruby"> # Raises a Vagrant::Errors::SSHNotReady if WinRM is not responding yet.</code> + </li> + + <li class="never" data-hits="" data-linenumber="19"> + + + <code class="ruby"> #</code> + </li> + + <li class="never" data-hits="" data-linenumber="20"> + + + <code class="ruby"> # @return [String] The IP of the Windows machine</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="21"> <span class="hits">1</span> <code class="ruby"> def winrm_host_address</code> </li> - <li class="never" data-hits="" data-linenumber="17"> + <li class="never" data-hits="" data-linenumber="22"> <code class="ruby"> # Get the SSH info for the machine, raise an exception if the</code> </li> - <li class="never" data-hits="" data-linenumber="18"> + <li class="never" data-hits="" data-linenumber="23"> <code class="ruby"> # provider is saying that the machine is not ready.</code> </li> - <li class="covered" data-hits="3" data-linenumber="19"> + <li class="covered" data-hits="3" data-linenumber="24"> <span class="hits">3</span> - <code class="ruby"> ssh_info = @machine.ssh_info</code> + <code class="ruby"> ssh_info = @windows_machine.ssh_info</code> </li> - <li class="covered" data-hits="3" data-linenumber="20"> + <li class="covered" data-hits="3" data-linenumber="25"> <span class="hits">3</span> <code class="ruby"> raise VagrantWindows::Errors::WinRMNotReady if ssh_info.nil?</code> </li> - <li class="never" data-hits="" data-linenumber="21"> + <li class="never" data-hits="" data-linenumber="26"> <code class="ruby"> </code> </li> - <li class="never" data-hits="" data-linenumber="22"> + <li class="never" data-hits="" data-linenumber="27"> <code class="ruby"> # if the configuration has a host value, that takes precedence</code> </li> - <li class="covered" data-hits="2" data-linenumber="23"> + <li class="covered" data-hits="2" data-linenumber="28"> <span class="hits">2</span> - <code class="ruby"> host = @machine.config.winrm.host || ssh_info[:host]</code> + <code class="ruby"> host = @windows_machine.winrm_config.host || ssh_info[:host]</code> </li> - <li class="covered" data-hits="2" data-linenumber="24"> + <li class="covered" data-hits="2" data-linenumber="29"> <span class="hits">2</span> <code class="ruby"> @logger.info(&quot;WinRM host: #{host}&quot;)</code> </li> - <li class="covered" data-hits="2" data-linenumber="25"> + <li class="covered" data-hits="2" data-linenumber="30"> <span class="hits">2</span> <code class="ruby"> host</code> </li> - <li class="never" data-hits="" data-linenumber="26"> + <li class="never" data-hits="" data-linenumber="31"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="27"> + <li class="never" data-hits="" data-linenumber="32"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="28"> - <span class="hits">1</span> + <li class="never" data-hits="" data-linenumber="33"> - <code class="ruby"> def winrm_host_port</code> - </li> - - <li class="missed" data-hits="0" data-linenumber="29"> - - <code class="ruby"> expected_guest_port = @machine.config.winrm.guest_port</code> + <code class="ruby"> # Finds the IP port of the Windows machine's WinRM service.</code> </li> - <li class="missed" data-hits="0" data-linenumber="30"> + <li class="never" data-hits="" data-linenumber="34"> - <code class="ruby"> @logger.debug(&quot;Searching for WinRM port: #{expected_guest_port.inspect}&quot;)</code> + <code class="ruby"> #</code> </li> - <li class="never" data-hits="" data-linenumber="31"> + <li class="never" data-hits="" data-linenumber="35"> - <code class="ruby"></code> + <code class="ruby"> # @return [String] The port of the Windows machine's WinRM service</code> </li> - <li class="never" data-hits="" data-linenumber="32"> + <li class="covered" data-hits="1" data-linenumber="36"> + <span class="hits">1</span> - - <code class="ruby"> # Look for the forwarded port only by comparing the guest port</code> + <code class="ruby"> def winrm_host_port</code> </li> - <li class="missed" data-hits="0" data-linenumber="33"> + <li class="missed" data-hits="0" data-linenumber="37"> - <code class="ruby"> begin</code> + <code class="ruby"> expected_guest_port = @windows_machine.winrm_config.guest_port</code> </li> - <li class="missed" data-hits="0" data-linenumber="34"> + <li class="missed" data-hits="0" data-linenumber="38"> - <code class="ruby"> @machine.provider.driver.read_forwarded_ports.each do |_, _, hostport, guestport|</code> + <code class="ruby"> @logger.debug(&quot;Searching for WinRM port: #{expected_guest_port.inspect}&quot;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="35"> + <li class="never" data-hits="" data-linenumber="39"> - <code class="ruby"> return hostport if guestport == expected_guest_port</code> + <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="36"> + <li class="never" data-hits="" data-linenumber="40"> - <code class="ruby"> end</code> + <code class="ruby"> # Look for the forwarded port only by comparing the guest port</code> </li> - <li class="never" data-hits="" data-linenumber="37"> + <li class="missed" data-hits="0" data-linenumber="41"> - <code class="ruby"> rescue NoMethodError =&gt; e</code> + <code class="ruby"> @windows_machine.read_forwarded_ports().each do |_, _, hostport, guestport|</code> </li> - <li class="never" data-hits="" data-linenumber="38"> + <li class="missed" data-hits="0" data-linenumber="42"> - <code class="ruby"> # VMWare provider doesn't support read_forwarded_ports</code> + <code class="ruby"> return hostport if guestport == expected_guest_port</code> </li> - <li class="missed" data-hits="0" data-linenumber="39"> + <li class="never" data-hits="" data-linenumber="43"> - <code class="ruby"> @logger.debug(e.message)</code> - </li> - - <li class="never" data-hits="" data-linenumber="40"> - - <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="41"> + <li class="never" data-hits="" data-linenumber="44"> <code class="ruby"> </code> </li> - <li class="never" data-hits="" data-linenumber="42"> + <li class="never" data-hits="" data-linenumber="45"> <code class="ruby"> # We tried, give up and use the configured port as-is</code> </li> - <li class="missed" data-hits="0" data-linenumber="43"> + <li class="missed" data-hits="0" data-linenumber="46"> - <code class="ruby"> @machine.config.winrm.port</code> + <code class="ruby"> @windows_machine.winrm_config.port</code> </li> - <li class="never" data-hits="" data-linenumber="44"> + <li class="never" data-hits="" data-linenumber="47"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="45"> + <li class="never" data-hits="" data-linenumber="48"> <code class="ruby"> </code> </li> - <li class="never" data-hits="" data-linenumber="46"> + <li class="never" data-hits="" data-linenumber="49"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="47"> + <li class="never" data-hits="" data-linenumber="50"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="48"> + <li class="never" data-hits="" data-linenumber="51"> <code class="ruby">end</code> </li> @@ -2511,15 +2325,15 @@ </div> <div class="source_table" id="206e71d4215a183bebef0dee5b2d9ce2fe77aea6"> <div class="header"> <h3>lib/vagrant-windows/communication/winrmshell.rb</h3> - <h4><span class="red">41.1 %</span> covered</h4> + <h4><span class="green">92.5 %</span> covered</h4> <div> - <b>73</b> relevant lines. - <span class="green"><b>30</b> lines covered</span> and - <span class="red"><b>43</b> lines missed.</span> + <b>80</b> relevant lines. + <span class="green"><b>74</b> lines covered</span> and + <span class="red"><b>6</b> lines missed.</span> </div> </div> <pre> <ol> @@ -2738,61 +2552,61 @@ <span class="hits">1</span> <code class="ruby"> def initialize(host, username, password, options = {})</code> </li> - <li class="missed" data-hits="0" data-linenumber="37"> + <li class="covered" data-hits="3" data-linenumber="37"> + <span class="hits">3</span> - <code class="ruby"> @logger = Log4r::Logger.new(&quot;vagrant_windows::communication::winrmshell&quot;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="38"> + <li class="covered" data-hits="3" data-linenumber="38"> + <span class="hits">3</span> - <code class="ruby"> @logger.debug(&quot;initializing WinRMShell&quot;)</code> </li> <li class="never" data-hits="" data-linenumber="39"> <code class="ruby"> </code> </li> - <li class="missed" data-hits="0" data-linenumber="40"> + <li class="covered" data-hits="3" data-linenumber="40"> + <span class="hits">3</span> - <code class="ruby"> @host = host</code> </li> - <li class="missed" data-hits="0" data-linenumber="41"> + <li class="covered" data-hits="3" data-linenumber="41"> + <span class="hits">3</span> - <code class="ruby"> @port = options[:port] || 5985</code> </li> - <li class="missed" data-hits="0" data-linenumber="42"> + <li class="covered" data-hits="3" data-linenumber="42"> + <span class="hits">3</span> - <code class="ruby"> @username = username</code> </li> - <li class="missed" data-hits="0" data-linenumber="43"> + <li class="covered" data-hits="3" data-linenumber="43"> + <span class="hits">3</span> - <code class="ruby"> @password = password</code> </li> - <li class="missed" data-hits="0" data-linenumber="44"> + <li class="covered" data-hits="3" data-linenumber="44"> + <span class="hits">3</span> - <code class="ruby"> @timeout_in_seconds = options[:timeout_in_seconds] || 60</code> </li> - <li class="missed" data-hits="0" data-linenumber="45"> + <li class="covered" data-hits="3" data-linenumber="45"> + <span class="hits">3</span> - <code class="ruby"> @max_tries = options[:max_tries] || 20</code> </li> <li class="never" data-hits="" data-linenumber="46"> @@ -2810,13 +2624,13 @@ <span class="hits">1</span> <code class="ruby"> def powershell(command, &amp;block)</code> </li> - <li class="missed" data-hits="0" data-linenumber="49"> + <li class="covered" data-hits="20" data-linenumber="49"> + <span class="hits">20</span> - <code class="ruby"> execute_shell(command, :powershell, &amp;block)</code> </li> <li class="never" data-hits="" data-linenumber="50"> @@ -2834,13 +2648,13 @@ <span class="hits">1</span> <code class="ruby"> def cmd(command, &amp;block)</code> </li> - <li class="missed" data-hits="0" data-linenumber="53"> + <li class="covered" data-hits="5" data-linenumber="53"> + <span class="hits">5</span> - <code class="ruby"> execute_shell(command, :cmd, &amp;block)</code> </li> <li class="never" data-hits="" data-linenumber="54"> @@ -2858,13 +2672,13 @@ <span class="hits">1</span> <code class="ruby"> def wql(query)</code> </li> - <li class="missed" data-hits="0" data-linenumber="57"> + <li class="covered" data-hits="3" data-linenumber="57"> + <span class="hits">3</span> - <code class="ruby"> execute_wql(query)</code> </li> <li class="never" data-hits="" data-linenumber="58"> @@ -2873,497 +2687,839 @@ </li> <li class="never" data-hits="" data-linenumber="59"> - <code class="ruby"></code> + <code class="ruby"> </code> </li> <li class="covered" data-hits="1" data-linenumber="60"> <span class="hits">1</span> + <code class="ruby"> def upload(from, to)</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="61"> + <span class="hits">2</span> + + <code class="ruby"> @logger.debug(&quot;Uploading: #{from} to #{to}&quot;)</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="62"> + <span class="hits">2</span> + + <code class="ruby"> file_name = (cmd(&quot;echo %TEMP%\\winrm-upload-#{rand()}&quot;))[:data][0][:stdout].chomp</code> + </li> + + <li class="never" data-hits="" data-linenumber="63"> + + + <code class="ruby"> powershell &lt;&lt;-EOH</code> + </li> + + <li class="never" data-hits="" data-linenumber="64"> + + + <code class="ruby"> if(Test-Path #{to}) {</code> + </li> + + <li class="never" data-hits="" data-linenumber="65"> + + + <code class="ruby"> rm #{to}</code> + </li> + + <li class="never" data-hits="" data-linenumber="66"> + + + <code class="ruby"> }</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="67"> + <span class="hits">2</span> + + <code class="ruby"> EOH</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="68"> + <span class="hits">2</span> + + <code class="ruby"> Base64.encode64(IO.binread(from)).gsub(&quot;\n&quot;,'').chars.to_a.each_slice(8000-file_name.size) do |chunk|</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="69"> + <span class="hits">2</span> + + <code class="ruby"> out = cmd(&quot;echo #{chunk.join} &gt;&gt; \&quot;#{file_name}\&quot;&quot;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="70"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="71"> + + + <code class="ruby"> powershell &lt;&lt;-EOH</code> + </li> + + <li class="never" data-hits="" data-linenumber="72"> + + + <code class="ruby"> mkdir $([System.IO.Path]::GetDirectoryName(\&quot;#{to}\&quot;))</code> + </li> + + <li class="never" data-hits="" data-linenumber="73"> + + + <code class="ruby"> $base64_string = Get-Content \&quot;#{file_name}\&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="74"> + + + <code class="ruby"> $bytes = [System.Convert]::FromBase64String($base64_string) </code> + </li> + + <li class="never" data-hits="" data-linenumber="75"> + + + <code class="ruby"> $new_file = [System.IO.Path]::GetFullPath(\&quot;#{to}\&quot;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="76"> + + + <code class="ruby"> [System.IO.File]::WriteAllBytes($new_file,$bytes)</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="77"> + <span class="hits">2</span> + + <code class="ruby"> EOH</code> + </li> + + <li class="never" data-hits="" data-linenumber="78"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="79"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="80"> + <span class="hits">1</span> + <code class="ruby"> protected</code> </li> - <li class="never" data-hits="" data-linenumber="61"> + <li class="never" data-hits="" data-linenumber="81"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="62"> + <li class="covered" data-hits="1" data-linenumber="82"> <span class="hits">1</span> <code class="ruby"> def execute_shell(command, shell=:powershell, &amp;block)</code> </li> - <li class="missed" data-hits="0" data-linenumber="63"> + <li class="covered" data-hits="25" data-linenumber="83"> + <span class="hits">25</span> - <code class="ruby"> raise Errors::WinRMInvalidShell, :shell =&gt; shell unless shell == :cmd || shell == :powershell</code> </li> - <li class="missed" data-hits="0" data-linenumber="64"> + <li class="covered" data-hits="25" data-linenumber="84"> + <span class="hits">25</span> - <code class="ruby"> begin</code> </li> - <li class="missed" data-hits="0" data-linenumber="65"> + <li class="covered" data-hits="25" data-linenumber="85"> + <span class="hits">25</span> - <code class="ruby"> execute_shell_with_retry(command, shell, &amp;block)</code> </li> - <li class="missed" data-hits="0" data-linenumber="66"> + <li class="missed" data-hits="0" data-linenumber="86"> <code class="ruby"> rescue =&gt; e</code> </li> - <li class="missed" data-hits="0" data-linenumber="67"> + <li class="missed" data-hits="0" data-linenumber="87"> <code class="ruby"> raise_winrm_exception(e, shell, command)</code> </li> - <li class="never" data-hits="" data-linenumber="68"> + <li class="never" data-hits="" data-linenumber="88"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="69"> + <li class="never" data-hits="" data-linenumber="89"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="70"> + <li class="never" data-hits="" data-linenumber="90"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="71"> + <li class="covered" data-hits="1" data-linenumber="91"> <span class="hits">1</span> <code class="ruby"> def execute_shell_with_retry(command, shell, &amp;block)</code> </li> - <li class="missed" data-hits="0" data-linenumber="72"> + <li class="covered" data-hits="25" data-linenumber="92"> + <span class="hits">25</span> - <code class="ruby"> retryable(:tries =&gt; @max_tries, :on =&gt; @@exceptions_to_retry_on, :sleep =&gt; 10) do</code> </li> - <li class="missed" data-hits="0" data-linenumber="73"> + <li class="covered" data-hits="25" data-linenumber="93"> + <span class="hits">25</span> - <code class="ruby"> @logger.debug(&quot;#{shell} executing:\n#{command}&quot;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="74"> + <li class="covered" data-hits="25" data-linenumber="94"> + <span class="hits">25</span> - <code class="ruby"> output = session.send(shell, command) do |out, err|</code> </li> - <li class="missed" data-hits="0" data-linenumber="75"> + <li class="covered" data-hits="32" data-linenumber="95"> + <span class="hits">32</span> - <code class="ruby"> block.call(:stdout, out) if block_given? &amp;&amp; out</code> </li> - <li class="missed" data-hits="0" data-linenumber="76"> + <li class="covered" data-hits="32" data-linenumber="96"> + <span class="hits">32</span> - <code class="ruby"> block.call(:stderr, err) if block_given? &amp;&amp; err</code> </li> - <li class="never" data-hits="" data-linenumber="77"> + <li class="never" data-hits="" data-linenumber="97"> <code class="ruby"> end</code> </li> - <li class="missed" data-hits="0" data-linenumber="78"> + <li class="covered" data-hits="25" data-linenumber="98"> + <span class="hits">25</span> - <code class="ruby"> @logger.debug(&quot;Exit status: #{output[:exitcode].inspect}&quot;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="79"> + <li class="covered" data-hits="25" data-linenumber="99"> + <span class="hits">25</span> - <code class="ruby"> return output</code> </li> - <li class="never" data-hits="" data-linenumber="80"> + <li class="never" data-hits="" data-linenumber="100"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="81"> + <li class="never" data-hits="" data-linenumber="101"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="82"> + <li class="never" data-hits="" data-linenumber="102"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="83"> + <li class="covered" data-hits="1" data-linenumber="103"> <span class="hits">1</span> <code class="ruby"> def execute_wql(query)</code> </li> - <li class="missed" data-hits="0" data-linenumber="84"> + <li class="covered" data-hits="3" data-linenumber="104"> + <span class="hits">3</span> - <code class="ruby"> retryable(:tries =&gt; @max_tries, :on =&gt; @@exceptions_to_retry_on, :sleep =&gt; 10) do</code> </li> - <li class="missed" data-hits="0" data-linenumber="85"> + <li class="covered" data-hits="3" data-linenumber="105"> + <span class="hits">3</span> - <code class="ruby"> @logger.debug(&quot;#executing wql: #{query}&quot;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="86"> + <li class="covered" data-hits="3" data-linenumber="106"> + <span class="hits">3</span> - <code class="ruby"> output = session.wql(query)</code> </li> - <li class="missed" data-hits="0" data-linenumber="87"> + <li class="covered" data-hits="3" data-linenumber="107"> + <span class="hits">3</span> - <code class="ruby"> @logger.debug(&quot;wql result: #{output.inspect}&quot;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="88"> + <li class="covered" data-hits="3" data-linenumber="108"> + <span class="hits">3</span> - <code class="ruby"> return output</code> </li> - <li class="never" data-hits="" data-linenumber="89"> + <li class="never" data-hits="" data-linenumber="109"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="90"> + <li class="never" data-hits="" data-linenumber="110"> <code class="ruby"> rescue =&gt; e</code> </li> - <li class="missed" data-hits="0" data-linenumber="91"> + <li class="missed" data-hits="0" data-linenumber="111"> <code class="ruby"> raise_winrm_exception(e, :wql, query)</code> </li> - <li class="never" data-hits="" data-linenumber="92"> + <li class="never" data-hits="" data-linenumber="112"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="93"> + <li class="never" data-hits="" data-linenumber="113"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="94"> + <li class="covered" data-hits="1" data-linenumber="114"> <span class="hits">1</span> <code class="ruby"> def raise_winrm_exception(winrm_exception, shell, command)</code> </li> - <li class="missed" data-hits="0" data-linenumber="95"> + <li class="missed" data-hits="0" data-linenumber="115"> <code class="ruby"> if winrm_exception.message.include?(&quot;401&quot;) # return a more specific auth error for 401 errors</code> </li> - <li class="missed" data-hits="0" data-linenumber="96"> + <li class="missed" data-hits="0" data-linenumber="116"> <code class="ruby"> raise Errors::WinRMAuthorizationError,</code> </li> - <li class="never" data-hits="" data-linenumber="97"> + <li class="never" data-hits="" data-linenumber="117"> <code class="ruby"> :user =&gt; @username,</code> </li> - <li class="never" data-hits="" data-linenumber="98"> + <li class="never" data-hits="" data-linenumber="118"> <code class="ruby"> :password =&gt; @password,</code> </li> - <li class="never" data-hits="" data-linenumber="99"> + <li class="never" data-hits="" data-linenumber="119"> <code class="ruby"> :endpoint =&gt; endpoint,</code> </li> - <li class="never" data-hits="" data-linenumber="100"> + <li class="never" data-hits="" data-linenumber="120"> <code class="ruby"> :message =&gt; winrm_exception.message</code> </li> - <li class="never" data-hits="" data-linenumber="101"> + <li class="never" data-hits="" data-linenumber="121"> <code class="ruby"> end</code> </li> - <li class="missed" data-hits="0" data-linenumber="102"> + <li class="missed" data-hits="0" data-linenumber="122"> <code class="ruby"> raise Errors::WinRMExecutionError,</code> </li> - <li class="never" data-hits="" data-linenumber="103"> + <li class="never" data-hits="" data-linenumber="123"> <code class="ruby"> :shell =&gt; shell,</code> </li> - <li class="never" data-hits="" data-linenumber="104"> + <li class="never" data-hits="" data-linenumber="124"> <code class="ruby"> :command =&gt; command,</code> </li> - <li class="never" data-hits="" data-linenumber="105"> + <li class="never" data-hits="" data-linenumber="125"> <code class="ruby"> :message =&gt; winrm_exception.message</code> </li> - <li class="never" data-hits="" data-linenumber="106"> + <li class="never" data-hits="" data-linenumber="126"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="107"> + <li class="never" data-hits="" data-linenumber="127"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="108"> + <li class="covered" data-hits="1" data-linenumber="128"> <span class="hits">1</span> <code class="ruby"> def new_session</code> </li> - <li class="missed" data-hits="0" data-linenumber="109"> + <li class="covered" data-hits="3" data-linenumber="129"> + <span class="hits">3</span> - <code class="ruby"> @logger.info(&quot;Attempting to connect to WinRM...&quot;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="110"> + <li class="covered" data-hits="3" data-linenumber="130"> + <span class="hits">3</span> - <code class="ruby"> @logger.info(&quot; - Host: #{@host}&quot;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="111"> + <li class="covered" data-hits="3" data-linenumber="131"> + <span class="hits">3</span> - <code class="ruby"> @logger.info(&quot; - Port: #{@port}&quot;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="112"> + <li class="covered" data-hits="3" data-linenumber="132"> + <span class="hits">3</span> - <code class="ruby"> @logger.info(&quot; - Username: #{@username}&quot;)</code> </li> - <li class="never" data-hits="" data-linenumber="113"> + <li class="never" data-hits="" data-linenumber="133"> <code class="ruby"> </code> </li> - <li class="missed" data-hits="0" data-linenumber="114"> + <li class="covered" data-hits="3" data-linenumber="134"> + <span class="hits">3</span> - <code class="ruby"> client = ::WinRM::WinRMWebService.new(endpoint, :plaintext, endpoint_options)</code> </li> - <li class="missed" data-hits="0" data-linenumber="115"> + <li class="covered" data-hits="3" data-linenumber="135"> + <span class="hits">3</span> - <code class="ruby"> client.set_timeout(@timeout_in_seconds)</code> </li> - <li class="missed" data-hits="0" data-linenumber="116"> + <li class="covered" data-hits="3" data-linenumber="136"> + <span class="hits">3</span> - <code class="ruby"> client.toggle_nori_type_casting(:off) #we don't want coersion of types</code> </li> - <li class="missed" data-hits="0" data-linenumber="117"> + <li class="covered" data-hits="3" data-linenumber="137"> + <span class="hits">3</span> - <code class="ruby"> client</code> </li> - <li class="never" data-hits="" data-linenumber="118"> + <li class="never" data-hits="" data-linenumber="138"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="119"> + <li class="never" data-hits="" data-linenumber="139"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="120"> + <li class="covered" data-hits="1" data-linenumber="140"> <span class="hits">1</span> <code class="ruby"> def session</code> </li> - <li class="missed" data-hits="0" data-linenumber="121"> + <li class="covered" data-hits="28" data-linenumber="141"> + <span class="hits">28</span> - <code class="ruby"> @session ||= new_session</code> </li> - <li class="never" data-hits="" data-linenumber="122"> + <li class="never" data-hits="" data-linenumber="142"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="123"> + <li class="never" data-hits="" data-linenumber="143"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="124"> + <li class="covered" data-hits="1" data-linenumber="144"> <span class="hits">1</span> <code class="ruby"> def endpoint</code> </li> - <li class="missed" data-hits="0" data-linenumber="125"> + <li class="covered" data-hits="3" data-linenumber="145"> + <span class="hits">3</span> - <code class="ruby"> &quot;http://#{@host}:#{@port}/wsman&quot;</code> </li> - <li class="never" data-hits="" data-linenumber="126"> + <li class="never" data-hits="" data-linenumber="146"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="127"> + <li class="never" data-hits="" data-linenumber="147"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="128"> + <li class="covered" data-hits="1" data-linenumber="148"> <span class="hits">1</span> <code class="ruby"> def endpoint_options</code> </li> - <li class="never" data-hits="" data-linenumber="129"> + <li class="never" data-hits="" data-linenumber="149"> <code class="ruby"> { :user =&gt; @username,</code> </li> - <li class="never" data-hits="" data-linenumber="130"> + <li class="never" data-hits="" data-linenumber="150"> <code class="ruby"> :pass =&gt; @password,</code> </li> - <li class="never" data-hits="" data-linenumber="131"> + <li class="never" data-hits="" data-linenumber="151"> <code class="ruby"> :host =&gt; @host,</code> </li> - <li class="never" data-hits="" data-linenumber="132"> + <li class="never" data-hits="" data-linenumber="152"> <code class="ruby"> :port =&gt; @port,</code> </li> - <li class="never" data-hits="" data-linenumber="133"> + <li class="never" data-hits="" data-linenumber="153"> <code class="ruby"> :operation_timeout =&gt; @timeout_in_seconds,</code> </li> - <li class="missed" data-hits="0" data-linenumber="134"> + <li class="covered" data-hits="3" data-linenumber="154"> + <span class="hits">3</span> - <code class="ruby"> :basic_auth_only =&gt; true }</code> </li> - <li class="never" data-hits="" data-linenumber="135"> + <li class="never" data-hits="" data-linenumber="155"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="136"> + <li class="never" data-hits="" data-linenumber="156"> <code class="ruby"> </code> </li> - <li class="never" data-hits="" data-linenumber="137"> + <li class="never" data-hits="" data-linenumber="157"> <code class="ruby"> end #WinShell class</code> </li> - <li class="never" data-hits="" data-linenumber="138"> + <li class="never" data-hits="" data-linenumber="158"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="139"> + <li class="never" data-hits="" data-linenumber="159"> <code class="ruby">end</code> </li> </ol> </pre> </div> + <div class="source_table" id="defc50d3a200328d3130424dcb644d83faccadaa"> + <div class="header"> + <h3>lib/vagrant-windows/communication/winrmshell_factory.rb</h3> + <h4><span class="yellow">90.0 %</span> covered</h4> + <div> + <b>10</b> relevant lines. + <span class="green"><b>9</b> lines covered</span> and + <span class="red"><b>1</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">require_relative 'winrmshell'</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="2"> + <span class="hits">1</span> + + <code class="ruby">require_relative 'winrmfinder'</code> + </li> + + <li class="never" data-hits="" data-linenumber="3"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="4"> + <span class="hits">1</span> + + <code class="ruby">module VagrantWindows</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="5"> + <span class="hits">1</span> + + <code class="ruby"> module Communication</code> + </li> + + <li class="never" data-hits="" data-linenumber="6"> + + + <code class="ruby"> </code> + </li> + + <li class="never" data-hits="" data-linenumber="7"> + + + <code class="ruby"> # Factory class for generating new WinRMShell instances</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="8"> + <span class="hits">1</span> + + <code class="ruby"> class WinRMShellFactory</code> + </li> + + <li class="never" data-hits="" data-linenumber="9"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="10"> + + + <code class="ruby"> # @param [WindowsMachine] The Windows machine instance</code> + </li> + + <li class="never" data-hits="" data-linenumber="11"> + + + <code class="ruby"> # @param [WinRMFinder] The WinRMFinder instance</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="12"> + <span class="hits">1</span> + + <code class="ruby"> def initialize(windows_machine, winrm_finder)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="13"> + <span class="hits">1</span> + + <code class="ruby"> @windows_machine = windows_machine</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="14"> + <span class="hits">1</span> + + <code class="ruby"> @winrm_finder = winrm_finder</code> + </li> + + <li class="never" data-hits="" data-linenumber="15"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="16"> + + + <code class="ruby"> </code> + </li> + + <li class="never" data-hits="" data-linenumber="17"> + + + <code class="ruby"> # Creates a new WinRMShell instance</code> + </li> + + <li class="never" data-hits="" data-linenumber="18"> + + + <code class="ruby"> #</code> + </li> + + <li class="never" data-hits="" data-linenumber="19"> + + + <code class="ruby"> # @return [WinRMShell]</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="20"> + <span class="hits">1</span> + + <code class="ruby"> def create_winrm_shell()</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="21"> + + + <code class="ruby"> WinRMShell.new(</code> + </li> + + <li class="never" data-hits="" data-linenumber="22"> + + + <code class="ruby"> @winrm_finder.winrm_host_address(),</code> + </li> + + <li class="never" data-hits="" data-linenumber="23"> + + + <code class="ruby"> @windows_machine.winrm_config.username,</code> + </li> + + <li class="never" data-hits="" data-linenumber="24"> + + + <code class="ruby"> @windows_machine.winrm_config.password,</code> + </li> + + <li class="never" data-hits="" data-linenumber="25"> + + + <code class="ruby"> {</code> + </li> + + <li class="never" data-hits="" data-linenumber="26"> + + + <code class="ruby"> :port =&gt; @winrm_finder.winrm_host_port(),</code> + </li> + + <li class="never" data-hits="" data-linenumber="27"> + + + <code class="ruby"> :timeout_in_seconds =&gt; @windows_machine.winrm_config.timeout,</code> + </li> + + <li class="never" data-hits="" data-linenumber="28"> + + + <code class="ruby"> :max_tries =&gt; @windows_machine.winrm_config.max_tries</code> + </li> + + <li class="never" data-hits="" data-linenumber="29"> + + + <code class="ruby"> })</code> + </li> + + <li class="never" data-hits="" data-linenumber="30"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="31"> + + + <code class="ruby"> </code> + </li> + + <li class="never" data-hits="" data-linenumber="32"> + + + <code class="ruby"> end #WinShell class</code> + </li> + + <li class="never" data-hits="" data-linenumber="33"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="34"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + <div class="source_table" id="ec6c148e559f5558fb277fea15c45c85fa409d28"> <div class="header"> <h3>lib/vagrant-windows/config/windows.rb</h3> <h4><span class="red">76.19 %</span> covered</h4> <div> @@ -4293,15 +4449,15 @@ </div> <div class="source_table" id="54eeb382b101f2c6d7d6a73b691b4d03621b9f54"> <div class="header"> <h3>lib/vagrant-windows/helper.rb</h3> - <h4><span class="green">100.0 %</span> covered</h4> + <h4><span class="red">75.0 %</span> covered</h4> <div> - <b>12</b> relevant lines. + <b>16</b> relevant lines. <span class="green"><b>12</b> lines covered</span> and - <span class="red"><b>0</b> lines missed.</span> + <span class="red"><b>4</b> lines missed.</span> </div> </div> <pre> <ol> @@ -4328,179 +4484,221 @@ <code class="ruby"> </code> </li> - <li class="never" data-hits="" data-linenumber="5"> + <li class="covered" data-hits="1" data-linenumber="5"> + <span class="hits">1</span> + <code class="ruby"> @@logger = Log4r::Logger.new(&quot;vagrant_windows::helper&quot;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="6"> + + <code class="ruby"> </code> + </li> + + <li class="never" data-hits="" data-linenumber="7"> + + <code class="ruby"> # Makes a path Windows guest friendly.</code> </li> - <li class="never" data-hits="" data-linenumber="6"> + <li class="never" data-hits="" data-linenumber="8"> <code class="ruby"> # Turns '/vagrant' into 'c:\vagrant'</code> </li> - <li class="never" data-hits="" data-linenumber="7"> + <li class="never" data-hits="" data-linenumber="9"> <code class="ruby"> #</code> </li> - <li class="never" data-hits="" data-linenumber="8"> + <li class="never" data-hits="" data-linenumber="10"> <code class="ruby"> # @return [String]</code> </li> - <li class="covered" data-hits="1" data-linenumber="9"> + <li class="covered" data-hits="1" data-linenumber="11"> <span class="hits">1</span> <code class="ruby"> def win_friendly_path(path)</code> </li> - <li class="covered" data-hits="3" data-linenumber="10"> + <li class="covered" data-hits="3" data-linenumber="12"> <span class="hits">3</span> <code class="ruby"> if path</code> </li> - <li class="covered" data-hits="2" data-linenumber="11"> + <li class="covered" data-hits="2" data-linenumber="13"> <span class="hits">2</span> <code class="ruby"> new_path = path.gsub('/', '\\')</code> </li> - <li class="covered" data-hits="2" data-linenumber="12"> + <li class="covered" data-hits="2" data-linenumber="14"> <span class="hits">2</span> <code class="ruby"> new_path = &quot;c:#{new_path}&quot; if new_path =~ /^\\/</code> </li> - <li class="never" data-hits="" data-linenumber="13"> + <li class="never" data-hits="" data-linenumber="15"> <code class="ruby"> end</code> </li> - <li class="covered" data-hits="3" data-linenumber="14"> + <li class="covered" data-hits="3" data-linenumber="16"> <span class="hits">3</span> <code class="ruby"> new_path</code> </li> - <li class="never" data-hits="" data-linenumber="15"> + <li class="never" data-hits="" data-linenumber="17"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="16"> + <li class="never" data-hits="" data-linenumber="18"> <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="17"> + <li class="never" data-hits="" data-linenumber="19"> <code class="ruby"> # Makes Vagrant share names Windows guest friendly.</code> </li> - <li class="never" data-hits="" data-linenumber="18"> + <li class="never" data-hits="" data-linenumber="20"> <code class="ruby"> # Turns '/vagrant' into 'vagrant' or turns ''/a/b/c/d/e' into 'a_b_c_d_e'</code> </li> - <li class="never" data-hits="" data-linenumber="19"> + <li class="never" data-hits="" data-linenumber="21"> <code class="ruby"> #</code> </li> - <li class="never" data-hits="" data-linenumber="20"> + <li class="never" data-hits="" data-linenumber="22"> <code class="ruby"> # @return [String]</code> </li> - <li class="covered" data-hits="1" data-linenumber="21"> + <li class="covered" data-hits="1" data-linenumber="23"> <span class="hits">1</span> <code class="ruby"> def win_friendly_share_id(shared_folder_name)</code> </li> - <li class="covered" data-hits="4" data-linenumber="22"> + <li class="covered" data-hits="4" data-linenumber="24"> <span class="hits">4</span> <code class="ruby"> return shared_folder_name.gsub(/[\/\/]/,'_').sub(/^_/, '')</code> </li> - <li class="never" data-hits="" data-linenumber="23"> + <li class="never" data-hits="" data-linenumber="25"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="24"> + <li class="never" data-hits="" data-linenumber="26"> <code class="ruby"> </code> </li> - <li class="never" data-hits="" data-linenumber="25"> + <li class="never" data-hits="" data-linenumber="27"> - <code class="ruby"> # Checks to see if the specified machine is using VMWare Fusion or Workstation.</code> + <code class="ruby"> # Check to see if the guest is rebooting, if its rebooting then wait until its ready</code> </li> - <li class="never" data-hits="" data-linenumber="26"> + <li class="never" data-hits="" data-linenumber="28"> <code class="ruby"> #</code> </li> - <li class="never" data-hits="" data-linenumber="27"> + <li class="never" data-hits="" data-linenumber="29"> - <code class="ruby"> # @return [Boolean]</code> + <code class="ruby"> # @param [WindowsMachine] The windows machine instance</code> </li> - <li class="covered" data-hits="1" data-linenumber="28"> + <li class="never" data-hits="" data-linenumber="30"> + + + <code class="ruby"> # @param [Int] The time in seconds to wait between checks</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="31"> <span class="hits">1</span> - <code class="ruby"> def is_vmware(machine)</code> + <code class="ruby"> def wait_if_rebooting(windows_machine, wait_in_seconds=10)</code> </li> - <li class="covered" data-hits="3" data-linenumber="29"> - <span class="hits">3</span> + <li class="missed" data-hits="0" data-linenumber="32"> - <code class="ruby"> machine.provider_name.to_s().start_with?('vmware')</code> + + <code class="ruby"> @@logger.info('Checking guest reboot status')</code> </li> - <li class="never" data-hits="" data-linenumber="30"> + <li class="missed" data-hits="0" data-linenumber="33"> + <code class="ruby"> while windows_machine.is_rebooting? </code> + </li> + + <li class="missed" data-hits="0" data-linenumber="34"> + + + <code class="ruby"> @@logger.debug('Guest is rebooting, waiting 10 seconds...')</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="35"> + + + <code class="ruby"> sleep(wait_in_seconds)</code> + </li> + + <li class="never" data-hits="" data-linenumber="36"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="37"> + + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="31"> + <li class="never" data-hits="" data-linenumber="38"> - <code class="ruby"> </code> + <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="32"> + <li class="never" data-hits="" data-linenumber="39"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="33"> + <li class="never" data-hits="" data-linenumber="40"> <code class="ruby">end</code> </li> @@ -5163,15 +5361,15 @@ </div> <div class="source_table" id="445364063a8c3e2a428ea7fe4036b1ec8a3a1277"> <div class="header"> <h3>lib/vagrant-windows/monkey_patches/plugins/provisioners/chef/provisioner/chef_solo.rb</h3> - <h4><span class="red">32.14 %</span> covered</h4> + <h4><span class="red">34.0 %</span> covered</h4> <div> - <b>56</b> relevant lines. - <span class="green"><b>18</b> lines covered</span> and - <span class="red"><b>38</b> lines missed.</span> + <b>50</b> relevant lines. + <span class="green"><b>17</b> lines covered</span> and + <span class="red"><b>33</b> lines missed.</span> </div> </div> <pre> <ol> @@ -5192,773 +5390,695 @@ <span class="hits">1</span> <code class="ruby">require_relative '../../../../../helper'</code> </li> - <li class="never" data-hits="" data-linenumber="4"> + <li class="covered" data-hits="1" data-linenumber="4"> + <span class="hits">1</span> + <code class="ruby">require_relative '../../../../../windows_machine'</code> + </li> + + <li class="never" data-hits="" data-linenumber="5"> + <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="5"> + <li class="covered" data-hits="1" data-linenumber="6"> <span class="hits">1</span> <code class="ruby">module VagrantPlugins</code> </li> - <li class="covered" data-hits="1" data-linenumber="6"> + <li class="covered" data-hits="1" data-linenumber="7"> <span class="hits">1</span> <code class="ruby"> module Chef</code> </li> - <li class="covered" data-hits="1" data-linenumber="7"> + <li class="covered" data-hits="1" data-linenumber="8"> <span class="hits">1</span> <code class="ruby"> module Provisioner</code> </li> - <li class="covered" data-hits="1" data-linenumber="8"> + <li class="covered" data-hits="1" data-linenumber="9"> <span class="hits">1</span> <code class="ruby"> class ChefSolo &lt; Base</code> </li> - <li class="never" data-hits="" data-linenumber="9"> + <li class="never" data-hits="" data-linenumber="10"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="10"> + <li class="covered" data-hits="1" data-linenumber="11"> <span class="hits">1</span> <code class="ruby"> include VagrantWindows::Helper</code> </li> - <li class="never" data-hits="" data-linenumber="11"> + <li class="never" data-hits="" data-linenumber="12"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="12"> + <li class="covered" data-hits="1" data-linenumber="13"> <span class="hits">1</span> <code class="ruby"> provision_on_linux = instance_method(:provision)</code> </li> - <li class="covered" data-hits="1" data-linenumber="13"> + <li class="covered" data-hits="1" data-linenumber="14"> <span class="hits">1</span> <code class="ruby"> run_chef_solo_on_linux = instance_method(:run_chef_solo)</code> </li> - <li class="never" data-hits="" data-linenumber="14"> + <li class="never" data-hits="" data-linenumber="15"> <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="15"> + <li class="never" data-hits="" data-linenumber="16"> <code class="ruby"> # This patch is needed until Vagrant supports chef on Windows guests</code> </li> - <li class="covered" data-hits="1" data-linenumber="16"> + <li class="covered" data-hits="1" data-linenumber="17"> <span class="hits">1</span> <code class="ruby"> define_method(:run_chef_solo) do</code> </li> - <li class="missed" data-hits="0" data-linenumber="17"> + <li class="missed" data-hits="0" data-linenumber="18"> - <code class="ruby"> is_windows ? run_chef_solo_on_windows() : run_chef_solo_on_linux.bind(self).()</code> + <code class="ruby"> is_windows? ? run_chef_solo_on_windows() : run_chef_solo_on_linux.bind(self).()</code> </li> - <li class="never" data-hits="" data-linenumber="18"> + <li class="never" data-hits="" data-linenumber="19"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="19"> + <li class="never" data-hits="" data-linenumber="20"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="20"> + <li class="covered" data-hits="1" data-linenumber="21"> <span class="hits">1</span> <code class="ruby"> define_method(:provision) do</code> </li> - <li class="missed" data-hits="0" data-linenumber="21"> - - - <code class="ruby"> wait_if_rebooting() if is_windows</code> - </li> - <li class="missed" data-hits="0" data-linenumber="22"> - <code class="ruby"> provision_on_linux.bind(self).()</code> + <code class="ruby"> windows_machine = VagrantWindows::WindowsMachine.new(@machine)</code> </li> - <li class="never" data-hits="" data-linenumber="23"> + <li class="missed" data-hits="0" data-linenumber="23"> - <code class="ruby"> end</code> + <code class="ruby"> wait_if_rebooting(windows_machine) if is_windows?</code> </li> - <li class="never" data-hits="" data-linenumber="24"> + <li class="missed" data-hits="0" data-linenumber="24"> - <code class="ruby"> </code> + <code class="ruby"> provision_on_linux.bind(self).()</code> </li> - <li class="covered" data-hits="1" data-linenumber="25"> - <span class="hits">1</span> + <li class="never" data-hits="" data-linenumber="25"> - <code class="ruby"> def wait_if_rebooting</code> - </li> - - <li class="never" data-hits="" data-linenumber="26"> - - <code class="ruby"> # Check to see if the guest is rebooting, if its rebooting then wait until its ready</code> - </li> - - <li class="missed" data-hits="0" data-linenumber="27"> - - - <code class="ruby"> @logger.info('Checking guest reboot status')</code> - </li> - - <li class="never" data-hits="" data-linenumber="28"> - - - <code class="ruby"> </code> - </li> - - <li class="missed" data-hits="0" data-linenumber="29"> - - - <code class="ruby"> while is_rebooting?(machine) </code> - </li> - - <li class="missed" data-hits="0" data-linenumber="30"> - - - <code class="ruby"> @logger.debug('Guest is rebooting, waiting 10 seconds...')</code> - </li> - - <li class="missed" data-hits="0" data-linenumber="31"> - - - <code class="ruby"> sleep(10)</code> - </li> - - <li class="never" data-hits="" data-linenumber="32"> - - - <code class="ruby"> end</code> - </li> - - <li class="never" data-hits="" data-linenumber="33"> - - <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="34"> + <li class="never" data-hits="" data-linenumber="26"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="35"> + <li class="covered" data-hits="1" data-linenumber="27"> <span class="hits">1</span> - <code class="ruby"> def run_chef_solo_on_windows </code> + <code class="ruby"> def run_chef_solo_on_windows</code> </li> - <li class="never" data-hits="" data-linenumber="36"> + <li class="never" data-hits="" data-linenumber="28"> <code class="ruby"> # create cheftaskrun.ps1 that the scheduled task will invoke when run</code> </li> - <li class="missed" data-hits="0" data-linenumber="37"> + <li class="missed" data-hits="0" data-linenumber="29"> <code class="ruby"> render_file_and_upload(&quot;cheftaskrun.ps1&quot;, chef_script_options[:chef_task_run_ps1], :options =&gt; chef_script_options)</code> </li> - <li class="never" data-hits="" data-linenumber="38"> + <li class="never" data-hits="" data-linenumber="30"> <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="39"> + <li class="never" data-hits="" data-linenumber="31"> <code class="ruby"> # create cheftask.xml that the scheduled task will be created with</code> </li> - <li class="missed" data-hits="0" data-linenumber="40"> + <li class="missed" data-hits="0" data-linenumber="32"> <code class="ruby"> render_file_and_upload(&quot;cheftask.xml&quot;, chef_script_options[:chef_task_xml], :options =&gt; chef_script_options)</code> </li> - <li class="never" data-hits="" data-linenumber="41"> + <li class="never" data-hits="" data-linenumber="33"> <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="42"> + <li class="never" data-hits="" data-linenumber="34"> <code class="ruby"> # create cheftask.ps1 that will immediately invoke the scheduled task and wait for completion</code> </li> - <li class="missed" data-hits="0" data-linenumber="43"> + <li class="missed" data-hits="0" data-linenumber="35"> <code class="ruby"> render_file_and_upload(&quot;cheftask.ps1&quot;, chef_script_options[:chef_task_ps1], :options =&gt; chef_script_options)</code> </li> - <li class="never" data-hits="" data-linenumber="44"> + <li class="never" data-hits="" data-linenumber="36"> <code class="ruby"> </code> </li> - <li class="missed" data-hits="0" data-linenumber="45"> + <li class="missed" data-hits="0" data-linenumber="37"> <code class="ruby"> command = &lt;&lt;-EOH</code> </li> - <li class="never" data-hits="" data-linenumber="46"> + <li class="never" data-hits="" data-linenumber="38"> <code class="ruby"> $old = Get-ExecutionPolicy;</code> </li> - <li class="never" data-hits="" data-linenumber="47"> + <li class="never" data-hits="" data-linenumber="39"> <code class="ruby"> Set-ExecutionPolicy Unrestricted -force;</code> </li> - <li class="never" data-hits="" data-linenumber="48"> + <li class="never" data-hits="" data-linenumber="40"> <code class="ruby"> #{chef_script_options[:chef_task_ps1]};</code> </li> - <li class="never" data-hits="" data-linenumber="49"> + <li class="never" data-hits="" data-linenumber="41"> <code class="ruby"> Set-ExecutionPolicy $old -force</code> </li> - <li class="never" data-hits="" data-linenumber="50"> + <li class="never" data-hits="" data-linenumber="42"> <code class="ruby"> exit $LASTEXITCODE</code> </li> - <li class="never" data-hits="" data-linenumber="51"> + <li class="never" data-hits="" data-linenumber="43"> <code class="ruby"> EOH</code> </li> - <li class="never" data-hits="" data-linenumber="52"> + <li class="never" data-hits="" data-linenumber="44"> <code class="ruby"></code> </li> - <li class="missed" data-hits="0" data-linenumber="53"> + <li class="missed" data-hits="0" data-linenumber="45"> <code class="ruby"> @config.attempts.times do |attempt|</code> </li> - <li class="missed" data-hits="0" data-linenumber="54"> + <li class="missed" data-hits="0" data-linenumber="46"> <code class="ruby"> if attempt == 0</code> </li> - <li class="missed" data-hits="0" data-linenumber="55"> + <li class="missed" data-hits="0" data-linenumber="47"> <code class="ruby"> @machine.env.ui.info I18n.t(&quot;vagrant.provisioners.chef.running_solo&quot;)</code> </li> - <li class="never" data-hits="" data-linenumber="56"> + <li class="never" data-hits="" data-linenumber="48"> <code class="ruby"> else</code> </li> - <li class="missed" data-hits="0" data-linenumber="57"> + <li class="missed" data-hits="0" data-linenumber="49"> <code class="ruby"> @machine.env.ui.info I18n.t(&quot;vagrant.provisioners.chef.running_solo_again&quot;)</code> </li> - <li class="never" data-hits="" data-linenumber="58"> + <li class="never" data-hits="" data-linenumber="50"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="59"> + <li class="never" data-hits="" data-linenumber="51"> <code class="ruby"> </code> </li> - <li class="never" data-hits="" data-linenumber="60"> + <li class="never" data-hits="" data-linenumber="52"> <code class="ruby"> # This re-establishes our symbolic links if they were created between now and a reboot</code> </li> - <li class="never" data-hits="" data-linenumber="61"> + <li class="never" data-hits="" data-linenumber="53"> <code class="ruby"> # Fixes issue #119</code> </li> - <li class="missed" data-hits="0" data-linenumber="62"> + <li class="missed" data-hits="0" data-linenumber="54"> <code class="ruby"> @machine.communicate.execute('&amp; net use a-non-existant-share', :error_check =&gt; false)</code> </li> - <li class="never" data-hits="" data-linenumber="63"> + <li class="never" data-hits="" data-linenumber="55"> <code class="ruby"></code> </li> - <li class="missed" data-hits="0" data-linenumber="64"> + <li class="missed" data-hits="0" data-linenumber="56"> <code class="ruby"> exit_status = @machine.communicate.execute(command, :error_check =&gt; false) do |type, data|</code> </li> - <li class="never" data-hits="" data-linenumber="65"> + <li class="never" data-hits="" data-linenumber="57"> <code class="ruby"> # Output the data with the proper color based on the stream.</code> </li> - <li class="missed" data-hits="0" data-linenumber="66"> + <li class="missed" data-hits="0" data-linenumber="58"> <code class="ruby"> color = type == :stdout ? :green : :red</code> </li> - <li class="never" data-hits="" data-linenumber="67"> + <li class="never" data-hits="" data-linenumber="59"> <code class="ruby"></code> </li> - <li class="missed" data-hits="0" data-linenumber="68"> + <li class="missed" data-hits="0" data-linenumber="60"> <code class="ruby"> @machine.env.ui.info(</code> </li> - <li class="never" data-hits="" data-linenumber="69"> + <li class="never" data-hits="" data-linenumber="61"> <code class="ruby"> data, :color =&gt; color, :new_line =&gt; false, :prefix =&gt; false)</code> </li> - <li class="never" data-hits="" data-linenumber="70"> + <li class="never" data-hits="" data-linenumber="62"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="71"> + <li class="never" data-hits="" data-linenumber="63"> <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="72"> + <li class="never" data-hits="" data-linenumber="64"> <code class="ruby"> # There is no need to run Chef again if it converges</code> </li> - <li class="missed" data-hits="0" data-linenumber="73"> + <li class="missed" data-hits="0" data-linenumber="65"> <code class="ruby"> return if exit_status == 0</code> </li> - <li class="never" data-hits="" data-linenumber="74"> + <li class="never" data-hits="" data-linenumber="66"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="75"> + <li class="never" data-hits="" data-linenumber="67"> <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="76"> + <li class="never" data-hits="" data-linenumber="68"> <code class="ruby"> # If we reached this point then Chef never converged! Error.</code> </li> - <li class="missed" data-hits="0" data-linenumber="77"> + <li class="missed" data-hits="0" data-linenumber="69"> <code class="ruby"> raise ChefError, :no_convergence</code> </li> - <li class="never" data-hits="" data-linenumber="78"> + <li class="never" data-hits="" data-linenumber="70"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="79"> + <li class="never" data-hits="" data-linenumber="71"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="80"> + <li class="covered" data-hits="1" data-linenumber="72"> <span class="hits">1</span> <code class="ruby"> def render_file_and_upload(script_name, dest_file, options)</code> </li> - <li class="missed" data-hits="0" data-linenumber="81"> + <li class="missed" data-hits="0" data-linenumber="73"> <code class="ruby"> script_contents = VagrantWindows.load_script_template(script_name, options)</code> </li> - <li class="never" data-hits="" data-linenumber="82"> + <li class="never" data-hits="" data-linenumber="74"> <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="83"> + <li class="never" data-hits="" data-linenumber="75"> <code class="ruby"> # render cheftaskrun.ps1 to local temp file</code> </li> - <li class="missed" data-hits="0" data-linenumber="84"> + <li class="missed" data-hits="0" data-linenumber="76"> <code class="ruby"> script_local = Tempfile.new(script_name)</code> </li> - <li class="missed" data-hits="0" data-linenumber="85"> + <li class="missed" data-hits="0" data-linenumber="77"> <code class="ruby"> IO.write(script_local, script_contents)</code> </li> - <li class="never" data-hits="" data-linenumber="86"> + <li class="never" data-hits="" data-linenumber="78"> <code class="ruby"> </code> </li> - <li class="never" data-hits="" data-linenumber="87"> + <li class="never" data-hits="" data-linenumber="79"> <code class="ruby"> # upload cheftaskrun.ps1 file</code> </li> - <li class="missed" data-hits="0" data-linenumber="88"> + <li class="missed" data-hits="0" data-linenumber="80"> <code class="ruby"> @machine.communicate.upload(script_local, dest_file)</code> </li> - <li class="never" data-hits="" data-linenumber="89"> + <li class="never" data-hits="" data-linenumber="81"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="90"> + <li class="never" data-hits="" data-linenumber="82"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="91"> + <li class="covered" data-hits="1" data-linenumber="83"> <span class="hits">1</span> <code class="ruby"> def chef_script_options</code> </li> - <li class="missed" data-hits="0" data-linenumber="92"> + <li class="missed" data-hits="0" data-linenumber="84"> <code class="ruby"> if @chef_script_options.nil?</code> </li> - <li class="missed" data-hits="0" data-linenumber="93"> + <li class="missed" data-hits="0" data-linenumber="85"> <code class="ruby"> command_env = @config.binary_env ? &quot;#{@config.binary_env} &quot; : &quot;&quot;</code> </li> - <li class="missed" data-hits="0" data-linenumber="94"> + <li class="missed" data-hits="0" data-linenumber="86"> <code class="ruby"> command_args = @config.arguments ? &quot; #{@config.arguments}&quot; : &quot;&quot;</code> </li> - <li class="missed" data-hits="0" data-linenumber="95"> + <li class="missed" data-hits="0" data-linenumber="87"> <code class="ruby"> chef_solo_path = win_friendly_path(File.join(@config.provisioning_path, 'solo.rb'))</code> </li> - <li class="missed" data-hits="0" data-linenumber="96"> + <li class="missed" data-hits="0" data-linenumber="88"> <code class="ruby"> chef_dna_path = win_friendly_path(File.join(@config.provisioning_path, 'dna.json'))</code> </li> - <li class="never" data-hits="" data-linenumber="97"> + <li class="never" data-hits="" data-linenumber="89"> <code class="ruby"> </code> </li> - <li class="missed" data-hits="0" data-linenumber="98"> + <li class="missed" data-hits="0" data-linenumber="90"> <code class="ruby"> chef_arguments = &quot;-c #{chef_solo_path} &quot;</code> </li> - <li class="missed" data-hits="0" data-linenumber="99"> + <li class="missed" data-hits="0" data-linenumber="91"> <code class="ruby"> chef_arguments &lt;&lt; &quot;-j #{chef_dna_path} &quot;</code> </li> - <li class="missed" data-hits="0" data-linenumber="100"> + <li class="missed" data-hits="0" data-linenumber="92"> <code class="ruby"> chef_arguments &lt;&lt; &quot;#{command_args}&quot;</code> </li> - <li class="never" data-hits="" data-linenumber="101"> + <li class="never" data-hits="" data-linenumber="93"> <code class="ruby"> </code> </li> - <li class="missed" data-hits="0" data-linenumber="102"> + <li class="missed" data-hits="0" data-linenumber="94"> <code class="ruby"> @chef_script_options = {</code> </li> - <li class="never" data-hits="" data-linenumber="103"> + <li class="never" data-hits="" data-linenumber="95"> <code class="ruby"> :user =&gt; @machine.config.winrm.username,</code> </li> - <li class="never" data-hits="" data-linenumber="104"> + <li class="never" data-hits="" data-linenumber="96"> <code class="ruby"> :pass =&gt; @machine.config.winrm.password,</code> </li> - <li class="never" data-hits="" data-linenumber="105"> + <li class="never" data-hits="" data-linenumber="97"> <code class="ruby"> :chef_arguments =&gt; chef_arguments,</code> </li> - <li class="never" data-hits="" data-linenumber="106"> + <li class="never" data-hits="" data-linenumber="98"> <code class="ruby"> :chef_task_xml =&gt; win_friendly_path(&quot;#{@config.provisioning_path}/cheftask.xml&quot;),</code> </li> - <li class="never" data-hits="" data-linenumber="107"> + <li class="never" data-hits="" data-linenumber="99"> <code class="ruby"> :chef_task_running =&gt; win_friendly_path(&quot;#{@config.provisioning_path}/cheftask.running&quot;),</code> </li> - <li class="never" data-hits="" data-linenumber="108"> + <li class="never" data-hits="" data-linenumber="100"> <code class="ruby"> :chef_task_exitcode =&gt; win_friendly_path(&quot;#{@config.provisioning_path}/cheftask.exitcode&quot;),</code> </li> - <li class="never" data-hits="" data-linenumber="109"> + <li class="never" data-hits="" data-linenumber="101"> <code class="ruby"> :chef_task_ps1 =&gt; win_friendly_path(&quot;#{@config.provisioning_path}/cheftask.ps1&quot;),</code> </li> - <li class="never" data-hits="" data-linenumber="110"> + <li class="never" data-hits="" data-linenumber="102"> <code class="ruby"> :chef_task_run_ps1 =&gt; win_friendly_path(&quot;#{@config.provisioning_path}/cheftaskrun.ps1&quot;),</code> </li> - <li class="never" data-hits="" data-linenumber="111"> + <li class="never" data-hits="" data-linenumber="103"> <code class="ruby"> :chef_stdout_log =&gt; win_friendly_path(&quot;#{@config.provisioning_path}/chef-solo.log&quot;),</code> </li> - <li class="never" data-hits="" data-linenumber="112"> + <li class="never" data-hits="" data-linenumber="104"> <code class="ruby"> :chef_stderr_log =&gt; win_friendly_path(&quot;#{@config.provisioning_path}/chef-solo.err.log&quot;),</code> </li> - <li class="never" data-hits="" data-linenumber="113"> + <li class="never" data-hits="" data-linenumber="105"> <code class="ruby"> :chef_binary_path =&gt; win_friendly_path(&quot;#{command_env}#{chef_binary_path(&quot;chef-solo&quot;)}&quot;)</code> </li> - <li class="never" data-hits="" data-linenumber="114"> + <li class="never" data-hits="" data-linenumber="106"> <code class="ruby"> }</code> </li> - <li class="never" data-hits="" data-linenumber="115"> + <li class="never" data-hits="" data-linenumber="107"> <code class="ruby"> end</code> </li> - <li class="missed" data-hits="0" data-linenumber="116"> + <li class="missed" data-hits="0" data-linenumber="108"> <code class="ruby"> @chef_script_options</code> </li> - <li class="never" data-hits="" data-linenumber="117"> + <li class="never" data-hits="" data-linenumber="109"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="118"> + <li class="never" data-hits="" data-linenumber="110"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="119"> + <li class="covered" data-hits="1" data-linenumber="111"> <span class="hits">1</span> - <code class="ruby"> def is_rebooting?(machine)</code> + <code class="ruby"> def is_windows?</code> </li> - <li class="missed" data-hits="0" data-linenumber="120"> + <li class="missed" data-hits="0" data-linenumber="112"> - <code class="ruby"> reboot_detect_script = VagrantWindows.load_script('reboot_detect.ps1')</code> + <code class="ruby"> VagrantWindows::WindowsMachine.is_windows?(@machine)</code> </li> - <li class="missed" data-hits="0" data-linenumber="121"> + <li class="never" data-hits="" data-linenumber="113"> - <code class="ruby"> @machine.communicate.execute(reboot_detect_script, :error_check =&gt; false) != 0</code> - </li> - - <li class="never" data-hits="" data-linenumber="122"> - - <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="123"> + <li class="never" data-hits="" data-linenumber="114"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="124"> - <span class="hits">1</span> + <li class="never" data-hits="" data-linenumber="115"> - <code class="ruby"> def is_windows</code> - </li> - - <li class="missed" data-hits="0" data-linenumber="125"> - - <code class="ruby"> @machine.config.vm.guest.eql? :windows</code> - </li> - - <li class="never" data-hits="" data-linenumber="126"> - - - <code class="ruby"> end</code> - </li> - - <li class="never" data-hits="" data-linenumber="127"> - - - <code class="ruby"> </code> - </li> - - <li class="never" data-hits="" data-linenumber="128"> - - <code class="ruby"> end # ChefSolo class</code> </li> - <li class="never" data-hits="" data-linenumber="129"> + <li class="never" data-hits="" data-linenumber="116"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="130"> + <li class="never" data-hits="" data-linenumber="117"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="131"> + <li class="never" data-hits="" data-linenumber="118"> <code class="ruby">end</code> </li> @@ -5967,15 +6087,15 @@ </div> <div class="source_table" id="9387455ce27f9821d2f4388bcb52524681914003"> <div class="header"> <h3>lib/vagrant-windows/monkey_patches/plugins/provisioners/puppet/provisioner/puppet.rb</h3> - <h4><span class="red">21.05 %</span> covered</h4> + <h4><span class="red">26.15 %</span> covered</h4> <div> - <b>57</b> relevant lines. - <span class="green"><b>12</b> lines covered</span> and - <span class="red"><b>45</b> lines missed.</span> + <b>65</b> relevant lines. + <span class="green"><b>17</b> lines covered</span> and + <span class="red"><b>48</b> lines missed.</span> </div> </div> <pre> <ol> @@ -5984,707 +6104,773 @@ <span class="hits">1</span> <code class="ruby">require &quot;#{Vagrant::source_root}/plugins/provisioners/puppet/provisioner/puppet&quot;</code> </li> - <li class="never" data-hits="" data-linenumber="2"> + <li class="covered" data-hits="1" data-linenumber="2"> + <span class="hits">1</span> + <code class="ruby">require_relative '../../../../../windows_machine'</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + <code class="ruby">require_relative '../../../../../helper'</code> + </li> + + <li class="never" data-hits="" data-linenumber="4"> + + <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="3"> + <li class="covered" data-hits="1" data-linenumber="5"> <span class="hits">1</span> <code class="ruby">module VagrantPlugins</code> </li> - <li class="covered" data-hits="1" data-linenumber="4"> + <li class="covered" data-hits="1" data-linenumber="6"> <span class="hits">1</span> <code class="ruby"> module Puppet</code> </li> - <li class="covered" data-hits="1" data-linenumber="5"> + <li class="covered" data-hits="1" data-linenumber="7"> <span class="hits">1</span> <code class="ruby"> module Provisioner</code> </li> - <li class="covered" data-hits="1" data-linenumber="6"> + <li class="covered" data-hits="1" data-linenumber="8"> <span class="hits">1</span> <code class="ruby"> class Puppet &lt; Vagrant.plugin(&quot;2&quot;, :provisioner)</code> </li> - <li class="never" data-hits="" data-linenumber="7"> + <li class="never" data-hits="" data-linenumber="9"> + <code class="ruby"> </code> + </li> + + <li class="covered" data-hits="1" data-linenumber="10"> + <span class="hits">1</span> + + <code class="ruby"> include VagrantWindows::Helper</code> + </li> + + <li class="never" data-hits="" data-linenumber="11"> + + <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="8"> + <li class="never" data-hits="" data-linenumber="12"> <code class="ruby"> # This patch is needed until Vagrant supports Puppet on Windows guests</code> </li> - <li class="covered" data-hits="1" data-linenumber="9"> + <li class="covered" data-hits="1" data-linenumber="13"> <span class="hits">1</span> + <code class="ruby"> provision_on_linux = instance_method(:provision)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="14"> + <span class="hits">1</span> + <code class="ruby"> run_puppet_apply_on_linux = instance_method(:run_puppet_apply)</code> </li> - <li class="covered" data-hits="1" data-linenumber="10"> + <li class="covered" data-hits="1" data-linenumber="15"> <span class="hits">1</span> <code class="ruby"> configure_on_linux = instance_method(:configure)</code> </li> - <li class="never" data-hits="" data-linenumber="11"> + <li class="never" data-hits="" data-linenumber="16"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="12"> + <li class="covered" data-hits="1" data-linenumber="17"> <span class="hits">1</span> <code class="ruby"> define_method(:run_puppet_apply) do</code> </li> - <li class="missed" data-hits="0" data-linenumber="13"> + <li class="missed" data-hits="0" data-linenumber="18"> - <code class="ruby"> is_windows ? run_puppet_apply_on_windows() : run_puppet_apply_on_linux.bind(self).()</code> + <code class="ruby"> is_windows? ? run_puppet_apply_on_windows() : run_puppet_apply_on_linux.bind(self).()</code> </li> - <li class="never" data-hits="" data-linenumber="14"> + <li class="never" data-hits="" data-linenumber="19"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="15"> + <li class="never" data-hits="" data-linenumber="20"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="16"> + <li class="covered" data-hits="1" data-linenumber="21"> <span class="hits">1</span> <code class="ruby"> define_method(:configure) do |root_config|</code> </li> - <li class="missed" data-hits="0" data-linenumber="17"> + <li class="missed" data-hits="0" data-linenumber="22"> - <code class="ruby"> is_windows ? configure_on_windows(root_config) : configure_on_linux.bind(self).(root_config)</code> + <code class="ruby"> is_windows? ? configure_on_windows(root_config) : configure_on_linux.bind(self).(root_config)</code> </li> - <li class="never" data-hits="" data-linenumber="18"> + <li class="never" data-hits="" data-linenumber="23"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="19"> + <li class="never" data-hits="" data-linenumber="24"> + <code class="ruby"> </code> + </li> + + <li class="covered" data-hits="1" data-linenumber="25"> + <span class="hits">1</span> + + <code class="ruby"> define_method(:provision) do</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="26"> + + + <code class="ruby"> windows_machine = VagrantWindows::WindowsMachine.new(@machine)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="27"> + + + <code class="ruby"> wait_if_rebooting(windows_machine) if is_windows?</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="28"> + + + <code class="ruby"> provision_on_linux.bind(self).()</code> + </li> + + <li class="never" data-hits="" data-linenumber="29"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="30"> + + <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="20"> + <li class="covered" data-hits="1" data-linenumber="31"> <span class="hits">1</span> <code class="ruby"> def run_puppet_apply_on_windows</code> </li> - <li class="never" data-hits="" data-linenumber="21"> + <li class="never" data-hits="" data-linenumber="32"> <code class="ruby"> </code> </li> - <li class="never" data-hits="" data-linenumber="22"> + <li class="never" data-hits="" data-linenumber="33"> <code class="ruby"> # This re-establishes our symbolic links if they were created between now and a reboot</code> </li> - <li class="missed" data-hits="0" data-linenumber="23"> + <li class="missed" data-hits="0" data-linenumber="34"> <code class="ruby"> @machine.communicate.execute('&amp; net use a-non-existant-share', :error_check =&gt; false)</code> </li> - <li class="never" data-hits="" data-linenumber="24"> + <li class="never" data-hits="" data-linenumber="35"> <code class="ruby"> </code> </li> - <li class="missed" data-hits="0" data-linenumber="25"> + <li class="missed" data-hits="0" data-linenumber="36"> <code class="ruby"> options = [config.options].flatten</code> </li> - <li class="missed" data-hits="0" data-linenumber="26"> + <li class="missed" data-hits="0" data-linenumber="37"> <code class="ruby"> module_paths = @module_paths.map { |_, to| to }</code> </li> - <li class="missed" data-hits="0" data-linenumber="27"> + <li class="missed" data-hits="0" data-linenumber="38"> <code class="ruby"> if !@module_paths.empty?</code> </li> - <li class="never" data-hits="" data-linenumber="28"> + <li class="never" data-hits="" data-linenumber="39"> <code class="ruby"> # Prepend the default module path</code> </li> - <li class="missed" data-hits="0" data-linenumber="29"> + <li class="missed" data-hits="0" data-linenumber="40"> <code class="ruby"> module_paths.unshift(&quot;/ProgramData/PuppetLabs/puppet/etc/modules&quot;)</code> </li> - <li class="never" data-hits="" data-linenumber="30"> + <li class="never" data-hits="" data-linenumber="41"> <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="31"> + <li class="never" data-hits="" data-linenumber="42"> <code class="ruby"> # Add the command line switch to add the module path</code> </li> - <li class="missed" data-hits="0" data-linenumber="32"> + <li class="missed" data-hits="0" data-linenumber="43"> <code class="ruby"> options &lt;&lt; &quot;--modulepath '#{module_paths.join(';')}'&quot;</code> </li> - <li class="never" data-hits="" data-linenumber="33"> + <li class="never" data-hits="" data-linenumber="44"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="34"> + <li class="never" data-hits="" data-linenumber="45"> <code class="ruby"></code> </li> - <li class="missed" data-hits="0" data-linenumber="35"> + <li class="missed" data-hits="0" data-linenumber="46"> <code class="ruby"> if @hiera_config_path</code> </li> - <li class="missed" data-hits="0" data-linenumber="36"> + <li class="missed" data-hits="0" data-linenumber="47"> <code class="ruby"> options &lt;&lt; &quot;--hiera_config=#{@hiera_config_path}&quot;</code> </li> - <li class="never" data-hits="" data-linenumber="37"> + <li class="never" data-hits="" data-linenumber="48"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="38"> + <li class="never" data-hits="" data-linenumber="49"> <code class="ruby"></code> </li> - <li class="missed" data-hits="0" data-linenumber="39"> + <li class="missed" data-hits="0" data-linenumber="50"> <code class="ruby"> if !@machine.env.ui.is_a?(Vagrant::UI::Colored)</code> </li> - <li class="missed" data-hits="0" data-linenumber="40"> + <li class="missed" data-hits="0" data-linenumber="51"> <code class="ruby"> options &lt;&lt; &quot;--color=false&quot;</code> </li> - <li class="never" data-hits="" data-linenumber="41"> + <li class="never" data-hits="" data-linenumber="52"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="42"> + <li class="never" data-hits="" data-linenumber="53"> <code class="ruby"></code> </li> - <li class="missed" data-hits="0" data-linenumber="43"> + <li class="missed" data-hits="0" data-linenumber="54"> <code class="ruby"> options &lt;&lt; &quot;--manifestdir #{manifests_guest_path}&quot;</code> </li> - <li class="missed" data-hits="0" data-linenumber="44"> + <li class="missed" data-hits="0" data-linenumber="55"> <code class="ruby"> options &lt;&lt; &quot;--detailed-exitcodes&quot;</code> </li> - <li class="missed" data-hits="0" data-linenumber="45"> + <li class="missed" data-hits="0" data-linenumber="56"> <code class="ruby"> options &lt;&lt; @manifest_file</code> </li> - <li class="missed" data-hits="0" data-linenumber="46"> + <li class="missed" data-hits="0" data-linenumber="57"> <code class="ruby"> options = options.join(&quot; &quot;)</code> </li> - <li class="never" data-hits="" data-linenumber="47"> + <li class="never" data-hits="" data-linenumber="58"> <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="48"> + <li class="never" data-hits="" data-linenumber="59"> <code class="ruby"> # Build up the custom facts if we have any</code> </li> - <li class="missed" data-hits="0" data-linenumber="49"> + <li class="missed" data-hits="0" data-linenumber="60"> <code class="ruby"> facter = &quot;&quot;</code> </li> - <li class="missed" data-hits="0" data-linenumber="50"> + <li class="missed" data-hits="0" data-linenumber="61"> <code class="ruby"> if !config.facter.empty?</code> </li> - <li class="missed" data-hits="0" data-linenumber="51"> + <li class="missed" data-hits="0" data-linenumber="62"> <code class="ruby"> facts = []</code> </li> - <li class="missed" data-hits="0" data-linenumber="52"> + <li class="missed" data-hits="0" data-linenumber="63"> <code class="ruby"> config.facter.each do |key, value|</code> </li> - <li class="missed" data-hits="0" data-linenumber="53"> + <li class="missed" data-hits="0" data-linenumber="64"> <code class="ruby"> facts &lt;&lt; &quot;$env:FACTER_#{key}='#{value}';&quot;</code> </li> - <li class="never" data-hits="" data-linenumber="54"> + <li class="never" data-hits="" data-linenumber="65"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="55"> + <li class="never" data-hits="" data-linenumber="66"> <code class="ruby"></code> </li> - <li class="missed" data-hits="0" data-linenumber="56"> + <li class="missed" data-hits="0" data-linenumber="67"> <code class="ruby"> facter = &quot;#{facts.join(&quot; &quot;)} &quot;</code> </li> - <li class="never" data-hits="" data-linenumber="57"> + <li class="never" data-hits="" data-linenumber="68"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="58"> + <li class="never" data-hits="" data-linenumber="69"> <code class="ruby"></code> </li> - <li class="missed" data-hits="0" data-linenumber="59"> + <li class="missed" data-hits="0" data-linenumber="70"> <code class="ruby"> command = &quot;#{facter} puppet apply #{options}&quot;</code> </li> - <li class="missed" data-hits="0" data-linenumber="60"> + <li class="missed" data-hits="0" data-linenumber="71"> <code class="ruby"> if config.working_directory</code> </li> - <li class="missed" data-hits="0" data-linenumber="61"> + <li class="missed" data-hits="0" data-linenumber="72"> <code class="ruby"> command = &quot;cd #{config.working_directory}; if($?) \{ #{command} \}&quot;</code> </li> - <li class="never" data-hits="" data-linenumber="62"> + <li class="never" data-hits="" data-linenumber="73"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="63"> + <li class="never" data-hits="" data-linenumber="74"> <code class="ruby"></code> </li> - <li class="missed" data-hits="0" data-linenumber="64"> + <li class="missed" data-hits="0" data-linenumber="75"> <code class="ruby"> @machine.env.ui.info I18n.t(&quot;vagrant.provisioners.puppet.running_puppet&quot;,</code> </li> - <li class="never" data-hits="" data-linenumber="65"> + <li class="never" data-hits="" data-linenumber="76"> <code class="ruby"> :manifest =&gt; @manifest_file)</code> </li> - <li class="never" data-hits="" data-linenumber="66"> + <li class="never" data-hits="" data-linenumber="77"> <code class="ruby"></code> </li> - <li class="missed" data-hits="0" data-linenumber="67"> + <li class="missed" data-hits="0" data-linenumber="78"> <code class="ruby"> @machine.communicate.sudo(command) do |type, data|</code> </li> - <li class="missed" data-hits="0" data-linenumber="68"> + <li class="missed" data-hits="0" data-linenumber="79"> <code class="ruby"> if !data.empty?</code> </li> - <li class="missed" data-hits="0" data-linenumber="69"> + <li class="missed" data-hits="0" data-linenumber="80"> <code class="ruby"> @machine.env.ui.info(data, :new_line =&gt; false, :prefix =&gt; false)</code> </li> - <li class="never" data-hits="" data-linenumber="70"> + <li class="never" data-hits="" data-linenumber="81"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="71"> + <li class="never" data-hits="" data-linenumber="82"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="72"> + <li class="never" data-hits="" data-linenumber="83"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="73"> + <li class="never" data-hits="" data-linenumber="84"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="74"> + <li class="covered" data-hits="1" data-linenumber="85"> <span class="hits">1</span> <code class="ruby"> def configure_on_windows(root_config)</code> </li> - <li class="never" data-hits="" data-linenumber="75"> + <li class="never" data-hits="" data-linenumber="86"> <code class="ruby"> # Calculate the paths we're going to use based on the environment</code> </li> - <li class="missed" data-hits="0" data-linenumber="76"> + <li class="missed" data-hits="0" data-linenumber="87"> <code class="ruby"> root_path = @machine.env.root_path</code> </li> - <li class="missed" data-hits="0" data-linenumber="77"> + <li class="missed" data-hits="0" data-linenumber="88"> <code class="ruby"> @expanded_manifests_path = @config.expanded_manifests_path(root_path)</code> </li> - <li class="missed" data-hits="0" data-linenumber="78"> + <li class="missed" data-hits="0" data-linenumber="89"> <code class="ruby"> @expanded_module_paths = @config.expanded_module_paths(root_path)</code> </li> - <li class="missed" data-hits="0" data-linenumber="79"> + <li class="missed" data-hits="0" data-linenumber="90"> <code class="ruby"> @manifest_file = File.join(manifests_guest_path, @config.manifest_file)</code> </li> - <li class="never" data-hits="" data-linenumber="80"> + <li class="never" data-hits="" data-linenumber="91"> <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="81"> + <li class="never" data-hits="" data-linenumber="92"> <code class="ruby"> # Setup the module paths</code> </li> - <li class="missed" data-hits="0" data-linenumber="82"> + <li class="missed" data-hits="0" data-linenumber="93"> <code class="ruby"> @module_paths = []</code> </li> - <li class="missed" data-hits="0" data-linenumber="83"> + <li class="missed" data-hits="0" data-linenumber="94"> <code class="ruby"> @expanded_module_paths.each_with_index do |path, i|</code> </li> - <li class="missed" data-hits="0" data-linenumber="84"> + <li class="missed" data-hits="0" data-linenumber="95"> <code class="ruby"> @module_paths &lt;&lt; [path, File.join(config.temp_dir, &quot;modules-#{i}&quot;)]</code> </li> - <li class="never" data-hits="" data-linenumber="85"> + <li class="never" data-hits="" data-linenumber="96"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="86"> + <li class="never" data-hits="" data-linenumber="97"> <code class="ruby"></code> </li> - <li class="missed" data-hits="0" data-linenumber="87"> + <li class="missed" data-hits="0" data-linenumber="98"> <code class="ruby"> @logger.debug(&quot;Syncing folders from puppet configure&quot;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="88"> + <li class="missed" data-hits="0" data-linenumber="99"> <code class="ruby"> @logger.debug(&quot;manifests_guest_path = #{manifests_guest_path}&quot;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="89"> + <li class="missed" data-hits="0" data-linenumber="100"> <code class="ruby"> @logger.debug(&quot;expanded_manifests_path = #{@expanded_manifests_path}&quot;)</code> </li> - <li class="never" data-hits="" data-linenumber="90"> + <li class="never" data-hits="" data-linenumber="101"> <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="91"> + <li class="never" data-hits="" data-linenumber="102"> <code class="ruby"> # Windows guest volume mounting fails without an &quot;id&quot; specified</code> </li> - <li class="never" data-hits="" data-linenumber="92"> + <li class="never" data-hits="" data-linenumber="103"> <code class="ruby"> # This hacks around that problem and allows the PS mount script to work</code> </li> - <li class="missed" data-hits="0" data-linenumber="93"> + <li class="missed" data-hits="0" data-linenumber="104"> <code class="ruby"> root_config.vm.synced_folder(</code> </li> - <li class="never" data-hits="" data-linenumber="94"> + <li class="never" data-hits="" data-linenumber="105"> <code class="ruby"> @expanded_manifests_path, manifests_guest_path,</code> </li> - <li class="never" data-hits="" data-linenumber="95"> + <li class="never" data-hits="" data-linenumber="106"> <code class="ruby"> :id =&gt; &quot;v-manifests-1&quot;)</code> </li> - <li class="never" data-hits="" data-linenumber="96"> + <li class="never" data-hits="" data-linenumber="107"> <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="97"> + <li class="never" data-hits="" data-linenumber="108"> <code class="ruby"> # Share the manifests directory with the guest</code> </li> - <li class="never" data-hits="" data-linenumber="98"> + <li class="never" data-hits="" data-linenumber="109"> <code class="ruby"> #root_config.vm.synced_folder(</code> </li> - <li class="never" data-hits="" data-linenumber="99"> + <li class="never" data-hits="" data-linenumber="110"> <code class="ruby"> # @expanded_manifests_path, manifests_guest_path)</code> </li> - <li class="never" data-hits="" data-linenumber="100"> + <li class="never" data-hits="" data-linenumber="111"> <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="101"> + <li class="never" data-hits="" data-linenumber="112"> <code class="ruby"> # Share the module paths</code> </li> - <li class="missed" data-hits="0" data-linenumber="102"> + <li class="missed" data-hits="0" data-linenumber="113"> <code class="ruby"> count = 0</code> </li> - <li class="missed" data-hits="0" data-linenumber="103"> + <li class="missed" data-hits="0" data-linenumber="114"> <code class="ruby"> @module_paths.each do |from, to|</code> </li> - <li class="never" data-hits="" data-linenumber="104"> + <li class="never" data-hits="" data-linenumber="115"> <code class="ruby"> # Sorry for the cryptic key here, but VirtualBox has a strange limit on</code> </li> - <li class="never" data-hits="" data-linenumber="105"> + <li class="never" data-hits="" data-linenumber="116"> <code class="ruby"> # maximum size for it and its something small (around 10)</code> </li> - <li class="missed" data-hits="0" data-linenumber="106"> + <li class="missed" data-hits="0" data-linenumber="117"> <code class="ruby"> root_config.vm.synced_folder(from, to, :id =&gt; &quot;v-modules-#{count}&quot;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="107"> + <li class="missed" data-hits="0" data-linenumber="118"> <code class="ruby"> count += 1</code> </li> - <li class="never" data-hits="" data-linenumber="108"> + <li class="never" data-hits="" data-linenumber="119"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="109"> + <li class="never" data-hits="" data-linenumber="120"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="110"> + <li class="never" data-hits="" data-linenumber="121"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="111"> + <li class="covered" data-hits="1" data-linenumber="122"> <span class="hits">1</span> - <code class="ruby"> def is_windows</code> + <code class="ruby"> def is_windows?</code> </li> - <li class="missed" data-hits="0" data-linenumber="112"> + <li class="missed" data-hits="0" data-linenumber="123"> - <code class="ruby"> @machine.config.vm.guest.eql? :windows</code> + <code class="ruby"> VagrantWindows::WindowsMachine.is_windows?(@machine)</code> </li> - <li class="never" data-hits="" data-linenumber="113"> + <li class="never" data-hits="" data-linenumber="124"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="114"> + <li class="never" data-hits="" data-linenumber="125"> <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="115"> + <li class="never" data-hits="" data-linenumber="126"> <code class="ruby"> end # Puppet class</code> </li> - <li class="never" data-hits="" data-linenumber="116"> + <li class="never" data-hits="" data-linenumber="127"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="117"> + <li class="never" data-hits="" data-linenumber="128"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="118"> + <li class="never" data-hits="" data-linenumber="129"> <code class="ruby">end</code> </li> @@ -6717,15 +6903,15 @@ </div> <div class="source_table" id="8dd805604e0326933cecd09151f4d1dac947b74c"> <div class="header"> <h3>lib/vagrant-windows/monkey_patches/plugins/provisioners/shell/provisioner.rb</h3> - <h4><span class="red">32.43 %</span> covered</h4> + <h4><span class="red">31.58 %</span> covered</h4> <div> - <b>37</b> relevant lines. + <b>38</b> relevant lines. <span class="green"><b>12</b> lines covered</span> and - <span class="red"><b>25</b> lines missed.</span> + <span class="red"><b>26</b> lines missed.</span> </div> </div> <pre> <ol> @@ -6740,502 +6926,502 @@ <span class="hits">1</span> <code class="ruby">require_relative '../../../../helper'</code> </li> - <li class="never" data-hits="" data-linenumber="3"> + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + <code class="ruby">require_relative '../../../../windows_machine'</code> + </li> + + <li class="never" data-hits="" data-linenumber="4"> + <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="4"> + <li class="covered" data-hits="1" data-linenumber="5"> <span class="hits">1</span> <code class="ruby">module VagrantPlugins</code> </li> - <li class="covered" data-hits="1" data-linenumber="5"> + <li class="covered" data-hits="1" data-linenumber="6"> <span class="hits">1</span> <code class="ruby"> module Shell</code> </li> - <li class="covered" data-hits="1" data-linenumber="6"> + <li class="covered" data-hits="1" data-linenumber="7"> <span class="hits">1</span> <code class="ruby"> class Provisioner &lt; Vagrant.plugin(&quot;2&quot;, :provisioner)</code> </li> - <li class="never" data-hits="" data-linenumber="7"> + <li class="never" data-hits="" data-linenumber="8"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="8"> + <li class="covered" data-hits="1" data-linenumber="9"> <span class="hits">1</span> <code class="ruby"> include VagrantWindows::Helper</code> </li> - <li class="never" data-hits="" data-linenumber="9"> + <li class="never" data-hits="" data-linenumber="10"> <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="10"> + <li class="never" data-hits="" data-linenumber="11"> <code class="ruby"> # This patch is needed until Vagrant supports Puppet on Windows guests</code> </li> - <li class="covered" data-hits="1" data-linenumber="11"> + <li class="covered" data-hits="1" data-linenumber="12"> <span class="hits">1</span> <code class="ruby"> provision_on_linux = instance_method(:provision)</code> </li> - <li class="never" data-hits="" data-linenumber="12"> + <li class="never" data-hits="" data-linenumber="13"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="13"> + <li class="covered" data-hits="1" data-linenumber="14"> <span class="hits">1</span> <code class="ruby"> define_method(:provision) do</code> </li> - <li class="missed" data-hits="0" data-linenumber="14"> + <li class="missed" data-hits="0" data-linenumber="15"> - <code class="ruby"> is_windows ? provision_on_windows() : provision_on_linux.bind(self).()</code> + <code class="ruby"> VagrantWindows::WindowsMachine.is_windows?(@machine) ? provision_on_windows() : provision_on_linux.bind(self).()</code> </li> - <li class="never" data-hits="" data-linenumber="15"> + <li class="never" data-hits="" data-linenumber="16"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="16"> + <li class="never" data-hits="" data-linenumber="17"> - <code class="ruby"></code> + <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="17"> + <li class="covered" data-hits="1" data-linenumber="18"> <span class="hits">1</span> <code class="ruby"> def provision_on_windows</code> </li> - <li class="missed" data-hits="0" data-linenumber="18"> + <li class="missed" data-hits="0" data-linenumber="19"> <code class="ruby"> args = &quot;&quot;</code> </li> - <li class="missed" data-hits="0" data-linenumber="19"> + <li class="missed" data-hits="0" data-linenumber="20"> <code class="ruby"> args = &quot; #{config.args}&quot; if config.args</code> </li> - <li class="never" data-hits="" data-linenumber="20"> + <li class="never" data-hits="" data-linenumber="21"> <code class="ruby"></code> </li> - <li class="missed" data-hits="0" data-linenumber="21"> + <li class="missed" data-hits="0" data-linenumber="22"> + <code class="ruby"> windows_machine = VagrantWindows::WindowsMachine.new(@machine)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="23"> + + + <code class="ruby"> wait_if_rebooting(windows_machine)</code> + </li> + + <li class="never" data-hits="" data-linenumber="24"> + + + <code class="ruby"></code> + </li> + + <li class="missed" data-hits="0" data-linenumber="25"> + + <code class="ruby"> with_script_file do |path|</code> </li> - <li class="never" data-hits="" data-linenumber="22"> + <li class="never" data-hits="" data-linenumber="26"> <code class="ruby"> # Upload the script to the machine</code> </li> - <li class="missed" data-hits="0" data-linenumber="23"> + <li class="missed" data-hits="0" data-linenumber="27"> <code class="ruby"> @machine.communicate.tap do |comm|</code> </li> - <li class="never" data-hits="" data-linenumber="24"> + <li class="never" data-hits="" data-linenumber="28"> <code class="ruby"> # Ensure the uploaded script has a file extension, by default</code> </li> - <li class="never" data-hits="" data-linenumber="25"> + <li class="never" data-hits="" data-linenumber="29"> <code class="ruby"> # config.upload_path from vagrant core does not</code> </li> - <li class="missed" data-hits="0" data-linenumber="26"> + <li class="missed" data-hits="0" data-linenumber="30"> <code class="ruby"> fixed_upload_path = if File.extname(config.upload_path) == &quot;&quot;</code> </li> - <li class="missed" data-hits="0" data-linenumber="27"> + <li class="missed" data-hits="0" data-linenumber="31"> <code class="ruby"> &quot;#{config.upload_path}#{File.extname(path.to_s)}&quot;</code> </li> - <li class="never" data-hits="" data-linenumber="28"> + <li class="never" data-hits="" data-linenumber="32"> <code class="ruby"> else</code> </li> - <li class="missed" data-hits="0" data-linenumber="29"> + <li class="missed" data-hits="0" data-linenumber="33"> <code class="ruby"> config.upload_path</code> </li> - <li class="never" data-hits="" data-linenumber="30"> + <li class="never" data-hits="" data-linenumber="34"> <code class="ruby"> end</code> </li> - <li class="missed" data-hits="0" data-linenumber="31"> + <li class="missed" data-hits="0" data-linenumber="35"> <code class="ruby"> comm.upload(path.to_s, fixed_upload_path)</code> </li> - <li class="never" data-hits="" data-linenumber="32"> + <li class="never" data-hits="" data-linenumber="36"> <code class="ruby"></code> </li> - <li class="missed" data-hits="0" data-linenumber="33"> + <li class="missed" data-hits="0" data-linenumber="37"> <code class="ruby"> command = &lt;&lt;-EOH</code> </li> - <li class="never" data-hits="" data-linenumber="34"> + <li class="never" data-hits="" data-linenumber="38"> <code class="ruby"> $old = Get-ExecutionPolicy;</code> </li> - <li class="never" data-hits="" data-linenumber="35"> + <li class="never" data-hits="" data-linenumber="39"> <code class="ruby"> Set-ExecutionPolicy Unrestricted -force;</code> </li> - <li class="never" data-hits="" data-linenumber="36"> + <li class="never" data-hits="" data-linenumber="40"> <code class="ruby"> #{win_friendly_path(fixed_upload_path)}#{args};</code> </li> - <li class="never" data-hits="" data-linenumber="37"> + <li class="never" data-hits="" data-linenumber="41"> <code class="ruby"> Set-ExecutionPolicy $old -force</code> </li> - <li class="never" data-hits="" data-linenumber="38"> + <li class="never" data-hits="" data-linenumber="42"> <code class="ruby"> EOH</code> </li> - <li class="never" data-hits="" data-linenumber="39"> + <li class="never" data-hits="" data-linenumber="43"> <code class="ruby"> </code> </li> - <li class="never" data-hits="" data-linenumber="40"> + <li class="never" data-hits="" data-linenumber="44"> <code class="ruby"> # Execute it with sudo</code> </li> - <li class="missed" data-hits="0" data-linenumber="41"> + <li class="missed" data-hits="0" data-linenumber="45"> <code class="ruby"> comm.sudo(command) do |type, data|</code> </li> - <li class="missed" data-hits="0" data-linenumber="42"> + <li class="missed" data-hits="0" data-linenumber="46"> <code class="ruby"> if [:stderr, :stdout].include?(type)</code> </li> - <li class="never" data-hits="" data-linenumber="43"> + <li class="never" data-hits="" data-linenumber="47"> <code class="ruby"> # Output the data with the proper color based on the stream.</code> </li> - <li class="missed" data-hits="0" data-linenumber="44"> + <li class="missed" data-hits="0" data-linenumber="48"> <code class="ruby"> color = type == :stdout ? :green : :red</code> </li> - <li class="never" data-hits="" data-linenumber="45"> + <li class="never" data-hits="" data-linenumber="49"> <code class="ruby"></code> </li> - <li class="missed" data-hits="0" data-linenumber="46"> + <li class="missed" data-hits="0" data-linenumber="50"> <code class="ruby"> @machine.ui.info(</code> </li> - <li class="never" data-hits="" data-linenumber="47"> + <li class="never" data-hits="" data-linenumber="51"> <code class="ruby"> data,</code> </li> - <li class="never" data-hits="" data-linenumber="48"> + <li class="never" data-hits="" data-linenumber="52"> <code class="ruby"> :color =&gt; color, :new_line =&gt; false, :prefix =&gt; false)</code> </li> - <li class="never" data-hits="" data-linenumber="49"> + <li class="never" data-hits="" data-linenumber="53"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="50"> + <li class="never" data-hits="" data-linenumber="54"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="51"> + <li class="never" data-hits="" data-linenumber="55"> <code class="ruby"> </code> </li> - <li class="never" data-hits="" data-linenumber="52"> + <li class="never" data-hits="" data-linenumber="56"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="53"> + <li class="never" data-hits="" data-linenumber="57"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="54"> + <li class="never" data-hits="" data-linenumber="58"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="55"> + <li class="never" data-hits="" data-linenumber="59"> <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="56"> + <li class="never" data-hits="" data-linenumber="60"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="57"> + <li class="covered" data-hits="1" data-linenumber="61"> <span class="hits">1</span> <code class="ruby"> protected</code> </li> - <li class="never" data-hits="" data-linenumber="58"> + <li class="never" data-hits="" data-linenumber="62"> <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="59"> + <li class="never" data-hits="" data-linenumber="63"> <code class="ruby"> # This method yields the path to a script to upload and execute</code> </li> - <li class="never" data-hits="" data-linenumber="60"> + <li class="never" data-hits="" data-linenumber="64"> <code class="ruby"> # on the remote server. This method will properly clean up the</code> </li> - <li class="never" data-hits="" data-linenumber="61"> + <li class="never" data-hits="" data-linenumber="65"> <code class="ruby"> # script file if needed.</code> </li> - <li class="covered" data-hits="1" data-linenumber="62"> + <li class="covered" data-hits="1" data-linenumber="66"> <span class="hits">1</span> <code class="ruby"> def with_script_file</code> </li> - <li class="missed" data-hits="0" data-linenumber="63"> + <li class="missed" data-hits="0" data-linenumber="67"> <code class="ruby"> if config.path</code> </li> - <li class="never" data-hits="" data-linenumber="64"> + <li class="never" data-hits="" data-linenumber="68"> <code class="ruby"> # Just yield the path to that file...</code> </li> - <li class="missed" data-hits="0" data-linenumber="65"> + <li class="missed" data-hits="0" data-linenumber="69"> <code class="ruby"> yield config.path</code> </li> - <li class="never" data-hits="" data-linenumber="66"> + <li class="never" data-hits="" data-linenumber="70"> <code class="ruby"> else</code> </li> - <li class="never" data-hits="" data-linenumber="67"> + <li class="never" data-hits="" data-linenumber="71"> <code class="ruby"> # Otherwise we have an inline script, we need to Tempfile it,</code> </li> - <li class="never" data-hits="" data-linenumber="68"> + <li class="never" data-hits="" data-linenumber="72"> <code class="ruby"> # and handle it specially...</code> </li> - <li class="missed" data-hits="0" data-linenumber="69"> + <li class="missed" data-hits="0" data-linenumber="73"> <code class="ruby"> file = Tempfile.new(['vagrant-powershell', '.ps1'])</code> </li> - <li class="never" data-hits="" data-linenumber="70"> + <li class="never" data-hits="" data-linenumber="74"> <code class="ruby"></code> </li> - <li class="missed" data-hits="0" data-linenumber="71"> + <li class="missed" data-hits="0" data-linenumber="75"> <code class="ruby"> begin</code> </li> - <li class="missed" data-hits="0" data-linenumber="72"> + <li class="missed" data-hits="0" data-linenumber="76"> <code class="ruby"> file.write(config.inline)</code> </li> - <li class="missed" data-hits="0" data-linenumber="73"> + <li class="missed" data-hits="0" data-linenumber="77"> <code class="ruby"> file.fsync</code> </li> - <li class="missed" data-hits="0" data-linenumber="74"> + <li class="missed" data-hits="0" data-linenumber="78"> <code class="ruby"> file.close</code> </li> - <li class="missed" data-hits="0" data-linenumber="75"> + <li class="missed" data-hits="0" data-linenumber="79"> <code class="ruby"> yield file.path</code> </li> - <li class="never" data-hits="" data-linenumber="76"> + <li class="never" data-hits="" data-linenumber="80"> <code class="ruby"> ensure</code> </li> - <li class="missed" data-hits="0" data-linenumber="77"> + <li class="missed" data-hits="0" data-linenumber="81"> <code class="ruby"> file.close</code> </li> - <li class="missed" data-hits="0" data-linenumber="78"> + <li class="missed" data-hits="0" data-linenumber="82"> <code class="ruby"> file.unlink</code> </li> - <li class="never" data-hits="" data-linenumber="79"> + <li class="never" data-hits="" data-linenumber="83"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="80"> + <li class="never" data-hits="" data-linenumber="84"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="81"> - - - <code class="ruby"> end</code> - </li> - - <li class="never" data-hits="" data-linenumber="82"> - - - <code class="ruby"></code> - </li> - - <li class="covered" data-hits="1" data-linenumber="83"> - <span class="hits">1</span> - - <code class="ruby"> def is_windows</code> - </li> - - <li class="missed" data-hits="0" data-linenumber="84"> - - - <code class="ruby"> @machine.config.vm.guest.eql? :windows</code> - </li> - <li class="never" data-hits="" data-linenumber="85"> <code class="ruby"> end</code> </li> @@ -8058,361 +8244,727 @@ </ol> </pre> </div> - <div class="source_table" id="13b6aec4445d4eeafa03e964d1e1486037abd7a4"> + <div class="source_table" id="2942f83d8bbaec9486dce51dfc24c9b92f3ea2ee"> <div class="header"> - <h3>spec/vagrant-windows/helper_spec.rb</h3> - <h4><span class="green">100.0 %</span> covered</h4> + <h3>lib/vagrant-windows/windows_machine.rb</h3> + <h4><span class="red">68.0 %</span> covered</h4> <div> - <b>29</b> relevant lines. - <span class="green"><b>29</b> lines covered</span> and - <span class="red"><b>0</b> lines missed.</span> + <b>25</b> relevant lines. + <span class="green"><b>17</b> lines covered</span> and + <span class="red"><b>8</b> lines missed.</span> </div> </div> <pre> <ol> <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> - <code class="ruby">require 'spec_helper'</code> + <code class="ruby">module VagrantWindows</code> </li> - <li class="covered" data-hits="1" data-linenumber="2"> - <span class="hits">1</span> + <li class="never" data-hits="" data-linenumber="2"> - <code class="ruby">require 'mocha/api'</code> + + <code class="ruby"> </code> </li> <li class="never" data-hits="" data-linenumber="3"> - <code class="ruby"></code> + <code class="ruby"> # Provides a wrapper around the Vagrant machine object</code> </li> <li class="covered" data-hits="1" data-linenumber="4"> <span class="hits">1</span> - <code class="ruby">describe VagrantWindows::Helper , :unit =&gt; true do</code> + <code class="ruby"> class WindowsMachine</code> </li> <li class="never" data-hits="" data-linenumber="5"> - <code class="ruby"> </code> + <code class="ruby"> </code> </li> <li class="covered" data-hits="1" data-linenumber="6"> <span class="hits">1</span> - <code class="ruby"> class DummyHelper</code> + <code class="ruby"> attr_reader :machine</code> </li> - <li class="covered" data-hits="1" data-linenumber="7"> - <span class="hits">1</span> + <li class="never" data-hits="" data-linenumber="7"> - <code class="ruby"> include VagrantWindows::Helper</code> + + <code class="ruby"> </code> </li> <li class="never" data-hits="" data-linenumber="8"> - <code class="ruby"> end</code> + <code class="ruby"> # Returns true if the specifed Vagrant machine is a Windows guest, otherwise false.</code> </li> <li class="never" data-hits="" data-linenumber="9"> - <code class="ruby"> </code> + <code class="ruby"> #</code> </li> - <li class="covered" data-hits="1" data-linenumber="10"> - <span class="hits">1</span> + <li class="never" data-hits="" data-linenumber="10"> - <code class="ruby"> before(:all) do</code> + + <code class="ruby"> # @param [Machine] The Vagrant machine object</code> </li> - <li class="covered" data-hits="1" data-linenumber="11"> + <li class="never" data-hits="" data-linenumber="11"> + + + <code class="ruby"> # @return [Boolean]</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="12"> <span class="hits">1</span> - <code class="ruby"> @dummy = DummyHelper.new</code> + <code class="ruby"> def self.is_windows?(machine)</code> </li> - <li class="never" data-hits="" data-linenumber="12"> + <li class="covered" data-hits="2" data-linenumber="13"> + <span class="hits">2</span> + <code class="ruby"> machine.config.vm.guest.eql? :windows</code> + </li> + + <li class="never" data-hits="" data-linenumber="14"> - <code class="ruby"> end</code> + + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="13"> + <li class="never" data-hits="" data-linenumber="15"> - <code class="ruby"></code> + <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="14"> - <span class="hits">1</span> + <li class="never" data-hits="" data-linenumber="16"> - <code class="ruby"> describe &quot;win_friendly_path&quot; do</code> + + <code class="ruby"> # @param [Machine] The Vagrant machine object</code> </li> - <li class="covered" data-hits="1" data-linenumber="15"> + <li class="covered" data-hits="1" data-linenumber="17"> <span class="hits">1</span> - <code class="ruby"> it &quot;should replace slashes with backslashes&quot; do</code> + <code class="ruby"> def initialize(machine)</code> </li> - <li class="covered" data-hits="1" data-linenumber="16"> - <span class="hits">1</span> + <li class="covered" data-hits="4" data-linenumber="18"> + <span class="hits">4</span> - <code class="ruby"> @dummy.win_friendly_path('c:/tmp/dir').should eq('c:\\tmp\\dir')</code> + <code class="ruby"> @machine = machine</code> </li> - <li class="never" data-hits="" data-linenumber="17"> + <li class="covered" data-hits="4" data-linenumber="19"> + <span class="hits">4</span> + <code class="ruby"> @logger = Log4r::Logger.new(&quot;vagrant_windows::windows_machine&quot;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="20"> + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="18"> + <li class="never" data-hits="" data-linenumber="21"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="19"> - <span class="hits">1</span> + <li class="never" data-hits="" data-linenumber="22"> - <code class="ruby"> it &quot;should prepend c: drive if not drive specified&quot; do</code> + + <code class="ruby"> # Checks to see if the machine is using VMWare Fusion or Workstation.</code> </li> - <li class="covered" data-hits="1" data-linenumber="20"> + <li class="never" data-hits="" data-linenumber="23"> + + + <code class="ruby"> #</code> + </li> + + <li class="never" data-hits="" data-linenumber="24"> + + + <code class="ruby"> # @return [Boolean]</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="25"> <span class="hits">1</span> - <code class="ruby"> @dummy.win_friendly_path('/tmp/dir').should eq('c:\\tmp\\dir')</code> + <code class="ruby"> def is_vmware?()</code> </li> - <li class="never" data-hits="" data-linenumber="21"> + <li class="covered" data-hits="3" data-linenumber="26"> + <span class="hits">3</span> + <code class="ruby"> @machine.provider_name.to_s().start_with?('vmware')</code> + </li> + + <li class="never" data-hits="" data-linenumber="27"> + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="22"> + <li class="never" data-hits="" data-linenumber="28"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="23"> + <li class="never" data-hits="" data-linenumber="29"> + + + <code class="ruby"> # Checks to see if the machine is rebooting or has a scheduled reboot.</code> + </li> + + <li class="never" data-hits="" data-linenumber="30"> + + + <code class="ruby"> #</code> + </li> + + <li class="never" data-hits="" data-linenumber="31"> + + + <code class="ruby"> # @return [Boolean] True if rebooting</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="32"> <span class="hits">1</span> - <code class="ruby"> it &quot;should return nil if no path specified&quot; do</code> + <code class="ruby"> def is_rebooting?()</code> </li> - <li class="covered" data-hits="1" data-linenumber="24"> + <li class="missed" data-hits="0" data-linenumber="33"> + + + <code class="ruby"> reboot_detect_script = VagrantWindows.load_script('reboot_detect.ps1')</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="34"> + + + <code class="ruby"> @machine.communicate.execute(reboot_detect_script, :error_check =&gt; false) != 0</code> + </li> + + <li class="never" data-hits="" data-linenumber="35"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="36"> + + + <code class="ruby"> </code> + </li> + + <li class="never" data-hits="" data-linenumber="37"> + + + <code class="ruby"> # Returns the active WinRMShell for the guest.</code> + </li> + + <li class="never" data-hits="" data-linenumber="38"> + + + <code class="ruby"> #</code> + </li> + + <li class="never" data-hits="" data-linenumber="39"> + + + <code class="ruby"> # @return [WinRMShell]</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="40"> <span class="hits">1</span> - <code class="ruby"> @dummy.win_friendly_path(nil).should be_nil</code> + <code class="ruby"> def winrmshell()</code> </li> - <li class="never" data-hits="" data-linenumber="25"> + <li class="missed" data-hits="0" data-linenumber="41"> + <code class="ruby"> @machine.communicate.winrmshell</code> + </li> + + <li class="never" data-hits="" data-linenumber="42"> + + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="26"> + <li class="never" data-hits="" data-linenumber="43"> - <code class="ruby"> end</code> + <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="27"> + <li class="never" data-hits="" data-linenumber="44"> - <code class="ruby"> </code> + <code class="ruby"> # Reads the machine's MAC addresses keyed by interface index.</code> </li> - <li class="covered" data-hits="1" data-linenumber="28"> + <li class="never" data-hits="" data-linenumber="45"> + + + <code class="ruby"> # {1=&gt;&quot;0800273FAC5A&quot;, 2=&gt;&quot;08002757E68A&quot;}</code> + </li> + + <li class="never" data-hits="" data-linenumber="46"> + + + <code class="ruby"> #</code> + </li> + + <li class="never" data-hits="" data-linenumber="47"> + + + <code class="ruby"> # @return [Hash]</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="48"> <span class="hits">1</span> - <code class="ruby"> describe &quot;win_friendly_share_id&quot; do</code> + <code class="ruby"> def read_mac_addresses()</code> </li> - <li class="covered" data-hits="1" data-linenumber="29"> + <li class="missed" data-hits="0" data-linenumber="49"> + + + <code class="ruby"> @machine.provider.driver.read_mac_addresses</code> + </li> + + <li class="never" data-hits="" data-linenumber="50"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="51"> + + + <code class="ruby"> </code> + </li> + + <li class="never" data-hits="" data-linenumber="52"> + + + <code class="ruby"> # Returns a list of forwarded ports for a VM.</code> + </li> + + <li class="never" data-hits="" data-linenumber="53"> + + + <code class="ruby"> # NOTE: For VMWare this is currently unsupported.</code> + </li> + + <li class="never" data-hits="" data-linenumber="54"> + + + <code class="ruby"> #</code> + </li> + + <li class="never" data-hits="" data-linenumber="55"> + + + <code class="ruby"> # @return [Array&lt;Array&gt;]</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="56"> <span class="hits">1</span> - <code class="ruby"> it &quot;should use share id if present&quot; do</code> + <code class="ruby"> def read_forwarded_ports()</code> </li> - <li class="covered" data-hits="1" data-linenumber="30"> + <li class="missed" data-hits="0" data-linenumber="57"> + + + <code class="ruby"> is_vmware?() ? [] : @machine.provider.driver.read_forwarded_ports</code> + </li> + + <li class="never" data-hits="" data-linenumber="58"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="59"> + + + <code class="ruby"> </code> + </li> + + <li class="never" data-hits="" data-linenumber="60"> + + + <code class="ruby"> # Returns the SSH config for this machine.</code> + </li> + + <li class="never" data-hits="" data-linenumber="61"> + + + <code class="ruby"> #</code> + </li> + + <li class="never" data-hits="" data-linenumber="62"> + + + <code class="ruby"> # @return [Hash]</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="63"> <span class="hits">1</span> - <code class="ruby"> @dummy.win_friendly_share_id('sharename').should eq('sharename')</code> + <code class="ruby"> def ssh_info()</code> </li> - <li class="never" data-hits="" data-linenumber="31"> + <li class="missed" data-hits="0" data-linenumber="64"> + <code class="ruby"> @machine.ssh_info</code> + </li> + + <li class="never" data-hits="" data-linenumber="65"> + + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="32"> + <li class="never" data-hits="" data-linenumber="66"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="33"> + <li class="covered" data-hits="1" data-linenumber="67"> <span class="hits">1</span> - <code class="ruby"> it &quot;should use last folder name in guest_path&quot; do</code> + <code class="ruby"> def windows_config()</code> </li> - <li class="covered" data-hits="1" data-linenumber="34"> + <li class="missed" data-hits="0" data-linenumber="68"> + + + <code class="ruby"> @machine.config.windows</code> + </li> + + <li class="never" data-hits="" data-linenumber="69"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="70"> + + + <code class="ruby"> </code> + </li> + + <li class="covered" data-hits="1" data-linenumber="71"> <span class="hits">1</span> - <code class="ruby"> @dummy.win_friendly_share_id('/tmp/folder/sharename').should eq('tmp_folder_sharename')</code> + <code class="ruby"> def winrm_config()</code> </li> - <li class="never" data-hits="" data-linenumber="35"> + <li class="missed" data-hits="0" data-linenumber="72"> + <code class="ruby"> @machine.config.winrm</code> + </li> + + <li class="never" data-hits="" data-linenumber="73"> + + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="36"> + <li class="never" data-hits="" data-linenumber="74"> + <code class="ruby"> </code> + </li> + + <li class="never" data-hits="" data-linenumber="75"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="76"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="13b6aec4445d4eeafa03e964d1e1486037abd7a4"> + <div class="header"> + <h3>spec/vagrant-windows/helper_spec.rb</h3> + <h4><span class="green">100.0 %</span> covered</h4> + <div> + <b>19</b> relevant lines. + <span class="green"><b>19</b> lines covered</span> and + <span class="red"><b>0</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">require 'spec_helper'</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="2"> + <span class="hits">1</span> + + <code class="ruby">require 'mocha/api'</code> + </li> + + <li class="never" data-hits="" data-linenumber="3"> + + <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="37"> + <li class="covered" data-hits="1" data-linenumber="4"> + <span class="hits">1</span> + <code class="ruby">describe VagrantWindows::Helper , :unit =&gt; true do</code> + </li> + + <li class="never" data-hits="" data-linenumber="5"> + + <code class="ruby"> </code> + </li> + + <li class="covered" data-hits="1" data-linenumber="6"> + <span class="hits">1</span> + + <code class="ruby"> class DummyHelper</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="7"> + <span class="hits">1</span> + + <code class="ruby"> include VagrantWindows::Helper</code> + </li> + + <li class="never" data-hits="" data-linenumber="8"> + + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="38"> + <li class="never" data-hits="" data-linenumber="9"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="39"> + <li class="covered" data-hits="1" data-linenumber="10"> <span class="hits">1</span> - <code class="ruby"> describe &quot;is_vmware&quot; do</code> + <code class="ruby"> before(:all) do</code> </li> - <li class="covered" data-hits="1" data-linenumber="40"> + <li class="covered" data-hits="1" data-linenumber="11"> <span class="hits">1</span> - <code class="ruby"> it &quot;should be true for vmware_fusion&quot; do</code> + <code class="ruby"> @dummy = DummyHelper.new</code> </li> - <li class="covered" data-hits="1" data-linenumber="41"> + <li class="never" data-hits="" data-linenumber="12"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="13"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="14"> <span class="hits">1</span> - <code class="ruby"> machine = stub(:provider_name =&gt; :vmware_fusion)</code> + <code class="ruby"> describe &quot;win_friendly_path&quot; do</code> </li> - <li class="covered" data-hits="1" data-linenumber="42"> + <li class="covered" data-hits="1" data-linenumber="15"> <span class="hits">1</span> - <code class="ruby"> expect(@dummy.is_vmware(machine)).to be_true</code> + <code class="ruby"> it &quot;should replace slashes with backslashes&quot; do</code> </li> - <li class="never" data-hits="" data-linenumber="43"> + <li class="covered" data-hits="1" data-linenumber="16"> + <span class="hits">1</span> + <code class="ruby"> @dummy.win_friendly_path('c:/tmp/dir').should eq('c:\\tmp\\dir')</code> + </li> + + <li class="never" data-hits="" data-linenumber="17"> + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="44"> + <li class="never" data-hits="" data-linenumber="18"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="45"> + <li class="covered" data-hits="1" data-linenumber="19"> <span class="hits">1</span> - <code class="ruby"> it &quot;should be true for vmware_workstation&quot; do</code> + <code class="ruby"> it &quot;should prepend c: drive if not drive specified&quot; do</code> </li> - <li class="covered" data-hits="1" data-linenumber="46"> + <li class="covered" data-hits="1" data-linenumber="20"> <span class="hits">1</span> - <code class="ruby"> machine = stub(:provider_name =&gt; :vmware_workstation)</code> + <code class="ruby"> @dummy.win_friendly_path('/tmp/dir').should eq('c:\\tmp\\dir')</code> </li> - <li class="covered" data-hits="1" data-linenumber="47"> + <li class="never" data-hits="" data-linenumber="21"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="22"> + + + <code class="ruby"> </code> + </li> + + <li class="covered" data-hits="1" data-linenumber="23"> <span class="hits">1</span> - <code class="ruby"> expect(@dummy.is_vmware(machine)).to be_true</code> + <code class="ruby"> it &quot;should return nil if no path specified&quot; do</code> </li> - <li class="never" data-hits="" data-linenumber="48"> + <li class="covered" data-hits="1" data-linenumber="24"> + <span class="hits">1</span> + <code class="ruby"> @dummy.win_friendly_path(nil).should be_nil</code> + </li> + + <li class="never" data-hits="" data-linenumber="25"> + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="49"> + <li class="never" data-hits="" data-linenumber="26"> - <code class="ruby"> </code> + <code class="ruby"> end</code> </li> - <li class="covered" data-hits="1" data-linenumber="50"> + <li class="never" data-hits="" data-linenumber="27"> + + + <code class="ruby"> </code> + </li> + + <li class="covered" data-hits="1" data-linenumber="28"> <span class="hits">1</span> - <code class="ruby"> it &quot;should be false for virtual_box&quot; do</code> + <code class="ruby"> describe &quot;win_friendly_share_id&quot; do</code> </li> - <li class="covered" data-hits="1" data-linenumber="51"> + <li class="covered" data-hits="1" data-linenumber="29"> <span class="hits">1</span> - <code class="ruby"> machine = stub(:provider_name =&gt; :virtual_box)</code> + <code class="ruby"> it &quot;should use share id if present&quot; do</code> </li> - <li class="covered" data-hits="1" data-linenumber="52"> + <li class="covered" data-hits="1" data-linenumber="30"> <span class="hits">1</span> - <code class="ruby"> expect(@dummy.is_vmware(machine)).to be_false</code> + <code class="ruby"> @dummy.win_friendly_share_id('sharename').should eq('sharename')</code> </li> - <li class="never" data-hits="" data-linenumber="53"> + <li class="never" data-hits="" data-linenumber="31"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="54"> + <li class="never" data-hits="" data-linenumber="32"> + <code class="ruby"> </code> + </li> + + <li class="covered" data-hits="1" data-linenumber="33"> + <span class="hits">1</span> + + <code class="ruby"> it &quot;should use last folder name in guest_path&quot; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="34"> + <span class="hits">1</span> + + <code class="ruby"> @dummy.win_friendly_share_id('/tmp/folder/sharename').should eq('tmp_folder_sharename')</code> + </li> + + <li class="never" data-hits="" data-linenumber="35"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="36"> + + <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="55"> + <li class="never" data-hits="" data-linenumber="37"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="56"> + <li class="never" data-hits="" data-linenumber="38"> <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="57"> + <li class="never" data-hits="" data-linenumber="39"> <code class="ruby">end</code> </li> @@ -8814,10 +9366,292 @@ </ol> </pre> </div> + <div class="source_table" id="43f77545cf4f67647d0945fb930bc745e38cb962"> + <div class="header"> + <h3>spec/vagrant-windows/windows_machine_spec.rb</h3> + <h4><span class="green">100.0 %</span> covered</h4> + <div> + <b>28</b> relevant lines. + <span class="green"><b>28</b> lines covered</span> and + <span class="red"><b>0</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">require 'spec_helper'</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="2"> + <span class="hits">1</span> + + <code class="ruby">require 'mocha/api'</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + + <code class="ruby">require 'vagrant-windows/windows_machine'</code> + </li> + + <li class="never" data-hits="" data-linenumber="4"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="5"> + <span class="hits">1</span> + + <code class="ruby">describe VagrantWindows::WindowsMachine , :unit =&gt; true do</code> + </li> + + <li class="never" data-hits="" data-linenumber="6"> + + + <code class="ruby"> </code> + </li> + + <li class="covered" data-hits="1" data-linenumber="7"> + <span class="hits">1</span> + + <code class="ruby"> describe &quot;is_vmware?&quot; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="8"> + <span class="hits">1</span> + + <code class="ruby"> it &quot;should be true for vmware_fusion&quot; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="9"> + <span class="hits">1</span> + + <code class="ruby"> machine = stub(:provider_name =&gt; :vmware_fusion)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="10"> + <span class="hits">1</span> + + <code class="ruby"> windows_machine = VagrantWindows::WindowsMachine.new(machine)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="11"> + <span class="hits">1</span> + + <code class="ruby"> expect(windows_machine.is_vmware?()).to be_true</code> + </li> + + <li class="never" data-hits="" data-linenumber="12"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="13"> + + + <code class="ruby"> </code> + </li> + + <li class="covered" data-hits="1" data-linenumber="14"> + <span class="hits">1</span> + + <code class="ruby"> it &quot;should be true for vmware_workstation&quot; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="15"> + <span class="hits">1</span> + + <code class="ruby"> machine = stub(:provider_name =&gt; :vmware_workstation)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="16"> + <span class="hits">1</span> + + <code class="ruby"> windows_machine = VagrantWindows::WindowsMachine.new(machine)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="17"> + <span class="hits">1</span> + + <code class="ruby"> expect(windows_machine.is_vmware?()).to be_true</code> + </li> + + <li class="never" data-hits="" data-linenumber="18"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="19"> + + + <code class="ruby"> </code> + </li> + + <li class="covered" data-hits="1" data-linenumber="20"> + <span class="hits">1</span> + + <code class="ruby"> it &quot;should be false for virtual_box&quot; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="21"> + <span class="hits">1</span> + + <code class="ruby"> machine = stub(:provider_name =&gt; :virtual_box)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="22"> + <span class="hits">1</span> + + <code class="ruby"> windows_machine = VagrantWindows::WindowsMachine.new(machine)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="23"> + <span class="hits">1</span> + + <code class="ruby"> expect(windows_machine.is_vmware?()).to be_false</code> + </li> + + <li class="never" data-hits="" data-linenumber="24"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="25"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="26"> + + + <code class="ruby"> </code> + </li> + + <li class="covered" data-hits="1" data-linenumber="27"> + <span class="hits">1</span> + + <code class="ruby"> describe &quot;is_windows?&quot; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="28"> + <span class="hits">1</span> + + <code class="ruby"> it &quot;should return true when config vm guest is windows&quot; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="29"> + <span class="hits">1</span> + + <code class="ruby"> vm = stub(:guest =&gt; :windows)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="30"> + <span class="hits">1</span> + + <code class="ruby"> config = stub(:vm =&gt; vm)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="31"> + <span class="hits">1</span> + + <code class="ruby"> machine = stub(:config =&gt; config)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="32"> + <span class="hits">1</span> + + <code class="ruby"> expect(VagrantWindows::WindowsMachine.is_windows?(machine)).to be_true</code> + </li> + + <li class="never" data-hits="" data-linenumber="33"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="34"> + + + <code class="ruby"> </code> + </li> + + <li class="covered" data-hits="1" data-linenumber="35"> + <span class="hits">1</span> + + <code class="ruby"> it &quot;should return false when config vm guest is not windows&quot; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="36"> + <span class="hits">1</span> + + <code class="ruby"> vm = stub(:guest =&gt; :ubuntu)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="37"> + <span class="hits">1</span> + + <code class="ruby"> config = stub(:vm =&gt; vm)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="38"> + <span class="hits">1</span> + + <code class="ruby"> machine = stub(:config =&gt; config)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="39"> + <span class="hits">1</span> + + <code class="ruby"> expect(VagrantWindows::WindowsMachine.is_windows?(machine)).to be_false</code> + </li> + + <li class="never" data-hits="" data-linenumber="40"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="41"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="42"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="43"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="44"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + <div class="source_table" id="5a677aee80d575d53b9b20a950767cd27c7f2e9e"> <div class="header"> <h3>spec/vagrant-windows/winrm_config_spec.rb</h3> <h4><span class="green">100.0 %</span> covered</h4> <div> @@ -9021,15 +9855,15 @@ </div> <div class="source_table" id="844842835a3c9ba296ba1e91954dcd0979df99b4"> <div class="header"> <h3>spec/vagrant-windows/winrmcommunicator_spec.rb</h3> - <h4><span class="red">50.0 %</span> covered</h4> + <h4><span class="green">100.0 %</span> covered</h4> <div> - <b>14</b> relevant lines. - <span class="green"><b>7</b> lines covered</span> and - <span class="red"><b>7</b> lines missed.</span> + <b>24</b> relevant lines. + <span class="green"><b>24</b> lines covered</span> and + <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> @@ -9074,131 +9908,245 @@ <code class="ruby"> # Not ideal, but you have to start somewhere</code> </li> - <li class="missed" data-hits="0" data-linenumber="8"> + <li class="covered" data-hits="1" data-linenumber="8"> + <span class="hits">1</span> - - <code class="ruby"> @shell = VagrantWindows::Communication::WinRMShell.new(&quot;localhost&quot;, &quot;vagrant&quot;, &quot;vagrant&quot;)</code> - </li> - - <li class="missed" data-hits="0" data-linenumber="9"> - - <code class="ruby"> @communicator = VagrantWindows::Communication::WinRMCommunicator.new({})</code> </li> - <li class="missed" data-hits="0" data-linenumber="10"> + <li class="covered" data-hits="1" data-linenumber="9"> + <span class="hits">1</span> - - <code class="ruby"> @communicator.set_winrmshell(@shell)</code> + <code class="ruby"> @communicator.winrmshell = VagrantWindows::Communication::WinRMShell.new(&quot;127.0.0.1&quot;, &quot;vagrant&quot;, &quot;vagrant&quot;)</code> </li> - <li class="never" data-hits="" data-linenumber="11"> + <li class="never" data-hits="" data-linenumber="10"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="12"> + <li class="never" data-hits="" data-linenumber="11"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="13"> + <li class="covered" data-hits="1" data-linenumber="12"> <span class="hits">1</span> <code class="ruby"> describe &quot;execute&quot; do</code> </li> - <li class="covered" data-hits="1" data-linenumber="14"> + <li class="covered" data-hits="1" data-linenumber="13"> <span class="hits">1</span> <code class="ruby"> it &quot;should return 1 when error_check is false&quot; do</code> </li> - <li class="missed" data-hits="0" data-linenumber="15"> + <li class="covered" data-hits="1" data-linenumber="14"> + <span class="hits">1</span> - <code class="ruby"> expect(@communicator.execute(&quot;exit 1&quot;, { :error_check =&gt; false })).to eq(1)</code> </li> - <li class="never" data-hits="" data-linenumber="16"> + <li class="never" data-hits="" data-linenumber="15"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="17"> + <li class="never" data-hits="" data-linenumber="16"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="18"> + <li class="covered" data-hits="1" data-linenumber="17"> <span class="hits">1</span> <code class="ruby"> it &quot;should raise WinRMExecutionError when error_check is true&quot; do</code> </li> - <li class="missed" data-hits="0" data-linenumber="19"> + <li class="covered" data-hits="2" data-linenumber="18"> + <span class="hits">2</span> - <code class="ruby"> expect { @communicator.execute(&quot;exit 1&quot;) }.to raise_error(VagrantWindows::Errors::WinRMExecutionError)</code> </li> - <li class="never" data-hits="" data-linenumber="20"> + <li class="never" data-hits="" data-linenumber="19"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="21"> + <li class="never" data-hits="" data-linenumber="20"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="22"> + <li class="covered" data-hits="1" data-linenumber="21"> <span class="hits">1</span> <code class="ruby"> it &quot;should raise specified error type when specified and error_check is true&quot; do</code> </li> - <li class="missed" data-hits="0" data-linenumber="23"> + <li class="covered" data-hits="1" data-linenumber="22"> + <span class="hits">1</span> - <code class="ruby"> opts = { :error_class =&gt; VagrantWindows::Errors::WinRMInvalidShell }</code> </li> - <li class="missed" data-hits="0" data-linenumber="24"> + <li class="covered" data-hits="2" data-linenumber="23"> + <span class="hits">2</span> - <code class="ruby"> expect { @communicator.execute(&quot;exit 1&quot;, opts) }.to raise_error(VagrantWindows::Errors::WinRMInvalidShell)</code> </li> - <li class="never" data-hits="" data-linenumber="25"> + <li class="never" data-hits="" data-linenumber="24"> <code class="ruby"> end</code> </li> + <li class="never" data-hits="" data-linenumber="25"> + + + <code class="ruby"> end</code> + </li> + <li class="never" data-hits="" data-linenumber="26"> + <code class="ruby"> </code> + </li> + + <li class="covered" data-hits="1" data-linenumber="27"> + <span class="hits">1</span> + + <code class="ruby"> describe &quot;upload&quot; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="28"> + <span class="hits">1</span> + + <code class="ruby"> it &quot;should upload the file and overwrite it if it exists&quot; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="29"> + <span class="hits">1</span> + + <code class="ruby"> test_file = Tempfile.new(&quot;uploadtest&quot;)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="30"> + <span class="hits">1</span> + + <code class="ruby"> IO.write(test_file, &quot;hello world&quot;)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="31"> + <span class="hits">1</span> + + <code class="ruby"> @communicator.upload(test_file, &quot;c:\\vagrantuploadtest.txt&quot;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="32"> + + + <code class="ruby"> </code> + </li> + + <li class="never" data-hits="" data-linenumber="33"> + + + <code class="ruby"> # ensure we can overwrite</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="34"> + <span class="hits">1</span> + + <code class="ruby"> IO.write(test_file, &quot;goodbye cruel world&quot;)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="35"> + <span class="hits">1</span> + + <code class="ruby"> @communicator.upload(test_file, &quot;c:\\vagrantuploadtest.txt&quot;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="36"> + + + <code class="ruby"> </code> + </li> + + <li class="never" data-hits="" data-linenumber="37"> + + + <code class="ruby"> # get the uploaded file's contents to ensure it uploaded properly</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="38"> + <span class="hits">1</span> + + <code class="ruby"> uploaded_file_content = ''</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="39"> + <span class="hits">1</span> + + <code class="ruby"> @communicator.execute(&quot;cat c:\\vagrantuploadtest.txt&quot;, {}) do |type, line|</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="40"> + <span class="hits">2</span> + + <code class="ruby"> uploaded_file_content = uploaded_file_content + line</code> + </li> + + <li class="never" data-hits="" data-linenumber="41"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="42"> + + + <code class="ruby"> </code> + </li> + + <li class="covered" data-hits="1" data-linenumber="43"> + <span class="hits">1</span> + + <code class="ruby"> expect(uploaded_file_content.chomp).to eq(&quot;goodbye cruel world&quot;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="44"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="45"> + + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="27"> + <li class="never" data-hits="" data-linenumber="46"> <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="28"> + <li class="never" data-hits="" data-linenumber="47"> <code class="ruby">end</code> </li> @@ -9209,12 +10157,12 @@ <div class="source_table" id="5bf85486dfa43acdf015a1bc09ffbc798937c5ed"> <div class="header"> <h3>spec/vagrant-windows/winrmfinder_spec.rb</h3> <h4><span class="green">100.0 %</span> covered</h4> <div> - <b>24</b> relevant lines. - <span class="green"><b>24</b> lines covered</span> and + <b>22</b> relevant lines. + <span class="green"><b>22</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> @@ -9335,152 +10283,140 @@ </li> <li class="covered" data-hits="1" data-linenumber="20"> <span class="hits">1</span> - <code class="ruby"> machine_config = stub(:winrm =&gt; winrm_config)</code> + <code class="ruby"> @machine.stubs(:winrm_config).returns(winrm_config)</code> </li> - <li class="covered" data-hits="1" data-linenumber="21"> - <span class="hits">1</span> + <li class="never" data-hits="" data-linenumber="21"> - <code class="ruby"> @machine.stubs(:config).returns(machine_config)</code> - </li> - - <li class="never" data-hits="" data-linenumber="22"> - <code class="ruby"> </code> </li> - <li class="never" data-hits="" data-linenumber="23"> + <li class="never" data-hits="" data-linenumber="22"> <code class="ruby"> # setup the machine ssh_info to return a 10.0.0.1</code> </li> - <li class="covered" data-hits="1" data-linenumber="24"> + <li class="covered" data-hits="1" data-linenumber="23"> <span class="hits">1</span> <code class="ruby"> @machine.stubs(:ssh_info).returns({ :host =&gt; '10.0.0.1' })</code> </li> - <li class="never" data-hits="" data-linenumber="25"> + <li class="never" data-hits="" data-linenumber="24"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="26"> + <li class="covered" data-hits="1" data-linenumber="25"> <span class="hits">1</span> <code class="ruby"> expect(@winrmfinder.winrm_host_address()).to eq('10.0.0.1')</code> </li> - <li class="never" data-hits="" data-linenumber="27"> + <li class="never" data-hits="" data-linenumber="26"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="28"> + <li class="never" data-hits="" data-linenumber="27"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="29"> + <li class="covered" data-hits="1" data-linenumber="28"> <span class="hits">1</span> <code class="ruby"> it 'should return host config if set (issue 104)' do</code> </li> - <li class="never" data-hits="" data-linenumber="30"> + <li class="never" data-hits="" data-linenumber="29"> <code class="ruby"> # setup the winrm config to return nil for the host (i.e. the default)</code> </li> - <li class="covered" data-hits="1" data-linenumber="31"> + <li class="covered" data-hits="1" data-linenumber="30"> <span class="hits">1</span> <code class="ruby"> winrm_config = VagrantWindows::Config::WinRM.new()</code> </li> - <li class="covered" data-hits="1" data-linenumber="32"> + <li class="covered" data-hits="1" data-linenumber="31"> <span class="hits">1</span> <code class="ruby"> winrm_config.host = '10.0.0.1'</code> </li> - <li class="covered" data-hits="1" data-linenumber="33"> + <li class="covered" data-hits="1" data-linenumber="32"> <span class="hits">1</span> <code class="ruby"> winrm_config.finalize!()</code> </li> - <li class="covered" data-hits="1" data-linenumber="34"> + <li class="covered" data-hits="1" data-linenumber="33"> <span class="hits">1</span> - <code class="ruby"> machine_config = stub(:winrm =&gt; winrm_config)</code> + <code class="ruby"> @machine.stubs(:winrm_config).returns(winrm_config)</code> </li> - <li class="covered" data-hits="1" data-linenumber="35"> - <span class="hits">1</span> + <li class="never" data-hits="" data-linenumber="34"> - <code class="ruby"> @machine.stubs(:config).returns(machine_config)</code> - </li> - - <li class="never" data-hits="" data-linenumber="36"> - <code class="ruby"> </code> </li> - <li class="never" data-hits="" data-linenumber="37"> + <li class="never" data-hits="" data-linenumber="35"> <code class="ruby"> # setup the machine ssh_info to return a 10.0.0.1</code> </li> - <li class="covered" data-hits="1" data-linenumber="38"> + <li class="covered" data-hits="1" data-linenumber="36"> <span class="hits">1</span> <code class="ruby"> @machine.stubs(:ssh_info).returns({ :host =&gt; '127.0.0.1' })</code> </li> - <li class="never" data-hits="" data-linenumber="39"> + <li class="never" data-hits="" data-linenumber="37"> <code class="ruby"> </code> </li> - <li class="covered" data-hits="1" data-linenumber="40"> + <li class="covered" data-hits="1" data-linenumber="38"> <span class="hits">1</span> <code class="ruby"> expect(@winrmfinder.winrm_host_address()).to eq('10.0.0.1')</code> </li> - <li class="never" data-hits="" data-linenumber="41"> + <li class="never" data-hits="" data-linenumber="39"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="42"> + <li class="never" data-hits="" data-linenumber="40"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="43"> + <li class="never" data-hits="" data-linenumber="41"> <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="44"> + <li class="never" data-hits="" data-linenumber="42"> <code class="ruby">end</code> </li> @@ -9489,15 +10425,15 @@ </div> <div class="source_table" id="25447093b9cbe29e6009455b5e95c517f212a004"> <div class="header"> <h3>spec/vagrant-windows/winrmshell_spec.rb</h3> - <h4><span class="red">45.0 %</span> covered</h4> + <h4><span class="green">100.0 %</span> covered</h4> <div> <b>20</b> relevant lines. - <span class="green"><b>9</b> lines covered</span> and - <span class="red"><b>11</b> lines missed.</span> + <span class="green"><b>20</b> lines covered</span> and + <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> @@ -9542,14 +10478,14 @@ <code class="ruby"> # Not ideal, but you have to start somewhere</code> </li> - <li class="missed" data-hits="0" data-linenumber="8"> + <li class="covered" data-hits="1" data-linenumber="8"> + <span class="hits">1</span> - - <code class="ruby"> @shell = VagrantWindows::Communication::WinRMShell.new(&quot;localhost&quot;, &quot;vagrant&quot;, &quot;vagrant&quot;)</code> + <code class="ruby"> @shell = VagrantWindows::Communication::WinRMShell.new(&quot;127.0.0.1&quot;, &quot;vagrant&quot;, &quot;vagrant&quot;)</code> </li> <li class="never" data-hits="" data-linenumber="9"> @@ -9572,13 +10508,13 @@ <span class="hits">1</span> <code class="ruby"> it &quot;should return exit code of 0&quot; do</code> </li> - <li class="missed" data-hits="0" data-linenumber="13"> + <li class="covered" data-hits="1" data-linenumber="13"> + <span class="hits">1</span> - <code class="ruby"> expect(@shell.powershell(&quot;exit 0&quot;)[:exitcode]).to eq(0)</code> </li> <li class="never" data-hits="" data-linenumber="14"> @@ -9596,13 +10532,13 @@ <span class="hits">1</span> <code class="ruby"> it &quot;should return exit code greater than 0&quot; do</code> </li> - <li class="missed" data-hits="0" data-linenumber="17"> + <li class="covered" data-hits="1" data-linenumber="17"> + <span class="hits">1</span> - <code class="ruby"> expect(@shell.powershell(&quot;exit 1&quot;)[:exitcode]).to eq(1)</code> </li> <li class="never" data-hits="" data-linenumber="18"> @@ -9620,37 +10556,37 @@ <span class="hits">1</span> <code class="ruby"> it &quot;should return stdout&quot; do</code> </li> - <li class="missed" data-hits="0" data-linenumber="21"> + <li class="covered" data-hits="1" data-linenumber="21"> + <span class="hits">1</span> - <code class="ruby"> result = @shell.powershell(&quot;dir&quot;) do |type, line|</code> </li> - <li class="missed" data-hits="0" data-linenumber="22"> + <li class="covered" data-hits="4" data-linenumber="22"> + <span class="hits">4</span> - <code class="ruby"> expect(type).to eq(:stdout)</code> </li> - <li class="missed" data-hits="0" data-linenumber="23"> + <li class="covered" data-hits="4" data-linenumber="23"> + <span class="hits">4</span> - <code class="ruby"> expect(line.length).to be &gt; 1 </code> </li> <li class="never" data-hits="" data-linenumber="24"> <code class="ruby"> end</code> </li> - <li class="missed" data-hits="0" data-linenumber="25"> + <li class="covered" data-hits="1" data-linenumber="25"> + <span class="hits">1</span> - <code class="ruby"> expect(result[:exitcode]).to eq(0)</code> </li> <li class="never" data-hits="" data-linenumber="26"> @@ -9680,35 +10616,35 @@ <span class="hits">1</span> <code class="ruby"> it &quot;should return stdout&quot; do</code> </li> - <li class="missed" data-hits="0" data-linenumber="31"> + <li class="covered" data-hits="1" data-linenumber="31"> + <span class="hits">1</span> - <code class="ruby"> result = @shell.cmd(&quot;dir&quot;) do |type, line|</code> </li> - <li class="missed" data-hits="0" data-linenumber="32"> + <li class="covered" data-hits="3" data-linenumber="32"> + <span class="hits">3</span> - <code class="ruby"> expect(type).to eq(:stdout)</code> </li> - <li class="missed" data-hits="0" data-linenumber="33"> + <li class="covered" data-hits="3" data-linenumber="33"> + <span class="hits">3</span> - <code class="ruby"> expect(line.length).to be &gt; 1 </code> </li> <li class="never" data-hits="" data-linenumber="34"> <code class="ruby"> end</code> </li> - <li class="missed" data-hits="0" data-linenumber="35"> - + <li class="covered" data-hits="1" data-linenumber="35"> + <span class="hits">1</span> <code class="ruby"> expect(result[:exitcode]).to eq(0)</code> </li> <li class="never" data-hits="" data-linenumber="36">