This file is indexed.

/usr/lib/python3/dist-packages/click/tests/integration/helpers.py is in python3-click-package 0.4.43+16.04.20160203-0ubuntu2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# Copyright (C) 2014 Canonical Ltd.
# Author: Michael Vogt <michael.vogt@ubuntu.com>

# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 3 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

"""Integration tests helper for the click CLI interface."""

import contextlib
import glob
import json
import os
import random
import shutil
import string
import subprocess
import tempfile
import unittest


def require_root():
    if os.getuid() != 0:
        raise unittest.SkipTest("This test needs to run as root")


def require_network():
    try:
        if subprocess.call(["ping", "-c1", "archive.ubuntu.com"]) != 0:
            raise unittest.SkipTest("Need network")
    except Exception:
        pass


@contextlib.contextmanager
def chdir(target):
    curdir = os.getcwd()
    os.chdir(target)
    try:
        yield
    finally:
        os.chdir(curdir)


def cmdline_for_user(username):
    """Helper to get the click commandline for the given username"""
    if username == "@all":
        user = "--all-users"
    else:
        user = "--user=%s" % username
    return user


class ClickTestCase(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        if "TEST_INTEGRATION" not in os.environ:
            raise unittest.SkipTest("Skipping integration tests")
        cls.click_binary = os.environ.get("CLICK_BINARY", "/usr/bin/click")

    def setUp(self):
        super(ClickTestCase, self).setUp()
        self.temp_dir = tempfile.mkdtemp()

    def tearDown(self):
        super(ClickTestCase, self).tearDown()
        # we force the cleanup before removing the tempdir so that stuff
        # in temp_dir is still available
        self.doCleanups()
        shutil.rmtree(self.temp_dir)

    def click_install(self, path_to_click, click_name, username,
                      allow_unauthenticated=True):
        cmd = [self.click_binary, "install", cmdline_for_user(username)]
        if allow_unauthenticated:
            cmd.append("--allow-unauthenticated")
        cmd.append(path_to_click)
        subprocess.check_call(cmd)
        self.addCleanup(self.click_unregister, click_name, username)

    def click_unregister(self, click_name, username):
        subprocess.check_call(
            [self.click_binary, "unregister", cmdline_for_user(username),
             click_name])

    def _create_manifest(self, target, name, version, framework, hooks={}):
        with open(target, "w") as f:
            json.dump({
                'name': name,
                'version': str(version),
                'maintainer': 'Foo Bar <foo@example.org>',
                'title': 'test title',
                'framework': framework,
                'hooks': hooks,
                }, f)

    def _make_click(self, name=None, version=1.0,
                    framework="ubuntu-sdk-13.10", hooks={}):
        if name is None:
            name = "com.example.%s" % "".join(
                random.choice(string.ascii_lowercase) for i in range(10))
        tmpdir = tempfile.mkdtemp()
        self.addCleanup(lambda: shutil.rmtree(tmpdir))
        clickdir = os.path.join(tmpdir, name)
        os.makedirs(clickdir)
        self._create_manifest(os.path.join(clickdir, "manifest.json"),
                              name, version, framework, hooks)
        with open(os.path.join(clickdir, "README"), "w") as f:
            f.write("hello world!")
        with chdir(tmpdir), open(os.devnull, "w") as devnull:
            subprocess.call(
                [self.click_binary, "build", clickdir], stdout=devnull)
        generated_clicks = glob.glob(os.path.join(tmpdir, "*.click"))
        self.assertEqual(len(generated_clicks), 1)
        return generated_clicks[0]