mirror of
https://github.com/octoleo/syncthing.git
synced 2025-02-02 11:58:28 +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
|
// WriteIgnores is a convenience function to avoid code duplication
|
||||||
func WriteIgnores(filesystem fs.Filesystem, path string, content []string) error {
|
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)
|
fd, err := osutil.CreateAtomicFilesystem(filesystem, path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -1514,6 +1514,41 @@ func TestIgnores(t *testing.T) {
|
|||||||
changeIgnores(t, m, []string{})
|
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) {
|
func waitForState(t *testing.T, m *model, folder, status string) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
timeout := time.Now().Add(2 * time.Second)
|
timeout := time.Now().Add(2 * time.Second)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user