mirror of
				https://github.com/arcan1s/ahriman.git
				synced 2025-11-04 07:43:42 +00:00 
			
		
		
		
	Compare commits
	
		
			4 Commits
		
	
	
		
			214d6d7fdd
			...
			98f2f19d5b
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 98f2f19d5b | |||
| 5c4d3eeffd | |||
| 84d4523e85 | |||
| 2c2eae2334 | 
@ -1,7 +1,7 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 | 
					<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 | 
				
			||||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 | 
					<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 | 
				
			||||||
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
 | 
					 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
 | 
				
			||||||
<!-- Generated by graphviz version 7.0.4 (0)
 | 
					<!-- Generated by graphviz version 7.0.5 (0)
 | 
				
			||||||
 -->
 | 
					 -->
 | 
				
			||||||
<!-- Title: G Pages: 1 -->
 | 
					<!-- Title: G Pages: 1 -->
 | 
				
			||||||
<svg width="15156pt" height="5118pt"
 | 
					<svg width="15156pt" height="5118pt"
 | 
				
			||||||
 | 
				
			|||||||
| 
		 Before Width: | Height: | Size: 641 KiB After Width: | Height: | Size: 641 KiB  | 
@ -1,4 +1,4 @@
 | 
				
			|||||||
.TH AHRIMAN "1" "2022\-12\-31" "ahriman" "Generated Python Manual"
 | 
					.TH AHRIMAN "1" "2023\-01\-02" "ahriman" "Generated Python Manual"
 | 
				
			||||||
.SH NAME
 | 
					.SH NAME
 | 
				
			||||||
ahriman
 | 
					ahriman
 | 
				
			||||||
.SH SYNOPSIS
 | 
					.SH SYNOPSIS
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
# Maintainer: Evgeniy Alekseev
 | 
					# Maintainer: Evgeniy Alekseev
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pkgname='ahriman'
 | 
					pkgname='ahriman'
 | 
				
			||||||
pkgver=2.5.1
 | 
					pkgver=2.5.3
 | 
				
			||||||
pkgrel=1
 | 
					pkgrel=1
 | 
				
			||||||
pkgdesc="ArcH linux ReposItory MANager"
 | 
					pkgdesc="ArcH linux ReposItory MANager"
 | 
				
			||||||
arch=('any')
 | 
					arch=('any')
 | 
				
			||||||
 | 
				
			|||||||
@ -58,22 +58,25 @@ class _Context:
 | 
				
			|||||||
            raise ValueError(f"Value {value} is not an instance of {key.return_type}")
 | 
					            raise ValueError(f"Value {value} is not an instance of {key.return_type}")
 | 
				
			||||||
        return value
 | 
					        return value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def set(self, key: ContextKey[T], value: T) -> None:
 | 
					    def set(self, key: ContextKey[T], value: T, strict: bool = True) -> None:
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        set value for the specified key
 | 
					        set value for the specified key
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Args:
 | 
					        Args:
 | 
				
			||||||
            key(ContextKey[T]): context key name
 | 
					            key(ContextKey[T]): context key name
 | 
				
			||||||
            value(T): context value associated with the specified key
 | 
					            value(T): context value associated with the specified key
 | 
				
			||||||
 | 
					            strict(bool, optional): check if key already exists (Default value = True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Raises:
 | 
					        Raises:
 | 
				
			||||||
            KeyError: in case if the specified context variable already exists
 | 
					            KeyError: in case if the specified context variable already exists
 | 
				
			||||||
            ValueError: in case if type of value is not an instance of specified return type
 | 
					            ValueError: in case if type of value is not an instance of specified return type
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        if key.key in self._content:
 | 
					        has_key = key.key in self._content
 | 
				
			||||||
 | 
					        if strict and has_key:
 | 
				
			||||||
            raise KeyError(key.key)
 | 
					            raise KeyError(key.key)
 | 
				
			||||||
        if not isinstance(value, key.return_type):
 | 
					        if not isinstance(value, key.return_type):
 | 
				
			||||||
            raise ValueError(f"Value {value} is not an instance of {key.return_type}")
 | 
					            raise ValueError(f"Value {value} is not an instance of {key.return_type}")
 | 
				
			||||||
 | 
					        if not has_key:
 | 
				
			||||||
            self._content[key.key] = value
 | 
					            self._content[key.key] = value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __iter__(self) -> Iterator[str]:
 | 
					    def __iter__(self) -> Iterator[str]:
 | 
				
			||||||
 | 
				
			|||||||
@ -81,7 +81,8 @@ class RemotePush(LazyLogging):
 | 
				
			|||||||
        # ...secondly, we clone whole tree...
 | 
					        # ...secondly, we clone whole tree...
 | 
				
			||||||
        Sources.fetch(package_target_dir, package.remote)
 | 
					        Sources.fetch(package_target_dir, package.remote)
 | 
				
			||||||
        # ...and last, but not least, we remove the dot-git directory...
 | 
					        # ...and last, but not least, we remove the dot-git directory...
 | 
				
			||||||
        shutil.rmtree(package_target_dir / ".git", ignore_errors=True)
 | 
					        for git_file in package_target_dir.glob(".git*"):
 | 
				
			||||||
 | 
					            shutil.rmtree(package_target_dir / git_file)
 | 
				
			||||||
        # ...copy all patches...
 | 
					        # ...copy all patches...
 | 
				
			||||||
        for patch in self.database.patches_get(package.base):
 | 
					        for patch in self.database.patches_get(package.base):
 | 
				
			||||||
            filename = f"ahriman-{package.base}.patch" if patch.key is None else f"ahriman-{patch.key}.patch"
 | 
					            filename = f"ahriman-{package.base}.patch" if patch.key is None else f"ahriman-{patch.key}.patch"
 | 
				
			||||||
 | 
				
			|||||||
@ -83,12 +83,12 @@ class Repository(Executor, UpdateHandler):
 | 
				
			|||||||
        """
 | 
					        """
 | 
				
			||||||
        ctx = context.get()
 | 
					        ctx = context.get()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ctx.set(ContextKey("database", SQLite), self.database)
 | 
					        ctx.set(ContextKey("database", SQLite), self.database, strict=False)
 | 
				
			||||||
        ctx.set(ContextKey("configuration", Configuration), self.configuration)
 | 
					        ctx.set(ContextKey("configuration", Configuration), self.configuration, strict=False)
 | 
				
			||||||
        ctx.set(ContextKey("pacman", Pacman), self.pacman)
 | 
					        ctx.set(ContextKey("pacman", Pacman), self.pacman, strict=False)
 | 
				
			||||||
        ctx.set(ContextKey("sign", GPG), self.sign)
 | 
					        ctx.set(ContextKey("sign", GPG), self.sign, strict=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ctx.set(ContextKey("repository", type(self)), self)
 | 
					        ctx.set(ContextKey("repository", type(self)), self, strict=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        context.set(ctx)
 | 
					        context.set(ctx)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -17,4 +17,4 @@
 | 
				
			|||||||
# You should have received a copy of the GNU General Public License
 | 
					# You should have received a copy of the GNU General Public License
 | 
				
			||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
 | 
					# along with this program. If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
__version__ = "2.5.1"
 | 
					__version__ = "2.5.3"
 | 
				
			||||||
 | 
				
			|||||||
@ -20,18 +20,21 @@ def test_package_update(database: SQLite, configuration: Configuration, package_
 | 
				
			|||||||
    """
 | 
					    """
 | 
				
			||||||
    patch1 = PkgbuildPatch(None, "patch")
 | 
					    patch1 = PkgbuildPatch(None, "patch")
 | 
				
			||||||
    patch2 = PkgbuildPatch("key", "value")
 | 
					    patch2 = PkgbuildPatch("key", "value")
 | 
				
			||||||
 | 
					    local = Path("local")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    glob_mock = mocker.patch("pathlib.Path.glob", return_value=[".git", ".gitignore"])
 | 
				
			||||||
    rmtree_mock = mocker.patch("shutil.rmtree")
 | 
					    rmtree_mock = mocker.patch("shutil.rmtree")
 | 
				
			||||||
    fetch_mock = mocker.patch("ahriman.core.build_tools.sources.Sources.fetch")
 | 
					    fetch_mock = mocker.patch("ahriman.core.build_tools.sources.Sources.fetch")
 | 
				
			||||||
    patches_mock = mocker.patch("ahriman.core.database.SQLite.patches_get", return_value=[patch1, patch2])
 | 
					    patches_mock = mocker.patch("ahriman.core.database.SQLite.patches_get", return_value=[patch1, patch2])
 | 
				
			||||||
    patches_write_mock = mocker.patch("ahriman.models.pkgbuild_patch.PkgbuildPatch.write")
 | 
					    patches_write_mock = mocker.patch("ahriman.models.pkgbuild_patch.PkgbuildPatch.write")
 | 
				
			||||||
    runner = RemotePush(configuration, database, "gitremote")
 | 
					    runner = RemotePush(configuration, database, "gitremote")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local = Path("local")
 | 
					 | 
				
			||||||
    assert runner.package_update(package_ahriman, local) == package_ahriman.base
 | 
					    assert runner.package_update(package_ahriman, local) == package_ahriman.base
 | 
				
			||||||
 | 
					    glob_mock.assert_called_once_with(".git*")
 | 
				
			||||||
    rmtree_mock.assert_has_calls([
 | 
					    rmtree_mock.assert_has_calls([
 | 
				
			||||||
        MockCall(local / package_ahriman.base, ignore_errors=True),
 | 
					        MockCall(local / package_ahriman.base, ignore_errors=True),
 | 
				
			||||||
        MockCall(local / package_ahriman.base / ".git", ignore_errors=True),
 | 
					        MockCall(local / package_ahriman.base / ".git"),
 | 
				
			||||||
 | 
					        MockCall(local / package_ahriman.base / ".gitignore"),
 | 
				
			||||||
    ])
 | 
					    ])
 | 
				
			||||||
    fetch_mock.assert_called_once_with(pytest.helpers.anyvar(int), package_ahriman.remote)
 | 
					    fetch_mock.assert_called_once_with(pytest.helpers.anyvar(int), package_ahriman.remote)
 | 
				
			||||||
    patches_mock.assert_called_once_with(package_ahriman.base)
 | 
					    patches_mock.assert_called_once_with(package_ahriman.base)
 | 
				
			||||||
 | 
				
			|||||||
@ -32,11 +32,11 @@ def test_set_context(configuration: Configuration, database: SQLite, mocker: Moc
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    instance = Repository.load("x86_64", configuration, database, report=False, unsafe=False)
 | 
					    instance = Repository.load("x86_64", configuration, database, report=False, unsafe=False)
 | 
				
			||||||
    set_mock.assert_has_calls([
 | 
					    set_mock.assert_has_calls([
 | 
				
			||||||
        MockCall(ContextKey("database", SQLite), instance.database),
 | 
					        MockCall(ContextKey("database", SQLite), instance.database, strict=False),
 | 
				
			||||||
        MockCall(ContextKey("configuration", Configuration), instance.configuration),
 | 
					        MockCall(ContextKey("configuration", Configuration), instance.configuration, strict=False),
 | 
				
			||||||
        MockCall(ContextKey("pacman", Pacman), instance.pacman),
 | 
					        MockCall(ContextKey("pacman", Pacman), instance.pacman, strict=False),
 | 
				
			||||||
        MockCall(ContextKey("sign", GPG), instance.sign),
 | 
					        MockCall(ContextKey("sign", GPG), instance.sign, strict=False),
 | 
				
			||||||
        MockCall(ContextKey("repository", Repository), instance),
 | 
					        MockCall(ContextKey("repository", Repository), instance, strict=False),
 | 
				
			||||||
    ])
 | 
					    ])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -57,6 +57,17 @@ def test_set_value_exception() -> None:
 | 
				
			|||||||
        ctx.set(ContextKey("key", str), 42)
 | 
					        ctx.set(ContextKey("key", str), 42)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_set_value_exists() -> None:
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    must skip key set in case if key already exists and strict check is disabled
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    key, value = ContextKey("key", int), 42
 | 
				
			||||||
 | 
					    ctx = _Context()
 | 
				
			||||||
 | 
					    ctx.set(key, value)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ctx.set(key, value, strict=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_contains() -> None:
 | 
					def test_contains() -> None:
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    must correctly check if element is in list
 | 
					    must correctly check if element is in list
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user