pmbootstrap/test/test_newapkbuild.py

74 lines
2.0 KiB
Python

# Copyright 2021 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later
import glob
import os
import pytest
import shutil
import sys
import pmb_test # noqa
import pmb_test.const
import pmb.build.newapkbuild
import pmb.config
import pmb.config.init
import pmb.helpers.logging
@pytest.fixture
def args(tmpdir, request):
import pmb.parse
cfg = f"{pmb_test.const.testdata}/channels.cfg"
sys.argv = ["pmbootstrap.py", "--config-channels", cfg, "init"]
args = pmb.parse.arguments()
args.log = args.work + "/log_testsuite.txt"
pmb.helpers.logging.init(args)
request.addfinalizer(pmb.helpers.logging.logfd.close)
return args
def test_newapkbuild(args, monkeypatch, tmpdir):
testdata = pmb_test.const.testdata
# Fake functions
def confirm_true(*nargs):
return True
def confirm_false(*nargs):
return False
# Preparation
monkeypatch.setattr(pmb.helpers.cli, "confirm", confirm_false)
pmb.build.init(args)
args.aports = tmpdir = str(tmpdir)
shutil.copy(f"{testdata}/pmaports.cfg", args.aports)
func = pmb.build.newapkbuild
# Show the help
func(args, "main", ["-h"])
assert glob.glob(f"{tmpdir}/*") == [f"{tmpdir}/pmaports.cfg"]
# Test package
pkgname = "testpackage"
func(args, "main", [pkgname])
apkbuild_path = tmpdir + "/main/" + pkgname + "/APKBUILD"
apkbuild = pmb.parse.apkbuild(args, apkbuild_path)
assert apkbuild["pkgname"] == pkgname
assert apkbuild["pkgdesc"] == ""
# Don't overwrite
with pytest.raises(RuntimeError) as e:
func(args, "main", [pkgname])
assert "Aborted" in str(e.value)
# Overwrite
monkeypatch.setattr(pmb.helpers.cli, "confirm", confirm_true)
pkgdesc = "testdescription"
func(args, "main", ["-d", pkgdesc, pkgname])
args.cache["apkbuild"] = {}
apkbuild = pmb.parse.apkbuild(args, apkbuild_path)
assert apkbuild["pkgname"] == pkgname
assert apkbuild["pkgdesc"] == pkgdesc
# There should be no src folder
assert not os.path.exists(tmpdir + "/main/" + pkgname + "/src")