Fixes #14 Add tag to tagless file if dirtied

develop
Michael Yang 2014-07-10 20:50:35 -04:00
rodzic 85a5c67234
commit 15ff69e561
2 zmienionych plików z 41 dodań i 1 usunięć

7
id3.go
Wyświetl plik

@ -10,6 +10,10 @@ import (
"os"
)
const (
LatestVersion = 3
)
// Tagger represents the metadata of a tag
type Tagger interface {
Title() string
@ -57,7 +61,8 @@ func Open(name string) (*File, error) {
} else if v1Tag := v1.ParseTag(fi); v1Tag != nil {
file.Tagger = v1Tag
} else {
return nil, errors.New("Open: unknown tag format")
// Add a new tag if none exists
file.Tagger = v2.NewTag(LatestVersion)
}
return file, nil

Wyświetl plik

@ -125,6 +125,41 @@ func TestReadonly(t *testing.T) {
}
}
func TestAddTag(t *testing.T) {
tempFile, err := ioutil.TempFile("", "notag")
if err != nil {
t.Fatal(err)
}
file, err := Open(tempFile.Name())
if err != nil {
t.Errorf("AddTag: unable to open empty file")
}
tag := file.Tagger
if tag == nil {
t.Errorf("AddTag: no tag added to file")
}
file.SetArtist("Michael")
err = file.Close()
if err != nil {
t.Errorf("AddTag: error closing new file")
}
reopenBytes, err := ioutil.ReadFile(tempFile.Name())
if err != nil {
t.Errorf("AddTag: error reopening file")
}
expectedBytes := tag.Bytes()
if !bytes.Equal(expectedBytes, reopenBytes) {
t.Errorf("AddTag: tag not written correctly: %v", reopenBytes)
}
}
func TestUnsynchTextFrame_RoundTrip(t *testing.T) {
var (
err error