mirror of
				https://github.com/gohugoio/hugo.git
				synced 2024-05-11 05:54:58 +00:00 
			
		
		
		
	@@ -538,7 +538,14 @@ func (i *Image) filenameFromConfig(conf imageConfig) string {
 | 
				
			|||||||
	// for the different OSes to handle.
 | 
						// for the different OSes to handle.
 | 
				
			||||||
	if len(p1)+len(idStr)+len(p2) > md5Threshold {
 | 
						if len(p1)+len(idStr)+len(p2) > md5Threshold {
 | 
				
			||||||
		key = helpers.MD5String(p1 + key + p2)
 | 
							key = helpers.MD5String(p1 + key + p2)
 | 
				
			||||||
		p1 = p1[:strings.Index(p1, "_hu")]
 | 
							huIdx := strings.Index(p1, "_hu")
 | 
				
			||||||
 | 
							if huIdx != -1 {
 | 
				
			||||||
 | 
								p1 = p1[:huIdx]
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								// This started out as a very long file name. Making it even longer
 | 
				
			||||||
 | 
								// could melt ice in the Arctic.
 | 
				
			||||||
 | 
								p1 = ""
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	} else if strings.Contains(p1, idStr) {
 | 
						} else if strings.Contains(p1, idStr) {
 | 
				
			||||||
		// On scaling an already scaled image, we get the file info from the original.
 | 
							// On scaling an already scaled image, we get the file info from the original.
 | 
				
			||||||
		// Repeating the same info in the filename makes it stuttery for no good reason.
 | 
							// Repeating the same info in the filename makes it stuttery for no good reason.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -115,6 +115,25 @@ func TestImageTransform(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// https://github.com/gohugoio/hugo/issues/4261
 | 
				
			||||||
 | 
					func TestImageTransformLongFilename(t *testing.T) {
 | 
				
			||||||
 | 
						assert := require.New(t)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						image := fetchImage(assert, "1234567890qwertyuiopasdfghjklzxcvbnm5to6eeeeee7via8eleph.jpg")
 | 
				
			||||||
 | 
						assert.NotNil(image)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						resized, err := image.Resize("200x")
 | 
				
			||||||
 | 
						assert.NoError(err)
 | 
				
			||||||
 | 
						assert.NotNil(resized)
 | 
				
			||||||
 | 
						assert.Equal(200, resized.Width())
 | 
				
			||||||
 | 
						assert.Equal("/a/_hu59e56ffff1bc1d8d122b1403d34e039f_90587_fd0f8b23902abcf4092b68783834f7fe.jpg", resized.RelPermalink())
 | 
				
			||||||
 | 
						resized, err = resized.Resize("100x")
 | 
				
			||||||
 | 
						assert.NoError(err)
 | 
				
			||||||
 | 
						assert.NotNil(resized)
 | 
				
			||||||
 | 
						assert.Equal(100, resized.Width())
 | 
				
			||||||
 | 
						assert.Equal("/a/_hu59e56ffff1bc1d8d122b1403d34e039f_90587_5f399e62910070692b3034a925f1b2d7.jpg", resized.RelPermalink())
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestDecodeImaging(t *testing.T) {
 | 
					func TestDecodeImaging(t *testing.T) {
 | 
				
			||||||
	assert := require.New(t)
 | 
						assert := require.New(t)
 | 
				
			||||||
	m := map[string]interface{}{
 | 
						m := map[string]interface{}{
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										
											BIN
										
									
								
								resource/testdata/1234567890qwertyuiopasdfghjklzxcvbnm5to6eeeeee7via8eleph.jpg
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								resource/testdata/1234567890qwertyuiopasdfghjklzxcvbnm5to6eeeeee7via8eleph.jpg
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 88 KiB  | 
@@ -37,12 +37,16 @@ func newTestResourceSpecForBaseURL(assert *require.Assertions, baseURL string) *
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func fetchSunset(assert *require.Assertions) *Image {
 | 
					func fetchSunset(assert *require.Assertions) *Image {
 | 
				
			||||||
	src, err := os.Open("testdata/sunset.jpg")
 | 
						return fetchImage(assert, "sunset.jpg")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func fetchImage(assert *require.Assertions, name string) *Image {
 | 
				
			||||||
 | 
						src, err := os.Open("testdata/" + name)
 | 
				
			||||||
	assert.NoError(err)
 | 
						assert.NoError(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	spec := newTestResourceSpec(assert)
 | 
						spec := newTestResourceSpec(assert)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	out, err := spec.Fs.Source.Create("/b/sunset.jpg")
 | 
						out, err := spec.Fs.Source.Create("/b/" + name)
 | 
				
			||||||
	assert.NoError(err)
 | 
						assert.NoError(err)
 | 
				
			||||||
	_, err = io.Copy(out, src)
 | 
						_, err = io.Copy(out, src)
 | 
				
			||||||
	out.Close()
 | 
						out.Close()
 | 
				
			||||||
@@ -53,7 +57,7 @@ func fetchSunset(assert *require.Assertions) *Image {
 | 
				
			|||||||
		return path.Join("/a", s)
 | 
							return path.Join("/a", s)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	r, err := spec.NewResourceFromFilename(factory, "/public", "/b/sunset.jpg", "sunset.jpg")
 | 
						r, err := spec.NewResourceFromFilename(factory, "/public", "/b/"+name, name)
 | 
				
			||||||
	assert.NoError(err)
 | 
						assert.NoError(err)
 | 
				
			||||||
	assert.IsType(&Image{}, r)
 | 
						assert.IsType(&Image{}, r)
 | 
				
			||||||
	return r.(*Image)
 | 
						return r.(*Image)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user