mirror of
https://github.com/quay/quay.git
synced 2026-01-26 06:21:37 +03:00
Users can now configure whether they want the default tagging options enabled (tag `latest` for the default branch, and tag with the git branch or tag name), and can also specify custom tags, including static tags and dynamic templated tags. Fixes https://jira.coreos.com/browse/QUAY-1747
87 lines
2.3 KiB
Python
87 lines
2.3 KiB
Python
import pytest
|
|
|
|
from data import model
|
|
from buildtrigger.triggerutil import raise_if_skipped_build, SkipRequestException
|
|
from endpoints.building import (
|
|
start_build,
|
|
PreparedBuild,
|
|
MaximumBuildsQueuedException,
|
|
BuildTriggerDisabledException,
|
|
)
|
|
|
|
from test.fixtures import *
|
|
|
|
|
|
def test_maximum_builds(app):
|
|
# Change the maximum number of builds to 1.
|
|
user = model.user.create_user("foobar", "password", "foo@example.com")
|
|
user.maximum_queued_builds_count = 1
|
|
user.save()
|
|
|
|
repo = model.repository.create_repository("foobar", "somerepo", user)
|
|
|
|
# Try to queue a build; should succeed.
|
|
prepared_build = PreparedBuild()
|
|
prepared_build.build_name = "foo"
|
|
prepared_build.is_manual = True
|
|
prepared_build.dockerfile_id = "foobar"
|
|
prepared_build.archive_url = "someurl"
|
|
prepared_build.tags = ["latest"]
|
|
prepared_build.subdirectory = "/"
|
|
prepared_build.context = "/"
|
|
prepared_build.metadata = {}
|
|
|
|
start_build(repo, prepared_build)
|
|
|
|
# Try to queue a second build; should fail.
|
|
with pytest.raises(MaximumBuildsQueuedException):
|
|
start_build(repo, prepared_build)
|
|
|
|
|
|
def test_start_build_disabled_trigger(app):
|
|
trigger = model.build.list_build_triggers("devtable", "building")[0]
|
|
trigger.enabled = False
|
|
trigger.save()
|
|
|
|
build = PreparedBuild(trigger=trigger)
|
|
|
|
with pytest.raises(BuildTriggerDisabledException):
|
|
start_build(trigger.repository, build)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"metadata, config",
|
|
[
|
|
({}, {}),
|
|
pytest.param(
|
|
{"ref": "ref/heads/master"}, {"branchtag_regex": "nothing"}, id="branchtag regex"
|
|
),
|
|
pytest.param(
|
|
{"ref": "ref/heads/master", "commit_info": {"message": "[skip build]",},},
|
|
{},
|
|
id="commit message",
|
|
),
|
|
],
|
|
)
|
|
def test_skip(metadata, config):
|
|
prepared = PreparedBuild()
|
|
prepared.metadata = metadata
|
|
config = config
|
|
|
|
with pytest.raises(SkipRequestException):
|
|
raise_if_skipped_build(prepared, config)
|
|
|
|
|
|
def test_does_not_skip():
|
|
prepared = PreparedBuild()
|
|
prepared.metadata = {
|
|
"ref": "ref/heads/master",
|
|
"commit_info": {"message": "some cool message",},
|
|
}
|
|
|
|
config = {
|
|
"branchtag_regex": "(master)|(heads/master)",
|
|
}
|
|
|
|
raise_if_skipped_build(prepared, config)
|