You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by gi...@apache.org on 2018/07/20 02:23:31 UTC

[46/51] [partial] mesos-site git commit: Updated the website built from mesos SHA: 9147283.

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/7fd1c58b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2tests_2utils_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2tests_2utils_8hpp_source.html b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2tests_2utils_8hpp_source.html
index 16f2fbb..23df637 100644
--- a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2tests_2utils_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2tests_2utils_8hpp_source.html
@@ -52,7 +52,7 @@
 <div class="title">utils.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="3rdparty_2stout_2include_2stout_2tests_2utils_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//  http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</spa
 n>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 
   12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_TESTS_UTILS_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_TESTS_UTILS_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;gtest/gtest.h&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a class="cod
 e" href="stout_2include_2stout_2gtest_8hpp.html">stout/gtest.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="chdir_8hpp.html">stout/os/chdir.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="getcwd_8hpp.html">stout/os/getcwd.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="mkdtemp_8hpp.html">stout/os/mkdtemp.hpp</a>&gt;</span></div><div class="line"><a name="l00026"></a><span 
 class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="realpath_8hpp.html">stout/os/realpath.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="rmdir_8hpp.html">stout/os/rmdir.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#if __FreeBSD__</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="sysctl_8hpp.html">stout/os/sysctl.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a 
 name="l00033"></a><span class="lineno"><a class="line" href="classTemporaryDirectoryTest.html">   33</a></span>&#160;<span class="keyword">class </span><a class="code" href="classTemporaryDirectoryTest.html">TemporaryDirectoryTest</a> : <span class="keyword">public</span> ::testing::Test</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;{</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="classTemporaryDirectoryTest.html#a8c276b7f4a8ac1d5ca5d575d56fbea12">   36</a></span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classTemporaryDirectoryTest.html#a8c276b7f4a8ac1d5ca5d575d56fbea12">SetUp</a>()</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;  {</div><div class="line"><a name="l00038"></a><span class="
 lineno">   38</span>&#160;    <span class="comment">// Save the current working directory.</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;    cwd = <a class="code" href="namespaceos.html#a84a3290f051cdd50d88e0fd611645d4a">os::getcwd</a>();</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;    <span class="comment">// Create a temporary directory for the test.</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;    <a class="code" href="classTry.html">Try&lt;std::string&gt;</a> directory = <a class="code" href="namespaceos.html#afe70fd86d13b8f10cafb222bb80adcf6">os::mkdtemp</a>();</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;    <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a0add664e84bbf99f845f1b715dd63f90">ASSERT_SOME</a>(directory) &l
 t;&lt; <span class="stringliteral">&quot;Failed to mkdtemp&quot;</span>;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    <span class="comment">// We get the `realpath` of the temporary directory because some</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    <span class="comment">// platforms, like macOS, symlink `/tmp` to `/private/var`, but</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    <span class="comment">// return the symlink name when creating temporary directories.</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    <span class="comment">// This is problematic because a lot of tests compare the</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    <span class="comment">// `realpath` of
  a temporary file.</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    <a class="code" href="classResult.html">Result&lt;std::string&gt;</a> <a class="code" href="namespaceos.html#aa533c79d98af12b40b567a851e442373">realpath</a> = <a class="code" href="namespaceos.html#aa533c79d98af12b40b567a851e442373">os::realpath</a>(directory.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a0add664e84bbf99f845f1b715dd63f90">ASSERT_SOME</a>(realpath) &lt;&lt; <span class="stringliteral">&quot;Failed to get realpath of &#39;&quot;</span> &lt;&lt; directory.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;                          &lt;&lt; <span class="stringliteral
 ">&quot;&#39;: &quot;</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;                          &lt;&lt; (realpath.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>() ? realpath.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>()</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;                                                 : <span class="stringliteral">&quot;No such directory&quot;</span>);</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    <a class="code" href="classTemporaryDirectoryTest.html#aa550fd09eb1cff3070839435557f4b9a">sandbox</a> = realpath.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>();</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;  
   <span class="comment">// Run the test out of the temporary directory we created.</span></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a0add664e84bbf99f845f1b715dd63f90">ASSERT_SOME</a>(<a class="code" href="namespaceos.html#a11febfefa1908b3cb87b77da5c8482c5">os::chdir</a>(<a class="code" href="classTemporaryDirectoryTest.html#aa550fd09eb1cff3070839435557f4b9a">sandbox</a>.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>()))</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;      &lt;&lt; <span class="stringliteral">&quot;Failed to chdir into &#39;&quot;</span> &lt;&lt; <a class="code" href="classTemporaryDirectoryTest.html#aa550fd09eb1cff3070839435557f4b9a">sandbox</a>.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>() &lt;&lt; <span class="stringliteral">&quot;&#39;&quot;</span>;</d
 iv><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  }</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classTemporaryDirectoryTest.html#af398699f3f3f018086e72ea220d65dbd">   62</a></span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classTemporaryDirectoryTest.html#af398699f3f3f018086e72ea220d65dbd">TearDown</a>()</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  {</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    <span class="comment">// Return to previous working directory and cleanup the sandbox.</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a0add664e84bbf99f845f1b715dd63f90">ASSERT_SOME</a>(<a
  class="code" href="namespaceos.html#a11febfefa1908b3cb87b77da5c8482c5">os::chdir</a>(cwd));</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="classTemporaryDirectoryTest.html#aa550fd09eb1cff3070839435557f4b9a">sandbox</a>.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;      <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a0add664e84bbf99f845f1b715dd63f90">ASSERT_SOME</a>(<a class="code" href="namespaceos.html#a84298b990ad52dfd353358427b04ff3f">os::rmdir</a>(<a class="code" href="classTemporaryDirectoryTest.html#aa550fd09eb1cff3070839435557f4b9a">sandbox</a>.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>()));</div><div class="line"><a 
 name="l00069"></a><span class="lineno">   69</span>&#160;    }</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;  }</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;  <span class="comment">// A temporary directory for test purposes.</span></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;  <span class="comment">// Not to be confused with the &quot;sandbox&quot; that tasks are run in.</span></div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classTemporaryDirectoryTest.html#aa550fd09eb1cff3070839435557f4b9a">   74</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="classTemporaryDirectoryTest.html#aa550fd09eb1cff3070839435557f4b9a">sandbox</a>;</div><div class="line"><a name="l00075"></a><span class="lineno">
    75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  std::string cwd;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;};</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="preprocessor">#ifdef __FreeBSD__</span></div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> isJailed() {</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  <span class="keywordtype">int</span> mib[4];</div><div class="line"><a name="l00084"></a><span class="lineno">
    84</span>&#160;  <span class="keywordtype">size_t</span> len = 4;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  ::sysctlnametomib(<span class="stringliteral">&quot;security.jail.jailed&quot;</span>, mib, &amp;len);</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  <a class="code" href="classTry.html">Try&lt;int&gt;</a> jailed = <a class="code" href="structos_1_1sysctl.html">os::sysctl</a>(mib[0], mib[1], mib[2]).<a class="code" href="structos_1_1sysctl.html#ae4fa1e9a1934a5f694a83ba10b008764">integer</a>();</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  <span class="keywordflow">if</span> (jailed.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>()) {</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;      <span class="keywordflow">return</span> jailed.<a class="code" href="classTry.html#a8bc7f43e75a47111ea1
 8e9c83b007be5">get</a>() == 1;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;  }</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;}</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="preprocessor">#endif // __STOUT_TESTS_UTILS_HPP__</span></div><div class="ttc" id="realpath_8hpp_html"><div class="ttname"><a href="realpath_8hpp.html">realpath.hpp</a></div></div>
+<a href="3rdparty_2stout_2include_2stout_2tests_2utils_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//  http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</spa
 n>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 
   12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_TESTS_UTILS_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_TESTS_UTILS_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;gtest/gtest.h&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a class="cod
 e" href="stout_2include_2stout_2gtest_8hpp.html">stout/gtest.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="chdir_8hpp.html">stout/os/chdir.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="getcwd_8hpp.html">stout/os/getcwd.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="mkdtemp_8hpp.html">stout/os/mkdtemp.hpp</a>&gt;</span></div><div class="line"><a name="l00026"></a><span 
 class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="realpath_8hpp.html">stout/os/realpath.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="rmdir_8hpp.html">stout/os/rmdir.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#if __FreeBSD__</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="sysctl_8hpp.html">stout/os/sysctl.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a 
 name="l00033"></a><span class="lineno"><a class="line" href="classTemporaryDirectoryTest.html">   33</a></span>&#160;<span class="keyword">class </span><a class="code" href="classTemporaryDirectoryTest.html">TemporaryDirectoryTest</a> : <span class="keyword">public</span> ::testing::Test</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;{</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="classTemporaryDirectoryTest.html#ad2e713530533a81df53294d7cb06ecea">   36</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classTemporaryDirectoryTest.html#ad2e713530533a81df53294d7cb06ecea">SetUp</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a n
 ame="l00038"></a><span class="lineno">   38</span>&#160;    <span class="comment">// Save the current working directory.</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;    cwd = <a class="code" href="namespaceos.html#a84a3290f051cdd50d88e0fd611645d4a">os::getcwd</a>();</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;    <span class="comment">// Create a temporary directory for the test.</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;    <a class="code" href="classTry.html">Try&lt;std::string&gt;</a> directory = <a class="code" href="namespaceos.html#afe70fd86d13b8f10cafb222bb80adcf6">os::mkdtemp</a>();</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;    <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a0add664e84bbf99f845f1b715dd63f90"
 >ASSERT_SOME</a>(directory) &lt;&lt; <span class="stringliteral">&quot;Failed to mkdtemp&quot;</span>;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    <span class="comment">// We get the `realpath` of the temporary directory because some</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    <span class="comment">// platforms, like macOS, symlink `/tmp` to `/private/var`, but</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    <span class="comment">// return the symlink name when creating temporary directories.</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    <span class="comment">// This is problematic because a lot of tests compare the</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    <span cl
 ass="comment">// `realpath` of a temporary file.</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    <a class="code" href="classResult.html">Result&lt;std::string&gt;</a> <a class="code" href="namespaceos.html#aa533c79d98af12b40b567a851e442373">realpath</a> = <a class="code" href="namespaceos.html#aa533c79d98af12b40b567a851e442373">os::realpath</a>(directory.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a0add664e84bbf99f845f1b715dd63f90">ASSERT_SOME</a>(realpath) &lt;&lt; <span class="stringliteral">&quot;Failed to get realpath of &#39;&quot;</span> &lt;&lt; directory.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;                          &lt;&
 lt; <span class="stringliteral">&quot;&#39;: &quot;</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;                          &lt;&lt; (realpath.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>() ? realpath.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>()</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;                                                 : <span class="stringliteral">&quot;No such directory&quot;</span>);</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    <a class="code" href="classTemporaryDirectoryTest.html#aa550fd09eb1cff3070839435557f4b9a">sandbox</a> = realpath.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>();</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div><div class="line"><a name="l00057"></a><span class
 ="lineno">   57</span>&#160;    <span class="comment">// Run the test out of the temporary directory we created.</span></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a0add664e84bbf99f845f1b715dd63f90">ASSERT_SOME</a>(<a class="code" href="namespaceos.html#a11febfefa1908b3cb87b77da5c8482c5">os::chdir</a>(<a class="code" href="classTemporaryDirectoryTest.html#aa550fd09eb1cff3070839435557f4b9a">sandbox</a>.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>()))</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;      &lt;&lt; <span class="stringliteral">&quot;Failed to chdir into &#39;&quot;</span> &lt;&lt; <a class="code" href="classTemporaryDirectoryTest.html#aa550fd09eb1cff3070839435557f4b9a">sandbox</a>.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>() &lt;&lt; <span class="stringliteral
 ">&quot;&#39;&quot;</span>;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  }</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classTemporaryDirectoryTest.html#a6a969f7ca1e9720dcec0eeb0b4fa5d47">   62</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classTemporaryDirectoryTest.html#a6a969f7ca1e9720dcec0eeb0b4fa5d47">TearDown</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    <span class="comment">// Return to previous working directory and cleanup the sandbox.</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    <a class="code" href="stout_2include_2stout_2gtest_8hp
 p.html#a0add664e84bbf99f845f1b715dd63f90">ASSERT_SOME</a>(<a class="code" href="namespaceos.html#a11febfefa1908b3cb87b77da5c8482c5">os::chdir</a>(cwd));</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="classTemporaryDirectoryTest.html#aa550fd09eb1cff3070839435557f4b9a">sandbox</a>.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;      <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a0add664e84bbf99f845f1b715dd63f90">ASSERT_SOME</a>(<a class="code" href="namespaceos.html#a84298b990ad52dfd353358427b04ff3f">os::rmdir</a>(<a class="code" href="classTemporaryDirectoryTest.html#aa550fd09eb1cff3070839435557f4b9a">sandbox</a>.<a class="code" href="classOption.html#a21358442c0fac
 1cc978a67a9a9089a79">get</a>()));</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    }</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;  }</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;  <span class="comment">// A temporary directory for test purposes.</span></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;  <span class="comment">// Not to be confused with the &quot;sandbox&quot; that tasks are run in.</span></div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classTemporaryDirectoryTest.html#aa550fd09eb1cff3070839435557f4b9a">   74</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="classTemporaryDirectoryTest.html#aa550fd09eb1cff3070839435557f4b9a">sandbox</a>;</div>
 <div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  std::string cwd;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;};</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="preprocessor">#ifdef __FreeBSD__</span></div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> isJailed() {</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  <span class="keywordtype">int</span> mib[4];</div>
 <div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;  <span class="keywordtype">size_t</span> len = 4;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  ::sysctlnametomib(<span class="stringliteral">&quot;security.jail.jailed&quot;</span>, mib, &amp;len);</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  <a class="code" href="classTry.html">Try&lt;int&gt;</a> jailed = <a class="code" href="structos_1_1sysctl.html">os::sysctl</a>(mib[0], mib[1], mib[2]).<a class="code" href="structos_1_1sysctl.html#ae4fa1e9a1934a5f694a83ba10b008764">integer</a>();</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  <span class="keywordflow">if</span> (jailed.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>()) {</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;      <span class="keywordflow">return</span> jai
 led.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() == 1;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;  }</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;}</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="preprocessor">#endif // __STOUT_TESTS_UTILS_HPP__</span></div><div class="ttc" id="realpath_8hpp_html"><div class="ttname"><a href="realpath_8hpp.html">realpath.hpp</a></div></div>
 <div class="ttc" id="namespaceos_html_a84298b990ad52dfd353358427b04ff3f"><div class="ttname"><a href="namespaceos.html#a84298b990ad52dfd353358427b04ff3f">os::rmdir</a></div><div class="ttdeci">Try&lt; Nothing &gt; rmdir(const std::string &amp;directory, bool recursive=true, bool removeRoot=true, bool continueOnError=false)</div><div class="ttdef"><b>Definition:</b> rmdir.hpp:42</div></div>
 <div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option&lt; std::string &gt;</a></div></div>
 <div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T &amp; get()&amp;</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
@@ -61,7 +61,6 @@
 <div class="ttc" id="classResult_html_a521adf96f5c27d26d6b1d580aae8aaee"><div class="ttname"><a href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">Result::error</a></div><div class="ttdeci">static Result&lt; T &gt; error(const std::string &amp;message)</div><div class="ttdef"><b>Definition:</b> result.hpp:53</div></div>
 <div class="ttc" id="namespaceos_html_a84a3290f051cdd50d88e0fd611645d4a"><div class="ttname"><a href="namespaceos.html#a84a3290f051cdd50d88e0fd611645d4a">os::getcwd</a></div><div class="ttdeci">std::string getcwd()</div><div class="ttdef"><b>Definition:</b> getcwd.hpp:23</div></div>
 <div class="ttc" id="chdir_8hpp_html"><div class="ttname"><a href="chdir_8hpp.html">chdir.hpp</a></div></div>
-<div class="ttc" id="classTemporaryDirectoryTest_html_af398699f3f3f018086e72ea220d65dbd"><div class="ttname"><a href="classTemporaryDirectoryTest.html#af398699f3f3f018086e72ea220d65dbd">TemporaryDirectoryTest::TearDown</a></div><div class="ttdeci">virtual void TearDown()</div><div class="ttdef"><b>Definition:</b> utils.hpp:62</div></div>
 <div class="ttc" id="classResult_html"><div class="ttname"><a href="classResult.html">Result</a></div><div class="ttdef"><b>Definition:</b> check.hpp:30</div></div>
 <div class="ttc" id="classOption_html_a4e3bf8416d95246f43c91f1b5c309323"><div class="ttname"><a href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">Option::isSome</a></div><div class="ttdeci">bool isSome() const </div><div class="ttdef"><b>Definition:</b> option.hpp:115</div></div>
 <div class="ttc" id="classTemporaryDirectoryTest_html"><div class="ttname"><a href="classTemporaryDirectoryTest.html">TemporaryDirectoryTest</a></div><div class="ttdef"><b>Definition:</b> utils.hpp:33</div></div>
@@ -74,12 +73,13 @@
 <div class="ttc" id="structos_1_1sysctl_html_ae4fa1e9a1934a5f694a83ba10b008764"><div class="ttname"><a href="structos_1_1sysctl.html#ae4fa1e9a1934a5f694a83ba10b008764">os::sysctl::integer</a></div><div class="ttdeci">Integer integer() const </div><div class="ttdef"><b>Definition:</b> sysctl.hpp:182</div></div>
 <div class="ttc" id="mkdtemp_8hpp_html"><div class="ttname"><a href="mkdtemp_8hpp.html">mkdtemp.hpp</a></div></div>
 <div class="ttc" id="try_8hpp_html"><div class="ttname"><a href="try_8hpp.html">try.hpp</a></div></div>
+<div class="ttc" id="classTemporaryDirectoryTest_html_ad2e713530533a81df53294d7cb06ecea"><div class="ttname"><a href="classTemporaryDirectoryTest.html#ad2e713530533a81df53294d7cb06ecea">TemporaryDirectoryTest::SetUp</a></div><div class="ttdeci">void SetUp() override</div><div class="ttdef"><b>Definition:</b> utils.hpp:36</div></div>
 <div class="ttc" id="structos_1_1sysctl_html"><div class="ttname"><a href="structos_1_1sysctl.html">os::sysctl</a></div><div class="ttdef"><b>Definition:</b> sysctl.hpp:59</div></div>
-<div class="ttc" id="classTemporaryDirectoryTest_html_a8c276b7f4a8ac1d5ca5d575d56fbea12"><div class="ttname"><a href="classTemporaryDirectoryTest.html#a8c276b7f4a8ac1d5ca5d575d56fbea12">TemporaryDirectoryTest::SetUp</a></div><div class="ttdeci">virtual void SetUp()</div><div class="ttdef"><b>Definition:</b> utils.hpp:36</div></div>
 <div class="ttc" id="classResult_html_aeca16ad17d299ad885c9b46c83b12a3d"><div class="ttname"><a href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">Result::isError</a></div><div class="ttdeci">bool isError() const </div><div class="ttdef"><b>Definition:</b> result.hpp:113</div></div>
 <div class="ttc" id="classTemporaryDirectoryTest_html_aa550fd09eb1cff3070839435557f4b9a"><div class="ttname"><a href="classTemporaryDirectoryTest.html#aa550fd09eb1cff3070839435557f4b9a">TemporaryDirectoryTest::sandbox</a></div><div class="ttdeci">Option&lt; std::string &gt; sandbox</div><div class="ttdef"><b>Definition:</b> utils.hpp:74</div></div>
 <div class="ttc" id="namespaceos_html_a11febfefa1908b3cb87b77da5c8482c5"><div class="ttname"><a href="namespaceos.html#a11febfefa1908b3cb87b77da5c8482c5">os::chdir</a></div><div class="ttdeci">Try&lt; Nothing &gt; chdir(const std::string &amp;directory)</div><div class="ttdef"><b>Definition:</b> chdir.hpp:25</div></div>
 <div class="ttc" id="stout_2include_2stout_2gtest_8hpp_html_a0add664e84bbf99f845f1b715dd63f90"><div class="ttname"><a href="stout_2include_2stout_2gtest_8hpp.html#a0add664e84bbf99f845f1b715dd63f90">ASSERT_SOME</a></div><div class="ttdeci">#define ASSERT_SOME(actual)</div><div class="ttdef"><b>Definition:</b> gtest.hpp:128</div></div>
+<div class="ttc" id="classTemporaryDirectoryTest_html_a6a969f7ca1e9720dcec0eeb0b4fa5d47"><div class="ttname"><a href="classTemporaryDirectoryTest.html#a6a969f7ca1e9720dcec0eeb0b4fa5d47">TemporaryDirectoryTest::TearDown</a></div><div class="ttdeci">void TearDown() override</div><div class="ttdef"><b>Definition:</b> utils.hpp:62</div></div>
 <div class="ttc" id="rmdir_8hpp_html"><div class="ttname"><a href="rmdir_8hpp.html">rmdir.hpp</a></div></div>
 <div class="ttc" id="namespaceos_html_afe70fd86d13b8f10cafb222bb80adcf6"><div class="ttname"><a href="namespaceos.html#afe70fd86d13b8f10cafb222bb80adcf6">os::mkdtemp</a></div><div class="ttdeci">Try&lt; std::string &gt; mkdtemp(const std::string &amp;path=path::join(os::temp(),&quot;XXXXXX&quot;))</div><div class="ttdef"><b>Definition:</b> mkdtemp.hpp:38</div></div>
 </div><!-- fragment --></div><!-- contents -->