1
0
mirror of https://github.com/quay/quay.git synced 2026-01-26 06:21:37 +03:00
Files
quay/endpoints/test/test_building.py
Joseph Schorr 22ad056192 Add better tagging options for build triggers.
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
2020-01-23 15:45:55 -05:00

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)