Source file src/math/big/internal/asmgen/main_test.go

     1  // Copyright 2025 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 asmgen
     6  
     7  import (
     8  	"bytes"
     9  	"flag"
    10  	"internal/diff"
    11  	"os"
    12  	"testing"
    13  )
    14  
    15  var generateFlag = flag.Bool("generate", false, "generate files")
    16  
    17  func Test(t *testing.T) {
    18  	for _, arch := range arches {
    19  		t.Run(arch.Name, func(t *testing.T) {
    20  			file, data := generate(arch)
    21  			old, err := os.ReadFile("../../" + file)
    22  			if err == nil && bytes.Equal(old, data) {
    23  				return
    24  			}
    25  			if *generateFlag {
    26  				if err := os.WriteFile("../../"+file, data, 0o666); err != nil {
    27  					t.Fatal(err)
    28  				}
    29  				return
    30  			}
    31  			if err != nil {
    32  				t.Fatal(err)
    33  			}
    34  			t.Fatalf("generated assembly differs:\n%s\n", diff.Diff("../../"+file, old, "regenerated", data))
    35  		})
    36  	}
    37  }
    38  

View as plain text