mirror of https://github.com/docker/buildx.git
				
				
				
			
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
| package tests
 | |
| 
 | |
| import (
 | |
| 	"strings"
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/moby/buildkit/util/testutil/integration"
 | |
| 	"github.com/stretchr/testify/require"
 | |
| 	"golang.org/x/mod/module"
 | |
| 	"golang.org/x/mod/semver"
 | |
| )
 | |
| 
 | |
| var versionTests = []func(t *testing.T, sb integration.Sandbox){
 | |
| 	testVersion,
 | |
| }
 | |
| 
 | |
| func testVersion(t *testing.T, sb integration.Sandbox) {
 | |
| 	cmd := buildxCmd(sb, withArgs("version"))
 | |
| 	out, err := cmd.CombinedOutput()
 | |
| 	require.NoError(t, err, string(out))
 | |
| 
 | |
| 	// There should be at least one newline and the first line
 | |
| 	// of output should contain the name, version, and possibly a revision.
 | |
| 	firstLine, _, hasNewline := strings.Cut(string(out), "\n")
 | |
| 	require.True(t, hasNewline, "At least one newline is required in the output")
 | |
| 
 | |
| 	// Log the output to make debugging easier.
 | |
| 	t.Log(firstLine)
 | |
| 
 | |
| 	// Split by spaces into at least 2 fields.
 | |
| 	fields := strings.Fields(firstLine)
 | |
| 	require.GreaterOrEqual(t, len(fields), 2, "Expected at least 2 fields in the first line")
 | |
| 
 | |
| 	// First field should be an import path.
 | |
| 	// This can be any valid import path for Go
 | |
| 	// so don't set too many restrictions here.
 | |
| 	// Just checking if the import path is a valid Go
 | |
| 	// path should be suitable enough to make sure this is ok.
 | |
| 	// Using CheckImportPath instead of CheckPath as it is less
 | |
| 	// restrictive.
 | |
| 	importPath := fields[0]
 | |
| 	require.NoError(t, module.CheckImportPath(importPath), "First field was not a valid import path: %+v", importPath)
 | |
| 
 | |
| 	// Second field should be a version.
 | |
| 	// This defaults to something that's still compatible
 | |
| 	// with semver.
 | |
| 	version := fields[1]
 | |
| 	require.True(t, semver.IsValid(version), "Second field was not valid semver: %+v", version)
 | |
| 
 | |
| 	// Revision should be empty or should look like a git hash.
 | |
| 	if len(fields) > 2 && len(fields[2]) > 0 {
 | |
| 		revision := fields[2]
 | |
| 		require.Regexp(t, `[0-9a-f]{40}`, revision, "Third field was not a git revision: %+v", revision)
 | |
| 	}
 | |
| }
 |