Goss Versions Save

Quick and Easy server testing/validation

v0.4.6

1 month ago

What's Changed

New Contributors

Full Changelog: https://github.com/goss-org/goss/compare/v0.4.4...v0.4.6

v0.4.4

5 months ago

What's Changed

Full Changelog: https://github.com/goss-org/goss/compare/v0.4.3...v0.4.4

v0.4.3

5 months ago

What's Changed

New Contributors

Full Changelog: https://github.com/goss-org/goss/compare/v0.4.2...v0.4.3

v0.4.2

7 months ago

What's Changed

Full Changelog: https://github.com/goss-org/goss/compare/v0.4.1...v0.4.2

v0.4.1

7 months ago

Features

What's Changed

Full Changelog: https://github.com/goss-org/goss/compare/v0.4.0...v0.4.1

v0.4.0

8 months ago

Features

Thanks to all the contributors who have helped with this.

Summary:

  • Goss v0.4.X introduces some major enhancements to the matching logic allowing far more flexibility for asserts.
    • For example, can assert that the output of echo "3" is less than 5.
  • Introduces some minor breaking changes (see below)
  • v4 migration guide - Please submit issues/PRs if anything ewas missed in the migration guide

Matcher change

v4 introduced the ability to compare different types and more advanced string matching. See matchers section in the manual for more information.

For example:

command:
  echo_test:
    # command that outputs JSON, but this could be anything, http response, command output, etc
    exec: |
      echo '{"string_value": "15"}'
    exit-status: 0
    stdout:
      # advanced string parsing
      gjson:
        # extract "string_value"
        string_value:
          and:
            # The value is numerically <= 20 (auto type conversion)
            - le: 20
            # The value is numerically 15
            - 15
            # Equal does a strict check, the types have to match, hence string_value is "15" but not 15
            - equal: "15"
            - not: {equal: 15}

This conversion also allows treating an io.Reader (memory efficient line-by-line parsing) as a whole string (when compared with a string). This has the benefit of showing the full command output, which was a long-requested feature. For example:

$ cat goss.yaml
command:
  echo_test:
    exec: |
      echo 'hello world'
    exit-status: 0
    stdout: |
      goodbye world

$ goss v
.F

Failures/Skipped:

Command: echo_test: stdout:
Expected
    "hello world\n"
to equal
    "goodbye world\n"

Total Duration: 0.001s
Count: 2, Failed: 1, Skipped: 0

Breaking changes

  • Changed: file.Contains -> file.Contents
  • Changed: RPM Version is now full EVR (-qf "%|EPOCH?{%{EPOCH}:}:{}|%{VERSION}-%{RELEASE}), this opens the door for proper rpm version comparison in the future
  • For array matches (ex. user.Groups) duplicate entries will raise an error if they don't exist in the system.

In goss 3.X this would succeed:

user:
  xxx:
    exists: true
    groups:
        - foo
        - wheel
        - wheel

Now it will throw an error unless groups actually contain 2 copies of "wheel" in its response array from the system.

You can mimic the old behavior by modifying the test as follows:

user:
  xxx:
    exists: true
    groups:
      and:
        - contain-element: foo
        - contain-element: wheel
        - contain-element: wheel
  • Goss is more aware of types with goss v4, so ensure when doing string matching that integers and floats are surrounded by double quotes.

For example, this no longer works:

command:
  echo "123":
    exit-status: 0
    stdout:
    - 123

New way:

command:
  echo "123":
    exit-status: 0
    stdout:
    - "123"

Changes

  • Added: transforms support (closes #538)
    • Allows comparison of string to int, ex: ensuring a systctl output below/above a specific number (closes #220)
    • Allows JSON parsing/validation support (closes #578)
    • Allows comparing command output to a string, this will display the failed output on failure (closes #483)
    • -o include_raw will show the non-transformed value
  • Added: Some new matchers
    • equal matcher added to do strict type comparison (e.x. string to string)
    • contain-substring
    • have-patterns - This mimics the existing default behavior of file contents and command output
    • contain-elements - checks that an array value matches a set of matchers
  • Added: runlevels support for service
  • Added: option to sort output (closes #416)
  • Added: All resources now support key override (closes #518, closes #742)
  • Added: Use exit code 78 if test file is unparseable (closes #317)
  • Changed: removed alpha from non-linux binary names
  • Changed: StartTime is no longer calculated from goss start. Calculated from first test start, this allows accurate reporting when showing a cached result
  • Changed: Completely re-worked matchers and shared output logic
  • Changed: Cache test results in serve instead of output (closes #612)
  • Added: Significantly improved test coverage of matcher, output code
  • Changed: Doc to reference cat -E /proc/<PID>/comm to avoid whitespace issues (closes #762)
  • Changed: Removed file.Size from autoadd (closes #262)
  • Added: matcher.as-reader this allows the matcher string to behave as an io.Reader output. Can be useful for testing
  • Removed: json_online output format, use: goss v -f json -o oneline
  • Added: windows and darwin alpha binaries back in the release (#829)
  • Added: string diff support (#827)
  • Added: mount vfs-opts support (#826)

v0.4.0-rc.3

8 months ago

Features

Special thanks to @matsuo for fixing the darwin/windows alpha release process

Summary:

  • Goss v0.4.X introduces some major enhancements to the matching logic allowing far more flexibility for asserts.
    • For example, can assert that the output of echo "3" is less than 5.
  • Introduces some minor breaking changes (see below)

Since v0.4.0-rc.1

  • Added: windows and darwin alpha binaries back in the release (#829)
  • Added: string diff support (#827)
  • Changed: split ops and vfs-opts (#826)
    • Note: this effectively removes the mount.opts breaking change when upgrading from v0.3.X

Matcher change

v4 introduced the ability to compare different types and more advanced string matching. See matchers section in the manual for more information.

For example:

command:
  echo_test:
    # command that outputs JSON, but this could be anything, http response, command output, etc
    exec: |
      echo '{"string_value": "15"}'
    exit-status: 0
    stdout:
      # advanced string parsing
      gjson:
        # extract "string_value"
        string_value:
          and:
            # The value is numerically <= 20 (auto type conversion)
            - le: 20
            # The value is numerically 15
            - 15
            # Equal does a strict check, the types have to match, hence string_value is "15" but not 15
            - equal: "15"
            - not: {equal: 15}

This conversion also allows treating an io.Reader (memory efficient line-by-line parsing) as a whole string (when compared with a string). This has the benefit of showing the full command output, which was a long-requested feature. For example:

$ cat goss.yaml
command:
  echo_test:
    exec: |
      echo 'hello world'
    exit-status: 0
    stdout: |
      goodbye world

$ goss v
.F

Failures/Skipped:

Command: echo_test: stdout:
Expected
    "hello world\n"
to equal
    "goodbye world\n"

Total Duration: 0.001s
Count: 2, Failed: 1, Skipped: 0

Breaking changes

  • Changed: file.Contains -> file.Contents
  • Changed: RPM Version is now full EVR (-qf "%|EPOCH?{%{EPOCH}:}:{}|%{VERSION}-%{RELEASE}), this opens the door for proper rpm version comparison in the future
  • For array matches (ex. user.Groups) duplicate entries will raise an error if they don't exist in the system.

In goss 3.X this would succeed:

user:
  xxx:
    exists: true
    groups:
        - foo
        - wheel
        - wheel

Now it will throw an error unless groups actually contain 2 copies of "wheel" in its response array from the system.

You can mimic the old behavior by modifying the test as follows:

user:
  xxx:
    exists: true
    groups:
      and:
        - contain-element: foo
        - contain-element: wheel
        - contain-element: wheel
  • Goss is more aware of types with goss v4, so ensure when doing string matching that integers and floats are surrounded by double quotes.

For example, this no longer works:

command:
  echo "123":
    exit-status: 0
    stdout:
    - 123

New way:

command:
  echo "123":
    exit-status: 0
    stdout:
    - "123"

Changes

  • Added: transforms support (closes #538)
    • Allows comparison of string to int, ex: ensuring a systctl output below/above a specific number (closes #220)
    • Allows JSON parsing/validation support (closes #578)
    • Allows comparing command output to a string, this will display the failed output on failure (closes #483)
    • -o include_raw will show the non-transformed value
  • Added: Some new matchers
    • equal matcher added to do strict type comparison (e.x. string to string)
    • contain-substring
    • have-patterns - This mimics the existing default behavior of file contents and command output
    • contain-elements - checks that an array value matches a set of matchers
  • Added: runlevels support for service
  • Added: option to sort output (closes #416)
  • Added: All resources now support key override (closes #518, closes #742)
  • Added: Use exit code 78 if test file is unparseable (closes #317)
  • Changed: removed alpha from non-linux binary names
  • Changed: StartTime is no longer calculated from goss start. Calculated from first test start, this allows accurate reporting when showing a cached result
  • Changed: Completely re-worked matchers and shared output logic
  • Changed: Cache test results in serve instead of output (closes #612)
  • Added: Significantly improved test coverage of matcher, output code
  • Changed: Doc to reference cat -E /proc/<PID>/comm to avoid whitespace issues (closes #762)
  • Changed: Removed file.Size from autoadd (closes #262)
  • Added: matcher.as-reader this allows the matcher string to behave as an io.Reader output. Can be useful for testing
  • Removed: json_online output format, use: goss v -f json -o oneline

v0.4.0-rc.2

8 months ago

Features

Summary:

  • Goss v0.4.X introduces some major enhancements to the matching logic allowing far more flexibility for asserts.
    • For example, can assert that the output of echo "3" is less than 5.
  • Introduces some minor breaking changes (see below)

Since v0.4.0-rc.1

  • Added: string diff support (#827)
  • Changed: split ops and vfs-opts (#826)
    • Note: this effectively removes the mount.opts breaking change when upgrading from v0.3.X

Matcher change

v4 introduced the ability to compare different types and more advanced string matching. See matchers section in the manual for more information.

For example:

command:
  echo_test:
    # command that outputs JSON, but this could be anything, http response, command output, etc
    exec: |
      echo '{"string_value": "15"}'
    exit-status: 0
    stdout:
      # advanced string parsing
      gjson:
        # extract "string_value"
        string_value:
          and:
            # The value is numerically <= 20 (auto type conversion)
            - le: 20
            # The value is numerically 15
            - 15
            # Equal does a strict check, the types have to match, hence string_value is "15" but not 15
            - equal: "15"
            - not: {equal: 15}

This conversion also allows treating an io.Reader (memory efficient line-by-line parsing) as a whole string (when compared with a string). This has the benefit of showing the full command output, which was a long-requested feature. For example:

$ cat goss.yaml
command:
  echo_test:
    exec: |
      echo 'hello world'
    exit-status: 0
    stdout: |
      goodbye world

$ goss v
.F

Failures/Skipped:

Command: echo_test: stdout:
Expected
    "hello world\n"
to equal
    "goodbye world\n"

Total Duration: 0.001s
Count: 2, Failed: 1, Skipped: 0

Breaking changes

  • Changed: file.Contains -> file.Contents
  • Changed: RPM Version is now full EVR (-qf "%|EPOCH?{%{EPOCH}:}:{}|%{VERSION}-%{RELEASE}), this opens the door for proper rpm version comparison in the future
  • For array matches (ex. user.Groups) duplicate entries will raise an error if they don't exist in the system.

In goss 3.X this would succeed:

user:
  xxx:
    exists: true
    groups:
        - foo
        - wheel
        - wheel

Now it will throw an error unless groups actually contain 2 copies of "wheel" in its response array from the system.

You can mimic the old behavior by modifying the test as follows:

user:
  xxx:
    exists: true
    groups:
      and:
        - contain-element: foo
        - contain-element: wheel
        - contain-element: wheel
  • Goss is more aware of types with goss v4, so ensure when doing string matching that integers and floats are surrounded by double quotes.

For example, this no longer works:

command:
  echo "123":
    exit-status: 0
    stdout:
    - 123

New way:

command:
  echo "123":
    exit-status: 0
    stdout:
    - "123"

Changes

  • Added: transforms support (closes #538)
    • Allows comparison of string to int, ex: ensuring a systctl output below/above a specific number (closes #220)
    • Allows JSON parsing/validation support (closes #578)
    • Allows comparing command output to a string, this will display the failed output on failure (closes #483)
    • -o include_raw will show the non-transformed value
  • Added: Some new matchers
    • equal matcher added to do strict type comparison (e.x. string to string)
    • contain-substring
    • have-patterns - This mimics the existing default behavior of file contents and command output
    • contain-elements - checks that an array value matches a set of matchers
  • Added: runlevels support for service
  • Added: option to sort output (closes #416)
  • Added: All resources now support key override (closes #518, closes #742)
  • Added: Use exit code 78 if test file is unparseable (closes #317)
  • Changed: removed alpha from non-linux binary names
  • Changed: StartTime is no longer calculated from goss start. Calculated from first test start, this allows accurate reporting when showing a cached result
  • Changed: Completely re-worked matchers and shared output logic
  • Changed: Cache test results in serve instead of output (closes #612)
  • Added: Significantly improved test coverage of matcher, output code
  • Changed: Doc to reference cat -E /proc/<PID>/comm to avoid whitespace issues (closes #762)
  • Changed: Removed file.Size from autoadd (closes #262)
  • Added: matcher.as-reader this allows the matcher string to behave as an io.Reader output. Can be useful for testing
  • Removed: json_online output format, use: goss v -f json -o oneline

v0.4.0-rc.1

9 months ago

Features

Summary:

  • Goss v0.4.X introduces some major enhancements to the matching logic allowing far more flexibility for asserts.
    • For example, can assert that the output of echo "3" is less than 5.
  • Introduces some minor breaking changes (see below)

Matcher change

v4 introduced the ability to compare different types and more advanced string matching. See matchers section in manual for more information.

For example:

command:
  echo_test:
    # command that outputs JSON, but this could be anything, http response, command output, etc
    exec: |
      echo '{"string_value": "15"}'
    exit-status: 0
    stdout:
      # advanced string parsing
      gjson:
        # extract "string_value"
        string_value:
          and:
            # The value is numerically <= 20 (auto type conversion)
            - le: 20
            # The value is numerically 15
            - 15
            # Equal does a strict check, the types have to match, hence string_value is "15" but not 15
            - equal: "15"
            - not: {equal: 15}

This conversion also allows treating an io.Reader (memory efficient line-by-line parsing) as a whole string (when compared with a string). This has the benefit of showing the full command output, which was a long-requested feature. For example:

$ cat goss.yaml
command:
  echo_test:
    exec: |
      echo 'hello world'
    exit-status: 0
    stdout: |
      goodbye world

$ goss v
.F

Failures/Skipped:

Command: echo_test: stdout:
Expected
    "hello world\n"
to equal
    "goodbye world\n"

Total Duration: 0.001s
Count: 2, Failed: 1, Skipped: 0

Breaking changes

  • Changed: file.Contains -> file.Contents
  • Changed: RPM Version is now full EVR (-qf "%|EPOCH?{%{EPOCH}:}:{}|%{VERSION}-%{RELEASE}), this opens the door for proper rpm version comparison in the future
  • Added: VfsOpts are now included in mount check (closes #443)
  • For array matches (ex. user.Groups) duplicate entries will raise an error if they don't exist in the system.

In goss 3.X this would succeed:

user:
  xxx:
    exists: true
    groups:
        - foo
        - wheel
        - wheel

Now it will throw an error unless groups actually contain 2 copies of "wheel" in its response array from the system.

You can mimic the old behavior by modifying the test as follows:

user:
  xxx:
    exists: true
    groups:
      and:
        - contain-element: foo
        - contain-element: wheel
        - contain-element: wheel
  • Goss is more aware of types with goss v4, so ensure when doing string matching that integers and floats are surrounded by double quotes.

For example, this no longer works:

command:
  echo "123":
    exit-status: 0
    stdout:
    - 123

New way:

command:
  echo "123":
    exit-status: 0
    stdout:
    - "123"

Changes

  • Added: transforms support (closes #538)
    • Allows comparison of string to int, ex: ensuring a systctl output below/above a specific number (closes #220)
    • Allows JSON parsing/validation support (closes #578)
    • Allows comparing command output to a string, this will display the failed output on failure (closes #483)
    • -o include_raw will show the non-transformed value
  • Added: Some new matchers
    • equal matcher added to do strict type comparison (e.x. string to string)
    • contain-substring
    • have-patterns - This mimics the existing default behavior of file contents and command output
    • contain-elements - checks that an array value matches a set of matchers
  • Added: runlevels support for service
  • Added: option to sort output (closes #416)
  • Added: All resources now support key override (closes #518, closes #742)
  • Added: Use exit code 78 if test file is unparseable (closes #317)
  • Changed: removed alpha from non-linux binary names
  • Changed: StartTime is no longer calculated from goss start. Calculated from first test start, this allows accurate reporting when showing a cached result
  • Changed: Completely re-worked matchers and shared output logic
  • Changed: Cache test results in serve instead of output (closes #612)
  • Added: Significantly improved test coverage of matcher, output code
  • Changed: Doc to reference cat -E /proc/<PID>/comm to avoid whitespace issues (closes #762)
  • Changed: Removed file.Size from autoadd (closes #262)
  • Added: matcher.as-reader this allows the matcher string to behave as an io.Reader output. Can be useful for testing
  • Removed: json_online output format, use: goss v -f json -o oneline

v0.3.23

10 months ago

Features

Many thanks to all the contributors on this release!

In this release

  • Add: skipped count in json output format (#813)

Since v0.3.0

  • Maint: go version and package upgrades (#809, #803)
  • Add: log level to be set (#802)
  • doc: add gossboss to README "community" section (#796)
  • dev: Refine json schema with support for templates (#795)
  • kgoss: add new GOSS_KUBECTL_OPTS env var to inject more options (#792)
  • Fix: Error message encoding when output is set to JSON (#788)
  • Maint: Migrate from aelsabbahy -> goss-org for packages (#791)
  • Maint: Upgrade go 1.17 -> 1.18 (#794)
  • Doc: JSON Schema helpers for some IDEs (#793)
  • Add: Implement prometheus output support (#607)
  • Add: Add optional TLS client cert authentication + custom ca-file (#686)
  • Fix: json typo in http resource (#673)
  • Fix: kgoss Remove --generator as it has been deprecated (#768)
  • Fix: kgoss Fixed kgoss kubectl cp issue (#773)
  • Fix: install the correct binary for 32-bit and 64-bit arm machines (#756)
  • Update all dependencies to latest versions
  • Add arm64 binary for arm64 (#737)
  • dgoss - Add support for podman as the container backend (#748)
  • http - add proxy support (#589)
  • http - add method and request-body, allowing testing POST, PUT, etc.. (#647)
  • file - add sha512 support (#652)
  • dcgoss - add support for passing CLI flags to docker-compose (#662)
  • windows - fixed windows cmd quoting (#666 hah! Can't think of a better issue to have that number)
  • Fix regression with silent output format (#656)
  • goss serve can now negotiate response's content-type via accept request header (#609) doc
  • Add support for native windows commands (#633) doc
  • windows/osx alpha warning is less noisy now (#631)
  • dgoss - Fix bug when GOSS_FILE is set and goss_wait.yaml is used (#645)
  • Internal refactors, test, and process improvements (#611, #614, #608, #606)
  • Fix dgoss script, last release introduced OSX/Windows builds and dgoss was getting incorrectly uploaded from windows
  • OSX/Windows binaries (alpha), these are community supported, see: platform-feature-parity
  • Add sprig templating language, see: doc
  • Increase buffer size to 10MB to handle larger file/url lines (#583)
  • http - Host header works correctly as a request-header (#565)
  • dgoss - Honor ${GOSS_FILE} when copying back from container to host (#579)
  • dgoss - Collect the logs regardless of GOSS_FILE_STRATEGY (#582)
  • Releases now contain sha256 checksums
  • Enhancements to allow running goss as a library (544)[https://github.com/aelsabbahy/goss/issues/544#issuecomment-585347171]
  • Fix udp reachable check (#545)
  • [#439] Add --vars-inline that is capable of overwriting --vars on the CLI (#534)
  • Correct Debian package discovery (#535)
  • fix(file): Correctly report when goss does not have correct permissions (#531)
  • Breaking Change: http Changed attribute header -> headers to be more consistent
  • json output now supports -o pretty and behaves like json_oneline. json_oneline will be deprecated in the future
  • addr - Add local-address config attribute (#344)
  • dns - Modify server attribute to support optional port server:port (#378)
  • dgoss - docker logs routed to stderr to not interfere with test output (#359)
  • dgoss - Allow retaining container logs $CONTAINER_LOG_OUTPUT (#519)
  • dgoss - Allow overriding default goss file name using $GOSS_FILE (#454)
  • matcher - Add Support for semver-constraint matcher (#508)
  • kgoss added to extras/ folder. kubectl wrapper to test containers in Kubernetes (#465)
  • Add request-header and response header attributes added to http test (#496 / #498)
  • Add usage attribute to mount test (#503)
  • Add toUpper and toLower function to templates (#505)
  • Fix - Using exec on command test no longer clutters command ID/test output (#495)
  • dgoss - Improve health check and file permissions (#473)
  • Fix systemd service implementation to not fallback to sysv (#319) (#374)
  • Add optional exec attribute to command test
  • Add optional skip attribute to all tests
  • Fix DNS PTR for IPv6 (#428)
  • Invalid CLI flags return non-0 exit status
  • dcgoss added to extras/ folder
  • Breaking Change: Added new --format-options,-o flag doc
    • --format nagios_verbose becomes --format nagios -o verbose
  • Breaking Change: Add more specific filetypes: character-device/block-device/pipe/socket to file resource
  • Add MTU check to interface resource
  • Add basic auth for http resource doc
  • Trying to import a non-existant gossfile will now throw an error
  • dgoss SELinux compat added volume :z mount flag
  • Increase buffer size to 1MB to handle larger file/url lines (#351)
  • Adding ARM architecture release (#275)
  • Add the ability to run dgoss when the docker daemon is not local. (#271)
  • Fix bug in matching resource (#280)
  • Upgrade to go 1.9
  • Fix spelling of resolveable -> resolvable, keep backwards compatibility with old name (#284)
  • Add --format json_oneline output #265
  • Fix race condition with process validator (#268)
  • Support service.override file for upstrat (#245)
  • Add sha-256 file checksum support doc
  • Add matching resource doc
  • Add Support for have-key-with-value gomega matcher
  • Add support for vars file (GOSS_VARS) to dgoss doc
  • Add CAA record support for DNS.
  • Add --format silent output (#216)
  • Add regexMatch function to templates (#219)
  • Add glob pattern support for gossfile import (#222)
  • Add gomega have-key function (#224)
  • Fallback to using getent for file owner/group lookup when uid/gid not in /etc/passwd (#210)
  • Fix http connection leak (#221)
  • Escape XML in JUnit (#203)
  • Add dgoss docker wrapper to ease docker testing
  • Add getEnv and readFile functions to templates doc
  • Add --color flag to force color mode
  • Template support doc
    • goss render now has a -d debug flag to aid in template debugging
    • goss validate and goss render now support --vars to provide template vars
  • Fix test count in --format documentation output