Rename SpecificPackageManager trait PackageManager, add some unit tests

This commit is contained in:
selfhoster selfhoster 2023-04-21 15:13:03 +02:00
commit d2ef322761
6 changed files with 380 additions and 46 deletions

View file

@ -1,6 +1,5 @@
use super::{PackageArgs, IntoPackageList, PackageList, PackageState, PackageModule, PackageStatus, PackageError, SpecificPackageManager};
use super::apt::DebianPackageManager;
use super::pacman::ArchlinuxPackageManager;
use super::{PackageArgs, IntoPackageList, PackageList, PackageState, PackageModule, PackageStatus, PackageError, PackageManager};
use super::{apt::AptManager, pacman::PacmanManager};
use std::boxed::Box;
use crate::Module;
@ -50,7 +49,7 @@ impl<Packages, Manager> PackageArgsBuilder<Packages, NoState, Manager> {
}
impl<Packages, State> PackageArgsBuilder<Packages, State, NoManager> {
pub fn with(self, manager: impl SpecificPackageManager + 'static) -> PackageArgsBuilder<Packages, State, Box<dyn SpecificPackageManager>> {
pub fn with(self, manager: impl PackageManager + 'static) -> PackageArgsBuilder<Packages, State, Box<dyn PackageManager>> {
let Self { name, state, .. } = self;
PackageArgsBuilder {
@ -60,21 +59,21 @@ impl<Packages, State> PackageArgsBuilder<Packages, State, NoManager> {
}
}
pub fn with_apt(self) -> PackageArgsBuilder<Packages, State, Box<dyn SpecificPackageManager>> {
pub fn with_apt(self) -> PackageArgsBuilder<Packages, State, Box<dyn PackageManager>> {
let Self { name, state, .. } = self;
PackageArgsBuilder {
name,
state,
manager: Box::new(DebianPackageManager),
manager: Box::new(AptManager),
}
}
pub fn with_pacman(self) -> PackageArgsBuilder<Packages, State, Box<dyn SpecificPackageManager>> {
pub fn with_pacman(self) -> PackageArgsBuilder<Packages, State, Box<dyn PackageManager>> {
let Self { name, state, .. } = self;
PackageArgsBuilder {
name,
state,
manager: Box::new(ArchlinuxPackageManager),
manager: Box::new(PacmanManager),
}
}
}
@ -82,14 +81,14 @@ impl<Packages, State> PackageArgsBuilder<Packages, State, NoManager> {
// We can only RUN the args when a package manager has been set. Alternatively,
// when called inside a playbook, the package manager can be populated automatically from facts.
impl PackageArgsBuilder<PackageList, PackageState, Box<dyn SpecificPackageManager>> {
impl PackageArgsBuilder<PackageList, PackageState, Box<dyn PackageManager>> {
pub fn run(self) -> Result<PackageStatus, PackageError> {
self.build().run()
}
}
impl PackageArgsBuilder<PackageList, PackageState, Box<dyn SpecificPackageManager>> {
pub fn build(self) -> PackageModule<Box<dyn SpecificPackageManager>> {
impl PackageArgsBuilder<PackageList, PackageState, Box<dyn PackageManager>> {
pub fn build(self) -> PackageModule<Box<dyn PackageManager>> {
let Self { name, state, manager, .. } = self;
PackageModule {