python-pid/archive/TESTING.md
2023-02-23 22:05:14 +02:00

277 lines
7.6 KiB
Markdown

## Testing
The following components of RepoLib should be tested with each revision:
### CLI - apt-manage command
The `apt-manage` command should be tested every single revision to ensure that
it is working correctly. This will also generally test that changes to the
underlying library have not affected anything.
#### Adding repositories
Adding repositories should be tested.
1. Test Adding PPAs
```
sudo apt-manage -b add ppa:system76/proposed
```
Verify that the information output and the resulting deb lines (at the end of
the output) appear correct for the given PPA.
```
sudo apt-manage add -s ppa:system76/proposed
```
Verify that the `deb-src` is included in the `Types` field, then remove the
repository: `sudo apt-manage remove ppa-system76-proposed`
```
sudo apt-manage add -d ppa:system76/proposed
```
Verify that the `Enabled` field is set to `no`, then remove the
repository: `sudo apt-manage remove ppa-system76-proposed`
```
sudo apt-manage add ppa:system76/proposed
```
Verify that the command asks for verification before completing and displays
information about the PPA (similar to `add-apt-repository`). Verify that the
command fetches the signing key and adds it to the system. Verify that the
the correct `.list` file is added to `/etc/apt/sources.list.d`, then remove the
repository: `sudo apt-manage remove ppa-system76-proposed`
2. Test adding deb repositories
```
sudo apt-manage add --format list deb http://example.com/ubuntu focal main
```
Verify that the added repository matches the given input, and that there is a
commented-out `deb-src` repository with it. Ensure that the added repository
file ends in `.list` and that the contents match legacy Deb format.
Remove the repository with `sudo apt-manage remove
3. Test adding URLs
```
sudo apt-manage add --format list http://example.com/ubuntu
```
Verify that the repository is correctly expanded to include the `deb` at the
beginning, and the correct `{RELEASE} main` suites and components, where
{RELEASE} matches the current version codename. Verify that a matching `deb-src`
entry is added as well in the command output.
4. Test adding Pop Development repositories
```
sudo apt-manage add popdev:master
```
Verify that the repository details are correct, that the `Signed-by` field
points to `/etc/apt/keyrings/popdev-archive-keyring.gpg`, that the key file
exists at that path. Then, delete the repostiory:
```
sudo apt-manage remove popdev-master
```
#### Test Listing Details
1. Test that all repos are listed
```
apt-manage list
```
Verify that all configured repositories added to `/etc/apt/sources.list.d` are
printed in the command output.
2. Test that details for all repositories are listed
```
apt-manage list -a
```
Verify that the specific configuration for each repository listed in step 1 is
presented in the output.
3. Test that details for a specific repository are listed
```
apt-manage list system
```
Verify that the detailed configuration for only the specified repository is
listed in the output.
#### Removing repositories
1. Test cancelling removal
```
sudo apt-manage remove example-com-ubuntu
sudo apt-manage remove example-com-ubuntu
sudo apt-manage remove example-com-ubuntu
```
On the first run, enter 'n' and press enter. Verify that the source is not
removed using `apt-manage list`.
On the second run, simply press enter. Verify that the source is not removed by
using `apt-manage list`.
On the third run, enter 'v' and press enter. Verify that the source is not removed by
using `apt-manage list`.
2. Test removing sources
```
sudo apt-manage remove example-com-ubuntu
```
Enter 'y'. Verify that the source is removed using `apt-manage list`.
3. Verify protection of system sources
```
sudo apt-manage remove system
```
Verify that the command returns an error and that no action is taken (even if a
system.sources file does not exist) using `apt-manage list`
#### Modifying a repository
##### Setup
Add a testing repository:
```
sudo apt-manage add popdev:master
apt-manage list popdev-master
```
Verify that the details are correct in the output.
1. Change Repository Name
```
sudo apt-manage modify popdev-master --name 'Testing Repo'
apt-manage list popdev-master
```
Verify that the name was updated in the final output to match the given input
`Testing Repo`
2. Disable Repository
```
sudo apt-manage modify popdev-master --disable
apt-manage list popdev-master
```
Ensure that the repository is now listed as `Enabled: no`.
3. Add/Remove URI
```
sudo apt-manage modify popdev-master --add-uri http://example.com/
apt-manage list popdev-master
```
Ensure that the `http://example.com` URI was added to the source.
```
sudo apt-manage modify popdev-master --remove-uri http://example.com
apt-manage list popdev-master
```
Ensure that the `http://example.com` URI was removed.
4. Add/Remove Suite
```
sudo apt-manage modify popdev-master --add-suite xenial
apt-manage list popdev-master
```
Ensure that the suite `xenial` was added to the source.
```
sudo apt-manage modify popdev-master --remove-suite xenial
apt-manage list popdev-master
```
Ensure that the suite `xenial` was removed from the source.
5. Add/Remove Components
```
sudo apt-manage modify popdev-master --add-component 'universe multiverse'
apt-manage list popdev-master
```
Ensure that the components `universe` and `multiverse` were added to the source.
```
sudo apt-manage modify popdev-master --remove-component 'main multiverse'
apt-manage list popdev-master
```
Ensure that the components `main` and `multiverse` were removed from the source.
#### Enabling/Disabling Source Code
##### Setup
Add a testing repository:
```
apt-manage list popdev-master
```
Verify that the details are correct in the output and that `Types:` is just
`deb`.
1. Enable source code for one repo
```
sudo apt-manage modify --source-enable popdev-master
apt-manage list popdev-master
```
Verify that the `Types:` is now `deb deb-src`.
2. Disable source code for one repo
```
sudo apt-manage modify --source-disable popdev-master
apt-manage list popdev-master
```
Verify that the `Types:` is now just `deb`.
Finally, remove the testing repository:
```
sudo apt-manage remove popdev-master
```
### Installation/upgrading (packaging tests)
_This section is to test the installation behavior of the Debian package,
and doesn't need to be run for changes to repolib itself._
**Confirm add-apt-repository is installed when software-properties-common is not installed:**
- [ ] Make sure `software-properties-common` is not installed.
- [ ] Remove `python3-repolib` with `sudo dpkg -r --force-all python3-repolib`.
- [ ] Ensure `/usr/bin/add-apt-repository` doesn't exist (if it does, remove it.)
- [ ] Install `python3-repolib` (can be done with `sudo apt install -f`).
- [ ] Ensure `/usr/bin/add-apt-repository` exists and is a link to `/usr/lib/repolib/add-apt-repository`.
**Confirm add-apt-repository is not installed when software-properties-common is installed:**
- [ ] Remove `python3-repolib` with `sudo dpkg -r --force-all python3-repolib`.
- [ ] Ensure `/usr/bin/add-apt-repository` doesn't exist (if it does, remove it.)
- [ ] Install `software-properties-common`, confirm `/usr/bin/add-apt-repository` now exists and is not a link.
- Can be done with `apt download software-properties-common python3-software-properties`
followed by `dpkg -i` on the downloaded files.
- [ ] Install `python3-repolib` again, confirm `/usr/bin/add-apt-repository` still isn't a link.
**Confirm add-apt-repository is installed when software-properties-common is removed:**
- [ ] Remove `software-properties-common` and confirm that `/usr/bin/add-apt-repository` still exists and is now a link.