コード例 #1
0
ファイル: beetmover_cdns.py プロジェクト: luke-chang/gecko-1
def validate(config, jobs):
    for job in jobs:
        label = job['name']
        validate_schema(
            beetmover_cdns_description_schema, job,
            "In cdns-signing ({!r} kind) task for {!r}:".format(config.kind, label))
        yield job
コード例 #2
0
def validate(config, jobs):
    for job in jobs:
        label = job['label']
        validate_schema(
            job_description_schema, job,
            "In repackage-signing ({!r} kind) task for {!r}:".format(config.kind, label))
        yield job
コード例 #3
0
def validate(config, jobs):
    for job in jobs:
        label = job.get('dependent-task', object).__dict__.get('label', '?no-label?')
        validate_schema(
            checksums_signing_description_schema, job,
            "In checksums-signing ({!r} kind) task for {!r}:".format(config.kind, label))
        yield job
コード例 #4
0
ファイル: __init__.py プロジェクト: luke-chang/gecko-1
def configure_taskdesc_for_run(config, job, taskdesc, worker_implementation):
    """
    Run the appropriate function for this job against the given task
    description.

    This will raise an appropriate error if no function exists, or if the job's
    run is not valid according to the schema.
    """
    run_using = job['run']['using']
    if run_using not in registry:
        raise Exception("no functions for run.using {!r}".format(run_using))

    if worker_implementation not in registry[run_using]:
        raise Exception("no functions for run.using {!r} on {!r}".format(
            run_using, worker_implementation))

    func, schema, defaults = registry[run_using][worker_implementation]
    for k, v in defaults.items():
        job['run'].setdefault(k, v)

    if schema:
        validate_schema(
                schema, job['run'],
                "In job.run using {!r}/{!r} for job {!r}:".format(
                    job['run']['using'], worker_implementation, job['label']))
    func(config, job, taskdesc)
コード例 #5
0
def validate(config, jobs):
    for job in jobs:
        label = job.get('dependent-task', object).__dict__.get('label', '?no-label?')
        validate_schema(
            balrog_description_schema, job,
            "In balrog ({!r} kind) task for {!r}:".format(config.kind, label))

        yield job
コード例 #6
0
ファイル: push_apk.py プロジェクト: luke-chang/gecko-1
def validate_jobs_schema_transform_partial(description_schema, transform_type, config, jobs):
    for job in jobs:
        label = job.get('label', '?no-label?')
        validate_schema(
            description_schema, job,
            "In {} ({!r} kind) task for {!r}:".format(transform_type, config.kind, label)
        )
        yield job
コード例 #7
0
ファイル: push_apk.py プロジェクト: jowolf/gecko-dev
def validate_jobs_schema_transform_partial(config, jobs):
    for job in jobs:
        label = job.get('label', '?no-label?')
        validate_schema(
            push_apk_description_schema, job,
            "In PushApk ({!r} kind) task for {!r}:".format(config.kind, label)
        )
        yield job
コード例 #8
0
def validate(config, jobs):
    for job in jobs:
        label = job['name']
        validate_schema(
            beetmover_push_to_release_description_schema, job,
            "In beetmover-push-to-release ({!r} kind) task for {!r}:".format(
                config.kind, label))
        yield job
コード例 #9
0
def validate(config, jobs):
    for job in jobs:
        label = job.get('primary-dependency',
                        object).__dict__.get('label', '?no-label?')
        validate_schema(
            release_generate_checksums_beetmover_schema, job,
            "In ({!r} kind) task for {!r}:".format(config.kind, label))
        yield job
コード例 #10
0
def validate(config, jobs):
    for job in jobs:
        label = job.get('primary-dependency',
                        object).__dict__.get('label', '?no-label?')
        validate_schema(
            signing_description_schema, job,
            "In signing ({!r} kind) task for {!r}:".format(config.kind, label))
        yield job
コード例 #11
0
def validate(config, jobs):
    for job in jobs:
        label = job['label']
        validate_schema(
            job_description_schema, job,
            "In repackage-signing ({!r} kind) task for {!r}:".format(
                config.kind, label))
        yield job
コード例 #12
0
def validate(config, jobs):
    for job in jobs:
        label = job['name']
        validate_schema(
            beetmover_cdns_description_schema, job,
            "In cdns-signing ({!r} kind) task for {!r}:".format(
                config.kind, label))
        yield job
コード例 #13
0
ファイル: push_apk.py プロジェクト: yang123vc/tor-browser
def validate_jobs_schema_transform_partial(description_schema, transform_type,
                                           config, jobs):
    for job in jobs:
        label = job.get('label', '?no-label?')
        validate_schema(
            description_schema, job,
            "In {} ({!r} kind) task for {!r}:".format(transform_type,
                                                      config.kind, label))
        yield job
コード例 #14
0
def get_manifest():
    manifest_paths = glob.glob(os.path.join(MANIFEST_DIR, "*.yml"))
    all_manifests = {}
    for path in manifest_paths:
        rw_manifest = yaml.load_yaml(path)
        manifest_name = os.path.basename(path).replace(".yml", "")
        rw_manifest["manifest_name"] = manifest_name
        validate_schema(base_schema, deepcopy(rw_manifest), "Invalid manifest:")
        check_manifest(deepcopy(rw_manifest))
        assert manifest_name not in all_manifests
        all_manifests[manifest_name] = rw_manifest
    return ReadOnlyDict(all_manifests)
コード例 #15
0
def validate(config, tasks):
    for task in tasks:
        validate_schema(
            task_description_schema,
            task,
            "In task {!r}:".format(task.get("label", "?no-label?")),
        )
        validate_schema(
            payload_builders[task["worker"]["implementation"]].schema,
            task["worker"],
            "In task.run {!r}:".format(task.get("label", "?no-label?")),
        )
        yield task
コード例 #16
0
def get_manifest():
    manifest_paths = glob.glob(os.path.join(MANIFEST_DIR, "*.yml"))
    all_manifests = {}
    graph_config = load_graph_config(ROOT)
    for path in manifest_paths:
        rw_manifest = yaml.load_yaml(path)
        manifest_name = os.path.basename(path).replace(".yml", "")
        rw_manifest["manifest_name"] = manifest_name
        validate_schema(base_schema, deepcopy(rw_manifest), "Invalid manifest:")
        check_manifest(deepcopy(rw_manifest), graph_config)
        rw_manifest["artifacts"] = tuple(rw_manifest["artifacts"])
        assert manifest_name not in all_manifests
        all_manifests[manifest_name] = ReadOnlyDict(rw_manifest)
    return ReadOnlyDict(all_manifests)
コード例 #17
0
def test_worker_caches(task, transform):
    config, job, taskdesc, impl = transform(task)
    add_cache(job, taskdesc, 'cache1', '/cache1')
    add_cache(job, taskdesc, 'cache2', '/cache2', skip_untrusted=True)

    if impl not in ('docker-worker', 'generic-worker'):
        pytest.xfail("caches not implemented for '{}'".format(impl))

    key = 'caches' if impl == 'docker-worker' else 'mounts'
    assert key in taskdesc['worker']
    assert len(taskdesc['worker'][key]) == 2

    # Create a new schema object with just the part relevant to caches.
    partial_schema = Schema(payload_builders[impl].schema.schema[key])
    validate_schema(partial_schema, taskdesc['worker'][key], "validation error")
コード例 #18
0
def test_worker_caches(task, transform):
    config, job, taskdesc, impl = transform(task)
    add_cache(job, taskdesc, "cache1", "/cache1")
    add_cache(job, taskdesc, "cache2", "/cache2", skip_untrusted=True)

    if impl not in ("docker-worker", "generic-worker"):
        pytest.xfail("caches not implemented for '{}'".format(impl))

    key = "caches" if impl == "docker-worker" else "mounts"
    assert key in taskdesc["worker"]
    assert len(taskdesc["worker"][key]) == 2

    # Create a new schema object with just the part relevant to caches.
    partial_schema = Schema(payload_builders[impl].schema.schema[key])
    validate_schema(partial_schema, taskdesc["worker"][key],
                    "validation error")
コード例 #19
0
def configure_taskdesc_for_run(config, job, taskdesc):
    """
    Run the appropriate function for this job against the given task
    description.

    This will raise an appropriate error if no function exists, or if the job's
    run is not valid according to the schema.
    """
    run_using = job['run']['using']
    if run_using not in registry:
        raise Exception("no functions for run.using {!r}".format(run_using))

    worker_implementation = job['worker']['implementation']
    if worker_implementation not in registry[run_using]:
        raise Exception("no functions for run.using {!r} on {!r}".format(
            run_using, worker_implementation))

    func, schema = registry[run_using][worker_implementation]
    if schema:
        job['run'] = validate_schema(
                schema, job['run'],
                "In job.run using {!r} for job {!r}:".format(
                    job['run']['using'], job['label']))

    func(config, job, taskdesc)
コード例 #20
0
def validate(config, jobs):
    for job in jobs:
        label = job.get('dependent-task',
                        object).__dict__.get('label', '?no-label?')
        yield validate_schema(
            checksums_signing_description_schema, job,
            "In checksums-signing ({!r} kind) task for {!r}:".format(
                config.kind, label))
コード例 #21
0
def validate(config, tasks):
    for task in tasks:
        yield validate_schema(
            task_description_schema, task,
            "In task {!r}:".format(task.get('label', '?no-label?')))
コード例 #22
0
ファイル: l10n.py プロジェクト: Wafflespeanut/gecko-dev
def validate_again(config, jobs):
    for job in jobs:
        yield validate_schema(l10n_description_schema, job,
                              "In job {!r}:".format(job.get('name', 'unknown')))
コード例 #23
0
 def test_invalid(self):
     try:
         validate_schema(schema, {'x': 'not-int'}, "pfx")
         self.fail("no exception raised")
     except Exception, e:
         self.failUnless(str(e).startswith("pfx\n"))
コード例 #24
0
 def test_valid(self):
     validate_schema(schema, {'x': 10, 'y': 'foo'}, "pfx")
コード例 #25
0
 def test_invalid(self):
     try:
         validate_schema(schema, {'x': 'not-int'}, "pfx")
         self.fail("no exception raised")
     except Exception as e:
         self.assertTrue(str(e).startswith("pfx\n"))
コード例 #26
0
ファイル: parameters.py プロジェクト: FloFaber/gecko-dev
 def check(self):
     schema = base_schema if self.strict else base_schema.extend(
         {}, extra=ALLOW_EXTRA)
     validate_schema(schema, self.copy(), 'Invalid parameters:')
コード例 #27
0
ファイル: tests.py プロジェクト: luke-chang/gecko-1
def validate(config, tests):
    for test in tests:
        validate_schema(test_description_schema, test,
                        "In test {!r}:".format(test['test-name']))
        yield test
コード例 #28
0
ファイル: parameters.py プロジェクト: urrytr/gecko
 def check(self):
     schema = Schema(base_schema,
                     extra=PREVENT_EXTRA if self.strict else ALLOW_EXTRA)
     validate_schema(schema, self.copy(), 'Invalid parameters:')
コード例 #29
0
ファイル: source_test.py プロジェクト: luke-chang/gecko-1
def validate(config, jobs):
    for job in jobs:
        validate_schema(source_test_description_schema, job,
                        "In job {!r}:".format(job['name']))
        yield job
コード例 #30
0
def validate(config, jobs):
    for job in jobs:
        label = job.get('dependent-task', object).__dict__.get('label', '?no-label?')
        yield validate_schema(
            beetmover_description_schema, job,
            "In beetmover ({!r} kind) task for {!r}:".format(config.kind, label))
コード例 #31
0
ファイル: schema.py プロジェクト: luke-chang/gecko-1
def validate(cron_yml):
    validate_schema(cron_yml_schema, cron_yml, "Invalid .cron.yml:")
コード例 #32
0
ファイル: diffoscope.py プロジェクト: luke-chang/gecko-1
def validate(config, tasks):
    for task in tasks:
        validate_schema(
            diff_description_schema, task,
            "In diff task {!r}:".format(task.get('name', 'unknown')))
        yield task
コード例 #33
0
def validate(config, tasks):
    for task in tasks:
        validate_schema(
            docker_image_schema, task,
            "In docker image {!r}:".format(task.get('name', 'unknown')))
        yield task
コード例 #34
0
def validate(config, jobs):
    for job in jobs:
        yield validate_schema(source_test_description_schema, job,
                              "In job {!r}:".format(job['name']))
コード例 #35
0
ファイル: __init__.py プロジェクト: Wafflespeanut/gecko-dev
def validate(config, jobs):
    for job in jobs:
        yield validate_schema(job_description_schema, job,
                              "In job {!r}:".format(job['name']))
コード例 #36
0
ファイル: __init__.py プロジェクト: luke-chang/gecko-1
def validate(config, jobs):
    for job in jobs:
        validate_schema(job_description_schema, job,
                        "In job {!r}:".format(job.get('name', job.get('label'))))
        yield job
コード例 #37
0
 def test_valid(self):
     validate_schema(schema, {'x': 10, 'y': 'foo'}, "pfx")
コード例 #38
0
ファイル: l10n.py プロジェクト: masm11/gecko-dev
def validate_again(config, jobs):
    for job in jobs:
        yield validate_schema(
            l10n_description_schema, job,
            "In job {!r}:".format(job.get('name', 'unknown')))
コード例 #39
0
ファイル: tests.py プロジェクト: mcmanus/gecko-dev
def validate(config, tests):
    for test in tests:
        yield validate_schema(test_description_schema, test,
                              "In test {!r}:".format(test['test-name']))
コード例 #40
0
def validate(config, tasks):
    for task in tasks:
        validate_schema(
            diff_description_schema, task,
            "In diff task {!r}:".format(task.get('name', 'unknown')))
        yield task
コード例 #41
0
 def test_valid(self):
     validate_schema(schema, {"x": 10, "y": "foo"}, "pfx")
コード例 #42
0
def validate(config, jobs):
    for job in jobs:
        yield validate_schema(
            job_description_schema, job,
            "In job {!r}:".format(job.get('name', job.get('label'))))
コード例 #43
0
ファイル: task.py プロジェクト: Wafflespeanut/gecko-dev
def validate(config, tasks):
    for task in tasks:
        yield validate_schema(
            task_description_schema, task,
            "In task {!r}:".format(task.get('label', '?no-label?')))
コード例 #44
0
def validate(cron_yml):
    validate_schema(cron_yml_schema, cron_yml, "Invalid .cron.yml:")
コード例 #45
0
ファイル: docker_image.py プロジェクト: luke-chang/gecko-1
def validate(config, tasks):
    for task in tasks:
        validate_schema(
            docker_image_schema, task,
            "In docker image {!r}:".format(task.get('name', 'unknown')))
        yield task