mirror of
https://github.com/anchore/syft
synced 2024-11-10 06:14:16 +00:00
fd3844853a
Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>
70 lines
3.3 KiB
Python
70 lines
3.3 KiB
Python
import unittest
|
|
from unittest.mock import patch
|
|
import subprocess
|
|
|
|
import labeler
|
|
|
|
class Labeler(unittest.TestCase):
|
|
|
|
def test_major_version(self):
|
|
self.assertEqual(labeler.major_version("1.2.3"), 1)
|
|
self.assertEqual(labeler.major_version("2.0.0"), 2)
|
|
|
|
def test_is_breaking_change(self):
|
|
new_schema_files = ["schema/json/schema-2.0.0.json"]
|
|
latest_schema_file = "schema/json/schema-1.2.0.json"
|
|
self.assertTrue(labeler.is_breaking_change(new_schema_files, latest_schema_file))
|
|
|
|
new_schema_files = ["schema/json/schema-1.3.0.json"]
|
|
latest_schema_file = "schema/json/schema-1.2.0.json"
|
|
self.assertFalse(labeler.is_breaking_change(new_schema_files, latest_schema_file))
|
|
|
|
def test_summarize_schema_files(self):
|
|
files = ["schema/json/schema-1.0.0.json", "schema/json/schema-2.0.0.json"]
|
|
expected = ["1.0.0", "2.0.0"]
|
|
self.assertEqual(labeler.summarize_schema_files(files), expected)
|
|
|
|
def test_is_ci(self):
|
|
# Mock os.environ to simulate CI environment
|
|
with patch.dict("os.environ", {"CI": "true"}):
|
|
self.assertTrue(labeler.is_ci())
|
|
|
|
def test_get_pr_changed_files(self):
|
|
expected_command = "gh pr view 123 --json files --jq '.files.[].path'"
|
|
expected_output = "file1.json\nfile2.json\n"
|
|
|
|
subprocess.CompletedProcess.returncode = 0
|
|
subprocess.CompletedProcess.stdout = expected_output
|
|
with patch("labeler.run", return_value=subprocess.CompletedProcess) as mock_run:
|
|
result = labeler.get_pr_changed_files("123")
|
|
mock_run.assert_called_with(expected_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
|
|
self.assertEqual(result, ["file1.json", "file2.json"])
|
|
|
|
def test_filter_to_schema_files(self):
|
|
input_files = ["schema/json/schema-1.0.0.json", "not_schema.txt", "schema/json/schema-2.0.0.json"]
|
|
expected_files = ["schema/json/schema-1.0.0.json", "schema/json/schema-2.0.0.json"]
|
|
self.assertEqual(labeler.filter_to_schema_files(input_files), expected_files)
|
|
|
|
# we should be strict about what files are allowed to be processed
|
|
input_files = ["schema/json/schema-1.0.0extracontent.json", "schema/json/schema-1.0.0.md", "schema/json/schema-1.0.0.json.extracontent"]
|
|
expected_files = []
|
|
self.assertEqual(labeler.filter_to_schema_files(input_files), expected_files)
|
|
|
|
def test_get_semver(self):
|
|
input_file = "schema/json/schema-1.0.0.json"
|
|
expected_semver = "1.0.0"
|
|
self.assertEqual(labeler.get_semver(input_file), expected_semver)
|
|
|
|
def test_sort_json_schema_files(self):
|
|
files = ["schema/json/schema-1.12.1.json", "schema/json/schema-1.2.1.json"]
|
|
expected_sorted_files = ["schema/json/schema-1.2.1.json", "schema/json/schema-1.12.1.json"]
|
|
self.assertEqual(labeler.sort_json_schema_files(files), expected_sorted_files)
|
|
|
|
# ensure that "latest" doesn't cause a problem and is ultimately ignored
|
|
files = ["schema/json/schema-1.12.1.json", "schema/json/schema-_bogus.json"]
|
|
expected_sorted_files = ["schema/json/schema-_bogus.json", "schema/json/schema-1.12.1.json"]
|
|
self.assertEqual(labeler.sort_json_schema_files(files), expected_sorted_files)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|