123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- 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/whatever@v0.1.2
- """
- workflow_expected = """\
- name: main
- on:
- push:
- jobs:
- main:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/whatever@v1.2.3
- """
- action_src = """\
- name: my-action
- inputs:
- arg:
- required: true
- runs:
- using: composite
- steps:
- - uses: actions/whatever@v0.1.2
- """
- action_expected = """\
- name: my-action
- inputs:
- arg:
- required: true
- runs:
- using: composite
- steps:
- - uses: actions/whatever@v1.2.3
- """
- 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
|