From 38e66a82bfe4f9ef3f6afe7c30b178980744296f Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Fri, 27 May 2022 08:22:07 -0400 Subject: [PATCH] Use parser2 in querier tests --- parser2.go | 2 ++ querier.go | 15 +++++++++++---- querier_test.go | 17 +++++------------ 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/parser2.go b/parser2.go index 1eed50a..c57c51c 100644 --- a/parser2.go +++ b/parser2.go @@ -55,6 +55,8 @@ func (p *parser2) parseArgs() (*ParseTree, error) { tracef("parseArgs() parsing %q as program command; cfg=%+#v", p.lit, p.cfg.Prog) prog := p.parseCommand(&p.cfg.Prog) + tracef("parseArgs() top level node is %T", prog) + nodes := []Node{prog} if v := p.parsePassthrough(); v != nil { tracef("parseArgs() appending passthrough argument %v", v) diff --git a/querier.go b/querier.go index 154914b..2d1ca54 100644 --- a/querier.go +++ b/querier.go @@ -1,7 +1,7 @@ package argh type Querier interface { - Program() (Command, bool) + Program() (*Command, bool) AST() []Node } @@ -13,12 +13,19 @@ type defaultQuerier struct { nodes []Node } -func (dq *defaultQuerier) Program() (Command, bool) { +func (dq *defaultQuerier) Program() (*Command, bool) { if len(dq.nodes) == 0 { - return Command{}, false + tracef("Program nodes are empty") + return nil, false + } + + tracef("Program node[0] is %T", dq.nodes[0]) + + v, ok := dq.nodes[0].(*Command) + if ok && v.Name == "" { + return v, false } - v, ok := dq.nodes[0].(Command) return v, ok } diff --git a/querier_test.go b/querier_test.go index f335e6e..edd5330 100644 --- a/querier_test.go +++ b/querier_test.go @@ -12,41 +12,34 @@ func TestQuerier_Program(t *testing.T) { name string args []string cfg *argh.ParserConfig - exp argh.Command + exp string expOK bool }{ { name: "typical", args: []string{"pizzas", "ahoy", "--treatsa", "fun"}, - exp: argh.Command{Name: "pizzas"}, + exp: "pizzas", expOK: true, }, { name: "minimal", args: []string{"pizzas"}, - exp: argh.Command{Name: "pizzas"}, + exp: "pizzas", expOK: true, }, { name: "invalid", args: []string{}, - exp: argh.Command{}, - expOK: false, - }, - { - name: "invalid flag only", - args: []string{"--oh-no"}, - exp: argh.Command{}, expOK: false, }, } { t.Run(tc.name, func(ct *testing.T) { - pt, err := argh.ParseArgs(tc.args, tc.cfg) + pt, err := argh.ParseArgs2(tc.args, tc.cfg) require.Nil(ct, err) prog, ok := argh.NewQuerier(pt.Nodes).Program() - require.Equal(ct, tc.exp, prog) require.Equal(ct, tc.expOK, ok) + require.Equal(ct, tc.exp, prog.Name) }) } }