1
0
Fork 1
mirror of https://gitlab.postmarketos.org/postmarketOS/pmbootstrap.git synced 2025-07-14 20:09:49 +03:00

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:
Oliver Smith 2018-02-01 22:03:21 +00:00 committed by GitHub
parent 987ec7a00a
commit e8c27795a8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 5 additions and 216 deletions

View file

@ -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"