Test_Tmpfiles

Provides unit tests and examples for the Tmpfiles lens.

Summary
Test_TmpfilesProvides unit tests and examples for the Tmpfiles lens.
VALID EXAMPLES
simpleOne line, simple example
simple_treeTree for simple
complexA more complex example, comes from the manual
complex_treeTree for complex and trailing_ws
trailing_wsThe complex example with extra spaces
emptyEmpty example
exclamation_markExample with an exclamation mark in the type
exclamation_mark_treeTree for exclamation_mark
shortExample with only type and path
short_treeTree for short
short_modeExample with only 3 fields
short_mode_treeTree for short_mode
short_uidExample with only 4 fields
short_uid_treeTree for short_uid
short_gidExample with only 5 fields
short_gid_treeTree for short_gid
short_ageExample with only 6 fields
short_age_treeTree for short_age
complex_argComplex argument example.
complex_arg_treeTree for complex_arg
valid_short_argsA short argument value example.
valid_short_args_treeTree for valid_short_args
valid_ageExample with a complex age.
valid_age_treeTree for valid_age
valid_secondExample with full age unit
valid_second_treeTree for valid_second
valid_daysExample with full age unit (plural)
valid_days_treeTree for valid_days
percentTest with a percent sign
percent_treeTree for percent
hyphenTest with a hyphen in gid
hyphen_treeTree for hyphen
valid_baseA valid test to be re-used by the failure cases
valid_base_treeTree for valid_base
mode3Mode field example with only three digits
mode3_treeTree for mode3
INVALID EXAMPLES
invalid_too_shortInvalid example that do not contain path
invalid_ageInvalid example that contain invalid age
invalid_typeInvalid example that contain invalid type (bad letter)
invalid_type_numInvalid example that contain invalid type (numeric)
invalid_modeInvalid example that contain invalid mode (bad int)
invalid_mode_alphaInvalid 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

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

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 = "e /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 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 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 = "e /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