diff options
author | Jack Lloyd <[email protected]> | 2016-09-17 17:18:10 -0400 |
---|---|---|
committer | Jack Lloyd <[email protected]> | 2016-10-07 22:21:37 -0400 |
commit | 2fdb81309f5d5dc138950facfdd94a2593236321 (patch) | |
tree | 0d5c976ce84dc23e7e8e8014b4021303554b9868 /src/tests | |
parent | fc03b27a44e83901a6fe319d783e2af41e162367 (diff) |
Add missing try/catch blocks.
Document that create_*_op is public but not for public consumption.
Diffstat (limited to 'src/tests')
-rw-r--r-- | src/tests/main.cpp | 29 | ||||
-rw-r--r-- | src/tests/test_pubkey.cpp | 26 | ||||
-rw-r--r-- | src/tests/tests.cpp | 12 |
3 files changed, 55 insertions, 12 deletions
diff --git a/src/tests/main.cpp b/src/tests/main.cpp index b771d9614..d80049d53 100644 --- a/src/tests/main.cpp +++ b/src/tests/main.cpp @@ -312,14 +312,29 @@ int main(int argc, char* argv[]) BOTAN_VERSION_MINOR, BOTAN_VERSION_PATCH); - std::unique_ptr<Botan_CLI::Command> cmd(Botan_CLI::Command::get_cmd("test")); + try + { + std::unique_ptr<Botan_CLI::Command> cmd(Botan_CLI::Command::get_cmd("test")); - if(!cmd) + if(!cmd) + { + std::cout << "Unable to retrieve testing helper (program bug)\n"; // WTF + return 1; + } + + std::vector<std::string> args(argv + 1, argv + argc); + return cmd->run(args); + } + catch(Botan::Exception& e) { - std::cout << "Unable to retrieve testing helper (program bug)\n"; // WTF - return 1; + std::cout << "Exiting with library exception " << e.what() << std::endl; + } + catch(std::exception& e) + { + std::cout << "Exiting with std exception " << e.what() << std::endl; + } + catch(...) + { + std::cout << "Exiting with unknown exception\n"; } - - std::vector<std::string> args(argv + 1, argv + argc); - return cmd->run(args); } diff --git a/src/tests/test_pubkey.cpp b/src/tests/test_pubkey.cpp index 66069f110..0532eee03 100644 --- a/src/tests/test_pubkey.cpp +++ b/src/tests/test_pubkey.cpp @@ -218,9 +218,12 @@ PK_Encryption_Decryption_Test::run_one_test(const std::string&, const VarMap& va { encryptor.reset(new Botan::PK_Encryptor_EME(*pubkey, Test::rng(),padding, enc_provider)); } + catch(Botan::Provider_Not_Found&) + { + continue; + } catch(Botan::Lookup_Error&) { - //result.test_note("Skipping encryption with provider " + enc_provider); continue; } @@ -247,9 +250,12 @@ PK_Encryption_Decryption_Test::run_one_test(const std::string&, const VarMap& va { decryptor.reset(new Botan::PK_Decryptor_EME(*privkey, Test::rng(), padding, dec_provider)); } + catch(Botan::Provider_Not_Found&) + { + continue; + } catch(Botan::Lookup_Error&) { - //result.test_note("Skipping decryption with provider " + dec_provider); continue; } @@ -287,6 +293,11 @@ Test::Result PK_KEM_Test::run_one_test(const std::string&, const VarMap& vars) { enc.reset(new Botan::PK_KEM_Encryptor(pubkey, Test::rng(), kdf)); } + catch(Botan::Provider_Not_Found& e) + { + result.test_note("Skipping test", e.what()); + return result; + } catch(Botan::Lookup_Error&) { result.test_note("Skipping due to missing KDF: " + kdf); @@ -310,8 +321,14 @@ Test::Result PK_KEM_Test::run_one_test(const std::string&, const VarMap& vars) { dec.reset(new Botan::PK_KEM_Decryptor(*privkey, Test::rng(), kdf)); } - catch(Botan::Lookup_Error&) + catch(Botan::Provider_Not_Found& e) { + result.test_note("Skipping test", e.what()); + return result; + } + catch(Botan::Lookup_Error& e) + { + result.test_note("Skipping test", e.what()); return result; } @@ -349,6 +366,9 @@ Test::Result PK_Key_Agreement_Test::run_one_test(const std::string& header, cons kas.reset(new Botan::PK_Key_Agreement(*privkey, Test::rng(), kdf, provider)); result.test_eq(provider, "agreement", kas->derive_key(key_len, pubkey).bits_of(), shared); } + catch(Botan::Provider_Not_Found&) + { + } catch(Botan::Lookup_Error&) { //result.test_note("Skipping key agreement with with " + provider); diff --git a/src/tests/tests.cpp b/src/tests/tests.cpp index 1bb8b7303..13094f5dc 100644 --- a/src/tests/tests.cpp +++ b/src/tests/tests.cpp @@ -867,8 +867,16 @@ std::vector<Test::Result> Text_Based_Test::run() } } - std::vector<Test::Result> final_tests = run_final_tests(); - results.insert(results.end(), final_tests.begin(), final_tests.end()); + try + { + std::vector<Test::Result> final_tests = run_final_tests(); + results.insert(results.end(), final_tests.begin(), final_tests.end()); + } + catch(std::exception& e) + { + results.push_back(Test::Result::Failure(header_or_name, + "run_final_tests exception " + std::string(e.what()))); + } return results; } |