Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] master from gnolang:master #16

Open
wants to merge 833 commits into
base: master
Choose a base branch
from
Open

[pull] master from gnolang:master #16

wants to merge 833 commits into from

Conversation

pull[bot]
Copy link

@pull pull bot commented Sep 22, 2023

See Commits and Changes for more details.


Created by pull[bot]

Can you help keep this open source service alive? 💖 Please sponsor : )

@pull pull bot requested a review from moul as a code owner September 22, 2023 14:52
@trafico-bot trafico-bot bot added the 🔍 Ready for Review Pull Request is not reviewed yet label Sep 22, 2023
@codecov
Copy link

codecov bot commented Sep 22, 2023

Codecov Report

Merging #16 (28455d8) into master (61f3ada) will decrease coverage by 0.04%.
Report is 12 commits behind head on master.
The diff coverage is 85.00%.

@@            Coverage Diff             @@
##           master      #16      +/-   ##
==========================================
- Coverage   47.02%   46.98%   -0.04%     
==========================================
  Files         365      365              
  Lines       61156    61156              
==========================================
- Hits        28757    28735      -22     
- Misses      30047    30060      +13     
- Partials     2352     2361       +9     
Flag Coverage Δ
gno.land-_test.gnokey 0.00% <ø> (ø)
gno.land-_test.gnoland 88.14% <ø> (ø)
gno.land-_test.pkgs 27.88% <ø> (ø)
gnovm-_test.cmd 45.89% <ø> (ø)
gnovm-_test.gnolang.pkg0 17.98% <ø> (ø)
gnovm-_test.gnolang.pkg1 8.21% <ø> (ø)
gnovm-_test.gnolang.pkg2 9.87% <ø> (ø)
gnovm-_test.gnolang.stdlibs 53.53% <ø> (ø)
tm2-_test.flappy ∅ <ø> (?)
tm2-_test.pkg.amino 58.32% <ø> (ø)
tm2-_test.pkg.bft 63.43% <ø> (-0.19%) ⬇️
tm2-_test.pkg.others 59.26% <100.00%> (+0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Coverage Δ
gnovm/pkg/gnolang/machine.go 39.60% <100.00%> (-0.23%) ⬇️
tm2/pkg/iavl/proof.go 92.98% <100.00%> (+0.12%) ⬆️
gnovm/pkg/gnolang/values_string.go 10.62% <0.00%> (-0.13%) ⬇️

... and 6 files with indirect coverage changes

📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more

## Description

This PR introduces an upgrade to the `r/gov/dao` system:
- it makes it configurable through custom implementations
    - added a `p/demo/simpledao` implementation
- the implementations are changeable through a govdao proposal
- adds weighted voting to a govdao example implementation

<details><summary>Contributors' checklist...</summary>

- [x] Added new tests, or not needed, or not feasible
- [x] Provided an example (e.g. screenshot) to aid review or the PR is
self-explanatory
- [x] Updated the official documentation or not needed
- [x] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
was included in the description
- [x] Added references to related issues and PRs
- [ ] Provided any useful hints for running manual tests
- [ ] Added new benchmarks to [generated
graphs](https://gnoland.github.io/benchmarks), if any. More info
[here](https://github.com/gnolang/gno/blob/master/.benchmarks/README.md).
</details>

---------

Co-authored-by: Manfred Touron <94029+moul@users.noreply.github.com>
Follow-up to #3041.

Not even `gnoland` is part of the core commands in the root makefile,
hence it makes no sense for `gnogenesis` to be one of them.
thehowl and others added 20 commits October 30, 2024 15:12
Everything on this repository should default to always being on the
latest master branch.

<details><summary>Contributors' checklist...</summary>

- [x] Added new tests, or not needed, or not feasible
- [x] Provided an example (e.g. screenshot) to aid review or the PR is
self-explanatory
- [x] Updated the official documentation or not needed
- [x] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
was included in the description
- [x] Added references to related issues and PRs
- [x] Provided any useful hints for running manual tests
- [x] Added new benchmarks to [generated
graphs](https://gnoland.github.io/benchmarks), if any. More info
[here](https://github.com/gnolang/gno/blob/master/.benchmarks/README.md).
</details>
closes: #1088 
<!-- please provide a detailed description of the changes made in this
pull request. -->

<details><summary>Contributors' checklist...</summary>

- [ ] Added new tests, or not needed, or not feasible
- [ ] Provided an example (e.g. screenshot) to aid review or the PR is
self-explanatory
- [ ] Updated the official documentation or not needed
- [ ] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
was included in the description
- [ ] Added references to related issues and PRs
- [ ] Provided any useful hints for running manual tests
</details>
# Description

Optimized the JSON package and simplified JSON node creation using the
builder pattern.

- in `buffer.gno` and `escape.gno` files are modified the use of map for
lookup tables to use slice array instead.
- refactor the `Unquote` function in `escape.gno` file
- modified the existing functions that parsed numbers to use `strconv`
package, and deleted related files and functions
- especially, the `eisel_lemire` and `ryu` packages were deleted since
they were files that had been added to handle `ParseUint` and
`ParseFloat` in `strconv` package.

## JSON Generate Example

**Plain JSON**

```go
node := Builder().
	WithString("name", "Alice").
	WithNumber("age", 30).
	WithBool("is_student", false).
	Node()

value, err := Marshal(node)
if err != nil {
	t.Errorf("unexpected error: %s", err)
}

Output:
{"name":"Alice","age":30,"is_student":false}
```

**Nested Structure**

```go
node := Builder().
	WriteString("name", "Alice").
	WriteObject("address", func(b *NodeBuilder) {
		b.WriteString("city", "New York").
		WriteNumber("zipcode", 10001)
	}).
	Node()
// ...

Output:
{"name":"Alice","address":{"city":"New York","zipcode":10001}}
```

## Benchmark Result for Unquote

**Before**

```plain
BenchmarkUnquote-8              	12433488	        98.06 ns/op	     144 B/op	       2 allocs/op
BenchmarkUnquoteWorstCase-8     	24727736	        50.46 ns/op	      48 B/op	       1 allocs/op
BenchmarkUnquoteBestCase-8      	22542354	        52.69 ns/op	      48 B/op	       1 allocs/op
BenchmarkUnquoteEmptyString-8   	394868628	         3.067 ns/op	       0 B/op	       0 allocs/op
```

**After**

```plain
BenchmarkUnquote-8              	12464704	        96.61 ns/op	     144 B/op	       2 allocs/op
BenchmarkUnquoteWorstCase-8     	25084070	        48.02 ns/op	      48 B/op	       1 allocs/op
BenchmarkUnquoteBestCase-8      	23383227	        52.66 ns/op	      48 B/op	       1 allocs/op
BenchmarkUnquoteEmptyString-8   	400496838	         2.968 ns/op	       0 B/op	       0 allocs/op
```
```console
gnome$ go test -v ./sdk/vm -run TestVmHandler
=== RUN   TestVmHandlerQuery_Eval
=== RUN   TestVmHandlerQuery_Eval/gno.land/r/hello.Echo("hello")
=== RUN   TestVmHandlerQuery_Eval/gno.land/r/hello.PubString
=== RUN   TestVmHandlerQuery_Eval/gno.land/r/hello.ConstString
=== RUN   TestVmHandlerQuery_Eval/gno.land/r/hello.pvString
=== RUN   TestVmHandlerQuery_Eval/gno.land/r/hello.counter
=== RUN   TestVmHandlerQuery_Eval/gno.land/r/hello.GetCounter()
=== RUN   TestVmHandlerQuery_Eval/gno.land/r/hello.Inc()
=== RUN   TestVmHandlerQuery_Eval/gno.land/r/hello.pvEcho("hello")
=== RUN   TestVmHandlerQuery_Eval/gno.land/r/hello.1337
=== RUN   TestVmHandlerQuery_Eval/gno.land/r/hello.13.37
=== RUN   TestVmHandlerQuery_Eval/gno.land/r/hello.float64(1337)
=== RUN   TestVmHandlerQuery_Eval/gno.land/r/hello.myStructInst
=== RUN   TestVmHandlerQuery_Eval/gno.land/r/hello.myStructInst.Foo()
=== RUN   TestVmHandlerQuery_Eval/gno.land/r/hello.myStruct
=== RUN   TestVmHandlerQuery_Eval/gno.land/r/hello.Inc
=== RUN   TestVmHandlerQuery_Eval/gno.land/r/hello.fn()("hi")
=== RUN   TestVmHandlerQuery_Eval/gno.land/r/hello.sl
=== RUN   TestVmHandlerQuery_Eval/gno.land/r/hello.sl[1]
=== RUN   TestVmHandlerQuery_Eval/gno.land/r/hello.println(1234)
1234
=== RUN   TestVmHandlerQuery_Eval/gno.land/r/hello
=== RUN   TestVmHandlerQuery_Eval/gno.land/r/hello.doesnotexist
=== RUN   TestVmHandlerQuery_Eval/gno.land/r/doesnotexist.Foo
=== RUN   TestVmHandlerQuery_Eval/gno.land/r/hello.Panic()
=== RUN   TestVmHandlerQuery_Eval/gno.land/r/hello.panic("bar")
=== RUN   TestVmHandlerQuery_Eval/gno.land/r/hello.sl[6]
--- PASS: TestVmHandlerQuery_Eval (0.03s)
    --- PASS: TestVmHandlerQuery_Eval/gno.land/r/hello.Echo("hello") (0.00s)
    --- PASS: TestVmHandlerQuery_Eval/gno.land/r/hello.PubString (0.00s)
    --- PASS: TestVmHandlerQuery_Eval/gno.land/r/hello.ConstString (0.00s)
    --- PASS: TestVmHandlerQuery_Eval/gno.land/r/hello.pvString (0.00s)
    --- PASS: TestVmHandlerQuery_Eval/gno.land/r/hello.counter (0.00s)
    --- PASS: TestVmHandlerQuery_Eval/gno.land/r/hello.GetCounter() (0.00s)
    --- PASS: TestVmHandlerQuery_Eval/gno.land/r/hello.Inc() (0.00s)
    --- PASS: TestVmHandlerQuery_Eval/gno.land/r/hello.pvEcho("hello") (0.00s)
    --- PASS: TestVmHandlerQuery_Eval/gno.land/r/hello.1337 (0.00s)
    --- PASS: TestVmHandlerQuery_Eval/gno.land/r/hello.13.37 (0.00s)
    --- PASS: TestVmHandlerQuery_Eval/gno.land/r/hello.float64(1337) (0.00s)
    --- PASS: TestVmHandlerQuery_Eval/gno.land/r/hello.myStructInst (0.00s)
    --- PASS: TestVmHandlerQuery_Eval/gno.land/r/hello.myStructInst.Foo() (0.00s)
    --- PASS: TestVmHandlerQuery_Eval/gno.land/r/hello.myStruct (0.00s)
    --- PASS: TestVmHandlerQuery_Eval/gno.land/r/hello.Inc (0.00s)
    --- PASS: TestVmHandlerQuery_Eval/gno.land/r/hello.fn()("hi") (0.00s)
    --- PASS: TestVmHandlerQuery_Eval/gno.land/r/hello.sl (0.00s)
    --- PASS: TestVmHandlerQuery_Eval/gno.land/r/hello.sl[1] (0.00s)
    --- PASS: TestVmHandlerQuery_Eval/gno.land/r/hello.println(1234) (0.00s)
    --- PASS: TestVmHandlerQuery_Eval/gno.land/r/hello (0.00s)
    --- PASS: TestVmHandlerQuery_Eval/gno.land/r/hello.doesnotexist (0.00s)
    --- PASS: TestVmHandlerQuery_Eval/gno.land/r/doesnotexist.Foo (0.00s)
    --- PASS: TestVmHandlerQuery_Eval/gno.land/r/hello.Panic() (0.00s)
    --- PASS: TestVmHandlerQuery_Eval/gno.land/r/hello.panic("bar") (0.00s)
    --- PASS: TestVmHandlerQuery_Eval/gno.land/r/hello.sl[6] (0.00s)
=== RUN   TestVmHandlerQuery_Funcs
=== RUN   TestVmHandlerQuery_Funcs/gno.land/r/hello
=== RUN   TestVmHandlerQuery_Funcs/gno.land/r/doesnotexist
=== RUN   TestVmHandlerQuery_Funcs/std
=== RUN   TestVmHandlerQuery_Funcs/strings
--- PASS: TestVmHandlerQuery_Funcs (0.00s)
    --- PASS: TestVmHandlerQuery_Funcs/gno.land/r/hello (0.00s)
    --- PASS: TestVmHandlerQuery_Funcs/gno.land/r/doesnotexist (0.00s)
    --- PASS: TestVmHandlerQuery_Funcs/std (0.00s)
    --- PASS: TestVmHandlerQuery_Funcs/strings (0.00s)
=== RUN   TestVmHandlerQuery_File
=== RUN   TestVmHandlerQuery_File/gno.land/r/hello/hello.gno
=== RUN   TestVmHandlerQuery_File/gno.land/r/hello/README.md
=== RUN   TestVmHandlerQuery_File/gno.land/r/hello/doesnotexist.gno
=== RUN   TestVmHandlerQuery_File/gno.land/r/hello
=== RUN   TestVmHandlerQuery_File/gno.land/r/doesnotexist
=== RUN   TestVmHandlerQuery_File/gno.land/r/doesnotexist/hello.gno
--- PASS: TestVmHandlerQuery_File (0.00s)
    --- PASS: TestVmHandlerQuery_File/gno.land/r/hello/hello.gno (0.00s)
    --- PASS: TestVmHandlerQuery_File/gno.land/r/hello/README.md (0.00s)
    --- PASS: TestVmHandlerQuery_File/gno.land/r/hello/doesnotexist.gno (0.00s)
    --- PASS: TestVmHandlerQuery_File/gno.land/r/hello (0.00s)
    --- PASS: TestVmHandlerQuery_File/gno.land/r/doesnotexist (0.00s)
    --- PASS: TestVmHandlerQuery_File/gno.land/r/doesnotexist/hello.gno (0.00s)
PASS
ok  	github.com/gnolang/gno/gno.land/pkg/sdk/vm	(cached)
```

---------

Signed-off-by: moul <94029+moul@users.noreply.github.com>
close: #3052 
<!-- please provide a detailed description of the changes made in this
pull request. -->

<details><summary>Contributors' checklist...</summary>

- [ ] Added new tests, or not needed, or not feasible
- [ ] Provided an example (e.g. screenshot) to aid review or the PR is
self-explanatory
- [ ] Updated the official documentation or not needed
- [ ] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
was included in the description
- [ ] Added references to related issues and PRs
- [ ] Provided any useful hints for running manual tests
</details>
Closer to the current `// Realm:` output, and more git-friendly.

Bigger example in #3003.

Signed-off-by: moul <94029+moul@users.noreply.github.com>
## Description

This PR introduces metadata support for genesis transactions (such as
timestamps), in the form of a new Gno genesis state that's easily
generate-able.

Shoutout to @clockworkgr for sanity checking the idea, and providing
insights that ultimately led to this PR materializing.

**BREAKING CHANGE**
The `GnoGenesisState` is now modified, and all functionality that
references it (ex. `gnogenesis`, `tx-archive`) will need to adapt.

### What we wanted to accomplish

The Portal Loop does not save "time" information upon restarting (from
block 0). This means that any transaction that resulted in a Realm /
Package calling `time.Now()` will get differing results when these same
transactions are "replayed" as part of the loop (in the genesis state).

We wanted to somehow preserve this timestamp information when the
transactions (from a previous loop), are executed as part of the genesis
building process.

For example:
- Portal Loop chain is on block 100
- tx A results in a call to `time.Now()`, which returns time T, and
saves it somewhere (Realm state)
- the Portal Loop restarts, and uses all the transactions it encountered
in the past iteration as genesis txs
- the genesis is generated by executing the transactions
- when tx A is re-executed (this time as part of the genesis block),
**it should return time T, as with the original execution context**

It is worth noting that this functionality is something we want in
`gnodev`, so simple helpers on the Realms to update the timestamps
wouldn't work.

### What this PR does

I've tried to follow a couple of principles when working on this PR:
- don't break backwards compatibility
- don't modify critical APIs such as the SDK ABCI, but preserve
existing, working, functionality in its original form
- don't add another layer to the complexity pancake
- don't implement a solution that looks (and works) like a hack

I'm not a huge fan of execution hooks, so the solution proposed in this
PR doesn't rely on any hook mechanism. Not going with the hook approach
also significantly decreases the complexity and preserves readability.

The base of this solution is enabling execution context modification,
with minimal / no API changes.
Having functionality like this, we can tailor the context during
critical segments such as genesis generation, and we're not just limited
to timestamps (which is the primary use-case).

We also introduce a new type of `AppState`, called
`MetadataGenesisState`, where metadata is associated with the
transactions. We hide the actual `AppState` implementation behind an
interface, so existing tools and flows don't break, and work as normal.

### What this PR doesn't do

There is more work to be done if this PR is merged:
- we need to add support to `tx-archive` for supporting exporting txs
with metadata. Should be straightforward to do
- the portal loop also needs to be restarted with this new "mode"
enabled
- we need to add support to existing `gnoland genesis` commands to
support the new `MetadataGenesisState`. It is also straightforward, but
definitely a bit of work
- if we want support for something like this in gnodev, the export /
import code of gnodev also needs to be modified to support the new
genesis state type (cc @gfanton)
	- #2943

Related PRs and issues:
- #2751
- #2744 

cc @moul @thehowl @jeronimoalbi @ilgooz 

<details><summary>Contributors' checklist...</summary>

- [x] Added new tests, or not needed, or not feasible
- [x] Provided an example (e.g. screenshot) to aid review or the PR is
self-explanatory
- [x] Updated the official documentation or not needed
- [x] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
was included in the description
- [x] Added references to related issues and PRs
- [ ] Provided any useful hints for running manual tests
- [ ] Added new benchmarks to [generated
graphs](https://gnoland.github.io/benchmarks), if any. More info
[here](https://github.com/gnolang/gno/blob/master/.benchmarks/README.md).
</details>

---------

Co-authored-by: Manfred Touron <94029+moul@users.noreply.github.com>
## Description

This PR introduces a small tool called `gnomigrate`, which will serve as
a helper for migrating Gno data.
Currently, it only supports transaction sheet migration from `std.Tx` to
`gnoland.TxWithMetadata`.

<details><summary>Contributors' checklist...</summary>

- [x] Added new tests, or not needed, or not feasible
- [x] Provided an example (e.g. screenshot) to aid review or the PR is
self-explanatory
- [x] Updated the official documentation or not needed
- [x] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
was included in the description
- [ ] Added references to related issues and PRs
- [ ] Provided any useful hints for running manual tests
</details>
## Description

This PR updates the `tx-archive` version in portal loop to use the new
standard `gnoland.TxWithMetadata` format for transaction sheets.

**BREAKING CHANGE**
The portal loop will now save transactions with the new metadata format

<details><summary>Contributors' checklist...</summary>

- [x] Added new tests, or not needed, or not feasible
- [x] Provided an example (e.g. screenshot) to aid review or the PR is
self-explanatory
- [x] Updated the official documentation or not needed
- [ ] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
was included in the description
- [ ] Added references to related issues and PRs
- [ ] Provided any useful hints for running manual tests
</details>
## Description

This PR tidies the `misc/loop` `go.mod`. I'm not sure how the CI didn't
catch this, or why it's green 🤷‍♂️

<details><summary>Contributors' checklist...</summary>

- [x] Added new tests, or not needed, or not feasible
- [x] Provided an example (e.g. screenshot) to aid review or the PR is
self-explanatory
- [x] Updated the official documentation or not needed
- [x] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
was included in the description
- [ ] Added references to related issues and PRs
- [ ] Provided any useful hints for running manual tests
</details>
…aces (#3000)

Amino `codec.MarshallJSON` has the same method name as Go standard
library `json.Marshaler` interface but with a different signature. This
is rejected by `go vet`. The same applies for `codec.UnmarshallJSON` vs
`json.Unmarshaler`. To fix that, we rename `codec.MarshalJSON` to
`codec.JSONMarshal` and `codec.UnmarshalJSON` to `codec.JSONUnmarshal`.

Now `go vet ./...' pass on the full mono-repo.

Fixes #2954.

BREAKING CHANGE: rename tm2 amino exported methods.

<!-- please provide a detailed description of the changes made in this
pull request. -->

<details><summary>Contributors' checklist...</summary>

- [*] Added new tests, or not needed, or not feasible
- [*] Provided an example (e.g. screenshot) to aid review or the PR is
self-explanatory
- [*] Updated the official documentation or not needed
- [*] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
was included in the description
- [*] Added references to related issues and PRs
- [ ] Provided any useful hints for running manual tests
</details>
After merge of #3000, a few missing field names in struct literal were
reported. Fix it. No functional change.

<!-- please provide a detailed description of the changes made in this
pull request. -->

<details><summary>Contributors' checklist...</summary>

- [*] Added new tests, or not needed, or not feasible
- [*] Provided an example (e.g. screenshot) to aid review or the PR is
self-explanatory
- [*] Updated the official documentation or not needed
- [*] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
was included in the description
- [ ] Added references to related issues and PRs
- [ ] Provided any useful hints for running manual tests
</details>
### Description

This PR introduces a change for _gnoweb_ to also pass the URL query
string as part of the render path.

Passing the URL query string is required to support arguments when
rendering realms, which is the case of the AVL pager implementation in
#2584 that uses "page" and "size".

The PR changes the behavior of realm rendering calls by adding URL query
arguments as suffix of the `path` argument, so URLs like
`https://gno.land/r/demo/foo:bar?baz=42` would call `Render(path)` with
"bar?baz=42" as value of `path`.

It also changes how special _gnoweb_ arguments like `help` of `func` are
specified which now must be done by using the `$` character, for
example:
- `https://gno.land/r/demo/foo$help&func=Bar&name=Baz`
- `https://gno.land/r/demo/foo:example$tz=Europe/Paris`
- `https://gno.land/r/demo/foo:example?value=42$tz=Europe/Paris`

Note that `__func` is now `func`, without the underscore prefix.

### Possible Issues

The change could potentially affect realm or package implementations
that rely on the render path in cases where the `?` is not expected, for
example when parsing or splitting it. Because of that there might be
changes required to handle the case where a caller sends query string
arguments. Realms and packages should be able to handle render paths
which could look like `render/path?arg=1&arg=N`.

Links that still use `?`, `help` and `__func` won't work as expected,
they must be changed to use `$` instead of `?`, and `func` instead of
`__func`.

Packages `gno.land/p/moul/txlink` and `gno.land/p/moul/helplink` has to
be refactored to properly generate links.

---------

Co-authored-by: Leon Hudak <33522493+leohhhn@users.noreply.github.com>
Co-authored-by: leohhhn <hudakleon@gmail.com>
Co-authored-by: Manfred Touron <94029+moul@users.noreply.github.com>
In `gnovm/cmd/gno/main_test.go`, when an error is expected but none
happen, the test helper tries to dereference nil, causing a confusing
test result

Before:

```
=== RUN   TestModApp/mod_tidy..~..~tests~integ~invalid_module_version1
    main_test.go:92: recover runtime error: invalid memory address or nil pointer dereference
    main_test.go:93: 
        	Error Trace:	/Users/norman/Code/gno/gnovm/cmd/gno/main_test.go:93
        	            				/Users/norman/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.22.4.darwin-arm64/src/runtime/panic.go:770
        	            				/Users/norman/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.22.4.darwin-arm64/src/runtime/panic.go:261
        	            				/Users/norman/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.22.4.darwin-arm64/src/runtime/signal_unix.go:881
        	            				/Users/norman/Code/gno/gnovm/cmd/gno/main_test.go:131
        	Error:      	Should be false
        	Test:       	TestModApp/mod_tidy..~..~tests~integ~invalid_module_version1
        	Messages:   	should not panic
```

After:

```
=== RUN   TestModApp/mod_tidy..~..~tests~integ~invalid_module_version1
    main_test.go:131: err <nil>
    main_test.go:132: 
        	Error Trace:	/Users/norman/Code/gno/gnovm/cmd/gno/main_test.go:132
        	Error:      	Expected value not to be nil.
        	Test:       	TestModApp/mod_tidy..~..~tests~integ~invalid_module_version1
        	Messages:   	err shouldn't be nil
```

<details><summary>Contributors' checklist...</summary>

- [ ] Added new tests, or not needed, or not feasible
- [ ] Provided an example (e.g. screenshot) to aid review or the PR is
self-explanatory
- [ ] Updated the official documentation or not needed
- [ ] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
was included in the description
- [ ] Added references to related issues and PRs
- [ ] Provided any useful hints for running manual tests
</details>

Signed-off-by: Norman Meier <norman@samourai.coop>
Closes #1445

<!-- please provide a detailed description of the changes made in this
pull request. -->

<details><summary>Contributors' checklist...</summary>

- [x] Added new tests, or not needed, or not feasible
- [x] Provided an example (e.g. screenshot) to aid review or the PR is
self-explanatory
- [x] Updated the official documentation or not needed
- [x] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
was included in the description
- [x] Added references to related issues and PRs
- [ ] Provided any useful hints for running manual tests
- [ ] Added new benchmarks to [generated
graphs](https://gnoland.github.io/benchmarks), if any. More info
[here](https://github.com/gnolang/gno/blob/master/.benchmarks/README.md).
</details>

---------

Co-authored-by: Manfred Touron <94029+moul@users.noreply.github.com>
Co-authored-by: Morgan <morgan@morganbaz.com>
<!-- please provide a detailed description of the changes made in this
pull request. -->

<details><summary>Contributors' checklist...</summary>

- [ ] Added new tests, or not needed, or not feasible
- [ ] Provided an example (e.g. screenshot) to aid review or the PR is
self-explanatory
- [ ] Updated the official documentation or not needed
- [ ] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
was included in the description
- [ ] Added references to related issues and PRs
- [ ] Provided any useful hints for running manual tests
</details>
## Description

This PR adds a simple JSON adapter for `r/gov/dao/v2`, used by
[govdao-web](https://govdao.gnoteam.com/).

<details><summary>Contributors' checklist...</summary>

- x ] Added new tests, or not needed, or not feasible
- [x] Provided an example (e.g. screenshot) to aid review or the PR is
self-explanatory
- [x] Updated the official documentation or not needed
- [x] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
was included in the description
- [ ] Added references to related issues and PRs
- [ ] Provided any useful hints for running manual tests
</details>
some locations were missed, most importantly on gnoweb.

changes also involve changing the hiring link, which was pointing to
lever which we don't use anymore, and prettifying the html pages. this
was done automatically by my text editor; I can revert it if we want a
cleaner diff.
- add `p/demo/avl/pager`
- update `r/demo/users`

Hey reviewers, in addition to what you wanted to review, I'm
specifically curious if you have any better API/usage ideas.

Example:
https://github.com/gnolang/gno/pull/2584/files#diff-8d5cbbe072737a7f288f74adcaaace11cacc3d31264e6a001515fcae824394e2R33

Related with #447, #599, #868

---------

Signed-off-by: moul <94029+moul@users.noreply.github.com>
Co-authored-by: Antonio Navarro Perez <antnavper@gmail.com>
Co-authored-by: Leon Hudak <33522493+leohhhn@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.