github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/builtins/core/structs/alias_test.go (about)

     1  package structs_test
     2  
     3  import (
     4  	"fmt"
     5  	"math/rand"
     6  	"testing"
     7  
     8  	_ "github.com/lmorg/murex/builtins"
     9  	"github.com/lmorg/murex/test"
    10  )
    11  
    12  func TestAliasParamParsing(t *testing.T) {
    13  	alias := fmt.Sprintf("GoTest-alias-%d-", rand.Int())
    14  
    15  	tests := []test.MurexTest{
    16  		// errors
    17  
    18  		{
    19  			Block:  fmt.Sprintf(`alias %s%d`, alias, -1),
    20  			Stderr: "no command supplied",
    21  			ExitNum: 1,
    22  		},
    23  		{
    24  			Block:  fmt.Sprintf(`alias %s%d `, alias, -2),
    25  			Stderr: "no command supplied",
    26  			ExitNum: 1,
    27  		},
    28  		{
    29  			Block:  fmt.Sprintf(`alias %s%d=`, alias, -3),
    30  			Stderr: "no command supplied",
    31  			ExitNum: 1,
    32  		},
    33  		{
    34  			Block:  fmt.Sprintf(`alias %s%d= `, alias, -4),
    35  			Stderr: "no command supplied",
    36  			ExitNum: 1,
    37  		},
    38  		{
    39  			Block:  fmt.Sprintf(`alias %s%d =`, alias, -1),
    40  			Stderr: "no command supplied",
    41  			ExitNum: 1,
    42  		},
    43  		{
    44  			Block:  fmt.Sprintf(`alias %s%d foobar`, alias, -1),
    45  			Stderr: "invalid syntax",
    46  			ExitNum: 1,
    47  		},
    48  
    49  		// no space
    50  
    51  		{
    52  			Block:  fmt.Sprintf(`alias %s%d=foo bar; alias -> [%s%d]`, alias, 0, alias, 0),
    53  			Stdout: "[\"foo\",\"bar\"]",
    54  		},
    55  
    56  		// 1 space
    57  
    58  		{
    59  			Block:  fmt.Sprintf(`alias %s%d= foo bar; alias -> [%s%d]`, alias, 1, alias, 1),
    60  			Stdout: "[\"foo\",\"bar\"]",
    61  		},
    62  		{
    63  			Block:  fmt.Sprintf(`alias %s%d =foo bar; alias -> [%s%d]`, alias, 2, alias, 2),
    64  			Stdout: "[\"foo\",\"bar\"]",
    65  		},
    66  		{
    67  			Block:  fmt.Sprintf(`alias %s%d = foo bar; alias -> [%s%d]`, alias, 3, alias, 3),
    68  			Stdout: "[\"foo\",\"bar\"]",
    69  		},
    70  
    71  		// 2 spaces
    72  
    73  		{
    74  			Block:  fmt.Sprintf(`alias %s%d=  foo bar; alias -> [%s%d]`, alias, 4, alias, 4),
    75  			Stdout: "[\"foo\",\"bar\"]",
    76  		},
    77  		{
    78  			Block:  fmt.Sprintf(`alias %s%d  =foo bar; alias -> [%s%d]`, alias, 5, alias, 5),
    79  			Stdout: "[\"foo\",\"bar\"]",
    80  		},
    81  		{
    82  			Block:  fmt.Sprintf(`alias %s%d  =  foo bar; alias -> [%s%d]`, alias, 6, alias, 6),
    83  			Stdout: "[\"foo\",\"bar\"]",
    84  		},
    85  
    86  		// 1 tab
    87  
    88  		{
    89  			Block:  fmt.Sprintf(`alias %s%d=	foo bar; alias -> [%s%d]`, alias, 7, alias, 7),
    90  			Stdout: "[\"foo\",\"bar\"]",
    91  		},
    92  		{
    93  			Block:  fmt.Sprintf(`alias %s%d	=foo bar; alias -> [%s%d]`, alias, 8, alias, 8),
    94  			Stdout: "[\"foo\",\"bar\"]",
    95  		},
    96  		{
    97  			Block:  fmt.Sprintf(`alias %s%d	=	foo bar; alias -> [%s%d]`, alias, 9, alias, 9),
    98  			Stdout: "[\"foo\",\"bar\"]",
    99  		},
   100  
   101  		// 2 tabs
   102  
   103  		{
   104  			Block:  fmt.Sprintf(`alias %s%d=		foo bar; alias -> [%s%d]`, alias, 10, alias, 10),
   105  			Stdout: "[\"foo\",\"bar\"]",
   106  		},
   107  		{
   108  			Block:  fmt.Sprintf(`alias %s%d		=foo bar; alias -> [%s%d]`, alias, 11, alias, 11),
   109  			Stdout: "[\"foo\",\"bar\"]",
   110  		},
   111  		{
   112  			Block:  fmt.Sprintf(`alias %s%d		=		foo bar; alias -> [%s%d]`, alias, 12, alias, 12),
   113  			Stdout: "[\"foo\",\"bar\"]",
   114  		},
   115  
   116  
   117  	}
   118  
   119  	test.RunMurexTestsRx(tests, t)
   120  }