- 18 Jun, 2022 14 commits
-
-
David Runge authored
repod/files/common.py: Extend `extract_file_from_tarfile()` to optionally return the extracted file contents in a StringIO and to deal with extracting from gzip compressed files in the tarfile. Add `names_in_tarfile()` to check whether all strings in a list or set are found in the list of filenames in a tarfile. tests/files/test_common.py: Parametrize the test for `extract_file_from_tarfile()`. Add parametrized tests for `names_in_tarfile()`.
-
David Runge authored
tests/conftest.py: Ensure to not add empty lines to StringIO representations of .PKGINFO files.
-
David Runge authored
repod/files/pkginfo.py: Try/except ValueError when evaluating .PKGINFO lines in `PkgInfo.from_file()` and raise a RepoManagementFileError instead. Add debug message about which line is being processed. tests/files/test_pkginfo.py: Raise on more invalid lines when testing `PkgInfo.from_file()` and also show debug log output.
-
David Runge authored
tests/conftest.py: Add fixture for a default package file, containing .BUILDINFO, .MTREE and .PKGINFO file.
-
David Runge authored
pyproject.toml: Add metadata which is needed for releases on pypi.org.
-
David Runge authored
.gitlab-ci.yml: Move linting to a check stage, which runs first. Only download files databases for integration tests. Run regex tests in a separate test job. Add variables to track required packages for various use-cases (e.g. tests in a locked poetry context, tests using system packages). Add build stage to run a job that uses poetry to build the sdist and wheel of the package. Add publish stage which runs a publish job if the commit is a tagged commit (relying on API token for pypi.org). Add jobs to test the project using system dependencies.
-
David Runge authored
tox.ini: Add tox testenv "regex" for regular expression tests.
-
David Runge authored
tests/common/test_regex.py: Mark all regular expression tests with "regex".
-
David Runge authored
pyproject.toml: Extend known pytest marks by "regex" for regular expression tests. Ignore regex as well as integration tests for default pytest calls.
-
David Runge authored
* artafinde/macos-support: Add coverage-conditional-plugin to assist in coverage Parameterize the parameters based on platform Create different venvs for different platforms
-
Leonidas Spyropoulos authored
Since some code branches cannot be executed in certain platforms we should skip them to not polute the coverage. Signed-off-by:
Leonidas Spyropoulos <artafinde@archlinux.org>
-
Leonidas Spyropoulos authored
Disable the pyalpm_vercmp code branch for non-linux platforms Signed-off-by:
Leonidas Spyropoulos <artafinde@archlinux.org>
-
Leonidas Spyropoulos authored
Signed-off-by:
Leonidas Spyropoulos <artafinde@archlinux.org>
-
David Runge authored
repod/config/settings.py: Add the top-level validator function `validate_directory()` instead of relying on a Directory model and a pydantic validator. This way it is possible to set a default for ManagementRepo.directory. Remove unneeded Directory model. tests/config/test_settings.py: Adapt tests for `Directory.validate_directory()` for `validate_directory()`.
-
- 17 Jun, 2022 8 commits
-
-
Levente Polyak authored
There were multiple shortcomings with the current implementation compared to the behavior of the official libalpm implementation. One of the primary differences requires a version segment to be handled chunk by chunk whether its numeric or none numeric. Furthermore differences in segment separators (none alpha-numeric characters) requires special handling to get the same results as libalpm. As there are just too many edge cases this changes implements the original libalpm vercmp algorithm as is. Furthermore move everything out of `models.py` into an own version module which is included. This will make it tremendously easier to potentially support multiple version schemas for different consumers in the future. Fixes #63 Signed-off-by:
Levente Polyak <anthraxx@archlinux.org>
-
David Runge authored
tests/common/test_regex.py: Test against valid/invalid compression type fixtures in regular expression tests.
-
David Runge authored
tests/conftest.py: Add session wide fixtures for valid/ invalid compression types.
-
David Runge authored
repod/common/enums.py: Change return value of `tar_compression_types_for_filename_regex()` to properly match dot prefixed file endings (e.g. `.gz`) and not any other prefix character.
-
David Runge authored
tox.ini: Increase the verbosity of integration test runs again.
-
David Runge authored
tests/files/test_{buildinfo,mtree}.py: Lookup local packages for tests in a compression type agnostic fashion (using all supported compression types).
-
It's nice to support both modules that stand in conflict with each other. Instead of forcing a specific implementation, we instead provide a tiny compatibility check and act differently while loading the string representation of the file type. Signed-off-by:
Levente Polyak <anthraxx@archlinux.org>
-
-
- 16 Jun, 2022 2 commits
-
-
David Runge authored
repod/common/enums.py: Improve the documentation for CompressionTypeEnum to reflect that it is now a string based enum with values representing possible file suffixes.
-
David Runge authored
repod/config/settings.py: Remove the leading underscore from all config helper functions. It serves no purpose and they are not exposed when importing from repod.config.
-
- 15 Jun, 2022 6 commits
-
-
David Runge authored
repod/config/settings.py: Use `repod.config.defaults.MANAGEMENT_REPO` as default directory for the `ManagementRepo` model.
-
David Runge authored
repod/models/config.py: Remove config models, as they are now part of repod.config.settings. repod/models/__init__.py: Remove exposure of (now non-existent) config models. tests/test_models.py: Remove tests for config models.
-
David Runge authored
repod/config/settings.py: Copy `Architecture`, `Directory`, `ManagementRepo`, `PackagePool`, `PackageRepo`, `SourcePool` to repod.config.settings as they are only used in that context. tests/config/test_settings.py: Copy tests for added models.
-
David Runge authored
-
David Runge authored
repod/config/__init__.py: Add init file to expose the `repod.config.settings.Settings`. repod/config/settings.py: Turn imports from `repod.config.defaults` and `repod.models` into top-level imports. repod/files/__init__.py: Turn imports from `repod.config.defaults` into top-level imports. tests/config/test_config.py: Adapt import location for `repod.config.settings`.
-
David Runge authored
Move the configuration related files config.py and defaults.py to a dedicated config module to be able to expose only parts of the functionality when importing it. Move tests to dedicated location for config.
-
- 14 Jun, 2022 10 commits
-
-
David Runge authored
docs/packages/contents.rst: Add documentation about .PKGINFO files, including JSON schema for PkgInfo.
-
David Runge authored
tox.ini: Also export the PkgInfo JSON schema when creating documentation.
-
David Runge authored
repod/files/pkginfo.py: Add a .PKGINFO parser, which fully validates files of version 1 and of version 2 (with pkgtype). tests/files/test_pkginfo.py: Add unit and integration tests for .PKGINFO parser.
-
David Runge authored
repod/common/enums.py: Add `PkgTypeEnum` to distinguish different types of pkgtype values. Add `pkg_types_for_pkgtype_regex()` to provide a string for the PKGTYPE regular expression. repod/common/regex.py: Add the `PKGTYPE` regular expression, which makes use of `repod.common.enums.pkg_types_for_pkgtype_regex`. tests/common/test_regex.py: Add tests for PKGTYPE regular expression. tests/conftest.py: Add defaults and specific fixtures for pkgtype. Add fixtures for default version. Add fixtures for creating .PKGINFO strings and files of version one and two.
-
David Runge authored
repod/common/models.py: Add the pydantic model `SchemaVersionV2` to track a schema version two in composite models.
-
David Runge authored
.readthedocs.yaml: Also install poetry so that all required packages can be installed using tox and poetry.
-
David Runge authored
repod/common/models.py: Attempt to import pyalpm's `vercmp()` and use it in `PkgVer.vercmp()` and `Version.vercmp()` instead of the builtin implementation if it is available. tests/common/test_models.py: Parametrize tests for `PkgVer.vercmp()` and `Version.vercmp()` further so that they can run against pyalpm's `vercmp()` and the builtin implementation.
-
David Runge authored
tox.ini: Call poetry in tox.ini again, as this way we can ensure to install all packages based on the lock file. Additionally, this allows to properly and selectively install extras, required e.g. by the coverage target (as to not install pyalpm for all targets). .gitlab-ci.yml: Install python-poetry to test environment. pyproject.toml: Add setuptools to build requirements because of bug in pip: https://github.com/pypa/pip/issues/6100
-
David Runge authored
pyproject.toml: Add pyalpm as optional extra feature. poetry.lock: Update poetry lock file.
-
David Runge authored
pyproject.toml: Remove pyalpm from project requirements poetry.lock: Update poetry lock file to not include pyalpm anymore.
-