mirror of
https://github.com/golang/go
synced 2024-11-18 12:54:44 -07:00
84d0e3d1cc
A bunch of options are added to enable long-running performance-oriented tests in existing directories. They will be used in a later CL to implement a simple stress test, as an example of what is possible. Change-Id: I531b201b415362ea135978238b3d64b903226359 Reviewed-on: https://go-review.googlesource.com/c/tools/+/244440 Run-TryBot: Robert Findley <rfindley@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Heschi Kreinick <heschi@google.com>
37 lines
1.1 KiB
Go
37 lines
1.1 KiB
Go
// Copyright 2020 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package fake
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"golang.org/x/tools/internal/proxydir"
|
|
)
|
|
|
|
// WriteProxy creates a new proxy file tree using the txtar-encoded content,
|
|
// and returns its URL.
|
|
func WriteProxy(tmpdir, txt string) (string, error) {
|
|
files := unpackTxt(txt)
|
|
type moduleVersion struct {
|
|
modulePath, version string
|
|
}
|
|
// Transform into the format expected by the proxydir package.
|
|
filesByModule := make(map[moduleVersion]map[string][]byte)
|
|
for name, data := range files {
|
|
modulePath, version, suffix := splitModuleVersionPath(name)
|
|
mv := moduleVersion{modulePath, version}
|
|
if _, ok := filesByModule[mv]; !ok {
|
|
filesByModule[mv] = make(map[string][]byte)
|
|
}
|
|
filesByModule[mv][suffix] = data
|
|
}
|
|
for mv, files := range filesByModule {
|
|
if err := proxydir.WriteModuleVersion(tmpdir, mv.modulePath, mv.version, files); err != nil {
|
|
return "", fmt.Errorf("error writing %s@%s: %v", mv.modulePath, mv.version, err)
|
|
}
|
|
}
|
|
return proxydir.ToURL(tmpdir), nil
|
|
}
|