Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handle the situation when apt repo lines have or do not have trailing slashes properly #62173

Merged
merged 6 commits into from
Jun 22, 2022

Conversation

garethgreenaway
Copy link
Contributor

@garethgreenaway garethgreenaway commented Jun 15, 2022

What does this PR do?

Handle the situation when apt repo lines have or do not have trailing slashes properly

What issues does this PR fix or reference?

Fixes: #60907 #61483

Merge requirements satisfied?

[NOTICE] Bug fixes or features added to Salt require tests.

Commits signed with GPG?

Yes/No

Please review Salt's Contributing Guide for best practices.

See GitHub's page on GPG signing for more information about signing commits with GPG.

@garethgreenaway garethgreenaway requested a review from a team as a code owner June 15, 2022 22:32
@garethgreenaway garethgreenaway requested review from twangboy and removed request for a team June 15, 2022 22:32
@garethgreenaway garethgreenaway added the Phosphorus v3005.0 Release code name and version label Jun 16, 2022
@garethgreenaway garethgreenaway changed the title [WIP] Handle the situation when apt repo lines have or do not have trailing slashes properly Handle the situation when apt repo lines have or do not have trailing slashes properly Jun 16, 2022
@Ch3LL
Copy link
Contributor

Ch3LL commented Jun 17, 2022

re-run full all

@nicholasmhughes
Copy link
Collaborator

re-run pr-freebsd-131-amd64-py3-pytest

@garethgreenaway
Copy link
Contributor Author

re-run full all

1 similar comment
@garethgreenaway
Copy link
Contributor Author

re-run full all

@nicholasmhughes
Copy link
Collaborator

re-run pr-ubuntu-2204-amd64-py3-pycryptodome-pytest

@nicholasmhughes
Copy link
Collaborator

re-run pr-photon-3-x86_64-py3-pytest

@nicholasmhughes
Copy link
Collaborator

re-run pr-fedora-35-x86_64-py3-pytest

@nicholasmhughes
Copy link
Collaborator

re-run pr-centos-7-x86_64-py3-tcp-pytest

@nicholasmhughes
Copy link
Collaborator

re-run pr-ubuntu-2204-amd64-py3-pycryptodome-pytest

@nicholasmhughes
Copy link
Collaborator

@garethgreenaway , I looked at the final test error and it seems that options aren't being passed around properly in the tests. The rtag variable referenced in the test is derived from the cachedir option, but there was a different cachedir being gathered from __opts__ inside the function.

I wasn't sure of the best way to patch __opts__ when we're referencing a virtual name instead of a direct import (configure_loader_modules doesn't like the modules fixture), so I just recreated the modules object inside the test with the proper options instead of using the fixture. The patch below seems to get this test passing on Ubuntu 22.04:

diff --git a/tests/pytests/functional/modules/test_pkg.py b/tests/pytests/functional/modules/test_pkg.py
index 7f2fa097ff..dd76401ba5 100644
--- a/tests/pytests/functional/modules/test_pkg.py
+++ b/tests/pytests/functional/modules/test_pkg.py
@@ -9,6 +9,7 @@ import pytest
 import salt.utils.path
 import salt.utils.pkg
 import salt.utils.platform
+from saltfactories.utils.functional import Loaders
 
 log = logging.getLogger(__name__)
 
@@ -319,7 +320,7 @@ def test_hold_unhold(grains, modules, states, test_pkg):
 @pytest.mark.requires_salt_modules("pkg.refresh_db")
 @pytest.mark.slow_test
 @pytest.mark.requires_network
-def test_refresh_db(grains, modules, tmp_path, minion_opts):
+def test_refresh_db(grains, tmp_path, minion_opts):
     """
     test refreshing the package database
     """
@@ -327,7 +328,8 @@ def test_refresh_db(grains, modules, tmp_path, minion_opts):
     salt.utils.pkg.write_rtag(minion_opts)
     assert os.path.isfile(rtag) is True
 
-    ret = modules.pkg.refresh_db()
+    loader = Loaders(minion_opts)
+    ret = loader.modules.pkg.refresh_db()
     if not isinstance(ret, dict):
         pytest.skip("Upstream repo did not return coherent results: {}".format(ret))
 

@nicholasmhughes
Copy link
Collaborator

re-run pr-debian-9-amd64-py3-pytest

@nicholasmhughes
Copy link
Collaborator

re-run pr-windows-2016-x64-py3-pytest

twangboy
twangboy previously approved these changes Jun 21, 2022
Copy link
Contributor

@Ch3LL Ch3LL left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changelog?

@github-actions
Copy link

Hi! I'm your friendly PR bot!

You might be wondering what I'm doing commenting here on your PR.

Yes, as a matter of fact, I am...

I'm just here to help us improve the documentation. I can't respond to
questions or anything, but what I can do, I do well!

Okay... so what do you do?

I detect modules that are missing docstrings or "CLI Example" on existing docstrings!
When I was created we had a lot of these. The documentation for these
modules need some love and attention to make Salt better for our users.

So what does that have to do with my PR?

I noticed that in this PR there are some files changed that have some of these
issues. So I'm leaving this comment to let you know your options.

Okay, what are they?

Well, my favorite, is that since you were making changes here I'm hoping that
you would be the most familiar with this module and be able to add some other
examples or fix any of the reported issues.

If I can, then what?

Well, you can either add them to this PR or add them to another PR. Either way is fine!

Well... what if I can't, or don't want to?

That's also fine! We appreciate all contributions to the Salt Project. If you
can't add those other examples, either because you're too busy, or unfamiliar,
or you just aren't interested, we still appreciate the contributions that
you've made already.

Whatever approach you decide to take, just drop a comment here letting us know!

Detected Issues (click me)
Check Known Missing Docstrings...........................................Failed
- hook id: invoke
- duration: 1.44s
- exit code: 1

/home/runner/.cache/pre-commit/repoy9azdvy1/py_env-python3/lib/python3.9/site-packages/_distutils_hack/init.py:30: UserWarning: Setuptools is replacing distutils.
warnings.warn("Setuptools is replacing distutils.")
The function 'expand_repo_def' on 'salt/modules/aptpkg.py' does not have a 'CLI Example:' in its docstring
Found 1 errors


Thanks again!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Phosphorus v3005.0 Release code name and version
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[BUG] pkgrepo.managed always trigger changes if url ends with /
4 participants