This file is indexed.

/usr/lib/python2.7/dist-packages/linaro_image_tools/tests/fixtures.py is in python-linaro-image-tools 2016.05-1.1.

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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# Copyright (C) 2010, 2011 Linaro
#
# Author: Guilherme Salgado <guilherme.salgado@linaro.org>
#
# This file is part of Linaro Image Tools.
#
# Linaro Image Tools 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, either version 3 of the License, or
# (at your option) any later version.
#
# Linaro Image Tools 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/>.

import os
import shutil
import tempfile
from StringIO import StringIO

from linaro_image_tools import cmd_runner


class CreateTempDirFixture(object):

    def __init__(self):
        self.tempdir = None

    def setUp(self):
        self.tempdir = tempfile.mkdtemp()

    def tearDown(self):
        if os.path.exists(self.tempdir):
            shutil.rmtree(self.tempdir)

    def get_temp_dir(self):
        return self.tempdir


class CreateTempFileFixture(object):
    """Class to create a temporary file to be used in a test."""
    def __init__(self, string=None):
        """Initialize the fixture.

        :param string: the string to write in the file.
        """
        self.temp_file = None
        self.string = string

    def setUp(self):
        self.temp_file = tempfile.NamedTemporaryFile()
        if self.string is not None:
            self.temp_file.write(self.string)
            # Go back to the initial position, we just need to write something
            # and be able to read from the beginning of the file.
            self.temp_file.seek(0)

    def tearDown(self):
        # We don't need to do anything, file is automatically deleted.
        pass

    def get_file_name(self):
        return self.temp_file.name


class MockSomethingFixture(object):
    """A fixture which mocks something on the given object.

    Replaces attr_name on obj with the given mock, undoing that upon
    tearDown().
    """

    def __init__(self, obj, attr_name, mock):
        self.obj = obj
        self.attr_name = attr_name
        self.mock = mock
        self.orig_attr = getattr(obj, attr_name)

    def setUp(self):
        setattr(self.obj, self.attr_name, self.mock)

    def tearDown(self):
        setattr(self.obj, self.attr_name, self.orig_attr)


class MockCmdRunnerPopen(object):
    """A mock for cmd_runner.Popen() which stores the args given to it."""
    calls = None
    # A variable that is set to False in __call__() and only set back to True
    # when wait() is called, to indicate that the subprocess has finished. Is
    # used in tests to make sure all callsites wait for their child.
    child_finished = True

    def __init__(self, output_string='', assert_child_finished=True):
        self.assert_child_finished = assert_child_finished
        self.output_string = output_string

    def __call__(self, cmd, *args, **kwargs):
        if self.assert_child_finished and not self.child_finished:
            raise AssertionError(
                "You should call wait() or communicate() to ensure "
                "the subprocess is finished before proceeding.")
        self.child_finished = False
        if self.calls is None:
            self.calls = []
        if isinstance(cmd, basestring):
            all_args = [cmd]
        else:
            all_args = cmd
        all_args.extend(args)
        self.calls.append(all_args)
        self.returncode = 0
        return self

    def communicate(self, input=None):
        self.wait()
        return self.output_string, ''

    def wait(self):
        self.child_finished = True
        return self.returncode

    @property
    def commands_executed(self):
        return [' '.join(args) for args in self.calls]

    @property
    def stdin(self):
        return StringIO()


class MockCmdRunnerPopenFixture(MockSomethingFixture):
    """A test fixture which mocks cmd_runner.do_run with the given mock.

    If no mock is given, a MockCmdRunnerPopen instance is used.
    """

    def __init__(self, output_string='', assert_child_finished=True):
        super(MockCmdRunnerPopenFixture, self).__init__(
            cmd_runner, 'Popen',
            MockCmdRunnerPopen(output_string, assert_child_finished))

    def tearDown(self):
        super(MockCmdRunnerPopenFixture, self).tearDown()
        if self.mock.assert_child_finished and not self.mock.child_finished:
            raise AssertionError(
                "You should call wait() or communicate() to ensure "
                "the subprocess is finished before proceeding.")