mirror of
				https://github.com/golang/go.git
				synced 2025-10-31 08:40:55 +00:00 
			
		
		
		
	build: catch API changes during build
Adds new file api/go1.txt, locking down the current API. Any changes to the API will need to update that file. run.bash (but not make.bash, or Windows) will check for accidental API changes. R=golang-dev, dsymonds, rsc CC=golang-dev https://golang.org/cl/5820070
This commit is contained in:
		
							parent
							
								
									883a96d950
								
							
						
					
					
						commit
						f69132d7ad
					
				
					 3 changed files with 24541 additions and 4 deletions
				
			
		
							
								
								
									
										24524
									
								
								api/go1.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24524
									
								
								api/go1.txt
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -131,7 +131,7 @@ func main() { | |||
| 		if err != nil { | ||||
| 			log.Fatalf("Error reading file %s: %v", *checkFile, err) | ||||
| 		} | ||||
| 		v1 := strings.Split(string(bs), "\n") | ||||
| 		v1 := strings.Split(strings.TrimSpace(string(bs)), "\n") | ||||
| 		sort.Strings(v1) | ||||
| 		v2 := features | ||||
| 		take := func(sl *[]string) string { | ||||
|  | @ -139,17 +139,24 @@ func main() { | |||
| 			*sl = (*sl)[1:] | ||||
| 			return s | ||||
| 		} | ||||
| 		changes := false | ||||
| 		for len(v1) > 0 || len(v2) > 0 { | ||||
| 			switch { | ||||
| 			case len(v2) == 0 || v1[0] < v2[0]: | ||||
| 				fmt.Fprintf(bw, "-%s\n", take(&v1)) | ||||
| 				changes = true | ||||
| 			case len(v1) == 0 || v1[0] > v2[0]: | ||||
| 				fmt.Fprintf(bw, "+%s\n", take(&v2)) | ||||
| 				changes = true | ||||
| 			default: | ||||
| 				take(&v1) | ||||
| 				take(&v2) | ||||
| 			} | ||||
| 		} | ||||
| 		if changes { | ||||
| 			bw.Flush() | ||||
| 			os.Exit(1) | ||||
| 		} | ||||
| 	} else { | ||||
| 		for _, f := range features { | ||||
| 			fmt.Fprintf(bw, "%s\n", f) | ||||
|  | @ -284,7 +291,9 @@ func (w *Walker) WalkPackage(name string) { | |||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	if *verbose { | ||||
| 		log.Printf("package %s", name) | ||||
| 	} | ||||
| 	pop := w.pushScope("pkg " + name) | ||||
| 	defer pop() | ||||
| 
 | ||||
|  |  | |||
|  | @ -74,7 +74,7 @@ make clean | |||
| 
 | ||||
| echo | ||||
| echo '#' ../misc/dashboard/builder ../misc/goplay | ||||
| go build ../misc/dashboard/builder ../misc/goplay || exit $? | ||||
| go build ../misc/dashboard/builder ../misc/goplay | ||||
| 
 | ||||
| [ "$GOARCH" == arm ] || | ||||
| (xcd ../test/bench/shootout | ||||
|  | @ -83,11 +83,15 @@ go build ../misc/dashboard/builder ../misc/goplay || exit $? | |||
| 
 | ||||
| echo | ||||
| echo '#' ../test/bench/go1 | ||||
| go test ../test/bench/go1 || exit $? | ||||
| go test ../test/bench/go1 | ||||
| 
 | ||||
| (xcd ../test | ||||
| time go run run.go | ||||
| ) || exit $? | ||||
| 
 | ||||
| echo | ||||
| echo '# Checking API compatibility.' | ||||
| go tool api -c $GOROOT/api/go1.txt | ||||
| 
 | ||||
| echo | ||||
| echo ALL TESTS PASSED | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Brad Fitzpatrick
						Brad Fitzpatrick