github.com/openshift/source-to-image@v1.4.1-0.20240516041539-bf52fc02204e/pkg/build/strategies/onbuild/entrypoint_test.go (about)

     1  package onbuild
     2  
     3  import (
     4  	"os"
     5  	"strings"
     6  	"testing"
     7  
     8  	testfs "github.com/openshift/source-to-image/pkg/test/fs"
     9  	"github.com/openshift/source-to-image/pkg/util/fs"
    10  )
    11  
    12  func TestGuessEntrypoint(t *testing.T) {
    13  
    14  	testMatrix := map[string][]os.FileInfo{
    15  		"run": {
    16  			&fs.FileInfo{FileName: "config.ru", FileIsDir: false, FileMode: 0600},
    17  			&fs.FileInfo{FileName: "app.rb", FileIsDir: false, FileMode: 0600},
    18  			&fs.FileInfo{FileName: "run", FileIsDir: false, FileMode: 0777},
    19  		},
    20  		"start.sh": {
    21  			&fs.FileInfo{FileName: "config.ru", FileIsDir: false, FileMode: 0600},
    22  			&fs.FileInfo{FileName: "app.rb", FileIsDir: false, FileMode: 0600},
    23  			&fs.FileInfo{FileName: "start.sh", FileIsDir: false, FileMode: 0777},
    24  		},
    25  		"execute": {
    26  			&fs.FileInfo{FileName: "config.ru", FileIsDir: false, FileMode: 0600},
    27  			&fs.FileInfo{FileName: "app.rb", FileIsDir: false, FileMode: 0600},
    28  			&fs.FileInfo{FileName: "execute", FileIsDir: false, FileMode: 0777},
    29  		},
    30  		"ERR:run_not_executable": {
    31  			&fs.FileInfo{FileName: "config.ru", FileIsDir: false, FileMode: 0600},
    32  			&fs.FileInfo{FileName: "app.rb", FileIsDir: false, FileMode: 0600},
    33  			&fs.FileInfo{FileName: "run", FileIsDir: false, FileMode: 0600},
    34  		},
    35  		"ERR:run_is_dir": {
    36  			&fs.FileInfo{FileName: "config.ru", FileIsDir: false, FileMode: 0600},
    37  			&fs.FileInfo{FileName: "app.rb", FileIsDir: false, FileMode: 0600},
    38  			&fs.FileInfo{FileName: "run", FileIsDir: true, FileMode: 0777},
    39  		},
    40  		"ERR:none": {
    41  			&fs.FileInfo{FileName: "config.ru", FileIsDir: false, FileMode: 0600},
    42  			&fs.FileInfo{FileName: "app.rb", FileIsDir: false, FileMode: 0600},
    43  		},
    44  	}
    45  
    46  	for expectedEntrypoint, files := range testMatrix {
    47  		f := &testfs.FakeFileSystem{Files: files}
    48  		result, err := GuessEntrypoint(f, "/test")
    49  
    50  		if strings.HasPrefix(expectedEntrypoint, "ERR:") {
    51  			if len(result) > 0 {
    52  				t.Errorf("Expected error for %s, got %s", expectedEntrypoint, result)
    53  			}
    54  			continue
    55  		}
    56  
    57  		if err != nil {
    58  			t.Errorf("[%s] %s", expectedEntrypoint, err)
    59  		}
    60  		if result != expectedEntrypoint {
    61  			t.Errorf("Expected '%s' entrypoint, got '%v'", expectedEntrypoint, result)
    62  		}
    63  	}
    64  }