blob: 5dd7fe1bb5433adb714c0bd7df58960e47120683 [file] [log] [blame]
# SPDX-FileCopyrightText: Copyright 2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
#
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the License); you may
# not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an AS IS BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
import re
import tarfile
from pathlib import Path
from tarfile import TarFile
from tempfile import TemporaryDirectory
import build # noreorder
import pytest
@pytest.fixture(scope="module", name="vela_path")
def fixture_vela_path():
"""Return the path to the source code."""
current_dir = Path(__file__).parent
relative_vela_path = Path.joinpath(current_dir, *([".."] * 3))
vela_path = Path(relative_vela_path).absolute().resolve()
return vela_path
@pytest.fixture(scope="module", name="built_sdist")
def fixture_built_sdist(vela_path: Path) -> TarFile:
"""Fixture that returns the TarFile with the project sdist."""
# Set pretend version
os.environ["SETUPTOOLS_SCM_PRETEND_VERSION"] = "3.7.0"
# Build vela
with TemporaryDirectory() as tmp_dir:
p_builder = build.ProjectBuilder(vela_path)
build_path = p_builder.build("sdist", tmp_dir)
archive_path = Path(build_path)
tar_archive = tarfile.open(archive_path, "r:gz")
return tar_archive
@pytest.fixture(scope="module", name="source_readme")
def fixture_source_readme(vela_path: Path) -> str:
"""Return the contents of the README.md file."""
with open(Path.joinpath(vela_path, "README.md"), encoding="utf-8") as readme:
readme_content = readme.read()
return readme_content
def test_build_correct_readme_links(built_sdist: TarFile, source_readme: str):
"""Test that PKG-INFO file contains README.md metadata with correct links."""
md_link_pattern = r"(!?\[.+?\]\((.+?)\))"
url = "https://review.mlplatform.org/plugins/gitiles/ml/ethos-u/ethos-u-vela/+/refs/tags/3.7.0/"
# Extract the name of the package
dist_tar_name = str(built_sdist.name).replace(".gz", "")
package_name = Path(dist_tar_name).stem
file = built_sdist.extractfile(f"{package_name}/PKG-INFO")
pkg_info = file.read().decode("utf-8")
# Ensure that all links were replaced correctly
for match, link in re.findall(md_link_pattern, source_readme):
if "http" not in link and "https" not in link:
assert match not in pkg_info
assert url + link in pkg_info