예제 #1
0
    def test_parse_args_from_json(self):
        json_args = {
            'test_cases': ['test1'],
            'restart': 'true',
            'xcode_parallelization': True,
            'shards': 2
        }

        cmd = [
            '--shards',
            '1',
            '--platform',
            'iPhone X',
            '--version',
            '13.2.2',
            '--args-json',
            json.dumps(json_args),

            # Required
            '--xcode-build-version',
            '123abc',
            '--out-dir',
            'some/dir'
        ]

        # shards should be 2, since json arg takes precedence over cmd line
        runner = run.Runner()
        runner.parse_args(cmd)
        # Empty array
        self.assertEquals(len(runner.args.env_var), 0)
        self.assertTrue(runner.args.xcode_parallelization)
        self.assertTrue(runner.args.restart)
        self.assertEquals(runner.args.shards, 2)
예제 #2
0
    def test_merge_test_cases(self):
        """Tests test cases are merges in --test-cases and --args-json."""
        cmd = [
            '--app',
            './foo-Runner.app',
            '--xcode-path',
            'some/Xcode.app',
            '--gtest_filter',
            'TestClass3.TestCase4:TestClass4.TestCase5',
            '--test-cases',
            'TestClass1.TestCase2',
            '--args-json',
            '{"test_cases": ["TestClass2.TestCase3"]}',

            # Required
            '--xcode-build-version',
            '123abc',
            '--out-dir',
            'some/dir',
        ]

        runner = run.Runner()
        runner.parse_args(cmd)
        runner.resolve_test_cases()
        expected_test_cases = [
            'TestClass1.TestCase2', 'TestClass3.TestCase4',
            'TestClass4.TestCase5', 'TestClass2.TestCase3'
        ]
        self.assertEqual(runner.args.test_cases, expected_test_cases)
예제 #3
0
    def test_parser_error_sharding_environment(self, _):
        cmd = [
            '--app',
            './foo-Runner.app',
            '--xcode-path',
            'some/Xcode.app',
            '--test-cases',
            'SomeClass.SomeTestCase',
            '--gtest_filter',
            'TestClass1.TestCase2:TestClass2.TestCase3',

            # Required
            '--xcode-build-version',
            '123abc',
            '--out-dir',
            'some/dir',
        ]
        runner = run.Runner()
        with self.assertRaises(SystemExit) as ctx:
            runner.parse_args(cmd)
            self.assertTrue(
                re.match(
                    'Specifying test cases is not supported in multiple swarming '
                    'shards environment.', ctx.message))
            self.assertEqual(ctx.exception.code, 2)
예제 #4
0
    def test_parse_args_ok(self):
        cmd = [
            '--app',
            './foo-Runner.app',
            '--host-app',
            './bar.app',
            '--runtime-cache-prefix',
            'some/dir',
            '--xcode-path',
            'some/Xcode.app',
            '--gtest_repeat',
            '2',

            # Required
            '--xcode-build-version',
            '123abc',
            '--out-dir',
            'some/dir',
        ]

        runner = run.Runner()
        runner.parse_args(cmd)
        self.assertTrue(runner.args.app == './foo-Runner.app')
        self.assertTrue(runner.args.runtime_cache_prefix == 'some/dir')
        self.assertTrue(runner.args.xcode_path == 'some/Xcode.app')
        self.assertTrue(runner.args.gtest_repeat == 2)
예제 #5
0
    def setUp(self):
        super(RunnerInstallXcodeTest, self).setUp()
        self.runner = run.Runner()

        self.mock(self.runner, 'parse_args', lambda _: None)
        self.runner.args = mock.MagicMock()
        # Make run() choose xcodebuild_runner.SimulatorParallelTestRunner as tr.
        self.runner.args.xcode_parallelization = True
        # Used in run.Runner.install_xcode().
        self.runner.args.mac_toolchain_cmd = 'mac_toolchain'
        self.runner.args.xcode_path = 'test/xcode/path'
        self.runner.args.xcode_build_version = 'testXcodeVersion'
        self.runner.args.runtime_cache_prefix = 'test/runtime-ios-'
        self.runner.args.version = '14.4'
예제 #6
0
  def test_parse_args_ok(self):
    cmd = [
        '--app',
        './foo-Runner.app',
        '--host-app',
        './bar.app',

        # Required
        '--xcode-build-version',
        '123abc',
        '--out-dir',
        'some/dir'
    ]

    runner = run.Runner()
    runner.parse_args(cmd)
    self.assertTrue(runner.args.app == './foo-Runner.app')
예제 #7
0
    def test_parse_args_xcodebuild_device_runner_requirements(self):
        """
    xcodebuild_device_runner requires both platform and version
    """
        test_cases = [
            {
                'error':
                2,
                'cmd': [
                    '--xcodebuild-device-runner',
                    '--platform',
                    'iPhone X',

                    # Required
                    '--xcode-build-version',
                    '123abc',
                    '--out-dir',
                    'some/dir'
                ]
            },
            {
                'error':
                2,
                'cmd': [
                    '--xcodebuild-device-runner',
                    '--version',
                    '13.2.2',

                    # Required
                    '--xcode-build-version',
                    '123abc',
                    '--out-dir',
                    'some/dir'
                ]
            }
        ]

        runner = run.Runner()
        for test_case in test_cases:
            with self.assertRaises(SystemExit) as ctx:
                runner.parse_args(test_case['cmd'])
                self.assertTrue(
                    re.match(
                        '--xcodebuild-device-runner also requires '
                        'both *', ctx.message))
                self.assertEqual(ctx.exception.code, test_case['error'])
예제 #8
0
    def setUp(self):
        self.src_dir = tempfile.mkdtemp()
        self.dest_dir = tempfile.mkdtemp()
        self.secrets_dir = tempfile.mkdtemp()

        self.src_file = os.path.join(self.src_dir, "template.j2")
        self.dest_file = os.path.join(self.dest_dir, "output.cfg")

        with open(self.src_file, "w") as fd:
            fd.write(TEMPLATE)
        with open(os.path.join(self.secrets_dir, "foo"), "w") as fd:
            fd.write("FOO")
        with open(os.path.join(self.secrets_dir, "baz"), "w") as fd:
            fd.write("NOT FINAL BAZ")

        os.environ["JINJA_VAR_bar"] = "BAR"
        os.environ["JINJA_VAR_baz"] = "BAZ"

        self.runner = run.Runner(self.src_file, self.dest_file,
                                 self.secrets_dir, False)
예제 #9
0
    def setUp(self):
        self.src_dir = tempfile.mkdtemp()
        self.dest_dir = tempfile.mkdtemp()
        self.secrets_dir = tempfile.mkdtemp()

        self.src_file = os.path.join(self.src_dir, 'template.j2')
        self.dest_file = os.path.join(self.dest_dir, 'output.cfg')

        with open(self.src_file, 'w') as fd:
            fd.write(TEMPLATE)
        with open(os.path.join(self.secrets_dir, 'foo'), 'w') as fd:
            fd.write('FOO')
        with open(os.path.join(self.secrets_dir, 'baz'), 'w') as fd:
            fd.write('NOT FINAL BAZ')

        os.environ['JINJA_VAR_bar'] = 'BAR'
        os.environ['JINJA_VAR_baz'] = 'BAZ'

        self.runner = run.Runner(self.src_file, self.dest_file,
                                 self.secrets_dir, False)
예제 #10
0
    def test_gtest_filter_arg(self):
        cmd = [
            '--app',
            './foo-Runner.app',
            '--xcode-path',
            'some/Xcode.app',
            '--gtest_filter',
            'TestClass1.TestCase2:TestClass2.TestCase3',

            # Required
            '--xcode-build-version',
            '123abc',
            '--out-dir',
            'some/dir',
        ]

        runner = run.Runner()
        runner.parse_args(cmd)
        runner.resolve_test_cases()
        expected_test_cases = ['TestClass1.TestCase2', 'TestClass2.TestCase3']
        self.assertEqual(runner.args.test_cases, expected_test_cases)
예제 #11
0
    def test_parse_args_iossim_platform_version(self):
        """
    iossim, platforma and version should all be set.
    missing iossim
    """
        test_cases = [
            {
                'error':
                2,
                'cmd': [
                    '--platform',
                    'iPhone X',
                    '--version',
                    '13.2.2',

                    # Required
                    '--xcode-build-version',
                    '123abc',
                    '--out-dir',
                    'some/dir'
                ],
            },
            {
                'error':
                2,
                'cmd': [
                    '--iossim',
                    'path/to/iossim',
                    '--version',
                    '13.2.2',

                    # Required
                    '--xcode-build-version',
                    '123abc',
                    '--out-dir',
                    'some/dir'
                ],
            },
            {
                'error':
                2,
                'cmd': [
                    '--iossim',
                    'path/to/iossim',
                    '--platform',
                    'iPhone X',

                    # Required
                    '--xcode-build-version',
                    '123abc',
                    '--out-dir',
                    'some/dir'
                ],
            },
        ]

        runner = run.Runner()
        for test_case in test_cases:
            with self.assertRaises(SystemExit) as ctx:
                runner.parse_args(test_case['cmd'])
                self.assertTrue(
                    re.match('must specify all or none of *', ctx.message))
                self.assertEqual(ctx.exception.code, test_case['error'])
예제 #12
0
#!/usr/bin/python2
import sys
from os.path import join

import qdom, run, apps
from basedirs import get_default_config

config = get_default_config()
args = sys.argv[1:]
if not args:
    raise Exception("Syntax: runsels.py [APP | SELECTIONS] [ARGS]")

app_or_sels = args[0]
app_args = args[1:]

app_mgr = apps.AppMgr(config)

app_path = app_mgr.lookup_app(app_or_sels, missing_ok=True)
sels_path = join(app_path,
                 "selections.xml") if app_path is not None else app_or_sels

with open(sels_path, 'rb') as stream:
    sels = qdom.parse(stream)

runner = run.Runner(config)
runner.execute_selections(sels, app_args)
예제 #13
0
파일: demo.py 프로젝트: twjayne/weakly-vrd
import run as shared

runner = shared.Runner()
runner.setup()

if __name__ == '__main__':
	runner.train()