-
Notifications
You must be signed in to change notification settings - Fork 322
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Change writer api to match stdlib as well.
- Loading branch information
Showing
11 changed files
with
3,213 additions
and
405 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
// Copyright 2019 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 obscuretestdata contains functionality used by tests to more easily | ||
// work with testdata that must be obscured primarily due to | ||
// golang.org/issue/34986. | ||
package obscuretestdata | ||
|
||
import ( | ||
"encoding/base64" | ||
"io" | ||
"os" | ||
) | ||
|
||
// DecodeToTempFile decodes the named file to a temporary location. | ||
// If successful, it returns the path of the decoded file. | ||
// The caller is responsible for ensuring that the temporary file is removed. | ||
func DecodeToTempFile(name string) (path string, err error) { | ||
f, err := os.Open(name) | ||
if err != nil { | ||
return "", err | ||
} | ||
defer f.Close() | ||
|
||
tmp, err := os.CreateTemp("", "obscuretestdata-decoded-") | ||
if err != nil { | ||
return "", err | ||
} | ||
if _, err := io.Copy(tmp, base64.NewDecoder(base64.StdEncoding, f)); err != nil { | ||
tmp.Close() | ||
os.Remove(tmp.Name()) | ||
return "", err | ||
} | ||
if err := tmp.Close(); err != nil { | ||
os.Remove(tmp.Name()) | ||
return "", err | ||
} | ||
return tmp.Name(), nil | ||
} | ||
|
||
// ReadFile reads the named file and returns its decoded contents. | ||
func ReadFile(name string) ([]byte, error) { | ||
f, err := os.Open(name) | ||
if err != nil { | ||
return nil, err | ||
} | ||
defer f.Close() | ||
return io.ReadAll(base64.NewDecoder(base64.StdEncoding, f)) | ||
} |
Oops, something went wrong.