mirror of
https://github.com/hashicorp/packer.git
synced 2026-09-21 15:31:41 -04:00
this regroups the calls of tmp func calls into one package. the tmp pkg allows to store tmp files under a common directory for easier managment Squashed commit of the following: commit74b674c015Merge:fc94b571466001525dAuthor: Matthew Patton <[email protected]> Date: Fri Nov 2 02:02:38 2018 -0400 Merge branch 'remove_TMPDIR_docs' of github.com:tb3088/packer into remove_TMPDIR_docs commitfc94b57142Author: Matthew Patton <[email protected]> Date: Fri Nov 2 01:42:38 2018 -0400 update tests to honor configured temporary directory commit5a562359f4Author: Matthew Patton <[email protected]> Date: Thu Nov 1 18:52:38 2018 -0400 sync straggler to refactor. implement tests at packer/configfile instead of buried in docker. commit9d5a4a0935Author: Matthew Patton <[email protected]> Date: Thu Nov 1 15:39:46 2018 -0400 insert URL to GoLang API for os.TempDir() commitfbae4c2e05Author: Matthew Patton <[email protected]> Date: Thu Nov 1 07:41:29 2018 -0400 revise documentation to match code commit3590fae8bdAuthor: Matthew Patton <[email protected]> Date: Thu Nov 1 07:21:59 2018 -0400 refacter config_file. replace all hard-coded os.TempDir with wrapper commitd5c5306a97Author: Matthew Patton <[email protected]> Date: Wed Oct 31 20:11:36 2018 -0400 close massive file overwrite hole with TempDir commit0a72297da8Author: Matthew Patton <[email protected]> Date: Wed Oct 31 01:06:00 2018 -0400 adjust var declaration scope commit20f68228b6Author: Matthew Patton <[email protected]> Date: Wed Oct 31 00:54:35 2018 -0400 use mktemp() equivalent to create temporary directory commitc73ebe3d83Author: Matthew Patton <[email protected]> Date: Tue Oct 30 20:40:58 2018 -0400 remove extraneous variable declaration, fix FOR loop commit63549b8bd7Author: Matthew Patton <[email protected]> Date: Tue Oct 30 19:30:44 2018 -0400 match styistic convension with rest of docs commit9761010749Author: Matthew Patton <[email protected]> Date: Tue Oct 30 19:08:39 2018 -0400 revert dangling config file change commit95159afbc0Author: Matthew Patton <[email protected]> Date: Fri Dec 29 23:53:43 2017 -0500 replace invalid TMPDIR variable wth PACKER_TMP_DIR. update ConfigTmpDir() to try common temporary paths first and only write to configDir() as a last resort. commit66001525d7Author: Matthew Patton <[email protected]> Date: Fri Nov 2 01:42:38 2018 -0400 update tests to honor configured temporary directory commite9b6adefeaAuthor: Matthew Patton <[email protected]> Date: Thu Nov 1 18:52:38 2018 -0400 sync straggler to refactor. implement tests at packer/configfile instead of buried in docker. commit852113ed07Author: Matthew Patton <[email protected]> Date: Thu Nov 1 15:39:46 2018 -0400 insert URL to GoLang API for os.TempDir() commit54add38d1dAuthor: Matthew Patton <[email protected]> Date: Thu Nov 1 07:41:29 2018 -0400 revise documentation to match code commit6b5b8f6d4eAuthor: Matthew Patton <[email protected]> Date: Thu Nov 1 07:21:59 2018 -0400 refacter config_file. replace all hard-coded os.TempDir with wrapper commitc22092c601Author: Matthew Patton <[email protected]> Date: Wed Oct 31 20:11:36 2018 -0400 close massive file overwrite hole with TempDir commit7a73045091Author: Matthew Patton <[email protected]> Date: Wed Oct 31 01:06:00 2018 -0400 adjust var declaration scope commit0f2933adb6Author: Matthew Patton <[email protected]> Date: Wed Oct 31 00:54:35 2018 -0400 use mktemp() equivalent to create temporary directory commitd74839ede0Author: Matthew Patton <[email protected]> Date: Tue Oct 30 20:40:58 2018 -0400 remove extraneous variable declaration, fix FOR loop commiteb65416619Author: Matthew Patton <[email protected]> Date: Tue Oct 30 19:30:44 2018 -0400 match styistic convension with rest of docs commitacaa2b31edAuthor: Matthew Patton <[email protected]> Date: Tue Oct 30 19:08:39 2018 -0400 revert dangling config file change commite573fde668Author: Matthew Patton <[email protected]> Date: Fri Dec 29 23:53:43 2017 -0500 replace invalid TMPDIR variable wth PACKER_TMP_DIR. update ConfigTmpDir() to try common temporary paths first and only write to configDir() as a last resort. commit39a9874afcMerge:8a413cfe83315812c2Author: Matthew Patton <[email protected]> Date: Tue Oct 30 18:19:26 2018 -0400 Merge branch 'master' of https://github.com/hashicorp/packer into prestine commit8a413cfe83Merge:e07491de54e14710a6Author: Matthew Patton <[email protected]> Date: Mon Oct 1 20:18:10 2018 -0400 Merge remote-tracking branch 'upstream/master' into prestine commite07491de59Merge:42610a35da1fa35dffAuthor: Matthew Patton <[email protected]> Date: Tue Aug 21 13:26:19 2018 -0400 Merge remote-tracking branch 'upstream/master' into prestine commit42610a35d5Merge:5298142da0d63cf7bcAuthor: Matthew Patton <[email protected]> Date: Tue Jun 19 22:45:05 2018 -0400 Merge remote-tracking branch 'upstream/master' into prestine commit5298142da6Merge:7bb110bc79d9736552Author: Matthew Patton <[email protected]> Date: Mon Jun 11 15:10:09 2018 -0400 Merge remote-tracking branch 'upstream/master' into prestine commit7bb110bc74Merge:a61c869ca6189d66e7Author: Matthew Patton <[email protected]> Date: Wed May 9 23:41:22 2018 -0400 Merge remote-tracking branch 'upstream/master' into prestine commita61c869ca7Merge:098101dd94be5f072cAuthor: Matthew Patton <[email protected]> Date: Fri May 4 10:13:04 2018 -0400 Merge remote-tracking branch 'upstream/master' into prestine commit098101dd99Merge:fefaf0fa6554b2b4a5Author: Matthew Patton <[email protected]> Date: Tue May 1 20:52:30 2018 -0400 Merge branch 'EOL-handling' into prestine Co-Authored-By: Matthew Patton <[email protected]>
85 lines
1.7 KiB
Go
85 lines
1.7 KiB
Go
package packer
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"os"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/hashicorp/packer/packer/tmp"
|
|
)
|
|
|
|
type TestCache struct{}
|
|
|
|
func (TestCache) Lock(string) string {
|
|
return ""
|
|
}
|
|
|
|
func (TestCache) Unlock(string) {}
|
|
|
|
func (TestCache) RLock(string) (string, bool) {
|
|
return "", false
|
|
}
|
|
|
|
func (TestCache) RUnlock(string) {}
|
|
|
|
func TestFileCache_Implements(t *testing.T) {
|
|
var raw interface{}
|
|
raw = &FileCache{}
|
|
if _, ok := raw.(Cache); !ok {
|
|
t.Fatal("FileCache must be a Cache")
|
|
}
|
|
}
|
|
|
|
func TestFileCache(t *testing.T) {
|
|
cacheDir, err := tmp.Dir("packer")
|
|
if err != nil {
|
|
t.Fatalf("error creating temporary dir: %s", err)
|
|
}
|
|
defer os.RemoveAll(cacheDir)
|
|
|
|
cache := &FileCache{CacheDir: cacheDir}
|
|
|
|
// Test path with no extension (GH-716)
|
|
path := cache.Lock("/foo.bar/baz")
|
|
defer cache.Unlock("/foo.bar/baz")
|
|
if strings.Contains(path, ".bar") {
|
|
t.Fatalf("bad: %s", path)
|
|
}
|
|
|
|
// Test paths with a ?
|
|
path = cache.Lock("foo.ext?foo=bar.foo")
|
|
defer cache.Unlock("foo.ext?foo=bar.foo")
|
|
if !strings.HasSuffix(path, ".ext") {
|
|
t.Fatalf("bad extension with question mark: %s", path)
|
|
}
|
|
|
|
// Test normal paths
|
|
path = cache.Lock("foo.iso")
|
|
if !strings.HasSuffix(path, ".iso") {
|
|
t.Fatalf("path doesn't end with suffix '%s': '%s'", ".iso", path)
|
|
}
|
|
|
|
err = ioutil.WriteFile(path, []byte("data"), 0666)
|
|
if err != nil {
|
|
t.Fatalf("error writing: %s", err)
|
|
}
|
|
|
|
cache.Unlock("foo.iso")
|
|
|
|
path, ok := cache.RLock("foo.iso")
|
|
if !ok {
|
|
t.Fatal("cache says key doesn't exist")
|
|
}
|
|
defer cache.RUnlock("foo.iso")
|
|
|
|
data, err := ioutil.ReadFile(path)
|
|
if err != nil {
|
|
t.Fatalf("error reading file: %s", err)
|
|
}
|
|
|
|
if string(data) != "data" {
|
|
t.Fatalf("unknown data: %s", data)
|
|
}
|
|
}
|