mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 02:46:04 +01:00 
			
		
		
		
	Fix a bug where lfs gc never worked. (#35198)
Fix #31113 After #22385 introduced LFS GC, it never worked due to a bug in the INI library: fields in structs embedded more than one level deep are not populated from the INI file. This PR fixes the issue by replacing the multi-level embedded struct with a single-level struct for parsing the cron.gc_lfs configuration. Added a new test for retrieving cron settings to demonstrate the bug in the INI package.
This commit is contained in:
		| @@ -41,3 +41,56 @@ EXTEND = true | ||||
| 	assert.Equal(t, "white rabbit", extended.Second) | ||||
| 	assert.True(t, extended.Extend) | ||||
| } | ||||
|  | ||||
| // Test_getCronSettings2 tests that getCronSettings can not handle two levels of embedding | ||||
| func Test_getCronSettings2(t *testing.T) { | ||||
| 	type BaseStruct struct { | ||||
| 		Enabled    bool | ||||
| 		RunAtStart bool | ||||
| 		Schedule   string | ||||
| 	} | ||||
|  | ||||
| 	type Extended struct { | ||||
| 		BaseStruct | ||||
| 		Extend bool | ||||
| 	} | ||||
| 	type Extended2 struct { | ||||
| 		Extended | ||||
| 		Third string | ||||
| 	} | ||||
|  | ||||
| 	iniStr := ` | ||||
| [cron.test] | ||||
| ENABLED = TRUE | ||||
| RUN_AT_START = TRUE | ||||
| SCHEDULE = @every 1h | ||||
| EXTEND = true | ||||
| THIRD = white rabbit | ||||
| ` | ||||
| 	cfg, err := NewConfigProviderFromData(iniStr) | ||||
| 	assert.NoError(t, err) | ||||
|  | ||||
| 	extended := &Extended2{ | ||||
| 		Extended: Extended{ | ||||
| 			BaseStruct: BaseStruct{ | ||||
| 				Enabled:    false, | ||||
| 				RunAtStart: false, | ||||
| 				Schedule:   "@every 72h", | ||||
| 			}, | ||||
| 			Extend: false, | ||||
| 		}, | ||||
| 		Third: "black rabbit", | ||||
| 	} | ||||
|  | ||||
| 	_, err = getCronSettings(cfg, "test", extended) | ||||
| 	assert.NoError(t, err) | ||||
|  | ||||
| 	// This confirms the first level of embedding works | ||||
| 	assert.Equal(t, "white rabbit", extended.Third) | ||||
| 	assert.True(t, extended.Extend) | ||||
|  | ||||
| 	// This confirms 2 levels of embedding doesn't work | ||||
| 	assert.False(t, extended.Enabled) | ||||
| 	assert.False(t, extended.RunAtStart) | ||||
| 	assert.Equal(t, "@every 72h", extended.Schedule) | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user