From b76791e9e92929c14d08170dc6203e3f8e4a3b14 Mon Sep 17 00:00:00 2001 From: dottorblaster Date: Fri, 18 Oct 2024 08:31:22 +0000 Subject: [PATCH] deploy: bd4d063c6461f43eaea7f56bd81d07d85b17d9b8 --- Wanda.DataCase.html | 6 +++--- Wanda.epub | Bin 533109 -> 533109 bytes gatherers.html | 2 +- hack_on_wanda.html | 2 +- readme.html | 8 ++++---- specification.html | 6 +++--- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Wanda.DataCase.html b/Wanda.DataCase.html index 5e4481e2..b06ebe08 100644 --- a/Wanda.DataCase.html +++ b/Wanda.DataCase.html @@ -204,9 +204,9 @@

errors_on(changeset)

-

A helper that transforms changeset errors into a map of messages.

assert {:error, changeset} = Accounts.create_user(%{password: "short"})
-assert "password is too short" in errors_on(changeset).password
-assert %{password: ["password is too short"]} = errors_on(changeset)
+

A helper that transforms changeset errors into a map of messages.

assert {:error, changeset} = Accounts.create_user(%{password: "short"})
+assert "password is too short" in errors_on(changeset).password
+assert %{password: ["password is too short"]} = errors_on(changeset)
diff --git a/Wanda.epub b/Wanda.epub index c343d7288196d31d581f8e991b5e8942cfc9fb06..dde5fe2978c6cd3cca0656db269bf0e3a55944ed 100644 GIT binary patch delta 11776 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 delta 11767 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 Introduction -

Gatherers can be thought of as functions:

  • they have a name
  • they accept argument(s)
  • they return a value, the gathered Fact

Facts Gathering process in a nutshell

fact = gatherer(argument)

+

Gatherers can be thought of as functions:

  • they have a name
  • they accept argument(s)
  • they return a value, the gathered Fact

Facts Gathering process in a nutshell

fact = gatherer(argument)

diff --git a/hack_on_wanda.html b/hack_on_wanda.html index e965f670..e4baa90e 100644 --- a/hack_on_wanda.html +++ b/hack_on_wanda.html @@ -137,7 +137,7 @@

Ensure Compatibility with asdf

-

asdf allows using specific versions of programming language tools that are known to be compatible with the project, rather than relying on the version that's installed globally on the host system.

In order to use asdf, follow the official asdf getting started guide.

Install all required asdf plugins from .tool-versions inside the web repository.

cut -d' ' -f1 .tool-versions|xargs -i asdf plugin add  {}

Set up the asdf environment

asdf install

+

asdf allows using specific versions of programming language tools that are known to be compatible with the project, rather than relying on the version that's installed globally on the host system.

In order to use asdf, follow the official asdf getting started guide.

Install all required asdf plugins from .tool-versions inside the web repository.

cut -d' ' -f1 .tool-versions|xargs -i asdf plugin add  {}

Set up the asdf environment

asdf install

diff --git a/readme.html b/readme.html index aed44065..f10e242b 100644 --- a/readme.html +++ b/readme.html @@ -267,14 +267,14 @@

Often times knowing the returned value of the gathered facts is not a trivial thing, more during the implementation of new checks.

To better debug the fact gathering process and the returned values, the facts subcommand of trento-agent is a really useful tool. This command helps to see in the target itself what the gathered fact looks like. This is specially interesting when the returned value is a complex object or the target under test is modified and the check developer wants to see how this affects the gathered fact.

The command can be used as:

./trento-agent facts gather --gatherer corosync.conf --argument totem.token
 # To see the currently available gatherers and their names
-# ./trento-agent facts list

Which would return the next where the Value is the available value in the written check:

{
+# ./trento-agent facts list

Which would return the next where the Value is the available value in the written check:

{
   "Name": "totem.token",
   "CheckID": "",
-  "Value": {
+  "Value": {
     "Value": 30000
-  },
+  },
   "Error": null
-}

+}

diff --git a/specification.html b/specification.html index 02d05cc2..1fecf3b8 100644 --- a/specification.html +++ b/specification.html @@ -516,12 +516,12 @@

- name: bar_expectation expect: facts.bar == values.expected_bar
  • Pipe the expression language functions vertically in order to provide a better visual output of the code.
    So this:

    expectations:
       - name: some_expectation
    -    expect: facts.foo.find(|item| item.id == "super").properties.find(|prop| prop.name == "good").value

    would be:

    expectations:
    +    expect: facts.foo.find(|item| item.id == "super").properties.find(|prop| prop.name == "good").value

    would be:

    expectations:
       - name: some_expectation
         expect: |
           facts.foo
    -      .find(|item| item.id == "super").properties
    -      .find(|prop| prop.name == "good").value

    Note: Keep in mind that some functions such as sort and drain run in-place modifications, so they cannot be piped.

  • + .find(|item| item.id == "super").properties + .find(|prop| prop.name == "good").value

    Note: Keep in mind that some functions such as sort and drain run in-place modifications, so they cannot be piped.