mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-09-29 22:34:33 +00:00
122 lines
2.2 KiB
Python
122 lines
2.2 KiB
Python
import subprocess
|
|
from unittest import mock
|
|
|
|
import pytest
|
|
|
|
from tools.bump_action import main
|
|
|
|
|
|
@pytest.fixture
|
|
def workflow_and_action(tmp_path):
|
|
base = tmp_path.joinpath("root")
|
|
|
|
base.joinpath(".github/workflows").mkdir(parents=True)
|
|
workflow = base.joinpath(".github/workflows/main.yml")
|
|
|
|
base.joinpath(".github/actions/myaction").mkdir(parents=True)
|
|
action = base.joinpath(".github/actions/myaction/action.yml")
|
|
|
|
yield base, workflow, action
|
|
|
|
|
|
def test_main_noop(workflow_and_action, capsys):
|
|
base, workflow, action = workflow_and_action
|
|
|
|
workflow_src = """\
|
|
name: main
|
|
on:
|
|
push:
|
|
jobs:
|
|
main:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- run: echo hi
|
|
"""
|
|
|
|
action_src = """\
|
|
name: my-action
|
|
inputs:
|
|
arg:
|
|
required: true
|
|
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- run: echo hi
|
|
shell: bash
|
|
"""
|
|
|
|
workflow.write_text(workflow_src)
|
|
action.write_text(action_src)
|
|
|
|
assert main(("actions/whatever", "v1.2.3", f"--base-dir={base}")) == 0
|
|
out, err = capsys.readouterr()
|
|
assert out == err == ""
|
|
|
|
|
|
def test_main_upgrades_action(workflow_and_action, capsys):
|
|
base, workflow, action = workflow_and_action
|
|
|
|
workflow_src = """\
|
|
name: main
|
|
on:
|
|
push:
|
|
jobs:
|
|
main:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/[email protected]
|
|
"""
|
|
workflow_expected = """\
|
|
name: main
|
|
on:
|
|
push:
|
|
jobs:
|
|
main:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/[email protected]
|
|
"""
|
|
|
|
action_src = """\
|
|
name: my-action
|
|
inputs:
|
|
arg:
|
|
required: true
|
|
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- uses: actions/[email protected]
|
|
"""
|
|
action_expected = """\
|
|
name: my-action
|
|
inputs:
|
|
arg:
|
|
required: true
|
|
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- uses: actions/[email protected]
|
|
"""
|
|
|
|
workflow.write_text(workflow_src)
|
|
action.write_text(action_src)
|
|
|
|
with mock.patch.object(subprocess, "call", return_value=123):
|
|
assert main(("actions/whatever", "v1.2.3", f"--base-dir={base}")) == 123
|
|
|
|
out, err = capsys.readouterr()
|
|
assert (
|
|
out
|
|
== f"""\
|
|
{workflow} upgrading actions/whatever...
|
|
{action} upgrading actions/whatever...
|
|
freezing...
|
|
"""
|
|
)
|
|
|
|
assert workflow.read_text() == workflow_expected
|
|
assert action.read_text() == action_expected
|