diff options
author | Alex Beregszaszi <alex@rtfs.hu> | 2018-11-25 10:18:02 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-25 10:18:02 +0800 |
commit | 1e03c1602a477086638b377cf29d94e1216e8e9a (patch) | |
tree | d50e56b15ea54ae7b5968560ff2cfea7a5951d36 /test/libsolidity | |
parent | 2e861bf1a0825d17386655cdaaa2c7371b6d2c5c (diff) | |
parent | 56d5dd46687026d2fab80f1b38e8314b080267ab (diff) | |
download | dexon-solidity-1e03c1602a477086638b377cf29d94e1216e8e9a.tar.gz dexon-solidity-1e03c1602a477086638b377cf29d94e1216e8e9a.tar.zst dexon-solidity-1e03c1602a477086638b377cf29d94e1216e8e9a.zip |
Merge pull request #5499 from lazaridiscom/decouple-TestCase
decouple TestCase class from test/libsolidity
Diffstat (limited to 'test/libsolidity')
-rw-r--r-- | test/libsolidity/ASTJSONTest.h | 2 | ||||
-rw-r--r-- | test/libsolidity/SyntaxTest.h | 2 | ||||
-rw-r--r-- | test/libsolidity/TestCase.cpp | 56 | ||||
-rw-r--r-- | test/libsolidity/TestCase.h | 80 |
4 files changed, 2 insertions, 138 deletions
diff --git a/test/libsolidity/ASTJSONTest.h b/test/libsolidity/ASTJSONTest.h index 9760ef66..dcdaf221 100644 --- a/test/libsolidity/ASTJSONTest.h +++ b/test/libsolidity/ASTJSONTest.h @@ -18,7 +18,7 @@ #pragma once #include <test/libsolidity/FormattedScope.h> -#include <test/libsolidity/TestCase.h> +#include <test/TestCase.h> #include <iosfwd> #include <string> diff --git a/test/libsolidity/SyntaxTest.h b/test/libsolidity/SyntaxTest.h index d286f934..12c14087 100644 --- a/test/libsolidity/SyntaxTest.h +++ b/test/libsolidity/SyntaxTest.h @@ -19,7 +19,7 @@ #include <test/libsolidity/AnalysisFramework.h> #include <test/libsolidity/FormattedScope.h> -#include <test/libsolidity/TestCase.h> +#include <test/TestCase.h> #include <liblangutil/Exceptions.h> #include <iosfwd> diff --git a/test/libsolidity/TestCase.cpp b/test/libsolidity/TestCase.cpp deleted file mode 100644 index 17972269..00000000 --- a/test/libsolidity/TestCase.cpp +++ /dev/null @@ -1,56 +0,0 @@ -/* - This file is part of solidity. - - solidity is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - solidity is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with solidity. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include <test/libsolidity/TestCase.h> - -#include <boost/algorithm/string.hpp> -#include <boost/algorithm/string/predicate.hpp> - -#include <stdexcept> - -using namespace dev; -using namespace solidity; -using namespace dev::solidity::test; -using namespace std; - -bool TestCase::isTestFilename(boost::filesystem::path const& _filename) -{ - string extension = _filename.extension().string(); - return (extension == ".sol" || extension == ".yul") && - !boost::starts_with(_filename.string(), "~") && - !boost::starts_with(_filename.string(), "."); -} - -string TestCase::parseSource(istream& _stream) -{ - string source; - string line; - string const delimiter("// ----"); - while (getline(_stream, line)) - if (boost::algorithm::starts_with(line, delimiter)) - break; - else - source += line + "\n"; - return source; -} - -void TestCase::expect(string::iterator& _it, string::iterator _end, string::value_type _c) -{ - if (_it == _end || *_it != _c) - throw runtime_error(string("Invalid test expectation. Expected: \"") + _c + "\"."); - ++_it; -} diff --git a/test/libsolidity/TestCase.h b/test/libsolidity/TestCase.h deleted file mode 100644 index 3c05ae4e..00000000 --- a/test/libsolidity/TestCase.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - This file is part of solidity. - - solidity is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - solidity is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with solidity. If not, see <http://www.gnu.org/licenses/>. -*/ - -#pragma once - -#include <boost/filesystem.hpp> - -#include <iosfwd> -#include <memory> -#include <string> - -namespace dev -{ -namespace solidity -{ -namespace test -{ - -/** Common superclass of SyntaxTest and SemanticsTest. */ -class TestCase -{ -public: - using TestCaseCreator = std::unique_ptr<TestCase>(*)(std::string const&); - - virtual ~TestCase() {} - - /// Runs the test case. - /// Outputs error messages to @arg _stream. Each line of output is prefixed with @arg _linePrefix. - /// Optionally, color-coding can be enabled (if @arg _formatted is set to true). - /// @returns true, if the test case succeeds, false otherwise - virtual bool run(std::ostream& _stream, std::string const& _linePrefix = "", bool const _formatted = false) = 0; - - /// Outputs the test contract to @arg _stream. - /// Each line of output is prefixed with @arg _linePrefix. - /// If @arg _formatted is true, color-coding may be used to indicate - /// error locations in the contract, if applicable. - virtual void printSource(std::ostream &_stream, std::string const &_linePrefix = "", bool const _formatted = false) const = 0; - /// Outputs test expectations to @arg _stream that match the actual results of the test. - /// Each line of output is prefixed with @arg _linePrefix. - virtual void printUpdatedExpectations(std::ostream& _stream, std::string const& _linePrefix) const = 0; - - static bool isTestFilename(boost::filesystem::path const& _filename); - -protected: - static std::string parseSource(std::istream& _file); - static void expect(std::string::iterator& _it, std::string::iterator _end, std::string::value_type _c); - - template<typename IteratorType> - static void skipWhitespace(IteratorType& _it, IteratorType _end) - { - while (_it != _end && isspace(*_it)) - ++_it; - } - - template<typename IteratorType> - static void skipSlashes(IteratorType& _it, IteratorType _end) - { - while (_it != _end && *_it == '/') - ++_it; - } - -}; - -} -} -} |