diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/.gitignore b/.gitignore index fa1835c..73ae13c 100644 --- a/.gitignore +++ b/.gitignore @@ -218,3 +218,75 @@ pykickstart-1.78.tar.gz /pykickstart-3.31.tar.gz.asc /pykickstart-3.32.tar.gz /pykickstart-3.32.tar.gz.asc +/pykickstart-3.33.tar.gz +/pykickstart-3.33.tar.gz.asc +/pykickstart-3.34.tar.gz +/pykickstart-3.34.tar.gz.asc +/pykickstart-3.35.tar.gz +/pykickstart-3.35.tar.gz.asc +/pykickstart-3.36.tar.gz +/pykickstart-3.36.tar.gz.asc +/pykickstart-3.37.tar.gz +/pykickstart-3.37.tar.gz.asc +/pykickstart-3.38.tar.gz +/pykickstart-3.38.tar.gz.asc +/pykickstart-3.39.tar.gz +/pykickstart-3.39.tar.gz.asc +/pykickstart-3.40.tar.gz +/pykickstart-3.40.tar.gz.asc +/pykickstart-3.41.tar.gz +/pykickstart-3.41.tar.gz.asc +/pykickstart-3.42.tar.gz +/pykickstart-3.42.tar.gz.asc +/pykickstart-3.43.tar.gz +/pykickstart-3.43.tar.gz.asc +/pykickstart-3.44.tar.gz +/pykickstart-3.44.tar.gz.asc +/pykickstart-3.45.tar.gz +/pykickstart-3.45.tar.gz.asc +/pykickstart-3.46.tar.gz +/pykickstart-3.46.tar.gz.asc +/pykickstart-3.47.tar.gz +/pykickstart-3.47.tar.gz.asc +/pykickstart-3.48.tar.gz +/pykickstart-3.48.tar.gz.asc +/pykickstart-3.49.tar.gz +/pykickstart-3.49.tar.gz.asc +/pykickstart-3.50.tar.gz +/pykickstart-3.50.tar.gz.asc +/pykickstart-3.51.tar.gz +/pykickstart-3.51.tar.gz.asc +/pykickstart-3.52.tar.gz +/pykickstart-3.52.tar.gz.asc +/pykickstart-3.53.tar.gz +/pykickstart-3.53.tar.gz.asc +/pykickstart-3.54.tar.gz +/pykickstart-3.54.tar.gz.asc +/pykickstart-3.55.tar.gz +/pykickstart-3.55.tar.gz.asc +/pykickstart-3.56.tar.gz +/pykickstart-3.56.tar.gz.asc +/pykickstart-3.57.tar.gz +/pykickstart-3.57.tar.gz.asc +/pykickstart-3.58.tar.gz +/pykickstart-3.58.tar.gz.asc +/pykickstart-3.59.tar.gz +/pykickstart-3.59.tar.gz.asc +/pykickstart-3.60.tar.gz +/pykickstart-3.60.tar.gz.asc +/pykickstart-3.61.tar.gz +/pykickstart-3.61.tar.gz.asc +/pykickstart-3.62.tar.gz +/pykickstart-3.62.tar.gz.asc +/pykickstart-3.63.tar.gz +/pykickstart-3.63.tar.gz.asc +/pykickstart-3.64.tar.gz +/pykickstart-3.64.tar.gz.asc +/pykickstart-3.65.tar.gz +/pykickstart-3.65.tar.gz.asc +/pykickstart-3.66.tar.gz +/pykickstart-3.66.tar.gz.asc +/pykickstart-3.67.tar.gz +/pykickstart-3.67.tar.gz.asc +/pykickstart-3.68.tar.gz +/pykickstart-3.68.tar.gz.asc diff --git a/gating.yaml b/gating.yaml index d71584a..0c1cc35 100644 --- a/gating.yaml +++ b/gating.yaml @@ -1,6 +1,7 @@ --- !Policy product_versions: - fedora-* -decision_context: bodhi_update_push_testing +decision_contexts: [bodhi_update_push_stable] +subject_type: koji_build rules: - - !PassingTestCaseRule {test_case_name: dist.depcheck} + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} diff --git a/plans/run-tests.fmf b/plans/run-tests.fmf new file mode 100644 index 0000000..be27fa6 --- /dev/null +++ b/plans/run-tests.fmf @@ -0,0 +1,8 @@ +summary: Run pykickstart tests +prepare: + how: install + package: + - python3-kickstart + - pykickstart +execute: + script: ./tests/scripts/run_tests.sh diff --git a/pykickstart.spec b/pykickstart.spec index 2307392..3f035ea 100644 --- a/pykickstart.spec +++ b/pykickstart.spec @@ -1,32 +1,31 @@ -# Disable tests by default because they fail to run inside mock builds -# at the moment, but can run locally. To build and run tests, do: -# rpmbuild -ba --with runtests pykickstart.spec -%bcond_with runtests +# Enable tests by default. To disable them use: +# rpmbuild -ba --without runtests pykickstart.spec +%bcond_without runtests +%bcond_with signed Name: pykickstart -Version: 3.32 -Release: 2%{?dist} -License: GPLv2 and MIT +Version: 3.68 +Release: 1%{?dist} +License: GPL-2.0-only Summary: Python utilities for manipulating kickstart files. Url: http://fedoraproject.org/wiki/pykickstart -# This is a Red Hat maintained package which is specific to -# our distribution. Thus the source is only available from -# within this srpm. -Source0: %{name}-%{version}.tar.gz -Source1: %{name}-%{version}.tar.gz.asc +Source0: https://github.com/pykickstart/%{name}/releases/download/r%{version}/%{name}-%{version}.tar.gz +%if %{with signed} +Source1: https://github.com/pykickstart/%{name}/releases/download/r%{version}/%{name}-%{version}.tar.gz.asc +%endif BuildArch: noarch BuildRequires: gettext BuildRequires: python3-devel +BuildRequires: python3-pip BuildRequires: python3-requests BuildRequires: python3-setuptools -BuildRequires: python3-six BuildRequires: make +BuildRequires: python3-pytest # Only required when building with runtests %if %{with runtests} -BuildRequires: python3-coverage BuildRequires: python3-sphinx %endif @@ -37,7 +36,6 @@ Python utilities for manipulating kickstart files. %package -n python3-kickstart Summary: Python 3 library for manipulating kickstart files. -Requires: python3-six Requires: python3-requests %description -n python3-kickstart @@ -55,7 +53,7 @@ make PYTHON=%{__python3} DESTDIR=%{buildroot} install %check %if %{with runtests} -make PYTHON=%{__python3} test +LC_ALL=C make PYTHON=%{__python3} test-no-coverage %endif %files @@ -76,9 +74,331 @@ make PYTHON=%{__python3} test %doc docs/programmers-guide %doc docs/kickstart-docs.txt %{python3_sitelib}/pykickstart -%{python3_sitelib}/pykickstart*.egg-info +%{python3_sitelib}/pykickstart-%{version}.dist-info %changelog +* Tue Dec 02 2025 Brian C. Lane - 3.68-1 +- rhsm: Add Flatpak registry option for RHEL10 (bciconel) +- commands: bootc: remove 'experimental' warning (k.koukiou) + +* Fri Sep 19 2025 Python Maint - 3.67-2 +- Rebuilt for Python 3.14.0rc3 bytecode + +* Mon Aug 18 2025 Brian C. Lane - 3.67-1 +- spec: Add python3-pytest to BuildRequires (bcl) +- tests: Use pytest module instead of unittest (bcl) +- workflows: Use py3.14 rc.1 (bcl) +- Add Fedora 44 support (bcl) +- spec: drop python3-build dependency (yselkowi) + +* Fri Aug 15 2025 Python Maint - 3.66-4 +- Rebuilt for Python 3.14.0rc2 bytecode + +* Fri Jul 25 2025 Fedora Release Engineering - 3.66-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Tue Jul 22 2025 Brian C. Lane - 3.66-2 +- Drop python3-build, it is not needed to install the package + +* Tue Jul 15 2025 Brian C. Lane - 3.66-1 +- workflows: Use py3.14 beta.4 (bcl) +- pylint: Ignore files in .git (bcl) +- pyproject: Bump setuptools to 77 or later (bcl) +- Makefile: Stop running setup.py directly (bcl) + +* Mon Jun 16 2025 Brian C. Lane - 3.65-1 +- workflows: Add python 3.14 to the test matrix (bcl) +- Add support for RDP (jkonecny) +- Deprecate VNC (jkonecny) +- docs: Fix chapter numbering after adding certificate (bcl) + +* Tue Jun 03 2025 Python Maint - 3.64-2 +- Rebuilt for Python 3.14 + +* Fri Apr 25 2025 Brian C. Lane - 3.64-1 +- workflow: Add python 3.13 testing (bcl) +- tests: Remove unused import of constants (bcl) +- realm: Clean up documentation (bcl) +- Add support for new bootc kickstart command (ppolawsk) +- Update documentation for clearpart --initlabel option. (rvykydal) +- Update the %certificate section documentation (rvykydal) + +* Mon Feb 24 2025 Brian C. Lane - 3.63-1 +- Do not remove "md" prefix from RAID names (vtrefny) +- Add Fedora 43 support (bcl) +- workflows: Switch to ubuntu-latest (bcl) +- Update formatting of certificate section documentation (rvykydal) +- Update %certificate documentation with not about bundles (rvykydal) +- Fix formatting of %certificate documentation example (rvykydal) +- Update %certificate section documentation (rvykydal) + +* Wed Jan 29 2025 Brian C. Lane - 3.62-1 +- Make %%certificate section option --dir mandatory. (rvykydal) + Resolves: rhbz#2342762 + +* Sat Jan 18 2025 Fedora Release Engineering - 3.61-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Thu Jan 09 2025 Brian C. Lane - 3.61-1 +- runpylint: Log astroid version (bcl) +- tests: Limit the python versions used in testing (bcl) +- Add support for inline certificates with `%certificate` section (k.koukiou) + +* Thu Oct 03 2024 Brian C. Lane - 3.60-1 +- module: Remove unused warnings import (bcl) +- tox: Add py313 to tox and 3.12.7 to workflow (bcl) +- Fix the fix for _parse_optional changing (awilliam) + +* Wed Oct 02 2024 Brian C. Lane - 3.59-1 +- options: adjust to behavior change in upstream _parse_optional (awilliam) +- Add Fedora 42 support (jkonecny) + +* Mon Aug 19 2024 Brian C. Lane - 3.58-1 +- DeprecatedCommand: Return empty list for dataList (bcl) + +* Mon Aug 19 2024 Brian C. Lane - 3.57-1 +- Add "hw-passphrase" option for autopart and part commands (vtrefny) +- Enhance %onerror section with recommendation (jkonecny) + Resolves: RHEL-47142 +- commands: Add missing DeprecatedCommand class to F41_Module (kkoukiou) + +* Mon Aug 05 2024 Brian C. Lane - 3.56-1 +- doc/versionremoved: Update VersionChange import for Sphinx 8.0.0 (bcl) +- Mark the vnc command as deprecated on RHEL 10 (mkolman) + Resolves: RHEL-41219 +- pykickstart is supported on python 3.6+ (sgallagh) +- timezone: Remove the --isUtc, --nontp, and --ntpserver arguments (bcl) + Related: RHEL-34009 +- packages: Remove the old camel case arguments on RHEL10 (bcl) + Resolves: RHEL-34009 +- nvdimm: Remove support for the nvdimm command on RHEL10 (bcl) + Related: RHEL-34009 +- Drop the MIT license (bcl) + +* Fri Jul 19 2024 Fedora Release Engineering - 3.55-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Fri Jun 07 2024 Python Maint - 3.55-2 +- Rebuilt for Python 3.13 + +* Mon May 13 2024 Brian C. Lane - 3.55-1 +- Deprecate modularity on Fedora 41 (marusak.matej) +- btrfs: Remove support for the btrfs command on RHEL10 (bcl) + Resolves: RHEL-34009 +- Deprecate modularity on RHEL 10 (marusak.matej) + Resolves: RHEL-34829 + +* Thu Apr 25 2024 Brian C. Lane - 3.54-1 +- Add a DEFAULT_VERSION variable to version.py (bcl) +- Deprecate network team options on RHEL 10 (rvykydal) + +* Wed Apr 03 2024 Brian C. Lane - 3.53-1 +- Update sources to github release urls +- rhel10: autopart on RHEL does not support --type=btrfs (bcl) +- rhel10: Add test for btrfs command deprecation (bcl) +- rhel10: Add missing rhsm and syspurpose commands (bcl) +- Break out %pre example to kickstart-examples (tasleson) +- Update kickstart-docs.rst (tasleson) +- Add Fedora 41 support (bcl) +- Update RHEL 9 handler (bcl) +- Update RHEL 10 handler classes (bcl) +- Add RHEL 10 handler (bcl) +- workflow: Use python 3.12.2 for tests (bcl) +- workflow: Bump checkout and setup-python actions to new versions (bcl) + +* Thu Feb 01 2024 Brian C. Lane - 3.52-1 +- Deprecate %%packages --instLangs and --excludeWeakdeps kickstart options (vponcova) +- Deprecate timezone --isUtc, --ntpservers and --nontp kickstart options (vponcova) +- Fix the assert_removed check in the unit tests (vponcova) +- Remove the repo --ignoregroups kickstart option in Fedora 40 (vponcova) +- Remove the logging --level kickstart option in Fedora 40 (vponcova) +- Remove the method kickstart command in Fedora 40 (vponcova) +- Remove the autostep kickstart command in Fedora 40 (vponcova) +- requirements: Add setuptools (bcl) + +* Fri Jan 26 2024 Fedora Release Engineering - 3.51-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sun Jan 21 2024 Fedora Release Engineering - 3.51-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Tue Nov 28 2023 Brian C. Lane - 3.51-1 +- Deprecate the nvdimm kickstart command (vponcova) + +* Fri Nov 10 2023 Brian C. Lane - 3.50-1 +- Add Fedora 40 support (bcl) +- remove control characters from license (cmdr) +- scripts: Fix wording in documentation (bcl) +- workflow: Fix test for python 3.12.0 version (bcl) + +* Wed Oct 25 2023 Brian C. Lane - 3.49-1 +- tox: Only run unit tests for python 3.6 (bcl) +- workflow: Update to py3.12.0 (bcl) +- pykickstart: Set timeout to 120s on requests.get (bcl) +- translation-canary: Update the subtree with current master (bcl) +- Squashed 'translation-canary/' changes from 840c2d64..5bb81253 (bcl) +- tests: Add python 3.12 support (bcl) +- tests: Update unicode test to remove deprecated resetlocale (bcl) +- rtd: formats is separate, not part of sphinx (bcl) +- rtd: Add the .readthedocs.yaml config file (bcl) +- spec: Update spec with changes from Fedora (bcl) +- Makefile: Update pypi upload command (bcl) + +* Fri Jul 21 2023 Fedora Release Engineering - 3.48-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Wed Jun 14 2023 Python Maint - 3.48-2 +- Rebuilt for Python 3.12 + +* Thu Jun 08 2023 Brian C. Lane - 3.48-1 +- Makefile: Add a test-no-coverage target (bcl) +- realm: switch from pipes.quote() to shlex.quote() (ptoscano) +- workflow: Update actions to newest versions (bcl) +- Fix issues how to generate encrypted passwords (woiling) + +* Fri Mar 17 2023 Brian C. Lane - 3.47-1 +- network: Move new options to Fedora 39 (bcl) + Related: rhbz#1656662 +- displaymode: Update description to describe behavior (bcl) + +* Tue Mar 14 2023 Brian C. Lane - 3.46-1 +- Add conflict test between ostree sources (#2125655) (jkonecny) + Related: rhbz#2125655 +- Fix missing seen check for output generation (#2125655) (jkonecny) + Related: rhbz#2125655 +- Add new ostreecontainer command (#2125655) (jkonecny) + Related: rhbz#2125655 + Resolves: rhbz#2125655 + Related: rhbz#2125655 +- Check the conflicting commands automatically (vponcova) +- Fix tests for conflicting commands (vponcova) +- Add conflicting commands support (bcl) +- Fix handling of package section arguments in older versions (bcl) + +* Tue Mar 14 2023 Brian C. Lane - 3.45-1 +- workflow: Update to use released python 3.11 version (bcl) +- Don't allow to use --sdboot and --extlinux together (vponcova) +- tests: add bootloader sdboot option (jeremy.linton) +- bootloader: Add systemd-boot support with --sdboot (jeremy.linton) +- Add %%changelog section to pykickstart.spec.in (jkonecny) +- Do not request sign for rc-release Makefile target (jkonecny) +- Do not require SPECFILE for rc-release (jkonecny) +- Add missing docs copy to scratch Makefile (jkonecny) +- Add support for Fedora 39 (vslavik) + +* Wed Feb 15 2023 Brian C. Lane - 3.44-1 +- Add DNS handling options to the network command (vslavik) + Related: rhbz#1656662 +- Fix the coverage report (vponcova) +- whitelist_externals has changed to allowlist_externals (bcl) +- Update %post example for DNS problems (bcl) +- deps: Move dependencies into requirements.txt (bcl) +- Fix syntax of a code sample (ewoud) + +* Mon Jan 30 2023 Brian C. Lane - 3.43-3 +- SPDX migration + +* Fri Jan 20 2023 Fedora Release Engineering - 3.43-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Mon Aug 29 2022 Brian C. Lane - 3.43-1 +- pyproject.toml: Add dependencies (bcl) +- sshkey: Escapes quotes in the ssh key (bcl) + Resolves: rhbz#2117734 +- test: Add Python 3.11 to test matrix (bcl) +- Add --hibernation option to AutoPart (ozobal) +- Makefile: Include pyproject.toml in new release commit (bcl) + +* Tue Aug 16 2022 Brian C. Lane - 3.42-1 +- Use RHEL9 for RHEL command documentation (bcl) +- setup.py: use setuptools not distutils (bcl) +- Add pyproject.toml and update setup.py (bcl) +- Add Fedora 38 support (bcl) + +* Fri Jul 22 2022 Fedora Release Engineering - 3.41-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Thu Jun 16 2022 Python Maint - 3.41-2 +- Rebuilt for Python 3.11 + +* Thu Jun 16 2022 Brian C. Lane - 3.41-1 +- Write commands in alphabetical order (bcl) + Resolves: rhbz#2096871 + +* Tue Jun 14 2022 Python Maint - 3.40-2 +- Rebuilt for Python 3.11 + +* Mon Jun 13 2022 Brian C. Lane - 3.40-1 +- Add support for automatic LUN Scan (vponcova) + Related: rhbz#1432883 + +* Mon Jun 13 2022 Python Maint - 3.39-2 +- Rebuilt for Python 3.11 + +* Thu Jun 02 2022 Brian C. Lane - 3.39-1 +- tests: Fix unused out variable warnings (bcl) +- rootpw: Add an --allow-ssh argument (bcl) + Resolves: rhbz#2083269 +- github: Fix workflow to only send coverage for python 3.9 (bcl) + +* Thu Apr 07 2022 Brian C. Lane - 3.38-1 +- Add test for missing closing quote (bcl) +- i18n: Pass gettext domain on every translation call (bcl) + +* Mon Feb 28 2022 Brian C. Lane - 3.37-1 +- Remove the --ignorebroken option from RHEL handlers (vponcova) +- Add the isRHEL function (vponcova) + +* Tue Feb 15 2022 Brian C. Lane - 3.36-1 +- github: Add rhel9-branch to the list of branches (bcl) +- github: Use python 3.10 instead of a rc release (bcl) +- Fix validation of packages arguments (bcl) +- Add Fedora 37 support (vslavik) +- Add Fedora 36 support (vslavik) + +* Fri Jan 21 2022 Fedora Release Engineering - 3.35-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Tue Oct 12 2021 Brian C. Lane - 3.35-1 +- bootloader: Fix --md5pass documentation (bcl) +- Update ksvalidator manpage for multiple input files (vslavik) +- Test new code paths in ksvalidator (vslavik) +- ksvalidator: Add file globbing (vslavik) +- Rename _is_url() to is_url() to make it public (vslavik) +- ksvalidator: Add support for multiple files (vslavik) +- ksvalidator: Handle empty files (bcl) +- ksflatten: Add test coverage for unknown version (bcl) +- tests: Add python 3.10 to the test matrix (bcl) +- ksflatten: Fix pylint complaint about msg reuse (bcl) +- Remove more python2 compatability (bcl) +- tests: Ignore new pylint warnings (bcl) +- Fix typo "installaton" (amahdal) +- Be more consistent when referring to `%pre` (amahdal) + +* Fri Jul 23 2021 Fedora Release Engineering - 3.34-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Tue Jul 13 2021 Brian C. Lane - 3.34-1 +- Remove the auth and authconfig commands (pbrezina) +- The parse method is expected to return a value (vponcova) +- tests: unittest isn't used in handle_unicode anymore (bcl) +- Add RHEL 9 handler (mkolman) + Resolves: rhbz#1966730 +- Add RHEL 9 version for commands that had a RHEL version in the past (mkolman) + Related: rhbz#1966730 +- Add RHEL 9 version for BTRFS related commands (mkolman) + Related: rhbz#1966730 + +* Wed Jun 09 2021 Brian C. Lane - 3.33-1 +- tests: Use pykickstart/commands relative to the import (bcl) + Related: rhbz#1968762 +- Document missing feature '|' for ignoredisk and clearpart (jkonecny) +- Remove python six library (bcl) +- Add Fedora 35 support (bcl) + +* Thu Jun 03 2021 Python Maint - 3.32-3 +- Rebuilt for Python 3.10 + * Wed Jan 27 2021 Fedora Release Engineering - 3.32-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild diff --git a/sources b/sources index 5738361..b83b8c9 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (pykickstart-3.32.tar.gz) = 441781eaf570618f419807d2eba746a470770799149321149a1ca19ca297677e1990f0e5451f1a082fd911ec405896b99bf49780a92034c03113389b269af5df -SHA512 (pykickstart-3.32.tar.gz.asc) = 2f74c00e5b84f5ba3055b1fe85c369f5b7664bdec6385d708f9cb5f511074cf767a98ab2529f68c3ac20ad707fcd92538592231e00c5cd55845f43e200269e00 +SHA512 (pykickstart-3.68.tar.gz) = 103034f2ad47afa470066b4c98092ac634c5c5ed21c1c98a65170c78cc86e95f5565bb4c29a24a890836e45d2094b529fcdb02f8a004875cc13db505bd2ba51e +SHA512 (pykickstart-3.68.tar.gz.asc) = 33d2e3ea50bdffdb7bc4939b68c3069d6fce6087cd186ac57773981928a090608f7509fd8f63bacbbd6544d828da3eb1e1fb785f5ff7e547364c9cd360eaf106 diff --git a/tests/bad-ks/fedora-disk-base.ks b/tests/bad-ks/fedora-disk-base.ks new file mode 100644 index 0000000..5f4a9eb --- /dev/null +++ b/tests/bad-ks/fedora-disk-base.ks @@ -0,0 +1,47 @@ +text +lang en_US.UTF-8 +keyboard us +timezone US/Eastern +selinux --enforcing +firewall --enabled --service=mdns +services --enabled=sshd,NetworkManager,chronyd +network --bootproto=dhcp --device=link --activate +rootpw --lock --iscrypted locked +shutdown + +bootloader --timeout=1 + +zerombr +clearpart --all --initlabel --disklabel=msdos + +# make sure that initial-setup runs and lets us do all the configuration bits +firstboot --reconfig + +repo --name "packages" --url https://nowhere/ + +%packages +@core +@standard +@hardware-support + +kernel +# on 32bit arm make sure we only install one kernel +-kernel-lpae +# remove this in %post +dracut-config-generic +-dracut-config-rescue +# install tools needed to manage and boot arm systems +@arm-tools +chrony +bcm283x-firmware +initial-setup +# Intel wireless firmware assumed never of use for disk images +-iwl* +-ipw* +-usb_modeswitch +-generic-release* + +# make sure all the locales are available for inital-setup and anaconda to work +glibc-all-langpacks + +%end diff --git a/tests/bad-ks/no-commands.ks b/tests/bad-ks/no-commands.ks new file mode 100644 index 0000000..d50b27b --- /dev/null +++ b/tests/bad-ks/no-commands.ks @@ -0,0 +1,2 @@ +echo "not a kickstart" +without any --commands diff --git a/tests/good-ks/fedora-disk-base.ks b/tests/good-ks/fedora-disk-base.ks new file mode 100644 index 0000000..ea67746 --- /dev/null +++ b/tests/good-ks/fedora-disk-base.ks @@ -0,0 +1,104 @@ +# fedora-disk-base.ks +# +# Defines the basics for all kickstarts in the fedora-live branch +# Does not include package selection (other then mandatory) +# Does not include localization packages or configuration +# +# Does includes "default" language configuration (kickstarts including +# this template can override these settings) + +text +lang en_US.UTF-8 +keyboard us +timezone US/Eastern +selinux --enforcing +firewall --enabled --service=mdns +services --enabled=sshd,NetworkManager,chronyd +network --bootproto=dhcp --device=link --activate +rootpw --lock --iscrypted locked +shutdown + +bootloader --timeout=1 + +zerombr +clearpart --all --initlabel --disklabel=msdos + +# make sure that initial-setup runs and lets us do all the configuration bits +firstboot --reconfig + +%include fedora-repo.ks + +%packages +@core +@standard +@hardware-support + +kernel +# on 32bit arm make sure we only install one kernel +-kernel-lpae +# remove this in %post +dracut-config-generic +-dracut-config-rescue +# install tools needed to manage and boot arm systems +@arm-tools +chrony +bcm283x-firmware +initial-setup +# Intel wireless firmware assumed never of use for disk images +-iwl* +-ipw* +-usb_modeswitch +-generic-release* + +# make sure all the locales are available for inital-setup and anaconda to work +glibc-all-langpacks + +%end + +%post + +# Find the architecture we are on +arch=$(uname -m) + +# Setup Raspberry Pi firmware +if [[ $arch == "aarch64" ]] || [[ $arch == "armv7l" ]]; then +if [[ $arch == "aarch64" ]]; then +cp -P /usr/share/uboot/rpi_3/u-boot.bin /boot/efi/rpi3-u-boot.bin +cp -P /usr/share/uboot/rpi_4/u-boot.bin /boot/efi/rpi4-u-boot.bin +cp -P /usr/share/uboot/rpi_arm64/u-boot.bin /boot/efi/rpi-u-boot.bin +else +cp -P /usr/share/uboot/rpi_2/u-boot.bin /boot/efi/rpi2-u-boot.bin +cp -P /usr/share/uboot/rpi_3_32b/u-boot.bin /boot/efi/rpi3-u-boot.bin +cp -P /usr/share/uboot/rpi_4_32b/u-boot.bin /boot/efi/rpi4-u-boot.bin +fi +fi + +releasever=$(rpm --eval '%{fedora}') +rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-primary +echo "Packages within this disk image" +rpm -qa --qf '%{size}\t%{name}-%{version}-%{release}.%{arch}\n' |sort -rn + +# remove random seed, the newly installed instance should make it's own +rm -f /var/lib/systemd/random-seed + +# The enp1s0 interface is a left over from the imagefactory install, clean this up +rm -f /etc/NetworkManager/system-connections/*.nmconnection + +dnf -y remove dracut-config-generic + +# Remove machine-id on pre generated images +rm -f /etc/machine-id +touch /etc/machine-id + +# Note that running rpm recreates the rpm db files which aren't needed or wanted +rm -f /var/lib/rpm/__db* + +# Anaconda adds console=tty0 to the grub boot line on all images. this is problematic +# when you are using fedora via serial console as you do not get any output post grub +# linux does a good job of knowing what consoles need to be enabled. +# https://bugzilla.redhat.com/show_bug.cgi?id=2022757 +if [[ $arch == "aarch64" ]] || [[ $arch == "armv7l" ]]; then +sed -i -e 's|console=tty0||g' /boot/loader/entries/*conf +fi + +%end diff --git a/tests/good-ks/fedora-live-base.ks b/tests/good-ks/fedora-live-base.ks new file mode 100644 index 0000000..205e114 --- /dev/null +++ b/tests/good-ks/fedora-live-base.ks @@ -0,0 +1,106 @@ +# fedora-live-base.ks +# +# Defines the basics for all kickstarts in the fedora-live branch +# Does not include package selection (other then mandatory) +# Does not include localization packages or configuration +# +# Does includes "default" language configuration (kickstarts including +# this template can override these settings) + +lang en_US.UTF-8 +keyboard us +timezone US/Eastern +selinux --enforcing +firewall --enabled --service=mdns +xconfig --startxonboot +zerombr +clearpart --all +part / --size 5120 --fstype ext4 +services --enabled=NetworkManager,ModemManager --disabled=sshd +network --bootproto=dhcp --device=link --activate +rootpw --lock --iscrypted locked +shutdown + +%include fedora-repo.ks + +%packages +# Explicitly specified here: +# walters: because otherwise dependency loops cause yum issues. +kernel +kernel-modules +kernel-modules-extra + +# The point of a live image is to install +anaconda +anaconda-install-env-deps +anaconda-live +@anaconda-tools +# Anaconda has a weak dep on this and we don't want it on livecds, see +# https://fedoraproject.org/wiki/Changes/RemoveDeviceMapperMultipathFromWorkstationLiveCD +-fcoe-utils +-device-mapper-multipath + +# Need aajohan-comfortaa-fonts for the SVG rnotes images +aajohan-comfortaa-fonts + +# Without this, initramfs generation during live image creation fails: #1242586 +dracut-live + +# anaconda needs the locales available to run for different locales +glibc-all-langpacks + +# provide the livesys scripts +livesys-scripts +%end + +%post +# Enable livesys services +systemctl enable livesys.service +systemctl enable livesys-late.service + +# enable tmpfs for /tmp +systemctl enable tmp.mount + +# make it so that we don't do writing to the overlay for things which +# are just tmpdirs/caches +# note https://bugzilla.redhat.com/show_bug.cgi?id=1135475 +cat >> /etc/fstab << EOF +vartmp /var/tmp tmpfs defaults 0 0 +EOF + +# work around for poor key import UI in PackageKit +rm -f /var/lib/rpm/__db* +echo "Packages within this LiveCD" +rpm -qa --qf '%{size}\t%{name}-%{version}-%{release}.%{arch}\n' |sort -rn +# Note that running rpm recreates the rpm db files which aren't needed or wanted +rm -f /var/lib/rpm/__db* + +# go ahead and pre-make the man -k cache (#455968) +/usr/bin/mandb + +# make sure there aren't core files lying around +rm -f /core* + +# remove random seed, the newly installed instance should make it's own +rm -f /var/lib/systemd/random-seed + +# convince readahead not to collect +# FIXME: for systemd + +echo 'File created by kickstart. See systemd-update-done.service(8).' \ + | tee /etc/.updated >/var/.updated + +# Drop the rescue kernel and initramfs, we don't need them on the live media itself. +# See bug 1317709 +rm -f /boot/*-rescue* + +# Disable network service here, as doing it in the services line +# fails due to RHBZ #1369794 +systemctl disable network + +# Remove machine-id on pre generated images +rm -f /etc/machine-id +touch /etc/machine-id + +%end + diff --git a/tests/include-ks/fedora-live-base.ks b/tests/include-ks/fedora-live-base.ks new file mode 100644 index 0000000..bf89758 --- /dev/null +++ b/tests/include-ks/fedora-live-base.ks @@ -0,0 +1,106 @@ +# fedora-live-base.ks +# +# Defines the basics for all kickstarts in the fedora-live branch +# Does not include package selection (other then mandatory) +# Does not include localization packages or configuration +# +# Does includes "default" language configuration (kickstarts including +# this template can override these settings) + +lang en_US.UTF-8 +keyboard us +timezone US/Eastern +selinux --enforcing +firewall --enabled --service=mdns +xconfig --startxonboot +zerombr +clearpart --all +##part / --size 5120 --fstype ext4 +services --enabled=NetworkManager,ModemManager --disabled=sshd +network --bootproto=dhcp --device=link --activate +rootpw --lock --iscrypted locked +shutdown + +%include fedora-repo.ks + +%packages +# Explicitly specified here: +# walters: because otherwise dependency loops cause yum issues. +kernel +kernel-modules +kernel-modules-extra + +# The point of a live image is to install +anaconda +anaconda-install-env-deps +anaconda-live +@anaconda-tools +# Anaconda has a weak dep on this and we don't want it on livecds, see +# https://fedoraproject.org/wiki/Changes/RemoveDeviceMapperMultipathFromWorkstationLiveCD +-fcoe-utils +-device-mapper-multipath + +# Need aajohan-comfortaa-fonts for the SVG rnotes images +aajohan-comfortaa-fonts + +# Without this, initramfs generation during live image creation fails: #1242586 +dracut-live + +# anaconda needs the locales available to run for different locales +glibc-all-langpacks + +# provide the livesys scripts +livesys-scripts +%end + +%post +# Enable livesys services +systemctl enable livesys.service +systemctl enable livesys-late.service + +# enable tmpfs for /tmp +systemctl enable tmp.mount + +# make it so that we don't do writing to the overlay for things which +# are just tmpdirs/caches +# note https://bugzilla.redhat.com/show_bug.cgi?id=1135475 +cat >> /etc/fstab << EOF +vartmp /var/tmp tmpfs defaults 0 0 +EOF + +# work around for poor key import UI in PackageKit +rm -f /var/lib/rpm/__db* +echo "Packages within this LiveCD" +rpm -qa --qf '%{size}\t%{name}-%{version}-%{release}.%{arch}\n' |sort -rn +# Note that running rpm recreates the rpm db files which aren't needed or wanted +rm -f /var/lib/rpm/__db* + +# go ahead and pre-make the man -k cache (#455968) +/usr/bin/mandb + +# make sure there aren't core files lying around +rm -f /core* + +# remove random seed, the newly installed instance should make it's own +rm -f /var/lib/systemd/random-seed + +# convince readahead not to collect +# FIXME: for systemd + +echo 'File created by kickstart. See systemd-update-done.service(8).' \ + | tee /etc/.updated >/var/.updated + +# Drop the rescue kernel and initramfs, we don't need them on the live media itself. +# See bug 1317709 +rm -f /boot/*-rescue* + +# Disable network service here, as doing it in the services line +# fails due to RHBZ #1369794 +systemctl disable network + +# Remove machine-id on pre generated images +rm -f /etc/machine-id +touch /etc/machine-id + +%end + diff --git a/tests/include-ks/fedora-live-minimization.ks b/tests/include-ks/fedora-live-minimization.ks new file mode 100644 index 0000000..3cde144 --- /dev/null +++ b/tests/include-ks/fedora-live-minimization.ks @@ -0,0 +1,9 @@ +# Common packages removed from comps +# For F14, these removals should be moved to comps itself + +%packages + +# save some space +-hplip + +%end diff --git a/tests/include-ks/fedora-live-xfce.ks b/tests/include-ks/fedora-live-xfce.ks new file mode 100644 index 0000000..1506163 --- /dev/null +++ b/tests/include-ks/fedora-live-xfce.ks @@ -0,0 +1,33 @@ +# fedora-livecd-xfce.ks +# +# Description: +# - Fedora Live Spin with the light-weight XFCE Desktop Environment +# +# Maintainer(s): +# - Rahul Sundaram +# - Christoph Wickert +# - Kevin Fenzi +# - Adam Miller + +%include fedora-live-base.ks +%include fedora-live-minimization.ks +%include fedora-xfce-common.ks + +# need a bigger / +part / --size 6144 + +%post +# xfce configuration + +# create /etc/sysconfig/desktop (needed for installation) + +cat > /etc/sysconfig/desktop < +# - Adam Miller +# - Mukundan Ragavan + +%packages + +fedora-release-xfce +# install env-group to resolve RhBug:1891500 +@^xfce-desktop-environment + +@xfce-apps +@xfce-extra-plugins +@xfce-media +@xfce-office + +wget +system-config-printer + +# save some space +-autofs +-acpid +-gimp-help +-desktop-backgrounds-basic +-aspell-* # dictionaries are big +-xfce4-sensors-plugin +-xfce4-eyes-plugin + +%end diff --git a/tests/scripts/run_tests.sh b/tests/scripts/run_tests.sh index fdb2fd5..5f5f3dc 100755 --- a/tests/scripts/run_tests.sh +++ b/tests/scripts/run_tests.sh @@ -1,31 +1,24 @@ #!/bin/sh -PATH=/usr/bin -TMPDIR="$(mktemp -d)" -CWD="$(pwd)" +echo "Running pykickstart tests" +cd ./tests/ -PACKAGE=pykickstart -BRANCH= +# Run ksvalidator on good kickstart examples +for f in ./good-ks/*.ks; do + echo "Checking $f" + ksvalidator $f || exit 1 +done -# clone the dist-git tree for this package -cd ${TMPDIR} -fedpkg co ${PACKAGE} -cd ${PACKAGE} -[ -z "${BRANCH}" ] || fedpkg switch-branch ${BRANCH} -fedpkg prep +# Run ksvalidator on bad kickstart examples +for f in ./bad-ks/*.ks; do + echo "Checking $f" + ksvalidator $f && exit 1 +done -# scramble together the extracted source tree name -SRCDIR="${PACKAGE}-$(grep Version: ${PACKAGE}.spec | cut -d ' ' -f 2)" -# run the tests -cd ${SRCDIR} -make check -CHECK_RET=$? -make test -TEST_RET=$? -RET=$((${CHECK_RET} + ${TEST_RET})) +# Run ksflatten on a set of kickstarts +echo "Testing ksflatten with included kickstarts" +ksflatten -c ./include-ks/fedora-live-xfce.ks -o flat.ks || exit 1 +ksvalidator flat.ks || exit 1 -# clean up and exit -cd ${CWD} -rm -rf ${TMPDIR} -exit ${RET} +exit 0 diff --git a/tests/tests.yml b/tests/tests.yml deleted file mode 100644 index 55509ba..0000000 --- a/tests/tests.yml +++ /dev/null @@ -1,17 +0,0 @@ ---- - -- hosts: localhost - roles: - - role: standard-test-basic - tags: - - classic - - required_packages: - - fedpkg - - python3-sphinx - - python3-coverage - - tests: - - simple: - dir: scripts/ - run: ./run_tests.sh