--- /dev/null
+diff --git a/tests/unit/modules/inspect_collector_test.py b/tests/unit/modules/inspect_collector_test.py
+index 9d2fa3ada7..710bbd75a5 100644
+--- a/tests/unit/modules/inspect_collector_test.py
++++ b/tests/unit/modules/inspect_collector_test.py
+@@ -36,28 +36,6 @@ class InspectorCollectorTestCase(TestCase):
+ self.assertEqual(inspector.dbfile, '/foo/cache/_minion_collector.db')
+ self.assertEqual(inspector.pidfile, '/foo/pid/bar.pid')
+
+- def test_file_tree(self):
+- '''
+- Test file tree.
+-
+- :return:
+- '''
+-
+- inspector = Inspector(cachedir='/test', piddir='/test', pidfilename='bar.pid')
+- tree_root = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'inspectlib', 'tree_test')
+- expected_tree = (['/a/a/dummy.a', '/a/b/dummy.b', '/b/b.1', '/b/b.2', '/b/b.3'],
+- ['/a', '/a/a', '/a/b', '/a/c', '/b', '/c'],
+- ['/a/a/dummy.ln.a', '/a/b/dummy.ln.b', '/a/c/b.1', '/b/b.4',
+- '/b/b.5', '/c/b.1', '/c/b.2', '/c/b.3'])
+- tree_result = []
+- for chunk in inspector._get_all_files(tree_root):
+- buff = []
+- for pth in chunk:
+- buff.append(pth.replace(tree_root, ''))
+- tree_result.append(buff)
+- tree_result = tuple(tree_result)
+- self.assertEqual(expected_tree, tree_result)
+-
+ def test_get_unmanaged_files(self):
+ '''
+ Test get_unmanaged_files.
--- /dev/null
+diff --git a/tests/unit/conf_test.py b/tests/unit/conf_test.py
+index cce0023423..c1324f4a61 100644
+--- a/tests/unit/conf_test.py
++++ b/tests/unit/conf_test.py
+@@ -140,6 +140,8 @@ class ConfTest(TestCase):
+ commented out. This test loops through all of the files in that directory to check
+ for any lines that are not commented or blank.
+ '''
++ if not os.path.exists(SAMPLE_CONF_DIR + 'cloud.profiles.d/'):
++ return
+ cloud_sample_files = os.listdir(SAMPLE_CONF_DIR + 'cloud.profiles.d/')
+ for conf_file in cloud_sample_files:
+ profile_conf = SAMPLE_CONF_DIR + 'cloud.profiles.d/' + conf_file
+@@ -158,6 +160,8 @@ class ConfTest(TestCase):
+ commented out. This test loops through all of the files in that directory to check
+ for any lines that are not commented or blank.
+ '''
++ if not os.path.exists(SAMPLE_CONF_DIR + 'cloud.providers.d/'):
++ return
+ cloud_sample_files = os.listdir(SAMPLE_CONF_DIR + 'cloud.providers.d/')
+ for conf_file in cloud_sample_files:
+ provider_conf = SAMPLE_CONF_DIR + 'cloud.providers.d/' + conf_file
+@@ -176,6 +180,9 @@ class ConfTest(TestCase):
+ commented out. This test loops through all of the files in that directory to check
+ for any lines that are not commented or blank.
+ '''
++ if not os.path.exists(SAMPLE_CONF_DIR + 'cloud.maps.d/'):
++ return
++
+ cloud_sample_files = os.listdir(SAMPLE_CONF_DIR + 'cloud.maps.d/')
+ for conf_file in cloud_sample_files:
+ map_conf = SAMPLE_CONF_DIR + 'cloud.maps.d/' + conf_file
--- /dev/null
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+PYTHON_COMPAT=( python2_7 )
+
+inherit eutils systemd distutils-r1
+
+DESCRIPTION="Salt is a remote execution and configuration manager"
+HOMEPAGE="http://saltstack.org/"
+
+if [[ ${PV} == 9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="git://github.com/${PN}stack/${PN}.git"
+ EGIT_BRANCH="develop"
+ SRC_URI=""
+ KEYWORDS=""
+else
+ SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+ KEYWORDS="~x86 ~amd64"
+fi
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="cherrypy ldap libcloud libvirt gnupg keyring mako mongodb mysql neutron nova"
+IUSE+=" openssl portage profile redis selinux test timelib raet +zeromq vim-syntax"
+
+RDEPEND="sys-apps/pciutils
+ dev-python/jinja[${PYTHON_USEDEP}]
+ >=dev-python/msgpack-0.3[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/markupsafe[${PYTHON_USEDEP}]
+ >=dev-python/requests-1.0.0[${PYTHON_USEDEP}]
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ >=www-servers/tornado-4.2.1[${PYTHON_USEDEP}]
+ virtual/python-futures[${PYTHON_USEDEP}]
+ libcloud? ( >=dev-python/libcloud-0.14.0[${PYTHON_USEDEP}] )
+ mako? ( dev-python/mako[${PYTHON_USEDEP}] )
+ ldap? ( dev-python/python-ldap[${PYTHON_USEDEP}] )
+ libvirt? ( dev-python/libvirt-python[${PYTHON_USEDEP}] )
+ openssl? (
+ dev-libs/openssl:*[-bindist]
+ dev-python/pyopenssl[${PYTHON_USEDEP}]
+ )
+ raet? (
+ >=dev-python/libnacl-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/ioflo-1.1.7[${PYTHON_USEDEP}]
+ >=dev-python/raet-0.6.0[${PYTHON_USEDEP}]
+ )
+ zeromq? (
+ >=dev-python/pyzmq-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/pycrypto-2.6.1[${PYTHON_USEDEP}]
+ )
+ cherrypy? ( >=dev-python/cherrypy-3.2.2[${PYTHON_USEDEP}] )
+ mongodb? ( dev-python/pymongo[${PYTHON_USEDEP}] )
+ portage? ( sys-apps/portage[${PYTHON_USEDEP}] )
+ keyring? ( dev-python/keyring[${PYTHON_USEDEP}] )
+ mysql? ( dev-python/mysql-python[${PYTHON_USEDEP}] )
+ redis? ( dev-python/redis-py[${PYTHON_USEDEP}] )
+ selinux? ( sec-policy/selinux-salt )
+ timelib? ( dev-python/timelib[${PYTHON_USEDEP}] )
+ nova? ( >=dev-python/python-novaclient-2.17.0[${PYTHON_USEDEP}] )
+ neutron? ( >=dev-python/python-neutronclient-2.3.6[${PYTHON_USEDEP}] )
+ gnupg? ( dev-python/python-gnupg[${PYTHON_USEDEP}] )
+ profile? ( dev-python/yappi[${PYTHON_USEDEP}] )
+ vim-syntax? ( app-vim/salt-vim )"
+DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
+ test? (
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dev-python/pip[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ dev-python/mock[${PYTHON_USEDEP}]
+ dev-python/timelib[${PYTHON_USEDEP}]
+ >=dev-python/boto-2.32.1[${PYTHON_USEDEP}]
+ !x86? ( dev-python/boto3[${PYTHON_USEDEP}] )
+ >=dev-python/moto-0.3.6[${PYTHON_USEDEP}]
+ >=dev-python/SaltTesting-2016.5.11[${PYTHON_USEDEP}]
+ >=dev-python/libcloud-0.14.0[${PYTHON_USEDEP}]
+ ${RDEPEND}
+ )"
+
+DOCS=( README.rst AUTHORS )
+
+REQUIRED_USE="|| ( raet zeromq )"
+RESTRICT="x86? ( test )"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-2015.8.2-tmpdir.patch"
+ "${FILESDIR}/${PN}-2016.3.1-dont-realpath-tmpdir.patch"
+ "${FILESDIR}/${PN}-2016.3.4-test-nonexist-dirs.patch"
+ "${FILESDIR}/${PN}-2016.3.4-dont-test-ordering.patch"
+)
+
+python_prepare() {
+ # this test fails because it trys to "pip install distribute"
+ rm tests/unit/{modules,states}/zcbuildout_test.py \
+ tests/unit/modules/{rh_ip,win_network,random_org}_test.py || die
+
+ # apparently libcloud does not know about this?
+ rm tests/unit/cloud/clouds/dimensiondata_test.py || die
+
+ # seriously? "ValueError: Missing (or not readable) key file: '/home/dany/PRIVKEY.pem'"
+ rm tests/unit/cloud/clouds/gce_test.py || die
+}
+
+python_install_all() {
+ local svc
+ USE_SETUPTOOLS=1 distutils-r1_python_install_all
+
+ for svc in minion master syndic api; do
+ newinitd "${FILESDIR}"/${svc}-initd-4 salt-${svc}
+ newconfd "${FILESDIR}"/${svc}-confd-1 salt-${svc}
+ systemd_dounit "${FILESDIR}"/salt-${svc}.service
+ done
+
+ insinto /etc/${PN}
+ doins -r conf/*
+}
+
+python_test() {
+ local tempdir
+ # testsuite likes lots of files
+ ulimit -n 3072 || die
+
+ # ${T} is too long a path for the tests to work
+ tempdir="$(mktemp -dup /tmp salt-XXX)"
+ mkdir "${T}/$(basename "${tempdir}")"
+
+ (
+ cleanup() { rm -f "${tempdir}"; }
+ trap cleanup EXIT
+
+ addwrite "${tempdir}"
+ ln -s "$(realpath --relative-to=/tmp "${T}/$(basename "${tempdir}")")" "${tempdir}"
+
+ USE_SETUPTOOLS=1 SHELL="/bin/bash" \
+ TMPDIR="${tempdir}" \
+ ${EPYTHON} tests/runtests.py \
+ --unit-tests --no-report --verbose
+
+ ) || die "testing failed"
+}