Exemple #1
0
    def test_link_symlink_to_dir(self):
        os.symlink('bar', os.path.join('foo', 'bar-link'))
        file_utils.link_or_copy_tree('foo', 'qux')

        # Verify that the symlink remains a symlink
        self.assertThat(os.path.join('qux', 'bar-link'),
                        tests.LinkExists('bar'))
Exemple #2
0
    def test_link_symlink_to_file(self):
        # Create a symlink to a file
        os.symlink('2', os.path.join('foo', '2-link'))
        file_utils.link_or_copy_tree('foo', 'qux')

        # Verify that the symlink remains a symlink
        self.assertThat(os.path.join('qux', '2-link'), tests.LinkExists('2'))
Exemple #3
0
    def test_pull_keeps_symlinks(self):
        # Create a source containing a directory, a file and symlinks to both.
        os.makedirs(os.path.join('src', 'dir'))
        open(os.path.join('src', 'dir', 'file'), 'w').close()
        os.symlink('dir', os.path.join('src', 'dir_symlink'))
        os.symlink('file', os.path.join('src', 'dir', 'file_symlink'))

        local = sources.Local('src', 'destination')
        local.pull()

        # Verify that both the file and the directory symlinks were kept.
        self.expectThat(os.path.join('destination', 'dir'), DirExists())
        self.expectThat(os.path.join('destination', 'dir_symlink'),
                        tests.LinkExists('dir'))
        self.expectThat(os.path.join('destination', 'dir', 'file'),
                        FileExists())
        self.expectThat(os.path.join('destination', 'dir', 'file_symlink'),
                        tests.LinkExists('file'))
Exemple #4
0
    def test_dump_symlinks_to_libc(self):
        plugin = DumpPlugin('dump', self.options, self.project_options)
        os.makedirs(plugin.builddir)

        # Even though this symlink is absolute, since it's to libc the copy
        # plugin shouldn't try to follow it or modify it.
        libc_libs = snapcraft.repo.get_pkg_libs('libc6')

        # We don't care which lib we're testing with, as long as it's a .so.
        libc_library_path = [lib for lib in libc_libs if '.so' in lib][0]
        os.symlink(libc_library_path, os.path.join(plugin.builddir,
                                                   'libc-link'))

        plugin.build()

        self.assertThat(os.path.join(plugin.installdir, 'libc-link'),
                        tests.LinkExists(libc_library_path))
Exemple #5
0
    def test_copy_symlinks_to_libc(self):
        self.mock_options.files = {'*': '.'}

        c = CopyPlugin('copy', self.mock_options, self.project_options)

        # These directories are created by the pluginhandler
        os.makedirs(c.builddir)

        # Even though this symlink is absolute, since it's to libc the copy
        # plugin shouldn't try to follow it or modify it.
        libc_libs = snapcraft.repo.get_pkg_libs('libc6')

        # We don't care which lib we're testing with, as long as it's a .so.
        libc_library_path = [lib for lib in libc_libs if '.so' in lib][0]
        os.symlink(libc_library_path, os.path.join(c.builddir, 'libc-link'))

        c.build()

        self.assertThat(os.path.join(c.installdir, 'libc-link'),
                        tests.LinkExists(libc_library_path))