github.com/go-asm/go@v1.21.1-0.20240213172139-40c5ead50c48/cmd/go/cache/hash_test.go (about)

     1  // Copyright 2017 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package cache
     6  
     7  import (
     8  	"fmt"
     9  	"os"
    10  	"testing"
    11  )
    12  
    13  func TestHash(t *testing.T) {
    14  	oldSalt := hashSalt
    15  	hashSalt = nil
    16  	defer func() {
    17  		hashSalt = oldSalt
    18  	}()
    19  
    20  	h := NewHash("alice")
    21  	h.Write([]byte("hello world"))
    22  	sum := fmt.Sprintf("%x", h.Sum())
    23  	want := "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"
    24  	if sum != want {
    25  		t.Errorf("hash(hello world) = %v, want %v", sum, want)
    26  	}
    27  }
    28  
    29  func TestHashFile(t *testing.T) {
    30  	f, err := os.CreateTemp("", "cmd-go-test-")
    31  	if err != nil {
    32  		t.Fatal(err)
    33  	}
    34  	name := f.Name()
    35  	fmt.Fprintf(f, "hello world")
    36  	defer os.Remove(name)
    37  	if err := f.Close(); err != nil {
    38  		t.Fatal(err)
    39  	}
    40  
    41  	var h ActionID // make sure hash result is assignable to ActionID
    42  	h, err = FileHash(name)
    43  	if err != nil {
    44  		t.Fatal(err)
    45  	}
    46  	sum := fmt.Sprintf("%x", h)
    47  	want := "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"
    48  	if sum != want {
    49  		t.Errorf("hash(hello world) = %v, want %v", sum, want)
    50  	}
    51  }