Skip to content

Commit

Permalink
Filter directories (#1719)
Browse files Browse the repository at this point in the history
* #685 remove trailing slash from the remote URL

Signed-off-by: SSE4 <tomskside@gmail.com>

* - filter out non-existing and empty directories

* fixed tests
  • Loading branch information
memsharded authored and lasote committed Sep 8, 2017
1 parent 5d77c05 commit 8a2d93b
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 17 deletions.
35 changes: 25 additions & 10 deletions conans/model/build_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,31 +27,46 @@ def __init__(self):
self.exelinkflags = [] # linker flags
self.rootpath = ""
self.sysroot = None
self._include_paths = None
self._lib_paths = None
self._bin_paths = None
self._build_paths = None
self._res_paths = None

def _filter_paths(self, paths):
abs_paths = [os.path.join(self.rootpath, p)
if not os.path.isabs(p) else p for p in paths]
return [p for p in abs_paths if os.path.isdir(p)]

@property
def include_paths(self):
return [os.path.join(self.rootpath, p)
if not os.path.isabs(p) else p for p in self.includedirs]
if self._include_paths is None:
self._include_paths = self._filter_paths(self.includedirs)
return self._include_paths

@property
def lib_paths(self):
return [os.path.join(self.rootpath, p)
if not os.path.isabs(p) else p for p in self.libdirs]
if self._lib_paths is None:
self._lib_paths = self._filter_paths(self.libdirs)
return self._lib_paths

@property
def bin_paths(self):
return [os.path.join(self.rootpath, p)
if not os.path.isabs(p) else p for p in self.bindirs]
if self._bin_paths is None:
self._bin_paths = self._filter_paths(self.bindirs)
return self._bin_paths

@property
def build_paths(self):
return [os.path.join(self.rootpath, p)
if not os.path.isabs(p) else p for p in self.builddirs]
if self._build_paths is None:
self._build_paths = self._filter_paths(self.builddirs)
return self._build_paths

@property
def res_paths(self):
return [os.path.join(self.rootpath, p)
if not os.path.isabs(p) else p for p in self.resdirs]
if self._res_paths is None:
self._res_paths = self._filter_paths(self.resdirs)
return self._res_paths


class CppInfo(_CppInfo):
Expand Down
5 changes: 5 additions & 0 deletions conans/test/command/build_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,15 @@ def build(self):

conanfile_dep = """
from conans import ConanFile
from conans.tools import mkdir
import os
class AConan(ConanFile):
name = "Hello"
version = "0.1"
def package(self):
mkdir(os.path.join(self.package_folder, "include"))
"""


Expand Down
4 changes: 4 additions & 0 deletions conans/test/integration/conan_env_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -264,13 +264,17 @@ def test_run_env(self):
client = TestClient()
conanfile = '''
from conans import ConanFile
from conans.tools import mkdir
import os
class HelloConan(ConanFile):
name = "Hello"
version = "0.1"
build_policy = "missing"
def package_info(self):
mkdir(os.path.join(self.package_folder, "bin2"))
mkdir(os.path.join(self.package_folder, "lib2"))
self.cpp_info.bindirs.append("bin2")
self.cpp_info.libdirs.append("lib2")
Expand Down
8 changes: 8 additions & 0 deletions conans/test/integration/flat_requirements_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,14 @@ def setUp(self):
self.conan_reference = ConanFileReference.loads("Hello0/0.1@lasote/stable")
self.files = cpp_hello_conan_files("Hello0", "0.1", build=False)
self.conan = TestClient()
package = """def package(self):
import os
os.mkdir(os.path.join(self.package_folder, "include"))
os.mkdir(os.path.join(self.package_folder, "lib"))
os.mkdir(os.path.join(self.package_folder, "bin"))
"""
self.files["conanfile.py"] = self.files["conanfile.py"].replace("def package(self):",
package)
self.conan.save(self.files)
self.conan.run("export lasote/stable")

Expand Down
24 changes: 17 additions & 7 deletions conans/test/model/build_info_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from conans.model.env_info import DepsEnvInfo
from conans.test.utils.test_files import temp_folder
import platform
from conans.util.files import mkdir


class BuildInfoTest(unittest.TestCase):
Expand Down Expand Up @@ -102,13 +103,22 @@ def configs_test(self):

def cpp_info_test(self):
folder = temp_folder()
mkdir(os.path.join(folder, "include"))
mkdir(os.path.join(folder, "lib"))
mkdir(os.path.join(folder, "local_bindir"))
abs_folder = temp_folder()
abs_include = os.path.join(abs_folder, "usr/include")
abs_lib = os.path.join(abs_folder, "usr/lib")
abs_bin = os.path.join(abs_folder, "usr/bin")
mkdir(abs_include)
mkdir(abs_lib)
mkdir(abs_bin)
info = CppInfo(folder)
info.includedirs.append("/usr/include")
info.libdirs.append("/usr/lib")
bin_abs_dir = "C:/usr/bin" if platform.system() == "Windows" else "/tmp"
info.bindirs.append(bin_abs_dir)
info.includedirs.append(abs_include)
info.libdirs.append(abs_lib)
info.bindirs.append(abs_bin)
info.bindirs.append("local_bindir")
self.assertEqual(info.include_paths, [os.path.join(folder, "include"), "/usr/include"])
self.assertEqual(info.lib_paths, [os.path.join(folder, "lib"), "/usr/lib"])
self.assertEqual(info.bin_paths, [os.path.join(folder, "bin"), bin_abs_dir,
self.assertEqual(info.include_paths, [os.path.join(folder, "include"), abs_include])
self.assertEqual(info.lib_paths, [os.path.join(folder, "lib"), abs_lib])
self.assertEqual(info.bin_paths, [abs_bin,
os.path.join(folder, "local_bindir")])

0 comments on commit 8a2d93b

Please sign in to comment.