示例#1
0
def run(*dtox_args, **kwargs):
    """Runs docker run with optional dtox_args. Returns ProcResult.

    kwargs:
        - tox_ini=<string>: contents of the tox.ini file to be used
        - setup=<func>:     run setup(env) before actual docker run command
    """

    env = STE(TESTS_WORKDIR)

    command = ["docker", "run", "--rm", "-i"]

    # map tests work dir into /src
    command.extend(["-v", '{}:/src:ro'.format(TESTS_WORKDIR)])

    # write tox.ini if specified
    tox_ini = kwargs.pop("tox_ini", None)
    if tox_ini is not None:
        env.writefile("tox.ini", content=tox_ini)

    # run setup function if specified
    setup = kwargs.pop("setup", None)
    if setup is not None:
        setup(env)

    command.append(DOCKER_IMAGE)
    command.extend(dtox_args)

    r = env.run(*command, **kwargs)

    # make sure it isn't a docker run failure
    if "Unable to find image" in r.stderr:
        raise ValueError(r.stderr)

    return r
class TestIntegration(unittest.TestCase):
    def setUp(self):
        self.env = TestFileEnvironment(test_path, template_path=template_path)

    def test_init(self):
        result = self.env.run("gpc", "init", expect_stderr=True)
        created_filenames = result.files_created.keys()
        self.assertTrue("log" in created_filenames)
        self.assertTrue("log/data" in created_filenames)
        self.assertTrue("log/schema.sql" in created_filenames)
        self.assertTrue("storage" in created_filenames)

    def test_make_target(self):
        self.env.run("gpc", "init", expect_stderr=True)
        self.env.writefile("gpc.yaml", frompath="simple.yaml")
        result = self.env.run("gpc", "make", "c", expect_stderr=True)
        created_filenames = list(result.files_created.keys())
        self.assertTrue("c" in created_filenames)
        created_filenames.remove("c")
        self.assertTrue(any([s.startswith("storage/") for s in created_filenames]))
        self.assertTrue(any([s.startswith("log/data/") for s in created_filenames]))

    def test_make_target_cached(self):
        call(["cp", "-r", template_path + "/.gpc", test_path])
        call(["cp", "-r", template_path + "/log", test_path])
        call(["cp", "-r", template_path + "/storage", test_path])
        self.env.writefile("gpc.yaml", frompath="simple.yaml")
        result = self.env.run("gpc", "make", "c", expect_stderr=True)
        created_filenames = result.files_created.keys()
        self.assertTrue("c" in created_filenames)
        self.assertTrue(len(created_filenames) == 1)
    def test_dojorun_dryrun(self):
        """Testing dojorun.py script in dry-run mode."""
        env = self.get_env()

        # Build new env to run the script in dry-run mode
        # Copy file from data to env.
        env = TestFileEnvironment(template_path=pdj_data.dirpath)
        env.writefile("Si.psp8", frompath="Si.psp8")
        env.writefile("Si.djrepo", frompath="Si.djrepo_empty")
        env.run(self.script, "Si.psp8", self.loglevel, self.verbose, "--dry-run")
示例#4
0
    def test_dojorun_dryrun(self):
        """Testing dojorun.py script in dry-run mode."""
        env = self.get_env()

        # Build new env to run the script in dry-run mode
        # Copy file from data to env.
        env = TestFileEnvironment(template_path=pdj_data.dirpath)
        env.writefile("Si.psp8", frompath="Si.psp8")
        env.writefile("Si.djrepo", frompath="Si.djrepo_empty")
        env.run(self.script, "Si.psp8", self.loglevel, self.verbose, "--dry-run")
示例#5
0
    def get_env(self):
        #import tempfile
        #env = TestFileEnvironment(tempfile.mkdtemp(suffix='', prefix='test_' + script))
        env = TestFileEnvironment()

        # Use Agg backend for plots.
        env.writefile("matplotlibrc", "backend : Agg")

        # Start with --help. If this does not work...
        env.run(self.script, "--help")

        # Script must provide a version option
        r = env.run(self.script, "--version", expect_stderr=True)
        assert r.stderr.strip() == "%s version %s" % (os.path.basename(self.script), abilab.__version__)

        return env
示例#6
0
    def get_env(self):
        #import tempfile
        #env = TestFileEnvironment(tempfile.mkdtemp(suffix='', prefix='test_' + script))
        env = TestFileEnvironment()

        # Use Agg backend for plots.
        env.writefile("matplotlibrc", "backend : Agg")

        # Start with --help. If this does not work...
        env.run(self.script, "--help")

        # Script must provide a version option
        r = env.run(self.script, "--version", expect_stderr=True)
        assert r.stderr.strip() == "%s version %s" % (os.path.basename(
            self.script), abilab.__version__)

        return env
示例#7
0
文件: base.py 项目: Zearin/peon
class EnvironmentUnderTest(object):

    def __init__(self):
        self.reset()

    def reset(self):
        environ = os.environ.copy()
        environ.update({'PATH': os.path.join(TEST_OUTPUT_DIR, 'bin',
                                             os.pathsep, environ['PATH'])})
        self._env = TestFileEnvironment(environ=environ)
        self._env.run(sys.executable, '-m', 'virtualenv',
                                            '--no-site-packages',
                                            self._env.base_path)
        self._env.run('python setup.py install', cwd=package_dir)

    def run(self, *args, **kw):
        return self._env.run(*args, **kw)

    def mkdir(self, path):
        return os.mkdir(os.path.join(self._env.base_path, path))

    def writefile(self, *args, **kw):
        return self._env.writefile(*args, **kw)
示例#8
0
class EnvbTest(object):
    env_file = ''
    def setUp(self):
        self.env = TestFileEnvironment('tmp')
        assert self.env_file
        self.env.writefile('.env', content=self.env_file)
示例#9
0
class TestPyfdaCommandLineTool(TestCase):

    def setUp(self):
        self.env = TestFileEnvironment(
                base_path=TEST_DIR,
                template_path=TEMPLATE_DIR,
                cwd=os.getcwd(),
                ignore_hidden=False)
        self.env.writefile(INPUT_FILE_NAME,
                frompath='test_freq_2_then_1_then_8_then_4.fda')

    def test_no_arguments(self):
        'Test: pyfda.py'

        cmd = './pyfda.py'
        result = self.env.run(cmd, expect_error=True)

        self.assertEqual(result.returncode, 2,\
                'Expect returncode=2, got %r' % result.returncode)
        self.assertEqual(result.stderr[:7], 'usage: ', \
                'Incorrect usage message')

        message = 'error: too few arguments\n'
        self.assertEqual(result.stderr[-len(message):], message, \
                'Incorrect error message')

    def test_setup_missing_frequency_argument(self):
        'Test: pyfda setup'

        cmd = './pyfda.py setup'
        result = self.env.run(cmd, expect_error=True)

        self.assertEqual(result.returncode, 1,\
                'Expect returncode=1, got %r' % result.returncode)
        expected = 'error: Missing --frequency argument with command: setup\n'
        self.assertEqual(result.stderr, expected, 'Incorrect error message')

    def test_info_missing_fda_file(self):
        'Test: pyfda info'

        cmd = './pyfda.py info'
        result = self.env.run(cmd, expect_error=True)

        self.assertEqual(result.returncode, 1,\
                'Expect returncode=1, got %r' % result.returncode)
        expected = 'error: Missing fda_file argument with command: info\n'
        self.assertEqual(result.stderr, expected, 'Incorrect error message')

    def test_convert_missing_fda_file(self):
        'Test: pyfda convert'

        cmd = './pyfda.py convert'
        result = self.env.run(cmd, expect_error=True)

        self.assertEqual(result.returncode, 1,\
                'Expect returncode=1, got %r' % result.returncode)
        expected = 'error: Missing fda_file argument with command: convert\n'
        self.assertEqual(result.stderr, expected, 'Incorrect error message')

    def test_convert_too_much_temperature_arguments(self):
        'Test: pyfda convert file.fda --celsius --fahrenheit'

        cmd = './pyfda.py convert file.fda --celsius --fahrenheit'
        result = self.env.run(cmd, expect_error=True)

        self.assertEqual(result.returncode, 1,\
                'Expect returncode=1, got %r' % result.returncode)
        expected = 'error: --celsius and --fahrenheit can not ' \
                'be both specified.\n'
        self.assertEqual(result.stderr, expected, 'Incorrect error message')

    def test_convert_too_much_length_arguments(self):
        'Test: pyfda convert file.fda --feet --meters'

        cmd = './pyfda.py convert file.fda --feet --meters'
        result = self.env.run(cmd, expect_error=True)

        self.assertEqual(result.returncode, 1,\
                'Expect returncode=1, got %r' % result.returncode)
        expected = 'error: --meters and --feet can not be both specified.\n'
        self.assertEqual(result.stderr, expected, 'Incorrect error message')

    def test_convert_incorrect_last_negative_value(self):
        'Test: pyfda convert file.fda --last -1'

        cmd = './pyfda.py convert file.fda --last -1'
        result = self.env.run(cmd, expect_error=True)

        self.assertEqual(result.returncode, 1,\
                'Expect returncode=1, got %r' % result.returncode)
        expected = 'error: --last argument must be positive.\n'
        self.assertEqual(result.stderr, expected, 'Incorrect error message')

    def test_convert_incorrect_last_non_integer_value(self):
        'Test: pyfda convert file.fda --last toto'

        cmd = './pyfda.py convert file.fda --last toto'
        result = self.env.run(cmd, expect_error=True)

        self.assertEqual(result.returncode, 2,\
                'Expect returncode=1, got %r' % result.returncode)
        expected = 'error: argument --last: invalid int value:'
        self.assertTrue(expected in result.stderr, 'Incorrect error message')

    def test_print_fda_file_info(self):
        'Test: pyfda info sample.fda'

        cmd = './pyfda.py info ' + INPUT_FILE_PATH
        result = self.env.run(cmd, expect_error=False)

        self.assertEqual(result.returncode, 0,\
                'Expect returncode=0, got %r' % result.returncode)
        expected = \
"""Reading file %s...
Found 4 flights:
   0:      216 records @ 2Hz -   108.000 seconds
   1:      136 records @ 1Hz -   136.000 seconds
   2:      496 records @ 8Hz -    62.000 seconds
   3:      176 records @ 4Hz -    44.000 seconds
""" % INPUT_FILE_PATH
        self.assertEqual(expected, result.stdout, 'Incorrect output')

    def test_print_fda_file_convert_all_csv(self):
        'Test: pyfda --prefix=test_convert convert sample.fda'

        cmd = './pyfda.py --prefix=%s convert %s' % (
                CONVERTED_PREFIX, INPUT_FILE_PATH)
        result = self.env.run(cmd, expect_error=False)

        self.assertEqual(result.returncode, 0,\
                'Expect returncode=0, got %r' % result.returncode)
        expected = \
"""Reading file %s...
Found 4 flights:
Converting 4 flight(s) to CSV...
   Writing %s_000.csv file
   Writing %s_001.csv file
   Writing %s_002.csv file
   Writing %s_003.csv file
""" % (INPUT_FILE_PATH, CONVERTED_PREFIX, CONVERTED_PREFIX,
        CONVERTED_PREFIX, CONVERTED_PREFIX)
        self.assertEqual(expected, result.stdout, 'Incorrect output')
        # TODO: Check converted file contents.

    def test_print_fda_file_convert_last_csv(self):
        'Test: pyfda --last --prefix=test_convert convert sample.fda'

        cmd = './pyfda.py --last --prefix=%s convert %s' % (
                CONVERTED_PREFIX, INPUT_FILE_PATH)
        result = self.env.run(cmd, expect_error=False)

        self.assertEqual(result.returncode, 0,\
                'Expect returncode=0, got %r' % result.returncode)
        expected = \
"""Reading file %s...
Found 4 flights:
Converting 1 flight(s) to CSV...
   Writing %s_003.csv file
""" % (INPUT_FILE_PATH, CONVERTED_PREFIX)
        self.assertEqual(expected, result.stdout, 'Incorrect output')
        # TODO: Check converted file content.

    def test_print_fda_file_convert_last_two_csv(self):
        'Test: pyfda --last=2 --prefix=test_convert convert sample.fda'

        cmd = './pyfda.py --last=2 --prefix=%s convert %s' % (
                CONVERTED_PREFIX, INPUT_FILE_PATH)
        result = self.env.run(cmd, expect_error=False)

        self.assertEqual(result.returncode, 0,\
                'Expect returncode=0, got %r' % result.returncode)
        expected = \
"""Reading file %s...
Found 4 flights:
Converting 2 flight(s) to CSV...
   Writing %s_002.csv file
   Writing %s_003.csv file
""" % (INPUT_FILE_PATH, CONVERTED_PREFIX, CONVERTED_PREFIX)
        self.assertEqual(expected, result.stdout, 'Incorrect output')