diff options
author | Liana Husikyan <liana@ethdev.com> | 2015-06-17 17:47:29 +0800 |
---|---|---|
committer | Liana Husikyan <liana@ethdev.com> | 2015-07-16 19:57:56 +0800 |
commit | dd1e770009ad9ff0111e4588232aa1ab499ad4e8 (patch) | |
tree | 03fdf088b9d968571173d018a2b9fdb050b96531 | |
parent | c432ec46f922bd2223ab93df6001050a1631d50d (diff) | |
download | dexon-solidity-dd1e770009ad9ff0111e4588232aa1ab499ad4e8.tar.gz dexon-solidity-dd1e770009ad9ff0111e4588232aa1ab499ad4e8.tar.zst dexon-solidity-dd1e770009ad9ff0111e4588232aa1ab499ad4e8.zip |
modified test network to test exceptions during parsing of documentation
todo:
- change to work wirh all exceptions
- fix white space problems in the output text for Natspec
-rw-r--r-- | libsolidity/SolidityEndToEndTest.cpp | 27 | ||||
-rw-r--r-- | libsolidity/SolidityNatspecJSON.cpp | 41 | ||||
-rw-r--r-- | libsolidity/solidityExecutionFramework.h | 8 |
3 files changed, 45 insertions, 31 deletions
diff --git a/libsolidity/SolidityEndToEndTest.cpp b/libsolidity/SolidityEndToEndTest.cpp index f4b74a37..70de7be5 100644 --- a/libsolidity/SolidityEndToEndTest.cpp +++ b/libsolidity/SolidityEndToEndTest.cpp @@ -25,6 +25,7 @@ #include <tuple> #include <boost/test/unit_test.hpp> #include <libdevcore/Hash.h> +#include <libsolidity/Exceptions.h> #include <test/libsolidity/solidityExecutionFramework.h> using namespace std; @@ -4657,6 +4658,32 @@ BOOST_AUTO_TEST_CASE(bytes_memory_index_access) ) == encodeArgs(u256(data.size()), string("d"))); } +BOOST_AUTO_TEST_CASE(dev_title_at_function_error) +{ + char const* sourceCode = " /// @author Lefteris\n" + " /// @title Just a test contract\n" + "contract test {\n" + " /// @dev Mul function\n" + " /// @title I really should not be here\n" + " function mul(uint a, uint second) returns(uint d) { return a * 7 + second; }\n" + "}\n"; + + compileRequireThrow(sourceCode); +} + +BOOST_AUTO_TEST_CASE(dev_documenting_nonexistant_param) +{ + char const* sourceCode = "contract test {\n" + " /// @dev Multiplies a number by 7 and adds second parameter\n" + " /// @param a Documentation for the first parameter\n" + " /// @param not_existing Documentation for the second parameter\n" + " function mul(uint a, uint second) returns(uint d) { return a * 7 + second; }\n" + "}\n"; + + compileRequireThrow(sourceCode); +} + + BOOST_AUTO_TEST_CASE(storage_array_ref) { char const* sourceCode = R"( diff --git a/libsolidity/SolidityNatspecJSON.cpp b/libsolidity/SolidityNatspecJSON.cpp index d2c1ec18..e7e39a0b 100644 --- a/libsolidity/SolidityNatspecJSON.cpp +++ b/libsolidity/SolidityNatspecJSON.cpp @@ -38,9 +38,11 @@ class DocumentationChecker public: DocumentationChecker(): m_compilerStack(false) {} - void checkNatspec(std::string const& _code, - std::string const& _expectedDocumentationString, - bool _userDocumentation) + void checkNatspec( + std::string const& _code, + std::string const& _expectedDocumentationString, + bool _userDocumentation + ) { std::string generatedDocumentationString; ETH_TEST_REQUIRE_NO_THROW(m_compilerStack.parse(_code), "Parsing failed"); @@ -53,9 +55,11 @@ public: m_reader.parse(generatedDocumentationString, generatedDocumentation); Json::Value expectedDocumentation; m_reader.parse(_expectedDocumentationString, expectedDocumentation); - BOOST_CHECK_MESSAGE(expectedDocumentation == generatedDocumentation, - "Expected " << _expectedDocumentationString << - "\n but got:\n" << generatedDocumentationString); + BOOST_CHECK_MESSAGE( + expectedDocumentation == generatedDocumentation, + "Expected " << _expectedDocumentationString << + "\n but got:\n" << generatedDocumentationString + ); } private: @@ -229,18 +233,6 @@ BOOST_AUTO_TEST_CASE(dev_multiple_params) checkNatspec(sourceCode, natspec, false); } -BOOST_AUTO_TEST_CASE(dev_documenting_nonexistant_param) -{ - char const* sourceCode = "contract test {\n" - " /// @dev Multiplies a number by 7 and adds second parameter\n" - " /// @param a Documentation for the first parameter\n" - " /// @param not_existing Documentation for the second parameter\n" - " function mul(uint a, uint second) returns(uint d) { return a * 7 + second; }\n" - "}\n"; - - BOOST_CHECK_THROW(checkNatspec(sourceCode, "", false), DocstringParsingError); -} - BOOST_AUTO_TEST_CASE(dev_mutiline_param_description) { char const* sourceCode = "contract test {\n" @@ -488,19 +480,6 @@ BOOST_AUTO_TEST_CASE(dev_author_at_function) checkNatspec(sourceCode, natspec, false); } -BOOST_AUTO_TEST_CASE(dev_title_at_function_error) -{ - char const* sourceCode = " /// @author Lefteris\n" - " /// @title Just a test contract\n" - "contract test {\n" - " /// @dev Mul function\n" - " /// @title I really should not be here\n" - " function mul(uint a, uint second) returns(uint d) { return a * 7 + second; }\n" - "}\n"; - - BOOST_CHECK_THROW(checkNatspec(sourceCode, "", false), DocstringParsingError); -} - BOOST_AUTO_TEST_CASE(natspec_notice_without_tag) { char const* sourceCode = "contract test {\n" diff --git a/libsolidity/solidityExecutionFramework.h b/libsolidity/solidityExecutionFramework.h index 03a201c7..c09d80a6 100644 --- a/libsolidity/solidityExecutionFramework.h +++ b/libsolidity/solidityExecutionFramework.h @@ -28,6 +28,7 @@ #include <libethereum/State.h> #include <libethereum/Executive.h> #include <libsolidity/CompilerStack.h> +#include <libsolidity/Exceptions.h> namespace dev { @@ -57,6 +58,13 @@ public: return m_output; } + void compileRequireThrow(std::string const& _sourceCode) + { + m_compiler.reset(false, m_addStandardSources); + m_compiler.addSource("", _sourceCode); + BOOST_REQUIRE_THROW(m_compiler.compile(m_optimize, m_optimizeRuns), DocstringParsingError); + } + bytes const& compileAndRun( std::string const& _sourceCode, u256 const& _value = 0, |