---
name: "Arch::Test::Tree"
section: "3pm"
platform: "linux"
package: "libarch-perl"
version: "0.5.2-2"
release: "Debian 11 (Bullseye)"
platforms: ["linux"]
url: "https://new.carta.tech/Arch::Test::Tree"
---

# Arch::Test::Tree(3pm)

A test framework for Arch-Perl

## NAME

Arch::Test::Tree - A test framework for Arch-Perl

## SYNOPSIS

```
    use Arch::Test::Framework;
    my $fw = Arch::Test::Framework->new;
    my $tree = $fw->make_tree($dir, $version);
    my $dir = $tree->add_dir;
    $tree->add_file($dir);
    $tree->import;
```

## DESCRIPTION

Arch::Test::Tree provides methods to quickly build and modify Arch project trees within the Arch::Test framework.

## METHODS

**new**, **root**, **framework**, **run\_tla**, **add\_file**, **add\_dir**, **add\_link**, **modify\_file**, **rename\_file**, **rename\_dir**, **remove\_file**, **remove\_dir**, **inventory**, **import**, **commit**.

- **new** \[*framework*\] \[*path*\]

  Create a new Arch::Test::Tree instance for *path*. This method should not be called directly.

- **root**

  Returns the project trees root directory.

- **framework**

  Returns the associated Arch::Test::Framework reference.

- **run\_tla** *@args*

  Run `"tla `*@args*`"` from the tree root.

- **add\_file** \[*dir* \[*name* \[*content*\]\]\]

  Add a new file *name* in directory *dir*. Fill file with *content*.

  *dir* defaults to the project root (`"."`). If *name* is not specified, a unique filename is generated. A default content is generated if none is given.

- **add\_dir** \[*parent* \[*name*\]\]

  Add a new directory under *parent*, or `"."` if *parent* is not specified. If *name* is not given, a unique name is generated.

- **add\_link** \[*parent* \[*name* \[*target*\]\]\]

  Add a new symbolic link under *parent*, or `"."` if *parent* is not specified. If *name* is not given, a unique name is generated. If *target* is omitted, a (probably) non-existing target is generated.

- **modify\_file** *file* \[*content*\]

  Change *file*s content to *content*, or append `"Has been modified."` if new content is omitted.

- **rename\_file** *old* *new*

  Rename file *old* to *new*. Returns *new*.

- **rename\_dir** *old* *new*

  Rename directory *old* to *new*. Returns *new*.

- **remove\_file** *file*

  Delete *file* and its associated arch id.

- **remove\_dir** *dir*

  Recursively delete *dir* and its content.

- **inventory** \[*flags*\]

  Returns the inventory as generated by running `"tla inventory` *flags*`"`. *flags* default to `"-Bs"` if not specified.

- **import** \[*summary* \[*log*\]\]

  Create a `"base-0"` revision from tree using the summary line *summary* and *log* as log text. If *tree* contains a log file, *summary* and *log* can be omitted.

- **commit** \[*summary* \[*log*\]\]

  Commit a `"patch-n"` revision from tree using the summary line *summary* and *log* as log text. If *tree* contains a log file, *summary* and *log* can be omitted.

## AUTHORS

Mikhael Goikhman (migo@homemail.com--Perl-GPL/arch-perl--devel).

Enno Cramer (uebergeek@web.de--2003/arch-perl--devel).
