mirror of
				https://github.com/restic/restic.git
				synced 2025-11-04 03:56:52 +00:00 
			
		
		
		
	repository: Add test for ForAllIndexes
This commit is contained in:
		
							
								
								
									
										46
									
								
								internal/repository/index_parallel_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								internal/repository/index_parallel_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,46 @@
 | 
				
			|||||||
 | 
					package repository_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/restic/restic/internal/errors"
 | 
				
			||||||
 | 
						"github.com/restic/restic/internal/repository"
 | 
				
			||||||
 | 
						"github.com/restic/restic/internal/restic"
 | 
				
			||||||
 | 
						rtest "github.com/restic/restic/internal/test"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestRepositoryForAllIndexes(t *testing.T) {
 | 
				
			||||||
 | 
						repodir, cleanup := rtest.Env(t, repoFixture)
 | 
				
			||||||
 | 
						defer cleanup()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						repo := repository.TestOpenLocal(t, repodir)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						expectedIndexIDs := restic.NewIDSet()
 | 
				
			||||||
 | 
						rtest.OK(t, repo.List(context.TODO(), restic.IndexFile, func(id restic.ID, size int64) error {
 | 
				
			||||||
 | 
							expectedIndexIDs.Insert(id)
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						}))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// check that all expected indexes are loaded without errors
 | 
				
			||||||
 | 
						indexIDs := restic.NewIDSet()
 | 
				
			||||||
 | 
						var indexErr error
 | 
				
			||||||
 | 
						rtest.OK(t, repository.ForAllIndexes(context.TODO(), repo, func(id restic.ID, index *repository.Index, oldFormat bool, err error) error {
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								indexErr = err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							indexIDs.Insert(id)
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						}))
 | 
				
			||||||
 | 
						rtest.OK(t, indexErr)
 | 
				
			||||||
 | 
						rtest.Equals(t, expectedIndexIDs, indexIDs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// must failed with the returned error
 | 
				
			||||||
 | 
						iterErr := errors.New("error to pass upwards")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err := repository.ForAllIndexes(context.TODO(), repo, func(id restic.ID, index *repository.Index, oldFormat bool, err error) error {
 | 
				
			||||||
 | 
							return iterErr
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						rtest.Equals(t, iterErr, err)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user