mirror of
https://github.com/octoleo/syncthing.git
synced 2024-11-08 22:31:04 +00:00
This will: 1. prevent creation of a new .stignore if there are no ignore patterns 2. delete an existing .stignore if all ignore patterns are removed
This commit is contained in:
parent
0bec01b827
commit
b3fd9a8d53
@ -545,6 +545,14 @@ func parseIgnoreFile(fs fs.Filesystem, fd io.Reader, currentFile string, cd Chan
|
||||
|
||||
// WriteIgnores is a convenience function to avoid code duplication
|
||||
func WriteIgnores(filesystem fs.Filesystem, path string, content []string) error {
|
||||
if len(content) == 0 {
|
||||
err := filesystem.Remove(path)
|
||||
if fs.IsNotExist(err) {
|
||||
return nil
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
fd, err := osutil.CreateAtomicFilesystem(filesystem, path)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -1514,6 +1514,41 @@ func TestIgnores(t *testing.T) {
|
||||
changeIgnores(t, m, []string{})
|
||||
}
|
||||
|
||||
func TestEmptyIgnores(t *testing.T) {
|
||||
testOs := &fatalOs{t}
|
||||
|
||||
// Assure a clean start state
|
||||
testOs.RemoveAll(filepath.Join("testdata", config.DefaultMarkerName))
|
||||
testOs.MkdirAll(filepath.Join("testdata", config.DefaultMarkerName), 0644)
|
||||
|
||||
m := setupModel(defaultCfgWrapper)
|
||||
defer cleanupModel(m)
|
||||
|
||||
m.removeFolder(defaultFolderConfig)
|
||||
m.addFolder(defaultFolderConfig)
|
||||
|
||||
if err := m.SetIgnores("default", []string{}); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if _, err := os.Stat("testdata/.stignore"); err == nil {
|
||||
t.Error(".stignore was created despite being empty")
|
||||
}
|
||||
|
||||
if err := m.SetIgnores("default", []string{".*", "quux"}); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if _, err := os.Stat("testdata/.stignore"); os.IsNotExist(err) {
|
||||
t.Error(".stignore does not exist")
|
||||
}
|
||||
|
||||
if err := m.SetIgnores("default", []string{}); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if _, err := os.Stat("testdata/.stignore"); err == nil {
|
||||
t.Error(".stignore should have been deleted because it is empty")
|
||||
}
|
||||
}
|
||||
|
||||
func waitForState(t *testing.T, m *model, folder, status string) {
|
||||
t.Helper()
|
||||
timeout := time.Now().Add(2 * time.Second)
|
||||
|
Loading…
Reference in New Issue
Block a user