diff --git a/v2/common/testing_common.go b/v2/common/testing_common.go index 061a6f0..dfbdf44 100644 --- a/v2/common/testing_common.go +++ b/v2/common/testing_common.go @@ -13,8 +13,8 @@ import ( var ( assetsPath = "" testImageFilepath = "" - - testExifData = make([]byte, 0) + testExifData = make([]byte, 0) + moduleRootPath = "" // EncodeDefaultByteOrder is the default byte-order for encoding operations. EncodeDefaultByteOrder = binary.BigEndian @@ -24,6 +24,10 @@ var ( ) func GetModuleRootPath() string { + if moduleRootPath != "" { + return moduleRootPath + } + moduleRootPath := os.Getenv("EXIF_MODULE_ROOT_PATH") if moduleRootPath != "" { return moduleRootPath @@ -56,17 +60,32 @@ func GetModuleRootPath() string { return currentPath } -func init() { - moduleRootPath := GetModuleRootPath() - assetsPath = path.Join(moduleRootPath, "assets") +func getTestAssetsPath() string { + if assetsPath == "" { + moduleRootPath := GetModuleRootPath() + assetsPath = path.Join(moduleRootPath, "assets") + } - testImageFilepath = path.Join(assetsPath, "NDM_8901.jpg") + return assetsPath +} - // Load test EXIF data. +func getTestImageFilepath() string { + if testImageFilepath == "" { + assetsPath := getTestAssetsPath() + testImageFilepath = path.Join(assetsPath, "NDM_8901.jpg") + } + return testImageFilepath +} + +func getTestExifData() []byte { + assetsPath := getTestAssetsPath() filepath := path.Join(assetsPath, "NDM_8901.jpg.exif") var err error + testExifData, err = ioutil.ReadFile(filepath) log.PanicIf(err) + + return testExifData } diff --git a/v2/exif_test.go b/v2/exif_test.go index a3edf93..f8ba7cf 100644 --- a/v2/exif_test.go +++ b/v2/exif_test.go @@ -39,6 +39,8 @@ func TestVisit(t *testing.T) { // Open the file. + testImageFilepath := getTestImageFilepath() + f, err := os.Open(testImageFilepath) log.PanicIf(err) @@ -194,23 +196,31 @@ func TestVisit(t *testing.T) { } func TestSearchFileAndExtractExif(t *testing.T) { + testImageFilepath := getTestImageFilepath() + // Returns a slice starting with the EXIF data and going to the end of the // image. rawExif, err := SearchFileAndExtractExif(testImageFilepath) log.PanicIf(err) + testExifData := getTestExifData() + if bytes.Compare(rawExif[:len(testExifData)], testExifData) != 0 { t.Fatalf("found EXIF data not correct") } } func TestSearchAndExtractExif(t *testing.T) { + testImageFilepath := getTestImageFilepath() + imageData, err := ioutil.ReadFile(testImageFilepath) log.PanicIf(err) rawExif, err := SearchAndExtractExif(imageData) log.PanicIf(err) + testExifData := getTestExifData() + if bytes.Compare(rawExif[:len(testExifData)], testExifData) != 0 { t.Fatalf("found EXIF data not correct") } @@ -226,6 +236,8 @@ func TestCollect(t *testing.T) { } }() + testImageFilepath := getTestImageFilepath() + rawExif, err := SearchFileAndExtractExif(testImageFilepath) log.PanicIf(err) @@ -341,6 +353,8 @@ func TestCollect(t *testing.T) { } func TestParseExifHeader(t *testing.T) { + testExifData := getTestExifData() + eh, err := ParseExifHeader(testExifData) log.PanicIf(err) diff --git a/v2/ifd_builder_test.go b/v2/ifd_builder_test.go index da5e8b3..6d19b19 100644 --- a/v2/ifd_builder_test.go +++ b/v2/ifd_builder_test.go @@ -1293,6 +1293,8 @@ func TestIfdBuilder_CreateIfdBuilderFromExistingChain(t *testing.T) { } }() + testImageFilepath := getTestImageFilepath() + rawExif, err := SearchFileAndExtractExif(testImageFilepath) log.PanicIf(err) @@ -1386,6 +1388,8 @@ func TestIfdBuilder_CreateIfdBuilderFromExistingChain(t *testing.T) { // TODO(dustin): !! Test with an actual GPS-attached image. func TestIfdBuilder_CreateIfdBuilderFromExistingChain_RealData(t *testing.T) { + testImageFilepath := getTestImageFilepath() + rawExif, err := SearchFileAndExtractExif(testImageFilepath) log.PanicIf(err) @@ -1507,6 +1511,8 @@ func TestIfdBuilder_CreateIfdBuilderFromExistingChain_RealData(t *testing.T) { } // func TestIfdBuilder_CreateIfdBuilderFromExistingChain_RealData_WithUpdate(t *testing.T) { +// testImageFilepath := getTestImageFilepath() + // rawExif, err := SearchFileAndExtractExif(testImageFilepath) // log.PanicIf(err) @@ -1644,6 +1650,8 @@ func TestIfdBuilder_CreateIfdBuilderFromExistingChain_RealData(t *testing.T) { // } func ExampleIfd_Thumbnail() { + testImageFilepath := getTestImageFilepath() + rawExif, err := SearchFileAndExtractExif(testImageFilepath) log.PanicIf(err) @@ -1665,6 +1673,8 @@ func ExampleIfd_Thumbnail() { } func ExampleBuilderTag_SetValue() { + testImageFilepath := getTestImageFilepath() + rawExif, err := SearchFileAndExtractExif(testImageFilepath) log.PanicIf(err) @@ -1718,6 +1728,8 @@ func ExampleBuilderTag_SetValue() { // encodes down to a new EXIF block, reparses, and validates that the value for // that tag is what we set it to. func ExampleIfdBuilder_SetStandardWithName() { + testImageFilepath := getTestImageFilepath() + rawExif, err := SearchFileAndExtractExif(testImageFilepath) log.PanicIf(err) diff --git a/v2/ifd_enumerate_test.go b/v2/ifd_enumerate_test.go index c5db824..b0cc0a8 100644 --- a/v2/ifd_enumerate_test.go +++ b/v2/ifd_enumerate_test.go @@ -22,6 +22,8 @@ func TestIfdTagEntry_RawBytes_RealData(t *testing.T) { } }() + testImageFilepath := getTestImageFilepath() + rawExif, err := SearchFileAndExtractExif(testImageFilepath) log.PanicIf(err) @@ -61,6 +63,7 @@ func TestIfdTagEntry_RawBytes_RealData(t *testing.T) { } func TestIfd_FindTagWithId_Hit(t *testing.T) { + testImageFilepath := getTestImageFilepath() rawExif, err := SearchFileAndExtractExif(testImageFilepath) log.PanicIf(err) @@ -85,6 +88,8 @@ func TestIfd_FindTagWithId_Hit(t *testing.T) { } func TestIfd_FindTagWithId_Miss(t *testing.T) { + testImageFilepath := getTestImageFilepath() + rawExif, err := SearchFileAndExtractExif(testImageFilepath) log.PanicIf(err) @@ -109,6 +114,8 @@ func TestIfd_FindTagWithId_Miss(t *testing.T) { } func TestIfd_FindTagWithName_Hit(t *testing.T) { + testImageFilepath := getTestImageFilepath() + rawExif, err := SearchFileAndExtractExif(testImageFilepath) log.PanicIf(err) @@ -133,6 +140,8 @@ func TestIfd_FindTagWithName_Hit(t *testing.T) { } func TestIfd_FindTagWithName_Miss(t *testing.T) { + testImageFilepath := getTestImageFilepath() + rawExif, err := SearchFileAndExtractExif(testImageFilepath) log.PanicIf(err) @@ -157,6 +166,8 @@ func TestIfd_FindTagWithName_Miss(t *testing.T) { } func TestIfd_FindTagWithName_NonStandard(t *testing.T) { + testImageFilepath := getTestImageFilepath() + rawExif, err := SearchFileAndExtractExif(testImageFilepath) log.PanicIf(err) @@ -181,6 +192,8 @@ func TestIfd_FindTagWithName_NonStandard(t *testing.T) { } func TestIfd_Thumbnail(t *testing.T) { + testImageFilepath := getTestImageFilepath() + rawExif, err := SearchFileAndExtractExif(testImageFilepath) log.PanicIf(err) @@ -257,6 +270,8 @@ func TestIfd_GpsInfo(t *testing.T) { } func TestIfd_EnumerateTagsRecursively(t *testing.T) { + testImageFilepath := getTestImageFilepath() + rawExif, err := SearchFileAndExtractExif(testImageFilepath) log.PanicIf(err) @@ -413,6 +428,8 @@ func TestIfd_EnumerateTagsRecursively(t *testing.T) { } func ExampleIfd_EnumerateTagsRecursively() { + testImageFilepath := getTestImageFilepath() + rawExif, err := SearchFileAndExtractExif(testImageFilepath) log.PanicIf(err) @@ -468,6 +485,8 @@ func ExampleIfd_GpsInfo() { } func ExampleIfd_FindTagWithName() { + testImageFilepath := getTestImageFilepath() + rawExif, err := SearchFileAndExtractExif(testImageFilepath) log.PanicIf(err) diff --git a/v2/testing_common.go b/v2/testing_common.go index 9e9a796..c9d27ae 100644 --- a/v2/testing_common.go +++ b/v2/testing_common.go @@ -158,17 +158,32 @@ func validateExifSimpleTestIb(exifData []byte, t *testing.T) { } } -func init() { - moduleRootPath := exifcommon.GetModuleRootPath() - assetsPath = path.Join(moduleRootPath, "assets") +func getTestAssetsPath() string { + if assetsPath == "" { + moduleRootPath := exifcommon.GetModuleRootPath() + assetsPath = path.Join(moduleRootPath, "assets") + } - testImageFilepath = path.Join(assetsPath, "NDM_8901.jpg") + return assetsPath +} - // Load test EXIF data. +func getTestImageFilepath() string { + if testImageFilepath == "" { + assetsPath := getTestAssetsPath() + testImageFilepath = path.Join(assetsPath, "NDM_8901.jpg") + } + return testImageFilepath +} + +func getTestExifData() []byte { + assetsPath := getTestAssetsPath() filepath := path.Join(assetsPath, "NDM_8901.jpg.exif") var err error + testExifData, err = ioutil.ReadFile(filepath) log.PanicIf(err) + + return testExifData }