class DeployGeneratorPermissionsTest(unittest.TestCase): """ Test files deployed by the deploy generator are copied with same permissions """ def setUp(self): conanfile1 = GenConanfile() conanfile1.with_package_file("include/header1.h", "whatever") self.ref1 = ConanFileReference("name1", "version", "user", "channel") self.client = TurboTestClient() self.client.create(self.ref1, conanfile1) layout = self.client.cache.package_layout(self.ref1) package_folder = layout.package( PackageReference(self.ref1, NO_SETTINGS_PACKAGE_ID)) self.header_path = os.path.join(package_folder, "include", "header1.h") self.assertTrue(os.path.exists(self.header_path)) @unittest.skipIf(platform.system() == "Windows", "Permissions in NIX systems only") def same_permissions_test(self): stat_info = os.stat(self.header_path) self.assertFalse(stat_info.st_mode & stat.S_IXUSR) os.chmod(self.header_path, stat_info.st_mode | stat.S_IXUSR) self.client.current_folder = temp_folder() self.client.run("install %s -g deploy" % self.ref1.full_str()) base1_path = os.path.join(self.client.current_folder, "name1") header1_path = os.path.join(base1_path, "include", "header1.h") stat_info = os.stat(header1_path) self.assertTrue(stat_info.st_mode & stat.S_IXUSR)
class DeployGeneratorSymbolicLinkTest(unittest.TestCase): def setUp(self): conanfile = GenConanfile() conanfile.with_package_file("include/header.h", "whatever") self.ref = ConanFileReference("name", "version", "user", "channel") self.client = TurboTestClient() self.client.create(self.ref, conanfile) layout = self.client.cache.package_layout(self.ref) package_folder = layout.package( PackageReference(self.ref, NO_SETTINGS_PACKAGE_ID)) self.header_path = os.path.join(package_folder, "include", "header.h") def test_symbolic_links(self): link_path = self.header_path + ".lnk" os.symlink(self.header_path, link_path) self.client.current_folder = temp_folder() self.client.run("install %s -g deploy" % self.ref.full_str()) base_path = os.path.join(self.client.current_folder, "name") header_path = os.path.join(base_path, "include", "header.h") link_path = os.path.join(base_path, "include", "header.h.lnk") self.assertTrue(os.path.islink(link_path)) self.assertFalse(os.path.islink(header_path)) linkto = os.path.join(os.path.dirname(link_path), os.readlink(link_path)) self.assertEqual(linkto, header_path)
class DeployGeneratorSymbolicLinkFolderTest(unittest.TestCase): def setUp(self): conanfile = textwrap.dedent(""" import os from conans import ConanFile, tools class TestConan(ConanFile): def package(self): folder_path = os.path.join(self.package_folder, "one_folder") tools.mkdir(folder_path) link_folder_path = os.path.join(self.package_folder, "other_folder") with tools.chdir(os.path.dirname(folder_path)): os.symlink(os.path.basename(folder_path), link_folder_path) """) self.ref = ConanFileReference("name", "version", "user", "channel") self.client = TurboTestClient() self.client.create(self.ref, conanfile) def test_symbolic_links(self): self.client.current_folder = temp_folder() self.client.run("install %s -g deploy" % self.ref.full_str()) base_path = os.path.join(self.client.current_folder, "name") folder_path = os.path.join(base_path, "one_folder") link_folder_path = os.path.join(base_path, "other_folder") self.assertTrue(os.path.islink(link_folder_path)) self.assertFalse(os.path.islink(folder_path)) linkto_folder = os.path.join(os.path.dirname(link_folder_path), os.readlink(link_folder_path)) self.assertEqual(linkto_folder, folder_path)
def setUp(self): conanfile = GenConanfile() conanfile.with_package_file("include/header.h", "whatever") conanfile.with_package_file("my_libs/file.lib", "whatever") conanfile.with_package_file("file.config", "whatever") self.client = TurboTestClient() ref = ConanFileReference("name", "version", "user", "channel") self.client.create(ref, conanfile) self.client.current_folder = temp_folder() self.client.run("install %s -g deploy" % ref.full_str())
def setUp(self): conanfile1 = GenConanfile() conanfile1.with_package_file("include/header1.h", "whatever") conanfile1.with_package_file("my_libs/file1.lib", "whatever") conanfile1.with_package_file("file1.config", "whatever") ref1 = ConanFileReference("name1", "version", "user", "channel") conanfile2 = GenConanfile() conanfile2.with_requirement(ref1) conanfile2.with_package_file("include_files/header2.h", "whatever") conanfile2.with_package_file("my_other_libs/file2.lib", "whatever") conanfile2.with_package_file("build/file2.config", "whatever") ref2 = ConanFileReference("name2", "version", "user", "channel") self.client = TurboTestClient() self.client.create(ref1, conanfile1) self.client.create(ref2, conanfile2) self.client.current_folder = temp_folder() self.client.run("install %s -g deploy" % ref2.full_str())
def test_package_folder_build_error(self): """ Check package folder is not created if the build step fails """ client = TestClient() conanfile = textwrap.dedent(""" from conans import ConanFile class MyPkg(ConanFile): def build(self): raise ConanException("Build error") """) client.save({"conanfile.py": conanfile}) ref = ConanFileReference("pkg", "0.1", "danimtb", "testing") pref = PackageReference(ref, NO_SETTINGS_PACKAGE_ID, None) client.run("create . %s" % ref.full_str(), assert_error=True) self.assertIn("Build error", client.out) package_folder = client.cache.package_layout(pref.ref).package(pref) self.assertFalse(os.path.exists(package_folder))