mirror of https://github.com/ollama/ollama.git
				
				
				
			
		
			
				
	
	
		
			207 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			207 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Go
		
	
	
	
| package cmd
 | |
| 
 | |
| import (
 | |
| 	"bytes"
 | |
| 	"os"
 | |
| 	"path/filepath"
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/google/go-cmp/cmp"
 | |
| 
 | |
| 	"github.com/ollama/ollama/api"
 | |
| )
 | |
| 
 | |
| func TestShowInfo(t *testing.T) {
 | |
| 	t.Run("bare details", func(t *testing.T) {
 | |
| 		var b bytes.Buffer
 | |
| 		if err := showInfo(&api.ShowResponse{
 | |
| 			Details: api.ModelDetails{
 | |
| 				Family:            "test",
 | |
| 				ParameterSize:     "7B",
 | |
| 				QuantizationLevel: "FP16",
 | |
| 			},
 | |
| 		}, &b); err != nil {
 | |
| 			t.Fatal(err)
 | |
| 		}
 | |
| 
 | |
| 		expect := `  Model
 | |
|     architecture    test    
 | |
|     parameters      7B      
 | |
|     quantization    FP16    
 | |
| 
 | |
| `
 | |
| 
 | |
| 		if diff := cmp.Diff(expect, b.String()); diff != "" {
 | |
| 			t.Errorf("unexpected output (-want +got):\n%s", diff)
 | |
| 		}
 | |
| 	})
 | |
| 
 | |
| 	t.Run("bare model info", func(t *testing.T) {
 | |
| 		var b bytes.Buffer
 | |
| 		if err := showInfo(&api.ShowResponse{
 | |
| 			ModelInfo: map[string]any{
 | |
| 				"general.architecture":    "test",
 | |
| 				"general.parameter_count": float64(7_000_000_000),
 | |
| 				"test.context_length":     float64(0),
 | |
| 				"test.embedding_length":   float64(0),
 | |
| 			},
 | |
| 			Details: api.ModelDetails{
 | |
| 				Family:            "test",
 | |
| 				ParameterSize:     "7B",
 | |
| 				QuantizationLevel: "FP16",
 | |
| 			},
 | |
| 		}, &b); err != nil {
 | |
| 			t.Fatal(err)
 | |
| 		}
 | |
| 
 | |
| 		expect := `  Model
 | |
|     architecture        test    
 | |
|     parameters          7B      
 | |
|     context length      0       
 | |
|     embedding length    0       
 | |
|     quantization        FP16    
 | |
| 
 | |
| `
 | |
| 		if diff := cmp.Diff(expect, b.String()); diff != "" {
 | |
| 			t.Errorf("unexpected output (-want +got):\n%s", diff)
 | |
| 		}
 | |
| 	})
 | |
| 
 | |
| 	t.Run("parameters", func(t *testing.T) {
 | |
| 		var b bytes.Buffer
 | |
| 		if err := showInfo(&api.ShowResponse{
 | |
| 			Details: api.ModelDetails{
 | |
| 				Family:            "test",
 | |
| 				ParameterSize:     "7B",
 | |
| 				QuantizationLevel: "FP16",
 | |
| 			},
 | |
| 			Parameters: `
 | |
| 			stop never
 | |
| 			stop gonna
 | |
| 			stop give
 | |
| 			stop you
 | |
| 			stop up
 | |
| 			temperature 99`,
 | |
| 		}, &b); err != nil {
 | |
| 			t.Fatal(err)
 | |
| 		}
 | |
| 
 | |
| 		expect := `  Model
 | |
|     architecture    test    
 | |
|     parameters      7B      
 | |
|     quantization    FP16    
 | |
| 
 | |
|   Parameters
 | |
|     stop           never    
 | |
|     stop           gonna    
 | |
|     stop           give     
 | |
|     stop           you      
 | |
|     stop           up       
 | |
|     temperature    99       
 | |
| 
 | |
| `
 | |
| 		if diff := cmp.Diff(expect, b.String()); diff != "" {
 | |
| 			t.Errorf("unexpected output (-want +got):\n%s", diff)
 | |
| 		}
 | |
| 	})
 | |
| 
 | |
| 	t.Run("project info", func(t *testing.T) {
 | |
| 		var b bytes.Buffer
 | |
| 		if err := showInfo(&api.ShowResponse{
 | |
| 			Details: api.ModelDetails{
 | |
| 				Family:            "test",
 | |
| 				ParameterSize:     "7B",
 | |
| 				QuantizationLevel: "FP16",
 | |
| 			},
 | |
| 			ProjectorInfo: map[string]any{
 | |
| 				"general.architecture":         "clip",
 | |
| 				"general.parameter_count":      float64(133_700_000),
 | |
| 				"clip.vision.embedding_length": float64(0),
 | |
| 				"clip.vision.projection_dim":   float64(0),
 | |
| 			},
 | |
| 		}, &b); err != nil {
 | |
| 			t.Fatal(err)
 | |
| 		}
 | |
| 
 | |
| 		expect := `  Model
 | |
|     architecture    test    
 | |
|     parameters      7B      
 | |
|     quantization    FP16    
 | |
| 
 | |
|   Projector
 | |
|     architecture        clip       
 | |
|     parameters          133.70M    
 | |
|     embedding length    0          
 | |
|     dimensions          0          
 | |
| 
 | |
| `
 | |
| 		if diff := cmp.Diff(expect, b.String()); diff != "" {
 | |
| 			t.Errorf("unexpected output (-want +got):\n%s", diff)
 | |
| 		}
 | |
| 	})
 | |
| 
 | |
| 	t.Run("system", func(t *testing.T) {
 | |
| 		var b bytes.Buffer
 | |
| 		if err := showInfo(&api.ShowResponse{
 | |
| 			Details: api.ModelDetails{
 | |
| 				Family:            "test",
 | |
| 				ParameterSize:     "7B",
 | |
| 				QuantizationLevel: "FP16",
 | |
| 			},
 | |
| 			System: `You are a pirate!
 | |
| Ahoy, matey!
 | |
| Weigh anchor!
 | |
| 			`,
 | |
| 		}, &b); err != nil {
 | |
| 			t.Fatal(err)
 | |
| 		}
 | |
| 
 | |
| 		expect := `  Model
 | |
|     architecture    test    
 | |
|     parameters      7B      
 | |
|     quantization    FP16    
 | |
| 
 | |
|   System
 | |
|     You are a pirate!    
 | |
|     Ahoy, matey!         
 | |
| 
 | |
| `
 | |
| 		if diff := cmp.Diff(expect, b.String()); diff != "" {
 | |
| 			t.Errorf("unexpected output (-want +got):\n%s", diff)
 | |
| 		}
 | |
| 	})
 | |
| 
 | |
| 	t.Run("license", func(t *testing.T) {
 | |
| 		var b bytes.Buffer
 | |
| 		license, err := os.ReadFile(filepath.Join("..", "LICENSE"))
 | |
| 		if err != nil {
 | |
| 			t.Fatal(err)
 | |
| 		}
 | |
| 
 | |
| 		if err := showInfo(&api.ShowResponse{
 | |
| 			Details: api.ModelDetails{
 | |
| 				Family:            "test",
 | |
| 				ParameterSize:     "7B",
 | |
| 				QuantizationLevel: "FP16",
 | |
| 			},
 | |
| 			License: string(license),
 | |
| 		}, &b); err != nil {
 | |
| 			t.Fatal(err)
 | |
| 		}
 | |
| 
 | |
| 		expect := `  Model
 | |
|     architecture    test    
 | |
|     parameters      7B      
 | |
|     quantization    FP16    
 | |
| 
 | |
|   License
 | |
|     MIT License             
 | |
|     Copyright (c) Ollama    
 | |
| 
 | |
| `
 | |
| 		if diff := cmp.Diff(expect, b.String()); diff != "" {
 | |
| 			t.Errorf("unexpected output (-want +got):\n%s", diff)
 | |
| 		}
 | |
| 	})
 | |
| }
 |