diff options
author | jiahuili <Jiahui.Li@ibm.com> | 2021-10-07 08:36:56 -0500 |
---|---|---|
committer | Nick Vatamaniuc <nickva@users.noreply.github.com> | 2021-10-12 14:56:00 -0400 |
commit | 79f64a7897d72217780a0708ec657fcd6ef99b26 (patch) | |
tree | 25c4efc0559394f6f1f2789fd65af15cbbc82238 | |
parent | bf84c5dacf8609ad349379daf75eba361d7e85bc (diff) | |
download | couchdb-79f64a7897d72217780a0708ec657fcd6ef99b26.tar.gz |
Return empty list from fabric:inactive_index_files/1 when database doesn't exist
-rw-r--r-- | src/fabric/src/fabric.erl | 10 | ||||
-rw-r--r-- | src/fabric/test/eunit/fabric_tests.erl | 60 |
2 files changed, 67 insertions, 3 deletions
diff --git a/src/fabric/src/fabric.erl b/src/fabric/src/fabric.erl index 638603437..372f89215 100644 --- a/src/fabric/src/fabric.erl +++ b/src/fabric/src/fabric.erl @@ -504,9 +504,13 @@ cleanup_index_files() -> %% @doc clean up index files for a specific db -spec cleanup_index_files(dbname()) -> ok. cleanup_index_files(DbName) -> - lists:foreach(fun(File) -> - file:delete(File) - end, inactive_index_files(DbName)). + try lists:foreach( + fun(File) -> + file:delete(File) + end, inactive_index_files(DbName)) + catch + error:database_does_not_exist -> ok + end. %% @doc inactive index files for a specific db -spec inactive_index_files(dbname()) -> ok. diff --git a/src/fabric/test/eunit/fabric_tests.erl b/src/fabric/test/eunit/fabric_tests.erl new file mode 100644 index 000000000..53995933b --- /dev/null +++ b/src/fabric/test/eunit/fabric_tests.erl @@ -0,0 +1,60 @@ +% Licensed under the Apache License, Version 2.0 (the "License"); you may not +% use this file except in compliance with the License. You may obtain a copy of +% the License at +% +% http://www.apache.org/licenses/LICENSE-2.0 +% +% Unless required by applicable law or agreed to in writing, software +% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +% License for the specific language governing permissions and limitations under +% the License. + +-module(fabric_tests). + + +-include_lib("couch/include/couch_eunit.hrl"). + + +cleanup_index_files_test_() -> + { + setup, + fun setup/0, + fun teardown/1, + fun(Ctx) -> [ + t_cleanup_index_files(), + t_cleanup_index_files_with_existing_db(Ctx), + t_cleanup_index_files_with_deleted_db(Ctx) + ] end + }. + + +setup() -> + Ctx = test_util:start_couch([fabric]), + % TempDb is deleted in the test "t_cleanup_index_files_with_deleted_db". + TempDb = ?tempdb(), + fabric:create_db(TempDb), + {Ctx, TempDb}. + + +teardown({Ctx, _TempDb}) -> + test_util:stop_couch(Ctx). + + +t_cleanup_index_files() -> + ?_assert( + lists:all(fun(Res) -> Res =:= ok end, fabric:cleanup_index_files())). + + +t_cleanup_index_files_with_existing_db({_Ctx, TempDb}) -> + ?_assertEqual(ok, fabric:cleanup_index_files(TempDb)). + + +t_cleanup_index_files_with_deleted_db({_Ctx, TempDb}) -> + ?_test( + begin + fabric:delete_db(TempDb, []), + ?assertError(database_does_not_exist, + fabric:inactive_index_files(TempDb)), + ?assertEqual(ok, fabric:cleanup_index_files(TempDb)) + end). |