Commit Graph

87 Commits

Author SHA1 Message Date
Mark Rushakoff
e7097b1468
test: add cmdtest package (#15251)
## Description

This PR introduces the `cmdtest` package, offering a lightweight wrapper around cobra commands to simplify testing CLI utilities.

I backfilled tests for the `version` command, which was an example of a very simple test setup; and for the `export` command, which was more involved due to the server and client context requirements.

I did notice that there are some existing tests for some utilities, but the `cmdtest` package follows a simple pattern that has been easy to use successfully in [the relayer](https://github.com/cosmos/relayer/blob/main/internal/relayertest/system.go) and in other projects outside the Cosmos ecosystem.

While filling in these tests, I started removing uses of `cmd.Print`, as that is the root cause of issues like #8498, #7964, #15167, and possibly others. Internal to cobra, the print family of methods write to `cmd.OutOrStderr()` -- meaning that if the authors call `cmd.SetOutput()` before executing the command, the output will be written to stdout as expected; otherwise it will go to stderr. I don't understand why that would be the default behavior, but it is probably too late to change from cobra's side.

Instead of `cmd.Print`, we prefer to `fmt.Fprint(cmd.OutOrStdout())` or `fmt.Fprint(cmd.ErrOrStderr())` as appropriate, giving an unambiguous destination for output. And the new tests collect those outputs in plain `bytes.Buffer` values so that we can assert their content appropriately.

In the longer term, I would like to deprecate and eventually remove the `testutil` package's `ApplyMockIO` method and its `BufferWriter` and `BufferReader` types, as they are unnecessary indirection when a simpler solution exists. But that can wait until `cmdtest` has propagated through the codebase more.

---

### Author Checklist

*All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.*

I have...

- [x] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [x] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#pr-targeting))
- [ ] ~~provided a link to the relevant issue or specification~~
- [x] reviewed "Files changed" and left comments if necessary
- [ ] confirmed all CI checks have passed

### Reviewers Checklist

*All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.*

I have...

- [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] confirmed all author checklist items have been addressed
- [ ] confirmed that this PR does not change production code
2023-03-06 19:40:24 +00:00
Julien Robert
41a3dfeced
refactor!: migrate Cosmos SDK to CometBFT (#14897) 2023-02-05 14:51:33 +01:00
Jacob Gadikian
0943a70215
chore: fix linting issues exposed by fixing golangci-lint (#12895)
Co-authored-by: Marko <marbar3778@yahoo.com>
Co-authored-by: Julien Robert <julien@rbrt.fr>
2022-08-11 22:00:24 +02:00
Luke Rhoads
bf11b1bf1f
refactor: Implementing sigs.k8s.io YAML to remove .proto yaml annotations (#9780)
## Description

Draft of: #9705 

Started off with changing codec `MarshalYaml` function to directly go from JSON to yaml using the new library. Replaced the only usage of UnmarshalYaml per request.
---

### Author Checklist

*All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.*

I have...

- [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] added `!` to the type prefix if API or client breaking change
- [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting))
- [ ] provided a link to the relevant issue or specification
- [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules)
- [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing)
- [ ] added a changelog entry to `CHANGELOG.md`
- [ ] included comments for [documenting Go code](https://blog.golang.org/godoc)
- [ ] updated the relevant documentation or specification
- [ ] reviewed "Files changed" and left comments if necessary
- [ ] confirmed all CI checks have passed

### Reviewers Checklist

*All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.*

I have...

- [x] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [x] confirmed `!` in the type prefix if API or client breaking change
- [ ] confirmed all author checklist items have been addressed 
- [x] reviewed state machine logic
- [x] reviewed API design and naming
- [x] reviewed documentation is accurate
- [x] reviewed tests and test coverage
- [x] manually tested (if applicable)
2021-09-24 14:37:34 +00:00
Marko
105ad99a8e
feat: add cosmos-sdk Version (#9429)
<!-- < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ☺
v                               ✰  Thanks for creating a PR! ✰
v    Before smashing the submit button please review the checkboxes.
v    If a checkbox is n/a - please still include it but + a little note why
☺ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  -->

## Description

Add CosmosSDKVersion to nodeInfo.

closes: #9420
2021-06-18 12:56:55 +00:00
likhita-809
300d2a7fd4
v043 audit changes for version (#9296)
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2021-05-11 13:08:23 +00:00
Riccardo Montagnin
96fe999343
Set proper default command output (#8628)
* Set proper default command output

* Removed duplicated cmd.SetErr(cmd.ErrOrStderr()) and cmd.SetOut(cmd.OutOrStdout())

* Moved command initialization and added CHANGELOG

* fix: groom all uses of cmd.Print*

* Ran make format

Co-authored-by: Michael FIG <mfig@agoric.com>
Co-authored-by: Alessio Treglia <alessio@tendermint.com>
Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com>
2021-04-17 00:21:32 +00:00
Paul Kim
b5e873cd91
version --long displays replaced build dependencies (#7941)
* version --long displays replaced modules

* Update CHANGELOG

* Update CHANGELOG

* Update version/version.go

* Update CHANGELOG.md

* Update CHANGELOG.md

Co-authored-by: Alessio Treglia <alessio@tendermint.com>
Co-authored-by: Alessio Treglia <quadrispro@ubuntu.com>
2020-11-16 10:00:34 +00:00
Alessio Treglia
e172a08333
enrich versioning with build deps (#7848)
`version --long` output now shows the list of build dependencies.

Redirect version's output to `stdout`.
2020-11-09 15:17:36 +00:00
Marko
db09e51613
ci: upload coverage once (#7690) 2020-10-27 16:46:57 +01:00
Alessio Treglia
255ed06eb4
testutil: add ApplyMockIODiscardOutErr, simplify existing functions (#6665) 2020-07-10 08:55:48 +02:00
Alessio Treglia
a940214a49
testutil cleanup and reorg (#6658)
Prepare migrating testing auxiliary functions from tests
to testutil.

Remove local duplicates on testutil.WriteToNewTempFile().

Always favor testutil.NewTestCaseDir() over ioutil.TempDir().

Add test cases for the testing auxiliary functions.
2020-07-09 14:21:20 +02:00
Alexander Bezobchuk
bc261d9e83
version: Remove Viper (#6628)
* version: remove viper

* Remove home flag gets

* fix: tests
2020-07-07 17:20:09 +00:00
Alexander Bezobchuk
8670a10564
Merge PR #6595: Single Binary & Command Refactor 2020-07-07 11:40:46 -04:00
Alessio Treglia
3db39cda3c
Fix various linter warnings (#5824) 2020-03-18 12:59:08 +00:00
Alessio Treglia
d094183895
Increase code coverage of version up to 100% (#5726) 2020-02-28 18:14:01 +00:00
Alexander Bezobchuk
451535bd79
Merge PR #4837: Cleanup node_info Endpoint 2019-08-02 11:52:55 -04:00
Federico Kunze
e85a734a57 update x/genaccounts to match module spec (#4759) 2019-07-22 16:26:42 +01:00
Alessio Treglia
e9810ac25c Merge PR #4433: Adopt YAML as human-readable text output 2019-05-31 09:14:34 -04:00
Alexander Bezobchuk
cfe31c4090
Merge PR #4372: Use Build's Client/Server Name 2019-05-18 19:06:08 -04:00
Alessio Treglia
c0486aa532
R4R: Infrastructure for reproducible builds (#4262)
This change set introduces support for building gaia with gitian
on the following GOOS/GOARCH pairs:

- darwin/386
- darwin/amd64
- linux/386
- linux/amd64
- linux/arm
- linux/arm64
- windows/386
- windows/amd64

cmd/gaia/contrib/gitian-descriptors/ contains gitian descriptor files.

cmd/gaia/contrib/gitian-keys/ contains:
- a keys.txt file that is meant to list core developers and gitian
  builders PGP keys. 
- README.me to provide instructions on how to import the keys
  into one's personal GPG keyring.

The gosum utility is removed, so is the go.sum hashsum bit from
gaiacli/gaiad version string. It was meant to be a provisional
mitigation to the lack of a reproducible build process.

GOBIN is removed from all Makefiles. When GOBIN is set, go
refuses to cross-compiles binaries for foreign architectures.
export GOBIN=$GOPATH/bin is unnecessary anyway as by
default go install places built binaries in $GOPATH/bin.
Developers are required to update their enviornment files and
replace $GOBIN with $GOPATH/bin in PATH.

circleci configuration file is amended accordingly.

Closes: #4027
Closes: #4280
2019-05-14 00:33:34 +02:00
Alessio Treglia
38f93128eb
Remove baseapp dependency on the version package (#4250)
The version package is meant to be a convenience utility
that provides SDK consumers with a ready-to-use version
command that produces app's versioning information from
flags passed at compile time.
It will not make sense anymore for the baseapp package
to depend on the version package once gaia will have been
migrated away from the SDK main repository as we neither
want to make assumptions nor set expectations on downstream
apps buildsystems. Thus BaseApp now provides SetAppVersion()
and AppVersion() to to allow SDK consumers to set BaseApp's
version information string once the struct is initialised.
2019-05-02 20:37:44 +01:00
Frank Yang
9e7440a92c Merge PR #4064: Remove dep/vendor from documentation and version cmd
* Remove `dep` and `vendor` from documentation
* Replace vendor with go.sum hash in version command
2019-04-08 11:00:17 -04:00
Juan Leni
787f46546d Merge PR #3620: Indicate build flags in version 2019-02-13 09:53:16 -08:00
Alessio Treglia
0ed6de0cbd Merge PR #3426: Various changes to version cmd, revert those which previously broke ABI
* version prints out short info by default

Handle -o json, add --long flag to print full version info.

* Add distclean target to Makefile

* Update PENDING.md

* Add missing targets in .PHONY
2019-01-29 23:25:43 +01:00
Alessio Treglia
bf59291a79 Merge PR #3343: Enrich version command's output 2019-01-22 21:16:29 +01:00
Alessio Treglia
10b916eb28 Merge PR #2318: Simplify version handling, rely on git describe 2018-09-20 00:03:04 +08:00
Ethan Buchman
0bf061b707 update to tm v0.23.1
- fixes unbounded WAL growth
2018-08-22 16:04:26 -04:00
Christopher Goes
e2691d98fc 0.24.1 - Fix validator pubkey bug 2018-08-21 15:40:43 +02:00
Christopher Goes
a56117ee74 Stage onto release/v0.24.0 (#1999)
* Set SignedBlocksWindow back to 1000

* Merge PR #1995: upgrading ledger goclient lib

* Update version/version.go
2018-08-13 09:41:53 -04:00
Christopher Goes
02d52e4326 Hotfix/0.23.1: Tendermint 0.22.7 (#1844)
* Tendermint 0.22.7; bump patch version

* 0.23.0 -> 0.23.1; update CHANGELOG.md
2018-07-26 19:24:51 -04:00
Christopher Goes
8989af2a58 Update version 2018-07-19 21:15:52 +02:00
Ethan Buchman
9f2b83cbe9 version bump 2018-07-16 20:01:54 +01:00
Christopher Goes
28a1b5ebc0 Version & changelog 2018-07-14 04:20:14 +02:00
Christopher Goes
1a1373cc22 Update changelog & version 2018-07-13 23:00:07 +02:00
Ethan Buchman
d226f1d62e changelog, version 2018-07-10 12:20:29 -04:00
Fabian
42e72956f4 Merge PR #1252: Query node version
introduce non store queries
add version query
update lcd spec
changelog
moved version query into baseapp
2018-06-14 07:49:21 +02:00
Ethan Buchman
1b7396d487 dev version bump 2018-06-13 01:34:51 -07:00
Christopher Goes
65786e4578
Update version.go & changelog 2018-06-13 10:05:50 +02:00
Ethan Buchman
cb6534a8f8 version and changelog 2018-06-09 09:32:59 -07:00
Ethan Buchman
2b6a3fc8e3 changelog and version 2018-05-15 22:30:20 -04:00
Ethan Buchman
20abeb3dcf version and changelog 2018-05-15 12:45:36 -04:00
Ethan Buchman
a2ba50718e changelog and version 2018-05-15 12:45:01 -04:00
Ethan Buchman
249c5508ef changelog and version 2018-05-14 17:05:27 -04:00
Ethan Buchman
7ef5e90fa5 update changelog and version 2018-05-01 13:58:50 -04:00
Ethan Buchman
b79ab072e7 Merge branch 'master' into develop 2018-04-29 23:47:17 -04:00
Ethan Buchman
59a5da4f3a update tendermint to v0.19.1 2018-04-28 22:04:29 -04:00
Ethan Buchman
d3fd71a368 version and changelog 2018-04-28 21:59:47 -04:00
rigelrozanski
d28efaac27 many renames / golint compliance 2018-04-19 00:49:24 -04:00
Jae Kwon
d530ee2abc Fix MountStoreWithDB(); Bump to 0.15.0-rc0 2018-04-13 02:04:31 -07:00