Parallelized formatter with no external dependencies for gherkin (cucumber, behat...)

Ghokin CircleCI Go Report Card codecov GitHub tag

Ghokin format and apply transformation on gherkin files.



Install

Download the latest binary for your achitecture here.

If you can't find a binary for your architecture, install the go toolchain and run : go get github.com/antham/ghokin.

Usage

Clean and/or apply transformation on gherkin files

Usage:
  ghokin [command]

Available Commands:
  check       Check a file/folder is well formatted
  fmt         Format a feature file/folder
  help        Help about any command

Flags:
      --config string   config file
  -h, --help            help for ghokin

Use "ghokin [command] --help" for more information about a command.

fmt stdout

Dump a feature file formatted on stdout

ghokin fmt stdout features/test.feature

fmt replace

Format and replace a file or all files in a directory

ghokin fmt replace features/test.feature

or

ghokin fmt replace features/

check

Ensure a file or all files in a directory are well formatted, exit with an error code otherwise

ghokin check features/test.feature

or

ghokin check features/

Documentation

Shell commands

You can run shell commands from within your feature file to transform some datas with annotations, to do so you need first to define in the config an alias and afterwards you can simply "comment" the line before the line you want to transform with that alias. For instance let say @json calls behind the curtain jq, we could validate and format some json in our feature like so :

Feature: A Feature
  Description

  Scenario: A scenario to test
    Given a thing
    # @json
    """
    {
      "test": "test"
    }
    """

Config

Defaut config is to use 2 spaces to indent background and scenarios, 4 spaces for steps and 6 for table and docstring; feature description follows table and docstring indentation.

It's possible to override configuration by defining a .ghokin.yml file in the home directory or in the current directory where we are running the binary from :

indent:
  backgroundAndScenario: 4
  step: 6
  tableAndDocString: 8

aliases:
  json: "jq ."

Aliases key defined shell commands callable in comments as we discussed earlier.

It's possible to use environments variables instead of a static config file :

export GHOKIN_INDENT_BACKGROUNDANDSCENARIO=4
export GHOKIN_INDENT_STEP=6
export GHOKIN_INDENT_TABLEANDDOCSTRING=8
export GHOKIN_ALIASES='{"json":"jq ."}'

Setup

Download from release page according to your architecture ghokin binary : https://github.com/antham/ghokin/releases

Contribute

If you want to add a new feature to ghokin project, the best way is to open a ticket first to know exactly how to implement your changes in code.

Setup

After cloning the repository you need to install vendors with go mod vendor To test your changes locally you can run go tests with : make test-all

Owner
Comments
  • Bump github.com/spf13/viper from 1.6.2 to 1.6.3

    Bump github.com/spf13/viper from 1.6.2 to 1.6.3

    Bumps github.com/spf13/viper from 1.6.2 to 1.6.3.

    Release notes

    Sourced from github.com/spf13/viper's releases.

    v1.6.3

    Fixes uninstallable library on clean GOPATH

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
  • Update module name to include version 3

    Update module name to include version 3

    Issue: We want to use latest version of this module as part of toolchain, but the latest version is greater than v0 or v1 and the module name does not specify higher version.

    How to reproduce: execute go get github.com/antham/ghokin

    Expected:

    require (
    	github.com/antham/ghokin/v3 v3.1.0
    )
    

    Actual:

    require (
    	github.com/antham/ghokin v1.7.0
    )
    

    Another option would be do release latest code under v1.8.0 and disregard updating major version in the future and stick to v1

    I'd make a PR myself, but the repo doesn't have Makefile, I am too lazy to launch it myself.

  • Bump github.com/spf13/viper from 1.0.2 to 1.3.2

    Bump github.com/spf13/viper from 1.0.2 to 1.3.2

    Bumps github.com/spf13/viper from 1.0.2 to 1.3.2.

    Commits
    • 9e56dac Remove superflous insensitiviseMaps in Unmarshal methods
    • d104d25 Update go.sum with go1.11.4
    • 6d33b5a Make the map in MergeConfigMap case insensitive
    • 41cd1c3 Restrict Travis to >= Go 1.11, use Go Modules, and get the test to pass
    • 3535c75 Add MergeConfigMap
    • 06c7c0d Use assert.EqualValues for slice checking
    • ae103d7 Moved shared resources out of the loops in TestBindPFlagsStringSlice()
    • 69647fb Fixed TestBindPFlagsStringSlice()
    • cc7e906 Updated TestBindPFlagsStringSlice() to highlight a failure
    • b7a3b95 Lookup environment variables instead of checking if the value is empty
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)

    Finally, you can contact us by mentioning @dependabot.

  • Formatting empty scenarios removes them

    Formatting empty scenarios removes them

    Thanks for the great formatter! We faced one issue with removing empty scenarios. Unfortunately, I don't know Go so I can't make PR for this

    Feature file:

    Feature: A suite 1
    
    Scenario: asdsad asdsad asdsad
      Given the user disconnects the water
    
    Scenario: as 123 dsad
    Scenario: adsad 
    Scenario: asds asdsa ad
    

    Result:

    Feature: A suite 1
    
      Scenario: asdsad asdsad asdsad
        Given the user disconnects the water
    
      Scenario: as 123 dsad
    
    
  • Bump github.com/stretchr/testify from 1.2.2 to 1.3.0

    Bump github.com/stretchr/testify from 1.2.2 to 1.3.0

    Bumps github.com/stretchr/testify from 1.2.2 to 1.3.0.

    Release notes

    Sourced from github.com/stretchr/testify's releases.

    v1.3.0

    Pull requests included in this release:

    • https://github-redirect.dependabot.com/stretchr/testify/pull/678 - Fixed incorrect comment
    • https://github-redirect.dependabot.com/stretchr/testify/pull/661 - Allow assert.Equal on string type alias without panicking on failure
    • https://github-redirect.dependabot.com/stretchr/testify/pull/659 - Add Go1.11 to CI
    • https://github-redirect.dependabot.com/stretchr/testify/pull/682 - update comment to match function name
    • https://github-redirect.dependabot.com/stretchr/testify/pull/688 - Bump Go versions and use '.x' to always get latest minor versions
    • https://github-redirect.dependabot.com/stretchr/testify/pull/648 - Update the LICENSE to match the 'standard' MIT license file
    • https://github-redirect.dependabot.com/stretchr/testify/pull/699 - Support arbitrary objects as the sole element in msgAndArgs
    • https://github-redirect.dependabot.com/stretchr/testify/pull/696 - Recover panic in suite
    • https://github-redirect.dependabot.com/stretchr/testify/pull/655 - Add support for subtests (go 1.7)
    • https://github-redirect.dependabot.com/stretchr/testify/pull/607 - Add go.mod and go.modverify
    • https://github-redirect.dependabot.com/stretchr/testify/pull/670 - Fix typo ("PASS" -> "FAIL")
    • https://github-redirect.dependabot.com/stretchr/testify/pull/712 - Preserve stack frame for mock parent method call
    • https://github-redirect.dependabot.com/stretchr/testify/pull/707 - fix for comparing kinds
    • https://github-redirect.dependabot.com/stretchr/testify/pull/697 - Update readme to deprecate http and include available packages
    Commits
    • ffdc059 Update readme to deprecate http and include available packages
    • 1ecda49 fix for comparing kinds
    • f1df803 Preserve stack frame for mock parent method call
    • 26d4a37 Fix typo ("PASS" -> "FAIL")
    • 865fb2c Add support for subtests (go 1.7)
    • c45a138 Add go.mod and go.sum
    • 660f15d Recover panic in suite
    • 5b93e2d Run go fmt
    • 6697e04 Support arbitrary objects in msgAndArgs
    • 199de5f Update the LICENSE to match the 'standard' MIT license file
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Note: This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.

    You can always request more updates by clicking Bump now in your Dependabot dashboard.

    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)

    Finally, you can contact us by mentioning @dependabot.

  • Accept folder when using stdout

    Accept folder when using stdout

    It would be nice if fmt stdout would accept a directory like fmt replace does.

    It would be an added bonus if there are any changes to be made the tool could exit with a non-zero exit code. This could then be checked when running other tests and fail a build if the files are not correctly formatted.

    Showing what would change in the file if replace was being run instead would also be nice.

    Come to think of it, maybe stdout should stay the same and another option called check could be introduced.

    Let me know if you want me to open separate issues for each thing I mentioned.

  • Feature description is too much indented

    Feature description is too much indented

    The feature description is indented following indent.tableAndDocString option which seems strange.

    Example of feature file from gherkin reference:

    Feature: Multiple site support
      Only blog owners can post to a blog, except administrators,
      who can post to all blogs.
    
      Background:
        Given a global administrator named "Greg"
    

    ghokin fmt stdout:

    Feature: Multiple site support
          Only blog owners can post to a blog, except administrators,
          who can post to all blogs.
    
      Background:
        Given a global administrator named "Greg"
    

    I would expect feature description to be indented as much as Backgroundand Scenario.

    I also suggest to drop separate configuration for indentation and use only a relative indent option:

    indent:
      level: [0-9]+
      character: (space|tab)
    

    Indeed, I am not sure someone will use an asymmetric indentation. However, it will be easier to handle formatting with new feature in gherkin syntax (like the new Rule keyword):

    Feature: Highlander
    
      Rule: There can be only One
    
        Example: Only One -- More than one alive
          Given there are 3 ninjas
    

    Also, thank you for this tool!

  • Unable to install from `go get`

    Unable to install from `go get`

    $ go version
    go version go1.14.9 darwin/amd64
    
    $ go get -v github.com/antham/ghokin
    github.com/spf13/cast (download)
    github.com/spf13/jwalterweatherman (download)
    github.com/subosito/gotenv (download)
    get "gopkg.in/ini.v1": found meta tag get.metaImport{Prefix:"gopkg.in/ini.v1", VCS:"git", RepoRoot:"https://gopkg.in/ini.v1"} at //gopkg.in/ini.v1?go-get=1
    gopkg.in/ini.v1 (download)
    golang.org/x/sys/internal/unsafeheader
    github.com/hashicorp/hcl/hcl/strconv
    golang.org/x/text/transform
    github.com/fatih/color/vendor/github.com/mattn/go-isatty
    golang.org/x/sys/unix
    github.com/spf13/afero/mem
    github.com/mitchellh/go-homedir
    github.com/spf13/jwalterweatherman
    github.com/subosito/gotenv
    gopkg.in/ini.v1
    github.com/fatih/color/vendor/github.com/mattn/go-colorable
    github.com/hashicorp/hcl/hcl/token
    github.com/spf13/cast
    github.com/gogo/protobuf/proto
    golang.org/x/text/unicode/norm
    github.com/pelletier/go-toml
    github.com/gofrs/uuid
    gopkg.in/yaml.v2
    github.com/hashicorp/hcl/hcl/scanner
    github.com/hashicorp/hcl/json/token
    github.com/hashicorp/hcl/hcl/ast
    github.com/fatih/color
    github.com/mitchellh/mapstructure
    github.com/spf13/pflag
    github.com/magiconair/properties
    github.com/hashicorp/hcl/json/scanner
    github.com/hashicorp/hcl/hcl/parser
    github.com/hashicorp/hcl/json/parser
    github.com/hashicorp/hcl/hcl/printer
    github.com/spf13/afero
    github.com/hashicorp/hcl
    github.com/fsnotify/fsnotify
    github.com/spf13/cobra
    github.com/spf13/viper
    github.com/gogo/protobuf/io
    github.com/cucumber/messages-go
    github.com/cucumber/gherkin-go
    github.com/antham/ghokin/ghokin
    # github.com/antham/ghokin/ghokin
    ../antham/ghokin/ghokin/transformer.go:41:3: undefined: gherkin.TokenType_FeatureLine
    ../antham/ghokin/ghokin/transformer.go:42:3: undefined: gherkin.TokenType_BackgroundLine
    ../antham/ghokin/ghokin/transformer.go:43:3: undefined: gherkin.TokenType_ScenarioLine
    ../antham/ghokin/ghokin/transformer.go:44:3: undefined: gherkin.TokenType_DocStringSeparator
    ../antham/ghokin/ghokin/transformer.go:45:3: undefined: gherkin.TokenType_RuleLine
    ../antham/ghokin/ghokin/transformer.go:46:3: undefined: gherkin.TokenType_StepLine
    ../antham/ghokin/ghokin/transformer.go:47:3: undefined: gherkin.TokenType_ExamplesLine
    ../antham/ghokin/ghokin/transformer.go:48:3: undefined: gherkin.TokenType_Other
    ../antham/ghokin/ghokin/transformer.go:49:3: undefined: gherkin.TokenType_TableRow
    ../antham/ghokin/ghokin/transformer.go:53:3: undefined: gherkin.TokenType_FeatureLine
    ../antham/ghokin/ghokin/transformer.go:53:3: too many errors
    
  • Bump github.com/fatih/color from 1.7.0 to 1.8.0

    Bump github.com/fatih/color from 1.7.0 to 1.8.0

    Bumps github.com/fatih/color from 1.7.0 to 1.8.0.

    Release notes

    Sourced from github.com/fatih/color's releases.

    v1.8.0

    Includes changes from fatih/color#108, most notable:

    • Add Go module support
    • Update /vendor folder content according to the new Go modules rules.
    • Replace .travis.yml with GitHub Actions
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
  • Bump github.com/spf13/viper from 1.13.0 to 1.14.0

    Bump github.com/spf13/viper from 1.13.0 to 1.14.0

    Bumps github.com/spf13/viper from 1.13.0 to 1.14.0.

    Release notes

    Sourced from github.com/spf13/viper's releases.

    v1.14.0

    What's Changed

    Enhancements 🚀

    Breaking Changes đź› 

    Dependency Updates ⬆️

    Full Changelog: https://github.com/spf13/viper/compare/v1.13.0...v1.14.0

    Commits
    • b89e554 chore: update crypt
    • db9f89a chore: disable watch on appengine
    • 4b8d148 refactor: use new Has fsnotify method for event matching
    • 2e99a57 refactor: rename watch file to unsupported
    • dcb7f30 feat: fix compilation for all platforms unsupported by fsnotify
    • 2e04739 ci: drop dedicated wasm build
    • b2234f2 ci: add build for aix
    • 52009d3 feat: disable watcher on aix
    • b274f63 build(deps): bump github.com/fsnotify/fsnotify from 1.5.4 to 1.6.0
    • 7c62cfd build(deps): bump github.com/stretchr/testify from 1.8.0 to 1.8.1
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Bump github.com/stretchr/testify from 1.7.5 to 1.8.0

    Bump github.com/stretchr/testify from 1.7.5 to 1.8.0

    Bumps github.com/stretchr/testify from 1.7.5 to 1.8.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Description formatting options

    Description formatting options

    I would suggest a max-line-length: 80 option for description. to break long line in multiple lines.

    Another idea would be to also add a space-before-description: true.

    With the two options, the file:

    Feature: Multiple site support
      Only blog owners can post to a blog, except administrators, who can post to all blogs.
    
      Scenario: Dr. Bill tries to post to somebody else's blog, and fails
        Given I am logged in as Dr. Bill
    

    would be formatted:

    Feature: Multiple site support
    
      Only blog owners can post to a blog, except administrators, who can post to
      all blogs.
    
      Scenario: Dr. Bill tries to post to somebody else's blog, and fails
        Given I am logged in as Dr. Bill
    
  • In tables special characters gets replaced with strange charaters

    In tables special characters gets replaced with strange charaters

    Issue In tables if we are trying to use special characters, after formatting it will replace special characters to strange ones.

    How to reproduce

    1. Try to format the attached test.file test-ansi.zip table-special-characters
Cucumber for golang
Cucumber for golang

Godog The API is likely to change a few times before we reach 1.0.0 Please read the full README, you may find it very useful. And do not forget to pee

Jan 7, 2023
Cucumber for golang
Cucumber for golang

Godog The API is likely to change a few times before we reach 1.0.0 Please read the full README, you may find it very useful. And do not forget to pee

Jan 4, 2023
Idiomatic Go input parsing with subcommands, positional values, and flags at any position. No required project or package layout and no external dependencies.
Idiomatic Go input parsing with subcommands, positional values, and flags at any position. No required project or package layout and no external dependencies.

Sensible and fast command-line flag parsing with excellent support for subcommands and positional values. Flags can be at any position. Flaggy has no

Jan 1, 2023
Buy crypto low/Sell high on Binance. Simple, powerful configuration, trade multiple assets simultaneously, single binary deployment with no external dependencies!

bnc-trading-bot Download the latest release for your OS This bot automatically trades crypto / fiat assets on Binance.com according to simple, configu

Dec 14, 2022
The most complete TigoPesa API Wrapper written in golang with zero external dependencies. Supports Push Pay, C2B and B2C.

tigopesa tigopesa is open source fully compliant tigo pesa client written in golang contents usage example projects links contributors sponsors usage

Jan 9, 2022
A simple multi-layered config loader for Go. Made for smaller projects. No external dependencies.

gocfg ⚠️ Work in progress! A simple multi-layered config loader for Go. Made for smaller projects. No external dependencies. Example From main.go: //

Dec 26, 2021
A simple multi-layered config loader for Go. Made for smaller projects. No external dependencies.

config ⚠️ Work in progress! A simple multi-layered config loader for Go. Made for smaller projects. No external dependencies. Installation go get -u g

Dec 26, 2021
Console JSON formatter with query feature
Console JSON formatter with query feature

Console JSON formatter with query feature. Install: $ go get github.com/miolini/jsonf Usage: Usage of jsonf: -c=true: colorize output -d=false: de

Dec 4, 2022
A shell parser, formatter, and interpreter with bash support; includes shfmt

sh A shell parser, formatter, and interpreter. Supports POSIX Shell, Bash, and mksh. Requires Go 1.14 or later. Quick start To parse shell scripts, in

Dec 29, 2022
A golang formatter that fixes long lines

golines Golines is a golang formatter that shortens long lines, in addition to all of the formatting fixes done by gofmt. Motivation The standard gola

Jan 6, 2023
A shell parser, formatter, and interpreter with bash support; includes shfmt

sh A shell parser, formatter, and interpreter. Supports POSIX Shell, Bash, and mksh. Requires Go 1.14 or later. Quick start To parse shell scripts, in

Jan 8, 2023
Small Clojure interpreter, linter and formatter.
Small Clojure interpreter, linter and formatter.

Joker is a small Clojure interpreter, linter and formatter written in Go. Installation On macOS, the easiest way to install Joker is via Homebrew: bre

Dec 30, 2022
go-playground-converter is formatter error response inspiration like express-validator in nodejs build on top go-playground-validator.

Go Playground Converter go-playground-converter is formatter error response inspiration like express-validator in nodejs build on top in go-playground

Dec 9, 2022
groqfmt is a formatter for the GROQ query language

groqfmt groqfmt is a formatter for the GROQ query language. Usage Either: groqfmt INPUT > OUTPUT or: cat INPUT | groqfmt > OUTPUT or cat INPUT | groqf

Oct 6, 2022
tabitha is a no-frills tabular formatter for the terminal.

tabitha tabitha is a no-frills tabular formatter for the terminal. Features Supports padding output to the longest display text, honoring ANSI colors

Aug 19, 2022
axmlfmt is an opinionated formatter for Android XML resources

axmlfmt axmlfmt is an opinionated formatter for Android XML resources. It takes XML that looks like <?xml version="1.0" encoding="utf-8"?> <LinearLayo

May 14, 2022
Opionated sql formatter for use with .go files containing backticked queries

fumpt-the-sql Opionated sql formatter for use with .go files containing backticked queries. Uses https://sqlformat.darold.net/ for the actual sql form

Dec 10, 2021
Esfmt - An opinionated, zero-configuration formatter for ES/TS/ESX/TSX

esfmt - an opinionated, zero-configuration formatter for ES/TS/ESX/TSX Status: t

Apr 5, 2022
Mdfmt - A Markdown formatter that follow the CommonMark. Like gofmt, but for Markdown

Introduction A Markdown formatter that follow the CommonMark. Like gofmt, but fo

Dec 18, 2022
A tool to be used with 'go generate' to embed external template files into Go code.

templify A tool to be used with 'go generate' to embed external template files into Go code. Scenario An often used scenario in developing go applicat

Sep 27, 2022