forked from Mirror/pmbootstrap
Remove rest of 'pmbootstrap challenge' left overs (#1173)
Follow up to #1162. * `pmb.build.buildinfo()`: Used to record the build environment. It is flawed because it scans the repo APKINDEX files instead of using the actually installed packages list. When it was implemented we were not able to do the latter. After this is removed, `pmb.parse.depends` can be simplified (it needs to be rewritten for #1122). * `pmb.helpers.repo.diff()` and `pmb.helpers.repo.files()`: These were used exclusively by `pmb.build.buildinfo()`, to learn about which files have been changed in the local repository folder after a package was built. The idea was, that we could find subpackages that way. But this information is present in the installed package list as well, which is a much cleaner approach.
This commit is contained in:
parent
987ec7a00a
commit
e8c27795a8
7 changed files with 5 additions and 216 deletions
|
@ -18,91 +18,13 @@ along with pmbootstrap. If not, see <http://www.gnu.org/licenses/>.
|
|||
"""
|
||||
import os
|
||||
import sys
|
||||
import pytest
|
||||
import types
|
||||
import time
|
||||
|
||||
# Import from parent directory
|
||||
pmb_src = os.path.realpath(os.path.join(os.path.dirname(__file__) + "/.."))
|
||||
sys.path.append(pmb_src)
|
||||
import pmb.build
|
||||
import pmb.helpers.logging
|
||||
import pmb.helpers.repo
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def args(request):
|
||||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap.py", "chroot"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(args.logfd.close)
|
||||
return args
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def args_fake_work_dir(request, tmpdir):
|
||||
args = types.SimpleNamespace()
|
||||
args.work = str(tmpdir)
|
||||
return args
|
||||
|
||||
|
||||
def clear_timestamps_from_files(files):
|
||||
"""
|
||||
Replace all last modified timestamps from pmb.helpers.repo.files() with
|
||||
None. The files-parameter gets changed in place.
|
||||
"""
|
||||
for arch in files.keys():
|
||||
for file in files[arch].keys():
|
||||
files[arch][file] = None
|
||||
|
||||
|
||||
def test_files_empty(args_fake_work_dir):
|
||||
args = args_fake_work_dir
|
||||
os.mkdir(args.work + "/packages")
|
||||
assert pmb.helpers.repo.files(args) == {}
|
||||
|
||||
|
||||
def test_files_not_empty(args_fake_work_dir):
|
||||
args = args_fake_work_dir
|
||||
pkgs = args.work + "/packages"
|
||||
for dir in ["", "armhf", "x86_64"]:
|
||||
os.mkdir(pkgs + "/" + dir)
|
||||
open(pkgs + "/x86_64/test", "a").close()
|
||||
files = pmb.helpers.repo.files(args)
|
||||
clear_timestamps_from_files(files)
|
||||
assert files == {"armhf": {}, "x86_64": {"test": None}}
|
||||
|
||||
|
||||
def test_files_diff(args_fake_work_dir):
|
||||
args = args_fake_work_dir
|
||||
# Create x86_64/test, x86_64/test2
|
||||
pkgs = args.work + "/packages"
|
||||
for dir in ["", "x86_64"]:
|
||||
os.mkdir(pkgs + "/" + dir)
|
||||
for file in ["x86_64/test", "x86_64/test2"]:
|
||||
open(pkgs + "/" + file, "a").close()
|
||||
|
||||
# First snapshot
|
||||
first = pmb.helpers.repo.files(args)
|
||||
|
||||
# Change: x86_64/test (set the lastmod timestamp 5 seconds in the future)
|
||||
mtime_old = os.path.getmtime(pkgs + "/x86_64/test")
|
||||
time_new = time.time() + 5
|
||||
os.utime(pkgs + "/x86_64/test", (time_new, time_new))
|
||||
mtime_new = os.path.getmtime(pkgs + "/x86_64/test")
|
||||
assert mtime_old != mtime_new
|
||||
|
||||
# Create: aarch64/test3, x86_64/test4
|
||||
os.mkdir(pkgs + "/aarch64")
|
||||
open(pkgs + "/aarch64/test3", "a").close()
|
||||
open(pkgs + "/x86_64/test4", "a").close()
|
||||
|
||||
diff = pmb.helpers.repo.diff(args, first)
|
||||
assert diff == ["aarch64/test3", "x86_64/test", "x86_64/test4"]
|
||||
|
||||
|
||||
def test_hash():
|
||||
url = "https://nl.alpinelinux.org/alpine/edge/testing"
|
||||
hash = "865a153c"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue