UNPKG

hosty

Version:

A code based opinionated way to self-host and manage web apps.

96 lines 5.12 kB
import { block } from './block.js'; import { builtin } from '../ansible/tasks/index.js'; export function command(cmd, assertions, common = {}) { const x = block(`Assert command: ${cmd}`); x.add(builtin.shell(`Run command '${cmd}'`, { cmd }, { ...common, ignore_errors: true, register: 'command_result' }), builtin.debug(`Show command results`, { var: 'command_result' })); if (assertions.success === true) { x.add(builtin.assert(`Command '${cmd}' is successful`, { that: `command_result.rc == 0` })); } if (assertions.success === false) { x.add(builtin.assert(`Command '${cmd}' failed`, { that: `command_result.rc != 0` })); } if (assertions.exit_code !== undefined) { x.add(builtin.assert(`Command '${cmd}' exit code is ${assertions.exit_code}`, { that: `command_result.rc == ${assertions.exit_code}` })); } if (assertions.stdout !== undefined) { x.add(builtin.assert(`Command '${cmd}' stdout is '${assertions.stdout}'`, { that: `command_result.stdout == '${assertions.stdout}'` })); } if (assertions.stdout_contains !== undefined) { x.add(builtin.assert(`Command '${cmd}' stdout contains '${assertions.stdout_contains}'`, { that: `'${assertions.stdout_contains}' in command_result.stdout`, })); } if (assertions.stdout_doesnt_contain !== undefined) { x.add(builtin.assert(`Command '${cmd}' stdout doesn't contain '${assertions.stdout_doesnt_contain}'`, { that: `'${assertions.stdout_doesnt_contain}' not in command_result.stdout`, })); } if (assertions.stderr !== undefined) { x.add(builtin.assert(`Command '${cmd}' stderr is '${assertions.stderr}'`, { that: `command_result.stderr == '${assertions.stderr}'` })); } if (assertions.stderr_contains !== undefined) { x.add(builtin.assert(`Command '${cmd}' stderr contains '${assertions.stderr_contains}'`, { that: `'${assertions.stderr_contains}' in command_result.stderr`, })); } if (assertions.stderr_doesnt_contain !== undefined) { x.add(builtin.assert(`Command '${cmd}' stderr doesn't contain '${assertions.stderr_doesnt_contain}'`, { that: `'${assertions.stderr_doesnt_contain}' not in command_result.stderr`, })); } return x.get(); } export function file(path, assertions) { const x = block(`Assert file: ${path}`); x.add(builtin.stat(`Get file stat for '${path}'`, { path }, { register: 'file' })); if (assertions.exists === false) { x.add(builtin.assert(`File '${path}' exists`, { that: 'not file.stat.exists' })); } if (assertions.exists === true) { x.add(builtin.assert(`File '${path}' exists`, { that: 'file.stat.exists' })); builtin.assert(`File '${path}' is a file`, { that: 'file.stat.isreg' }); } if (assertions.owner) { x.add(builtin.assert(`File '${path}' is owned by '${assertions.owner}'`, { that: `file.stat.pw_name == '${assertions.owner}'` })); } if (assertions.group) { x.add(builtin.assert(`File '${path}' group is '${assertions.group}'`, { that: `file.stat.gr_name == '${assertions.group}'` })); } if (assertions.mode) { x.add(builtin.assert(`File '${path}' mode is '${assertions.mode}'`, { that: `file.stat.mode == '${assertions.mode}'` })); } if (assertions.content_equals) { x.add(command(`cat ${path}`, { stdout: assertions.content_equals })); } if (assertions.contains) { x.add(command(`cat ${path}`, { stdout_contains: assertions.contains })); } if (assertions.doesnt_contain) { x.add(command(`cat ${path}`, { stdout_doesnt_contain: assertions.doesnt_contain })); } return x.get(); } export function yaml(path, data) { return block(`Assert YAML: ${path}`, {}, [ builtin.command(`Read the content of ${path}`, { cmd: `cat ${path}` }, { register: 'yaml_file_content' }), builtin.set_facts(`Set Yaml content variable`, { parsed_yaml_content: '{{ yaml_file_content.stdout | from_yaml }}' }), builtin.assert(`Compare the Yaml data`, { that: `parsed_yaml_content == ${JSON.stringify(data)}`, }), ]).get(); } export function dir(path, assertions) { const x = block(`Assert directory: ${path}`); x.add(builtin.stat(`Get directory stat for '${path}'`, { path }, { register: 'dir' }), builtin.assert(`Directory '${path}' exists`, { that: 'dir.stat.exists' }), builtin.assert(`'${path}' is a directory`, { that: 'dir.stat.isdir' })); if (assertions.owner) { x.add(builtin.assert(`Directory '${path}' is owned by '${assertions.owner}'`, { that: `dir.stat.pw_name == '${assertions.owner}'` })); } if (assertions.group) { x.add(builtin.assert(`Directory '${path}' group is '${assertions.group}'`, { that: `dir.stat.gr_name == '${assertions.group}'` })); } if (assertions.mode) { x.add(builtin.assert(`Directory '${path}' mode is '${assertions.mode}'`, { that: `dir.stat.mode == '${assertions.mode}'` })); } return x.get(); } //# sourceMappingURL=assert.js.map