# Test_Tmpfiles

Provides unit tests and examples for the Tmpfiles lens.

Summary

Test_Tmpfiles | Provides unit tests and examples for the Tmpfiles lens.
VALID EXAMPLES |
simple | One line, simple example
simple_tree | Tree for simple
complex | A more complex example, comes from the manual
complex_tree | Tree for complex and trailing_ws
trailing_ws | The complex example with extra spaces
empty | Empty example
exclamation_mark | Example with an exclamation mark in the type
exclamation_mark_tree | Tree for exclamation_mark
minus | Example with an minus mark in the type
minus_tree | Tree for minus_tree
equal | Example with an equal sign in the type
equal_tree | Tree for equal
tilde | Example with a tilde character in the type
tilde_tree | Tree for tilde
caret | Example with a caret in the type
caret_tree | Tree for caret
short | Example with only type and path
short_tree | Tree for short
short_mode | Example with only 3 fields
short_mode_tree | Tree for short_mode
short_uid | Example with only 4 fields
short_uid_tree | Tree for short_uid
short_gid | Example with only 5 fields
short_gid_tree | Tree for short_gid
short_age | Example with only 6 fields
short_age_tree | Tree for short_age
complex_arg | Complex argument example.
complex_arg_tree | Tree for complex_arg
valid_short_args | A short argument value example.
valid_short_args_tree | Tree for valid_short_args
valid_age | Example with a complex age.
valid_age_tree | Tree for valid_age
valid_second | Example with full age unit
valid_second_tree | Tree for valid_second
valid_days | Example with full age unit (plural)
valid_days_tree | Tree for valid_days
percent | Test with a percent sign
percent_tree | Tree for percent
hyphen | Test with a hyphen in gid
hyphen_tree | Tree for hyphen
valid_base | A valid test to be re-used by the failure cases
valid_base_tree | Tree for valid_base
mode3 | Mode field example with only three digits
mode3_tree | Tree for mode3
mode_colon | Mode field with colon prefix
mode_colon_tree | Tree for mode_colon
INVALID EXAMPLES |
invalid_too_short | Invalid example that do not contain path
invalid_age | Invalid example that contain invalid age
invalid_type | Invalid example that contain invalid type (bad letter)
invalid_type_num | Invalid example that contain invalid type (numeric)
invalid_mode | Invalid example that contain invalid mode (bad int)
invalid_mode_alpha | Invalid example that contain invalid mode (letter)

### VALID EXAMPLES

### simple

> let simple = "d /run/user 0755 root mysql 10d -\n"

One line, simple example

### simple_tree

> let simple_tree = { "1" { "type" = "d" } { "path" = "/run/user" } { "mode" = "0755" } { "uid" = "root" } { "gid" = "mysql" } { "age" = "10d" } { "argument" = "-" } }

Tree for simple

### complex

> let complex = "#Type Path Mode UID GID Age Argument\nd /run/user 0755 root root 10d -\nL /tmp/foobar - - - - /dev/null\n"

A more complex example, comes from the manual

### complex_tree

> let complex_tree = { "#comment" = "Type Path Mode UID GID Age Argument" } { "1" { "type" = "d" } { "path" = "/run/user" } { "mode" = "0755" } { "uid" = "root" } { "gid" = "root" } { "age" = "10d" } { "argument" = "-" } } { "2" { "type" = "L" } { "path" = "/tmp/foobar" } { "mode" = "-" } { "uid" = "-" } { "gid" = "-" } { "age" = "-" } { "argument" = "/dev/null" } }

Tree for complex and trailing_ws

### trailing_ws

> let trailing_ws = " #Type Path Mode UID GID Age Argument \n d /run/user 0755 root root 10d - \t\n L /tmp/foobar - - - - /dev/null\t\n"

The complex example with extra spaces

### empty

> let empty = "\n\n\n"

Empty example

### exclamation_mark

> let exclamation_mark = "D! /tmp/foo - - - - -\n"

Example with an exclamation mark in the type

### exclamation_mark_tree

> let exclamation_mark_tree = { "1" { "type" = "D!" } { "path" = "/tmp/foo" } { "mode" = "-" } { "uid" = "-" } { "gid" = "-" } { "age" = "-" } { "argument" = "-" } }

Tree for exclamation_mark

### minus

> let minus = "D- /tmp/foo - - - - -\n"

Example with an minus mark in the type

### minus_tree

> let minus_tree = { "1" { "type" = "D-" } { "path" = "/tmp/foo" } { "mode" = "-" } { "uid" = "-" } { "gid" = "-" } { "age" = "-" } { "argument" = "-" } }

Tree for minus_tree

### equal

> let equal = "d= /tmp/foo 0755 root root - -\n"

Example with an equal sign in the type

### equal_tree

> let equal_tree = { "1" { "type" = "d=" } { "path" = "/tmp/foo" } { "mode" = "0755" } { "uid" = "root" } { "gid" = "root" } { "age" = "-" } { "argument" = "-" } }

Tree for equal

### tilde

> let tilde = "w~ /tmp/foo 0755 root root - dGVzdAo=\n"

Example with a tilde character in the type

### tilde_tree

> let tilde_tree = { "1" { "type" = "w~" } { "path" = "/tmp/foo" } { "mode" = "0755" } { "uid" = "root" } { "gid" = "root" } { "age" = "-" } { "argument" = "dGVzdAo=" } }

Tree for tilde

### caret

> let caret = "f^ /etc/motd.d/50-provision.conf - - - - login.motd\n"

Example with a caret in the type

### caret_tree

> let caret_tree = { "1" { "type" = "f^" } { "path" = "/etc/motd.d/50-provision.conf" } { "mode" = "-" } { "uid" = "-" } { "gid" = "-" } { "age" = "-" } { "argument" = "login.motd" } }

Tree for caret

### short

> let short = "A+ /tmp/foo\n"

Example with only type and path

### short_tree

> let short_tree = { "1" { "type" = "A+" } { "path" = "/tmp/foo" } }

Tree for short

### short_mode

> let short_mode = "c+! /tmp/foo ~0755\n"

Example with only 3 fields

### short_mode_tree

> let short_mode_tree = { "1" { "type" = "c+!" } { "path" = "/tmp/foo" } { "mode" = "~0755" } }

Tree for short_mode

### short_uid

> let short_uid = "A+ /tmp/foo - 0\n"

Example with only 4 fields

### short_uid_tree

> let short_uid_tree = { "1" { "type" = "A+" } { "path" = "/tmp/foo" } { "mode" = "-" } { "uid" = "0" } }

Tree for short_uid

### short_gid

> let short_gid = "z /tmp/bar/foo -\t- augd\n"

Example with only 5 fields

### short_gid_tree

> let short_gid_tree = { "1" { "type" = "z" } { "path" = "/tmp/bar/foo" } { "mode" = "-" } { "uid" = "-" } { "gid" = "augd" } }

Tree for short_gid

### short_age

> let short_age = "H /var/tmp/fooBarFOO - jj jj ~10d\n"

Example with only 6 fields

### short_age_tree

> let short_age_tree = { "1" { "type" = "H" } { "path" = "/var/tmp/fooBarFOO" } { "mode" = "-" } { "uid" = "jj" } { "gid" = "jj" } { "age" = "~10d" } }

Tree for short_age

### complex_arg

> let complex_arg = "t /run/screen - - - - user.name=\"John Smith\" security.SMACK64=screen\n"

Complex argument example. That one comes from the manual

### complex_arg_tree

> let complex_arg_tree = { "1" { "type" = "t" } { "path" = "/run/screen" } { "mode" = "-" } { "uid" = "-" } { "gid" = "-" } { "age" = "-" } { "argument" = "user.name=\"John Smith\" security.SMACK64=screen" } }

Tree for complex_arg

### valid_short_args

> let valid_short_args = "h /var/log/journal - - - - C\nh /var/log/journal - - - - +C\n"

A short argument value example.

### valid_short_args_tree

> let valid_short_args_tree = { "1" { "type" = "h" } { "path" = "/var/log/journal" } { "mode" = "-" } { "uid" = "-" } { "gid" = "-" } { "age" = "-" } { "argument" = "C" } } { "2" { "type" = "h" } { "path" = "/var/log/journal" } { "mode" = "-" } { "uid" = "-" } { "gid" = "-" } { "age" = "-" } { "argument" = "+C" } }

Tree for valid_short_args

### valid_age

> let valid_age = "v /var/tmp/js 4221 johnsmith - ~10d12h\n"

Example with a complex age.

### valid_age_tree

> let valid_age_tree = { "1" { "type" = "v" } { "path" = "/var/tmp/js" } { "mode" = "4221" } { "uid" = "johnsmith" } { "gid" = "-" } { "age" = "~10d12h" } }

Tree for valid_age

### valid_second

> let valid_second = "p+ /var/tmp - jsmith - 0second\n"

Example with full age unit

### valid_second_tree

> let valid_second_tree = { "1" { "type" = "p+" } { "path" = "/var/tmp" } { "mode" = "-" } { "uid" = "jsmith" } { "gid" = "-" } { "age" = "0second" } }

Tree for valid_second

### valid_days

> let valid_days = "x /var/tmp/manu - jonhsmith - 9days\n"

Example with full age unit (plural)

### valid_days_tree

> let valid_days_tree = { "1" { "type" = "x" } { "path" = "/var/tmp/manu" } { "mode" = "-" } { "uid" = "jonhsmith" } { "gid" = "-" } { "age" = "9days" } }

Tree for valid_days

### percent

> let percent = "m /var/log/%m 2755 root systemdjournal - -\n"

Test with a percent sign

### percent_tree

> let percent_tree = { "1" { "type" = "m" } { "path" = "/var/log/%m" } { "mode" = "2755" } { "uid" = "root" } { "gid" = "systemdjournal" } { "age" = "-" } { "argument" = "-" } }

Tree for percent

### hyphen

> let hyphen = "L /var/log/journal 2755 root systemd-journal - -\n"

Test with a hyphen in gid

### hyphen_tree

> let hyphen_tree = { "1" { "type" = "L" } { "path" = "/var/log/journal" } { "mode" = "2755" } { "uid" = "root" } { "gid" = "systemd-journal" } { "age" = "-" } { "argument" = "-" } }

Tree for hyphen

### valid_base

> let valid_base = "H /var/tmp/js 0000 jonhsmith 60 1s foo\n"

A valid test to be re-used by the failure cases

### valid_base_tree

> let valid_base_tree = { "1" { "type" = "H" } { "path" = "/var/tmp/js" } { "mode" = "0000" } { "uid" = "jonhsmith" } { "gid" = "60" } { "age" = "1s" } { "argument" = "foo" } }

Tree for valid_base

### mode3

> let mode3 = "c+! /tmp/foo 755\n"

Mode field example with only three digits

### mode3_tree

> let mode3_tree = { "1" { "type" = "c+!" } { "path" = "/tmp/foo" } { "mode" = "755" } }

Tree for mode3

### mode_colon

> let mode_colon = "d- /root :0700 root :root\n"

Mode field with colon prefix

### mode_colon_tree

> let mode_colon_tree = { "1" { "type" = "d-" } { "path" = "/root" } { "mode" = ":0700" } { "uid" = "root" } { "gid" = ":root" } }

Tree for mode_colon

### INVALID EXAMPLES

### invalid_too_short

> let invalid_too_short = "H\n"

Invalid example that do not contain path

### invalid_age

> let invalid_age = "H /var/tmp/js 0000 jonhsmith 60 1sss foo\n"

Invalid example that contain invalid age

### invalid_type

> let invalid_type = "i /var/tmp/js 0000 jonhsmith 60 1s foo\n"

Invalid example that contain invalid type (bad letter)

### invalid_type_num

> let invalid_type_num = "1 /var/tmp/js 0000 jonhsmith 60 1s foo\n"

Invalid example that contain invalid type (numeric)

### invalid_mode

> let invalid_mode = "H /var/tmp/js 8000 jonhsmith 60 1s foo\n"

Invalid example that contain invalid mode (bad int)

### invalid_mode_alpha

> let invalid_mode_alpha = "H /var/tmp/js a000 jonhsmith 60 1s foo\n" test Tmpfiles.lns get simple = simple_tree

Invalid example that contain invalid mode (letter)

Parses systemd tmpfiles.d files

> let simple = "d /run/user 0755 root mysql 10d -\n"

One line, simple example

> let simple_tree = { "1" { "type" = "d" } { "path" = "/run/user" } { "mode" = "0755" } { "uid" = "root" } { "gid" = "mysql" } { "age" = "10d" } { "argument" = "-" } }

Tree for simple

> let complex = "#Type Path Mode UID GID Age Argument\nd /run/user 0755 root root 10d -\nL /tmp/foobar - - - - /dev/null\n"

A more complex example, comes from the manual

> let complex_tree = { "#comment" = "Type Path Mode UID GID Age Argument" } { "1" { "type" = "d" } { "path" = "/run/user" } { "mode" = "0755" } { "uid" = "root" } { "gid" = "root" } { "age" = "10d" } { "argument" = "-" } } { "2" { "type" = "L" } { "path" = "/tmp/foobar" } { "mode" = "-" } { "uid" = "-" } { "gid" = "-" } { "age" = "-" } { "argument" = "/dev/null" } }

Tree for complex and trailing_ws

> let trailing_ws = " #Type Path Mode UID GID Age Argument \n d /run/user 0755 root root 10d - \t\n L /tmp/foobar - - - - /dev/null\t\n"

The complex example with extra spaces

> let empty = "\n\n\n"

Empty example

> let exclamation_mark = "D! /tmp/foo - - - - -\n"

Example with an exclamation mark in the type

> let exclamation_mark_tree = { "1" { "type" = "D!" } { "path" = "/tmp/foo" } { "mode" = "-" } { "uid" = "-" } { "gid" = "-" } { "age" = "-" } { "argument" = "-" } }

Tree for exclamation_mark

> let minus = "D- /tmp/foo - - - - -\n"

Example with an minus mark in the type

> let minus_tree = { "1" { "type" = "D-" } { "path" = "/tmp/foo" } { "mode" = "-" } { "uid" = "-" } { "gid" = "-" } { "age" = "-" } { "argument" = "-" } }

Tree for minus_tree

> let equal = "d= /tmp/foo 0755 root root - -\n"

Example with an equal sign in the type

> let equal_tree = { "1" { "type" = "d=" } { "path" = "/tmp/foo" } { "mode" = "0755" } { "uid" = "root" } { "gid" = "root" } { "age" = "-" } { "argument" = "-" } }

Tree for equal

> let tilde = "w~ /tmp/foo 0755 root root - dGVzdAo=\n"

Example with a tilde character in the type

> let tilde_tree = { "1" { "type" = "w~" } { "path" = "/tmp/foo" } { "mode" = "0755" } { "uid" = "root" } { "gid" = "root" } { "age" = "-" } { "argument" = "dGVzdAo=" } }

Tree for tilde

> let caret = "f^ /etc/motd.d/50-provision.conf - - - - login.motd\n"

Example with a caret in the type

> let caret_tree = { "1" { "type" = "f^" } { "path" = "/etc/motd.d/50-provision.conf" } { "mode" = "-" } { "uid" = "-" } { "gid" = "-" } { "age" = "-" } { "argument" = "login.motd" } }

Tree for caret

> let short = "A+ /tmp/foo\n"

Example with only type and path

> let short_tree = { "1" { "type" = "A+" } { "path" = "/tmp/foo" } }

Tree for short

> let short_mode = "c+! /tmp/foo ~0755\n"

Example with only 3 fields

> let short_mode_tree = { "1" { "type" = "c+!" } { "path" = "/tmp/foo" } { "mode" = "~0755" } }

Tree for short_mode

> let short_uid = "A+ /tmp/foo - 0\n"

Example with only 4 fields

> let short_uid_tree = { "1" { "type" = "A+" } { "path" = "/tmp/foo" } { "mode" = "-" } { "uid" = "0" } }

Tree for short_uid

> let short_gid = "z /tmp/bar/foo -\t- augd\n"

Example with only 5 fields

> let short_gid_tree = { "1" { "type" = "z" } { "path" = "/tmp/bar/foo" } { "mode" = "-" } { "uid" = "-" } { "gid" = "augd" } }

Tree for short_gid

> let short_age = "H /var/tmp/fooBarFOO - jj jj ~10d\n"

Example with only 6 fields

> let short_age_tree = { "1" { "type" = "H" } { "path" = "/var/tmp/fooBarFOO" } { "mode" = "-" } { "uid" = "jj" } { "gid" = "jj" } { "age" = "~10d" } }

Tree for short_age

> let complex_arg = "t /run/screen - - - - user.name=\"John Smith\" security.SMACK64=screen\n"

Complex argument example.

> let complex_arg_tree = { "1" { "type" = "t" } { "path" = "/run/screen" } { "mode" = "-" } { "uid" = "-" } { "gid" = "-" } { "age" = "-" } { "argument" = "user.name=\"John Smith\" security.SMACK64=screen" } }

Tree for complex_arg

> let valid_short_args = "h /var/log/journal - - - - C\nh /var/log/journal - - - - +C\n"

A short argument value example.

> let valid_short_args_tree = { "1" { "type" = "h" } { "path" = "/var/log/journal" } { "mode" = "-" } { "uid" = "-" } { "gid" = "-" } { "age" = "-" } { "argument" = "C" } } { "2" { "type" = "h" } { "path" = "/var/log/journal" } { "mode" = "-" } { "uid" = "-" } { "gid" = "-" } { "age" = "-" } { "argument" = "+C" } }

Tree for valid_short_args

> let valid_age = "v /var/tmp/js 4221 johnsmith - ~10d12h\n"

Example with a complex age.

> let valid_age_tree = { "1" { "type" = "v" } { "path" = "/var/tmp/js" } { "mode" = "4221" } { "uid" = "johnsmith" } { "gid" = "-" } { "age" = "~10d12h" } }

Tree for valid_age

> let valid_second = "p+ /var/tmp - jsmith - 0second\n"

Example with full age unit

> let valid_second_tree = { "1" { "type" = "p+" } { "path" = "/var/tmp" } { "mode" = "-" } { "uid" = "jsmith" } { "gid" = "-" } { "age" = "0second" } }

Tree for valid_second

> let valid_days = "x /var/tmp/manu - jonhsmith - 9days\n"

Example with full age unit (plural)

> let valid_days_tree = { "1" { "type" = "x" } { "path" = "/var/tmp/manu" } { "mode" = "-" } { "uid" = "jonhsmith" } { "gid" = "-" } { "age" = "9days" } }

Tree for valid_days

> let percent = "m /var/log/%m 2755 root systemdjournal - -\n"

Test with a percent sign

> let percent_tree = { "1" { "type" = "m" } { "path" = "/var/log/%m" } { "mode" = "2755" } { "uid" = "root" } { "gid" = "systemdjournal" } { "age" = "-" } { "argument" = "-" } }

Tree for percent

> let hyphen = "L /var/log/journal 2755 root systemd-journal - -\n"

Test with a hyphen in gid

> let hyphen_tree = { "1" { "type" = "L" } { "path" = "/var/log/journal" } { "mode" = "2755" } { "uid" = "root" } { "gid" = "systemd-journal" } { "age" = "-" } { "argument" = "-" } }

Tree for hyphen

> let valid_base = "H /var/tmp/js 0000 jonhsmith 60 1s foo\n"

A valid test to be re-used by the failure cases

> let valid_base_tree = { "1" { "type" = "H" } { "path" = "/var/tmp/js" } { "mode" = "0000" } { "uid" = "jonhsmith" } { "gid" = "60" } { "age" = "1s" } { "argument" = "foo" } }

Tree for valid_base

> let mode3 = "c+! /tmp/foo 755\n"

Mode field example with only three digits

> let mode3_tree = { "1" { "type" = "c+!" } { "path" = "/tmp/foo" } { "mode" = "755" } }

Tree for mode3

> let mode_colon = "d- /root :0700 root :root\n"

Mode field with colon prefix

> let mode_colon_tree = { "1" { "type" = "d-" } { "path" = "/root" } { "mode" = ":0700" } { "uid" = "root" } { "gid" = ":root" } }

Tree for mode_colon

> let invalid_too_short = "H\n"

Invalid example that do not contain path

> let invalid_age = "H /var/tmp/js 0000 jonhsmith 60 1sss foo\n"

Invalid example that contain invalid age

> let invalid_type = "i /var/tmp/js 0000 jonhsmith 60 1s foo\n"

Invalid example that contain invalid type (bad letter)

> let invalid_type_num = "1 /var/tmp/js 0000 jonhsmith 60 1s foo\n"

Invalid example that contain invalid type (numeric)

> let invalid_mode = "H /var/tmp/js 8000 jonhsmith 60 1s foo\n"

Invalid example that contain invalid mode (bad int)

> let invalid_mode_alpha = "H /var/tmp/js a000 jonhsmith 60 1s foo\n" test Tmpfiles.lns get simple = simple_tree

Invalid example that contain invalid mode (letter)
Close