GithubHelp home page GithubHelp logo

cth_readable's Introduction

cth_readable

An OTP library to be used for CT log outputs you want to be readable around all that noise they contain.

There are currently the following hooks:

  1. cth_readable_shell, which shows failure stacktraces in the shell and otherwise shows successes properly, in color.
  2. cth_readable_compact_shell, which is similar to the previous ones, but only ouputs a period (.) for each successful test
  3. cth_readable_failonly, which only outputs error and SASL logs to the shell in case of failures. It also provides cthr:pal/1-4 functions, working like ct:pal/1-4, but being silenceable by that hook. A parse transform exists to automatically convert ct:pal/1-3 into cthr:pal/1-3. Also automatically handles lager. This hook buffers the IO/logging events, and the buffer size can be limited with the max_events config option. The default value is inf which means that all events are buffered.
  4. cth_readable_nosasl, which disables all SASL logging. It however requires to be run before cth_readable_failonly to work.

What it looks like

example example

Usage with rebar3

Supported and enabled by default.

Usage with rebar2.x

Add the following to your rebar.config:

{deps, [
    {cth_readable, {git, "https://github.com/ferd/cth_readable.git", {tag, "v1.4.9"}}}
    ]}.

{ct_compile_opts, [{parse_transform, cth_readable_transform}]}.
{ct_opts, [{ct_hooks, [cth_readable_failonly, cth_readable_shell]}]}.
%% Or add limitations to how many messages are buffered with:
%%  {ct_opts, [{ct_hooks, [{cth_readable_failonly, [{max_events, 1000}]}, cth_readable_shell]}]}.

Usage with lager

If your lager handler has a custom formatter and you want that formatter to take effect, rather than using a configuration such as:

{lager, [
  {handlers, [{lager_console_backend,
                [info, {custom_formatter, [{app, "some-val"}]}]}
             ]}
]}.

Use:

{lager, [
  {handlers, [{cth_readable_lager_backend,
                [info, {custom_formatter, [{app, "some-val"}]}]}
             ]}
]}.

It will let you have both proper formatting and support for arbitrary configurations.

Changelog

1.5.0 / Master:

  • Adding an optional bound buffer in cth_readable_failonly (thanks @TheGeorge)

1.4.9:

  • No change, re-pushing the hex.pm package since it had an untracked dependency somehow

1.4.8:

  • Fixed handling of comments in EUnit macros

1.4.7:

  • Fixed handling of the result of an ?assertNot() macro

1.4.6:

  • Reloading formatter config for logs after each test where the information needs to be printed

1.4.5:

  • Restoring proper logs for Lager in OTP-21+. A problem existed when error_logger was no longer registered by default and lager log lines would silently get lost.

1.4.4:

  • Better interactions with Lager; since newer releases, it removes the Logger default interface when starting, which could cause crashes when this happened before the CT hooks would start (i.e. a eunit suite)

1.4.3:

  • OTP-21.2 support (Logger interface); importing a function that was de-exported by OTP team

1.4.2:

  • OTP-21.0 support (Logger interface)

1.4.1:

  • OTP-21-rc2 support (Logger interface); dropping rc1 support.

1.4.0:

  • OTP-21-rc1 support (Logger interface)
  • Add compact shell output handler

1.3.4:

  • Restore proper eunit assertion formatting

1.3.3:

  • More fixes due to lager old default config formats

1.3.2:

  • Fix deprecation warning on newer lagers due to old default config format

1.3.1:

  • Unicode support and OTP-21 readiness.

1.3.0:

  • display groups in test output. Thanks to @egobrain for the contribution

1.2.6:

  • report end_per_testcase errors as a non-critical failure when the test case passes
  • add in a (voluntarily failing) test suite to demo multiple output cases required

1.2.5:

  • support for on_tc_skip/4 to fully prevent misreporting of skipped suites

1.2.4:

  • unset suite name at the end of hooks run to prevent misreporting

1.2.3:

  • correct syntax_lib to syntax_tools as an app dependency

1.2.2:

  • fix output for assertions

1.2.1:

  • handle failures of parse transforms by just ignoring the culprit files.

1.2.0:

  • move to cf library for color output, adding support for 'dumb' terminals

1.1.1:

  • fix typo of poplist -> proplist, thanks to @egobrain

1.1.0:

  • support for better looking EUnit logs
  • support for lager backends logging to HTML files

1.0.1:

  • support for CT versions in Erlang copies older than R16

1.0.0:

  • initial stable release

cth_readable's People

Contributors

egobrain avatar ferd avatar jaseemabid avatar max-au avatar soranoba avatar thegeorge avatar tsloughter avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.