github.com/please-build/puku@v1.7.3-0.20240516143641-f7d7f4941f57/edit/edit_test.go (about)

     1  package edit
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/please-build/buildtools/build"
     7  	"github.com/stretchr/testify/assert"
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  func TestEnsureSubinclude(t *testing.T) {
    12  	t.Run("adds if missing", func(t *testing.T) {
    13  		file, _ := build.Parse("test", nil)
    14  
    15  		EnsureSubinclude(file)
    16  		require.Len(t, file.Stmt, 1)
    17  		subinc := &build.CallExpr{
    18  			X:    &build.Ident{Name: "subinclude"},
    19  			List: []build.Expr{NewStringExpr("///go//build_defs:go")},
    20  		}
    21  		assert.Equal(t, file.Stmt[0], subinc)
    22  	})
    23  
    24  	t.Run("updates existing", func(t *testing.T) {
    25  		file, _ := build.Parse("test", nil)
    26  		file.Stmt = []build.Expr{
    27  			&build.CallExpr{
    28  				X:    &build.Ident{Name: "subinclude"},
    29  				List: []build.Expr{NewStringExpr("///python//build_defs:python")},
    30  			},
    31  		}
    32  
    33  		EnsureSubinclude(file)
    34  		require.Len(t, file.Stmt, 1)
    35  		subinc := &build.CallExpr{
    36  			X: &build.Ident{Name: "subinclude"},
    37  			List: []build.Expr{
    38  				NewStringExpr("///python//build_defs:python"),
    39  				NewStringExpr("///go//build_defs:go"),
    40  			},
    41  		}
    42  		assert.Equal(t, file.Stmt[0], subinc)
    43  	})
    44  
    45  	t.Run("does nothing if it exists", func(t *testing.T) {
    46  		file, _ := build.Parse("test", nil)
    47  		file.Stmt = []build.Expr{
    48  			&build.CallExpr{
    49  				X:    &build.Ident{Name: "subinclude"},
    50  				List: []build.Expr{NewStringExpr("///go//build_defs:go")},
    51  			},
    52  		}
    53  
    54  		EnsureSubinclude(file)
    55  		require.Len(t, file.Stmt, 1)
    56  		subinc := &build.CallExpr{
    57  			X: &build.Ident{Name: "subinclude"},
    58  			List: []build.Expr{
    59  				NewStringExpr("///go//build_defs:go"),
    60  			},
    61  		}
    62  		assert.Equal(t, file.Stmt[0], subinc)
    63  	})
    64  }