github.com/hattya/nazuna@v0.7.1-0.20240331055452-55e14c275c1c/cmd/nzn/layer_test.go (about)

     1  //
     2  // nazuna/cmd/nzn :: layer_test.go
     3  //
     4  //   Copyright (c) 2013-2022 Akinori Hattori <hattya@gmail.com>
     5  //
     6  //   SPDX-License-Identifier: MIT
     7  //
     8  
     9  package main
    10  
    11  import (
    12  	"testing"
    13  
    14  	"github.com/hattya/go.cli"
    15  )
    16  
    17  func TestLayer(t *testing.T) {
    18  	s := script{
    19  		{
    20  			cmd: []string{"setup"},
    21  		},
    22  		{
    23  			cmd: []string{"cd", "$wc"},
    24  		},
    25  		{
    26  			cmd: []string{"nzn", "init", "--vcs", "git"},
    27  		},
    28  		{
    29  			cmd: []string{"nzn", "layer"},
    30  		},
    31  		{
    32  			cmd: []string{"nzn", "layer", "-c", "a"},
    33  		},
    34  		{
    35  			cmd: []string{"nzn", "layer"},
    36  			out: cli.Dedent(`
    37  				a
    38  			`),
    39  		},
    40  		{
    41  			cmd: []string{"nzn", "layer", "-c", "b"},
    42  		},
    43  		{
    44  			cmd: []string{"nzn", "layer"},
    45  			out: cli.Dedent(`
    46  				b
    47  				a
    48  			`),
    49  		},
    50  		{
    51  			cmd: []string{"nzn", "layer", "-c", "c/2"},
    52  		},
    53  		{
    54  			cmd: []string{"nzn", "layer", "-c", "c/1"},
    55  		},
    56  		{
    57  			cmd: []string{"nzn", "layer"},
    58  			out: cli.Dedent(`
    59  				c
    60  				    1
    61  				    2
    62  				b
    63  				a
    64  			`),
    65  		},
    66  		{
    67  			cmd: []string{"nzn", "layer", "c/1"},
    68  		},
    69  		{
    70  			cmd: []string{"nzn", "layer"},
    71  			out: cli.Dedent(`
    72  				c
    73  				    1*
    74  				    2
    75  				b
    76  				a
    77  			`),
    78  		},
    79  		{
    80  			cmd: []string{"nzn", "layer", "c/2"},
    81  		},
    82  		{
    83  			cmd: []string{"nzn", "layer"},
    84  			out: cli.Dedent(`
    85  				c
    86  				    1
    87  				    2*
    88  				b
    89  				a
    90  			`),
    91  		},
    92  	}
    93  	if err := s.exec(t); err != nil {
    94  		t.Error(err)
    95  	}
    96  }
    97  
    98  func TestLayerError(t *testing.T) {
    99  	s := script{
   100  		{
   101  			cmd: []string{"setup"},
   102  		},
   103  		{
   104  			cmd: []string{"nzn", "layer"},
   105  			out: cli.Dedent(`
   106  				nzn: no repository found in '.+' \(\.nzn not found\)! (re)
   107  				[1]
   108  			`),
   109  		},
   110  		{
   111  			cmd: []string{"cd", "$wc"},
   112  		},
   113  		{
   114  			cmd: []string{"nzn", "init", "--vcs", "git"},
   115  		},
   116  		{
   117  			cmd: []string{"nzn", "layer", "-c"},
   118  			out: cli.Dedent(`
   119  				nzn: invalid arguments
   120  				[1]
   121  			`),
   122  		},
   123  		{
   124  			cmd: []string{"touch", ".nzn/state.json"},
   125  		},
   126  		{
   127  			cmd: []string{"nzn", "layer"},
   128  			out: cli.Dedent(`
   129  				nzn: ` + path(".nzn/state.json") + `: unexpected end of JSON input
   130  				[1]
   131  			`),
   132  		},
   133  		{
   134  			cmd: []string{"nzn", "layer", "_"},
   135  			out: cli.Dedent(`
   136  				nzn: ` + path(".nzn/state.json") + `: unexpected end of JSON input
   137  				[1]
   138  			`),
   139  		},
   140  		{
   141  			cmd: []string{"rm", ".nzn/state.json"},
   142  		},
   143  		{
   144  			cmd: []string{"nzn", "layer", "-c", "a"},
   145  		},
   146  		{
   147  			cmd: []string{"nzn", "layer", "-c", "a"},
   148  			out: cli.Dedent(`
   149  				nzn: layer 'a' already exists!
   150  				[1]
   151  			`),
   152  		},
   153  		{
   154  			cmd: []string{"nzn", "layer", "-c", "a/1"},
   155  			out: cli.Dedent(`
   156  				nzn: layer 'a' is not abstract
   157  				[1]
   158  			`),
   159  		},
   160  		{
   161  			cmd: []string{"nzn", "layer", "-c", "/"},
   162  			out: cli.Dedent(`
   163  				nzn: invalid layer '/'
   164  				[1]
   165  			`),
   166  		},
   167  		{
   168  			cmd: []string{"nzn", "layer", "-c", "b/"},
   169  			out: cli.Dedent(`
   170  				nzn: invalid layer 'b/'
   171  				[1]
   172  			`),
   173  		},
   174  		{
   175  			cmd: []string{"nzn", "layer", "-c", "/1"},
   176  			out: cli.Dedent(`
   177  				nzn: invalid layer '/1'
   178  				[1]
   179  			`),
   180  		},
   181  		{
   182  			cmd: []string{"nzn", "layer", "-c", "b/1"},
   183  		},
   184  		{
   185  			cmd: []string{"nzn", "layer", "_", "_"},
   186  			out: cli.Dedent(`
   187  				nzn: invalid arguments
   188  				[1]
   189  			`),
   190  		},
   191  		{
   192  			cmd: []string{"nzn", "layer", "_"},
   193  			out: cli.Dedent(`
   194  				nzn: layer '_' does not exist!
   195  				[1]
   196  			`),
   197  		},
   198  		{
   199  			cmd: []string{"nzn", "layer", "b"},
   200  			out: cli.Dedent(`
   201  				nzn: layer 'b' is abstract
   202  				[1]
   203  			`),
   204  		},
   205  		{
   206  			cmd: []string{"nzn", "layer", "a"},
   207  			out: cli.Dedent(`
   208  				nzn: layer 'a' is not abstract
   209  				[1]
   210  			`),
   211  		},
   212  		{
   213  			cmd: []string{"nzn", "layer", "b/1"},
   214  		},
   215  		{
   216  			cmd: []string{"nzn", "layer", "b/1"},
   217  			out: cli.Dedent(`
   218  				nzn: layer 'b' is already '1'
   219  				[1]
   220  			`),
   221  		},
   222  	}
   223  	if err := s.exec(t); err != nil {
   224  		t.Error(err)
   225  	}
   226  }