Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 31c26b4

Browse files
authoredJun 23, 2025··
feat: add module list command (#4732)
* feat: add module list command * updates * updates * updates * fix wrong test * impr
1 parent 2a6fab4 commit 31c26b4

File tree

7 files changed

+289
-16
lines changed

7 files changed

+289
-16
lines changed
 

‎changelog.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
## Unreleased
44

5+
### Features
6+
7+
- [#4728](https://github.com/ignite/cli/pull/4728) Ask before overwriting a `xgenny` file.
8+
- [#4732](https://github.com/ignite/cli/pull/4732) Add `ignite chain modules list` command to list all modules in the chain.
9+
510
### Changes
611

712
- [#4717](https://github.com/ignite/cli/pull/4717) Bump Cosmos SDK to `v0.53.2`.
@@ -11,10 +16,6 @@
1116

1217
- [#4691](https://github.com/ignite/cli/pull/4691), [#4706](https://github.com/ignite/cli/pull/4706), [#4725](https://github.com/ignite/cli/pull/4725) Fix ts-client query template and solely Go template for `ts-client` generation.
1318

14-
### Features
15-
16-
- [#4728](https://github.com/ignite/cli/pull/4728) Ask before overwriting a `xgenny` file.
17-
1819
## [`v29.0.0`](https://github.com/ignite/cli/releases/tag/v29.0.0)
1920

2021
### Features

‎go.mod

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ require (
1212
github.com/briandowns/spinner v1.23.2
1313
github.com/buger/jsonparser v1.1.1
1414
github.com/cenkalti/backoff v2.2.1+incompatible
15-
github.com/charmbracelet/bubbles v0.20.0
16-
github.com/charmbracelet/bubbletea v1.3.3
15+
github.com/charmbracelet/bubbles v0.21.0
16+
github.com/charmbracelet/bubbletea v1.3.5
1717
github.com/charmbracelet/glow v1.5.1
18-
github.com/charmbracelet/lipgloss v1.0.0
18+
github.com/charmbracelet/lipgloss v1.1.0
1919
github.com/cockroachdb/errors v1.12.0
2020
github.com/cometbft/cometbft v0.38.17
2121
github.com/cosmos/cosmos-sdk v0.53.2
@@ -140,8 +140,10 @@ require (
140140
github.com/cespare/xxhash/v2 v2.3.0 // indirect
141141
github.com/charithe/durationcheck v0.0.10 // indirect
142142
github.com/charmbracelet/charm v0.8.7 // indirect
143+
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc // indirect
143144
github.com/charmbracelet/glamour v0.6.0 // indirect
144145
github.com/charmbracelet/x/ansi v0.8.0 // indirect
146+
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd // indirect
145147
github.com/charmbracelet/x/term v0.2.1 // indirect
146148
github.com/chavacava/garif v0.1.0 // indirect
147149
github.com/chigopher/pathlib v0.19.1 // indirect
@@ -352,7 +354,7 @@ require (
352354
github.com/muesli/gitcha v0.2.0 // indirect
353355
github.com/muesli/go-app-paths v0.2.2 // indirect
354356
github.com/muesli/sasquatch v0.0.0-20200811221207-66979d92330a // indirect
355-
github.com/muesli/termenv v0.15.2 // indirect
357+
github.com/muesli/termenv v0.16.0 // indirect
356358
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
357359
github.com/nakabonne/nestif v0.3.1 // indirect
358360
github.com/nishanths/exhaustive v0.12.0 // indirect
@@ -443,6 +445,7 @@ require (
443445
github.com/vektra/mockery/v2 v2.53.3 // indirect
444446
github.com/xanzy/ssh-agent v0.3.3 // indirect
445447
github.com/xen0n/gosmopolitan v1.2.2 // indirect
448+
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
446449
github.com/yagipy/maintidx v1.0.0 // indirect
447450
github.com/yeya24/promlinter v0.3.0 // indirect
448451
github.com/ykadowak/zerologlint v0.1.5 // indirect

‎go.sum

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,8 @@ github.com/aymanbagabas/go-osc52 v1.0.3/go.mod h1:zT8H+Rk4VSabYN90pWyugflM3ZhpTZ
336336
github.com/aymanbagabas/go-osc52 v1.2.1/go.mod h1:zT8H+Rk4VSabYN90pWyugflM3ZhpTZNC7cASDfUCdT4=
337337
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
338338
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
339+
github.com/aymanbagabas/go-udiff v0.2.0 h1:TK0fH4MteXUDspT88n8CKzvK0X9O2xu9yQjWpi6yML8=
340+
github.com/aymanbagabas/go-udiff v0.2.0/go.mod h1:RE4Ex0qsGkTAJoQdQQCA0uG+nAzJO/pI/QwceO5fgrA=
339341
github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=
340342
github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
341343
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
@@ -406,25 +408,31 @@ github.com/charithe/durationcheck v0.0.10 h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iy
406408
github.com/charithe/durationcheck v0.0.10/go.mod h1:bCWXb7gYRysD1CU3C+u4ceO49LoGOY1C1L6uouGNreQ=
407409
github.com/charmbracelet/bubbles v0.7.5/go.mod h1:IRTORFvhEI6OUH7WhN2Ks8Z8miNGimk1BE6cmHijOkM=
408410
github.com/charmbracelet/bubbles v0.15.0/go.mod h1:Y7gSFbBzlMpUDR/XM9MhZI374Q+1p1kluf1uLl8iK74=
409-
github.com/charmbracelet/bubbles v0.20.0 h1:jSZu6qD8cRQ6k9OMfR1WlM+ruM8fkPWkHvQWD9LIutE=
410-
github.com/charmbracelet/bubbles v0.20.0/go.mod h1:39slydyswPy+uVOHZ5x/GjwVAFkCsV8IIVy+4MhzwwU=
411+
github.com/charmbracelet/bubbles v0.21.0 h1:9TdC97SdRVg/1aaXNVWfFH3nnLAwOXr8Fn6u6mfQdFs=
412+
github.com/charmbracelet/bubbles v0.21.0/go.mod h1:HF+v6QUR4HkEpz62dx7ym2xc71/KBHg+zKwJtMw+qtg=
411413
github.com/charmbracelet/bubbletea v0.12.2/go.mod h1:3gZkYELUOiEUOp0bTInkxguucy/xRbGSOcbMs1geLxg=
412414
github.com/charmbracelet/bubbletea v0.23.1/go.mod h1:JAfGK/3/pPKHTnAS8JIE2u9f61BjWTQY57RbT25aMXU=
413415
github.com/charmbracelet/bubbletea v0.23.2/go.mod h1:FaP3WUivcTM0xOKNmhciz60M6I+weYLF76mr1JyI7sM=
414-
github.com/charmbracelet/bubbletea v1.3.3 h1:WpU6fCY0J2vDWM3zfS3vIDi/ULq3SYphZhkAGGvmEUY=
415-
github.com/charmbracelet/bubbletea v1.3.3/go.mod h1:dtcUCyCGEX3g9tosuYiut3MXgY/Jsv9nKVdibKKRRXo=
416+
github.com/charmbracelet/bubbletea v1.3.5 h1:JAMNLTbqMOhSwoELIr0qyP4VidFq72/6E9j7HHmRKQc=
417+
github.com/charmbracelet/bubbletea v1.3.5/go.mod h1:TkCnmH+aBd4LrXhXcqrKiYwRs7qyQx5rBgH5fVY3v54=
416418
github.com/charmbracelet/charm v0.8.7 h1:FJ9b7IxWUWHOPR72zS/QJLEqtudOB2Mwfc+Sir0eZR8=
417419
github.com/charmbracelet/charm v0.8.7/go.mod h1:ApJYwJljEjODkOYJgFDzbUqztLrCWQct9zyPD+xcVr4=
420+
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc h1:4pZI35227imm7yK2bGPcfpFEmuY1gc2YSTShr4iJBfs=
421+
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc/go.mod h1:X4/0JoqgTIPSFcRA/P6INZzIuyqdFY5rm8tb41s9okk=
418422
github.com/charmbracelet/glamour v0.6.0 h1:wi8fse3Y7nfcabbbDuwolqTqMQPMnVPeZhDM273bISc=
419423
github.com/charmbracelet/glamour v0.6.0/go.mod h1:taqWV4swIMMbWALc0m7AfE9JkPSU8om2538k9ITBxOc=
420424
github.com/charmbracelet/glow v1.5.1 h1:o1mwT4xXXpkfUhJG6euQayNxLZf9yKctOCNHLztrwdE=
421425
github.com/charmbracelet/glow v1.5.1/go.mod h1:rGgop0a2/4gXWiAxUW1iEQseoE+9Ctpb7M4sM9cY9CU=
422426
github.com/charmbracelet/harmonica v0.2.0/go.mod h1:KSri/1RMQOZLbw7AHqgcBycp8pgJnQMYYT8QZRqZ1Ao=
423427
github.com/charmbracelet/lipgloss v0.6.0/go.mod h1:tHh2wr34xcHjC2HCXIlGSG1jaDF0S0atAUvBMP6Ppuk=
424-
github.com/charmbracelet/lipgloss v1.0.0 h1:O7VkGDvqEdGi93X+DeqsQ7PKHDgtQfF8j8/O2qFMQNg=
425-
github.com/charmbracelet/lipgloss v1.0.0/go.mod h1:U5fy9Z+C38obMs+T+tJqst9VGzlOYGj4ri9reL3qUlo=
428+
github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY=
429+
github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30=
426430
github.com/charmbracelet/x/ansi v0.8.0 h1:9GTq3xq9caJW8ZrBTe0LIe2fvfLR/bYXKTx2llXn7xE=
427431
github.com/charmbracelet/x/ansi v0.8.0/go.mod h1:wdYl/ONOLHLIVmQaxbIYEC/cRKOQyjTkowiI4blgS9Q=
432+
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd h1:vy0GVL4jeHEwG5YOXDmi86oYw2yuYUGqz6a8sLwg0X8=
433+
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs=
434+
github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91 h1:payRxjMjKgx2PaCWLZ4p3ro9y97+TVLZNaRZgJwSVDQ=
435+
github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U=
428436
github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
429437
github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
430438
github.com/chavacava/garif v0.1.0 h1:2JHa3hbYf5D9dsgseMKAmc/MZ109otzgNFk5s87H9Pc=
@@ -1357,8 +1365,8 @@ github.com/muesli/termenv v0.11.1-0.20220204035834-5ac8409525e0/go.mod h1:Bd5NYQ
13571365
github.com/muesli/termenv v0.13.0/go.mod h1:sP1+uffeLaEYpyOTb8pLCUctGcGLnoFjSn4YJK5e2bc=
13581366
github.com/muesli/termenv v0.14.0/go.mod h1:kG/pF1E7fh949Xhe156crRUrHNyK221IuGO7Ez60Uc8=
13591367
github.com/muesli/termenv v0.15.1/go.mod h1:HeAQPTzpfs016yGtA4g00CsdYnVLJvxsS4ANqrZs2sQ=
1360-
github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo=
1361-
github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8=
1368+
github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc=
1369+
github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk=
13621370
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
13631371
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
13641372
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
@@ -1737,6 +1745,8 @@ github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI
17371745
github.com/xen0n/gosmopolitan v1.2.2 h1:/p2KTnMzwRexIW8GlKawsTWOxn7UHA+jCMF/V8HHtvU=
17381746
github.com/xen0n/gosmopolitan v1.2.2/go.mod h1:7XX7Mj61uLYrj0qmeN0zi7XDon9JRAEhYQqAPLVNTeg=
17391747
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
1748+
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=
1749+
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM=
17401750
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
17411751
github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM=
17421752
github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk=

‎ignite/cmd/chain.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ chain.
9898
NewChainSimulate(),
9999
NewChainDebug(),
100100
NewChainLint(),
101+
NewChainModules(),
101102
)
102103

103104
return c

‎ignite/cmd/chain_modules.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package ignitecmd
2+
3+
import (
4+
"github.com/spf13/cobra"
5+
)
6+
7+
// NewChainModules returns the modules command.
8+
func NewChainModules() *cobra.Command {
9+
c := &cobra.Command{
10+
Use: "modules",
11+
Short: "Manage modules",
12+
Long: "The modules command allows you to manage modules in the codebase.",
13+
Args: cobra.NoArgs,
14+
}
15+
16+
c.AddCommand(
17+
NewChainModulesList(),
18+
)
19+
20+
return c
21+
}

‎ignite/cmd/chain_modules_list.go

Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
package ignitecmd
2+
3+
import (
4+
"sort"
5+
"strings"
6+
7+
"github.com/spf13/cobra"
8+
9+
"github.com/ignite/cli/v29/ignite/pkg/cliui"
10+
"github.com/ignite/cli/v29/ignite/pkg/cosmosanalysis/app"
11+
"github.com/ignite/cli/v29/ignite/pkg/gomodule"
12+
"github.com/ignite/cli/v29/ignite/services/chain"
13+
)
14+
15+
func NewChainModulesList() *cobra.Command {
16+
c := &cobra.Command{
17+
Use: "list",
18+
Short: "List all Cosmos SDK modules in the app",
19+
Long: "The list command lists all modules in the app.",
20+
Args: cobra.NoArgs,
21+
RunE: func(cmd *cobra.Command, _ []string) error {
22+
session := cliui.New(cliui.StartSpinner())
23+
defer session.End()
24+
25+
chainOption := []chain.Option{
26+
chain.WithOutputer(session),
27+
chain.CollectEvents(session.EventBus()),
28+
}
29+
30+
c, err := chain.NewWithHomeFlags(cmd, chainOption...)
31+
if err != nil {
32+
return err
33+
}
34+
35+
modules, err := app.FindRegisteredModules(c.AppPath())
36+
if err != nil {
37+
return err
38+
}
39+
40+
if len(modules) == 0 {
41+
session.Println("no modules found")
42+
return nil
43+
}
44+
45+
modFile, err := gomodule.ParseAt(c.AppPath())
46+
if err != nil {
47+
return err
48+
}
49+
50+
deps, err := gomodule.ResolveDependencies(modFile, false)
51+
if err != nil {
52+
return err
53+
}
54+
55+
depMap := make(map[string]string)
56+
for _, dep := range deps {
57+
depMap[dep.Path] = dep.Version
58+
}
59+
60+
// create a map of replaced modules for easy lookup
61+
// check the original required modules, not the resolved ones
62+
replacedMap := make(map[string]bool)
63+
for _, replace := range modFile.Replace {
64+
replacedMap[replace.Old.Path] = true
65+
}
66+
67+
// get the app's module path to identify app modules
68+
appModulePath := modFile.Module.Mod.Path
69+
70+
var entries [][]string
71+
for _, m := range modules {
72+
ver := depMap[m]
73+
modName := m
74+
75+
switch {
76+
case strings.HasPrefix(m, appModulePath+"/"):
77+
ver = "main"
78+
case strings.HasPrefix(m, cosmosSDKModulePrefix+"/"):
79+
ver = depMap[cosmosSDKModulePrefix]
80+
modName = strings.TrimPrefix(m, cosmosSDKModulePrefix+"/")
81+
case strings.Contains(m, ibcModulePrefix+"/v"):
82+
modName, ver = getIBCVersion(m, depMap)
83+
case isModuleReplaced(m, replacedMap):
84+
ver = "locally replaced"
85+
}
86+
87+
if ver == "" {
88+
ver = findBestMatchingVersion(m, depMap)
89+
if ver == "" {
90+
ver = "-"
91+
}
92+
}
93+
94+
entries = append(entries, []string{modName, ver})
95+
}
96+
97+
session.StopSpinner()
98+
99+
// Sort entries by module name
100+
sort.SliceStable(entries, func(i, j int) bool {
101+
return entries[i][0] < entries[j][0]
102+
})
103+
104+
header := []string{"module", "version"}
105+
return session.PrintTable(header, entries...)
106+
},
107+
}
108+
109+
return c
110+
}
111+
112+
const (
113+
cosmosSDKModulePrefix = "github.com/cosmos/cosmos-sdk"
114+
ibcModulePrefix = "github.com/cosmos/ibc-go"
115+
)
116+
117+
// isModuleReplaced checks if a module path (or its parent paths) is in the replaced map.
118+
func isModuleReplaced(modulePath string, replacedMap map[string]bool) bool {
119+
checkPath := modulePath
120+
for checkPath != "" && checkPath != "." {
121+
if replacedMap[checkPath] {
122+
return true
123+
}
124+
// check parent path
125+
if idx := strings.LastIndex(checkPath, "/"); idx > 0 {
126+
checkPath = checkPath[:idx]
127+
} else {
128+
break
129+
}
130+
}
131+
return false
132+
}
133+
134+
// for a given module path by checking progressively shorter paths.
135+
func findBestMatchingVersion(modulePath string, depMap map[string]string) string {
136+
checkPath := modulePath
137+
for checkPath != "" && checkPath != "." {
138+
if version, exists := depMap[checkPath]; exists {
139+
return version
140+
}
141+
// check parent path
142+
if idx := strings.LastIndex(checkPath, "/"); idx > 0 {
143+
checkPath = checkPath[:idx]
144+
} else {
145+
break
146+
}
147+
}
148+
return ""
149+
}
150+
151+
// getIBCVersion tries to extract the ibc-go version from the module path or dependencies.
152+
func getIBCVersion(modulePath string, depMap map[string]string) (string, string) {
153+
// find the root ibc-go module path (with major version)
154+
parts := strings.Split(modulePath, "/")
155+
for i := range parts {
156+
if parts[i] == "ibc-go" && i+1 < len(parts) && strings.HasPrefix(parts[i+1], "v") {
157+
root := strings.Join(parts[:i+2], "/")
158+
ver := depMap[root]
159+
// clean module name after root
160+
mod := strings.TrimPrefix(modulePath, root+"/")
161+
return mod, ver
162+
}
163+
}
164+
return modulePath, ""
165+
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
//go:build !relayer
2+
3+
package chain_test
4+
5+
import (
6+
"bytes"
7+
"testing"
8+
9+
"github.com/stretchr/testify/require"
10+
11+
"github.com/ignite/cli/v29/ignite/pkg/cmdrunner/step"
12+
envtest "github.com/ignite/cli/v29/integration"
13+
)
14+
15+
func TestModulesList(t *testing.T) {
16+
var (
17+
env = envtest.New(t)
18+
app = env.ScaffoldApp("github.com/test/mars")
19+
)
20+
21+
var buffer bytes.Buffer
22+
23+
env.Must(env.Exec("list modules",
24+
step.NewSteps(step.New(
25+
step.Exec(envtest.IgniteApp,
26+
"c",
27+
"modules",
28+
"list",
29+
),
30+
step.Workdir(app.SourcePath()),
31+
)),
32+
envtest.ExecStdout(&buffer),
33+
))
34+
35+
output := buffer.String()
36+
37+
// check for module header
38+
require.Contains(t, output, "Module")
39+
require.Contains(t, output, "Version")
40+
41+
// check for specific modules
42+
require.Contains(t, output, "client/grpc/cmtservice")
43+
require.Contains(t, output, "client/grpc/node")
44+
require.Contains(t, output, "cosmossdk.io/x/circuit")
45+
require.Contains(t, output, "cosmossdk.io/x/evidence")
46+
require.Contains(t, output, "cosmossdk.io/x/feegrant/module")
47+
require.Contains(t, output, "cosmossdk.io/x/nft/module")
48+
require.Contains(t, output, "cosmossdk.io/x/upgrade")
49+
require.Contains(t, output, "github.com/test/mars/x/mars")
50+
require.Contains(t, output, "github.com/test/mars/x/mars/module")
51+
require.Contains(t, output, "modules/apps/27-interchain-accounts")
52+
require.Contains(t, output, "modules/apps/transfer")
53+
require.Contains(t, output, "modules/core")
54+
require.Contains(t, output, "x/auth")
55+
require.Contains(t, output, "x/auth/tx")
56+
require.Contains(t, output, "x/auth/tx/config")
57+
require.Contains(t, output, "x/auth/vesting")
58+
require.Contains(t, output, "x/authz")
59+
require.Contains(t, output, "x/authz/module")
60+
require.Contains(t, output, "x/bank")
61+
require.Contains(t, output, "x/consensus")
62+
require.Contains(t, output, "x/distribution")
63+
require.Contains(t, output, "x/epochs")
64+
require.Contains(t, output, "x/gov")
65+
require.Contains(t, output, "x/group/module")
66+
require.Contains(t, output, "x/mint")
67+
require.Contains(t, output, "x/params")
68+
require.Contains(t, output, "x/slashing")
69+
require.Contains(t, output, "x/staking")
70+
71+
app.EnsureSteady()
72+
}

0 commit comments

Comments
 (0)
Please sign in to comment.