| package vendor |
| |
| import ( |
| "bytes" |
| "os" |
| "path/filepath" |
| "testing" |
| |
| "github.com/FiloSottile/gvt/fileutils" |
| ) |
| |
| func mktemp(t *testing.T) string { |
| s, err := mktmp() |
| if err != nil { |
| t.Fatal(err) |
| } |
| return s |
| } |
| |
| func assertNotExists(t *testing.T, path string) { |
| _, err := os.Stat(path) |
| if err == nil || !os.IsNotExist(err) { |
| t.Fatalf("expected %q to be not found, got %v", path, err) |
| } |
| } |
| |
| func assertExists(t *testing.T, path string) { |
| _, err := os.Stat(path) |
| if err != nil { |
| t.Fatalf("expected %q to be found, got %v", path, err) |
| } |
| } |
| |
| func TestManifest(t *testing.T) { |
| root := mktemp(t) |
| defer fileutils.RemoveAll(root) |
| |
| mf := filepath.Join(root, "vendor") |
| |
| // check that reading an nonexistent manifest |
| // does not return an error |
| m, err := ReadManifest(mf) |
| if err != nil { |
| t.Fatalf("reading a non existant manifest should not fail: %v", err) |
| } |
| |
| // check that no manifest file was created |
| assertNotExists(t, mf) |
| |
| // add a dep |
| m.Dependencies = append(m.Dependencies, Dependency{ |
| Importpath: "github.com/foo/bar/baz", |
| Repository: "https://github.com/foo/bar", |
| Revision: "cafebad", |
| Branch: "master", |
| Path: "/baz", |
| }) |
| |
| // write it back |
| if err := WriteManifest(mf, m); err != nil { |
| t.Fatalf("WriteManifest failed: %v", err) |
| } |
| |
| // check the manifest was written |
| assertExists(t, mf) |
| |
| // remove it |
| m.Dependencies = nil |
| if err := WriteManifest(mf, m); err != nil { |
| t.Fatalf("WriteManifest failed: %v", err) |
| } |
| |
| // check that no manifest file was removed |
| assertNotExists(t, mf) |
| } |
| |
| func TestEmptyPathIsNotWritten(t *testing.T) { |
| m := Manifest{ |
| Version: 0, |
| Dependencies: []Dependency{{ |
| Importpath: "github.com/foo/bar", |
| Repository: "https://github.com/foo/bar", |
| VCS: "git", |
| Revision: "abcdef", |
| Branch: "master", |
| }}, |
| } |
| var buf bytes.Buffer |
| if err := writeManifest(&buf, &m); err != nil { |
| t.Fatal(err) |
| } |
| want := `{ |
| "version": 0, |
| "dependencies": [ |
| { |
| "importpath": "github.com/foo/bar", |
| "repository": "https://github.com/foo/bar", |
| "vcs": "git", |
| "revision": "abcdef", |
| "branch": "master" |
| } |
| ] |
| }` |
| got := buf.String() |
| if want != got { |
| t.Fatalf("want: %s, got %s", want, got) |
| } |
| } |