Bläddra i källkod

Remove deps_test.py

default_compile_flags
vector-of-bool 4 år sedan
förälder
incheckning
27210c7a5a
1 ändrade filer med 0 tillägg och 583 borttagningar
  1. +0
    -583
      tests/deps/deps_test.py

+ 0
- 583
tests/deps/deps_test.py Visa fil

@@ -1,583 +0,0 @@
import json
from pathlib import Path
from typing import NamedTuple, Sequence, List

import pytest

from tests import DDS, fileutil


class DepsCase(NamedTuple):
dep: str
usage: str
source: str

def setup_root(self, dds: DDS) -> None:
dds.scope.enter_context(
fileutil.set_contents(
dds.source_root / 'package.json',
json.dumps({
'name': 'test-project',
'namespace': 'test',
'version': '0.0.0',
'depends': [self.dep],
}).encode()))
dds.scope.enter_context(
fileutil.set_contents(dds.source_root / 'library.json',
json.dumps({
'name': 'test',
'uses': [self.usage],
}).encode()))
dds.scope.enter_context(fileutil.set_contents(dds.source_root / 'src/test.test.cpp', self.source.encode()))


CASES: List[DepsCase] = []


def get_default_pkg_versions(pkg: str) -> Sequence[str]:
catalog_json = Path(__file__).resolve().parent.parent.parent / 'old-catalog.json'
catalog_dict = json.loads(catalog_json.read_text())
return list(catalog_dict['packages'][pkg].keys())


def add_cases(pkg: str, uses: str, versions: Sequence[str], source: str) -> None:
if versions == ['auto']:
versions = get_default_pkg_versions(pkg)
for ver in versions:
CASES.append(DepsCase(f'{pkg}@{ver}', uses, source))


# pylint: disable=pointless-string-statement

# magic_enum tests
"""
## ## ### ###### #### ###### ######## ## ## ## ## ## ##
### ### ## ## ## ## ## ## ## ## ### ## ## ## ### ###
#### #### ## ## ## ## ## ## #### ## ## ## #### ####
## ### ## ## ## ## #### ## ## ###### ## ## ## ## ## ## ### ##
## ## ######### ## ## ## ## ## ## #### ## ## ## ##
## ## ## ## ## ## ## ## ## ## ## ### ## ## ## ##
## ## ## ## ###### #### ###### ####### ######## ## ## ####### ## ##
"""
add_cases(
'magic_enum', 'neargye/magic_enum', ['auto'], r'''
#include <magic_enum.hpp>
#include <string_view>

enum my_enum {
foo,
bar,
};

int main() {
if (magic_enum::enum_name(my_enum::foo) != "foo") {
return 1;
}
}
''')

# Range-v3 tests
"""
######## ### ## ## ###### ######## ## ## #######
## ## ## ## ### ## ## ## ## ## ## ## ##
## ## ## ## #### ## ## ## ## ## ##
######## ## ## ## ## ## ## #### ###### ####### ## ## #######
## ## ######### ## #### ## ## ## ## ## ##
## ## ## ## ## ### ## ## ## ## ## ## ##
## ## ## ## ## ## ###### ######## ### #######
"""

add_cases(
'range-v3', 'range-v3/range-v3', ['auto'], r'''
#include <range/v3/algorithm/remove_if.hpp>

#include <vector>
#include <algorithm>

int main() {
std::vector<int> nums = {1, 2, 3, 5, 1, 4, 2, 7, 8, 0, 9};
auto end = ranges::remove_if(nums, [](auto i) { return i % 2; });
return std::distance(nums.begin(), end) != 5;
}
''')

# nlohmann-json
"""
## ## ## ####### ## ## ## ## ### ## ## ## ## ## ###### ####### ## ##
### ## ## ## ## ## ## ### ### ## ## ### ## ### ## ## ## ## ## ## ### ##
#### ## ## ## ## ## ## #### #### ## ## #### ## #### ## ## ## ## ## #### ##
## ## ## ## ## ## ######### ## ### ## ## ## ## ## ## ## ## ## ####### ## ###### ## ## ## ## ##
## #### ## ## ## ## ## ## ## ######### ## #### ## #### ## ## ## ## ## ## ####
## ### ## ## ## ## ## ## ## ## ## ## ### ## ### ## ## ## ## ## ## ## ###
## ## ######## ####### ## ## ## ## ## ## ## ## ## ## ###### ###### ####### ## ##
"""
add_cases('nlohmann-json', 'nlohmann/json', ['auto'], r'''
#include <nlohmann/json.hpp>

int main() {}
''')

# ctre
"""
###### ######## ######## ########
## ## ## ## ## ##
## ## ## ## ##
## ## ######## ######
## ## ## ## ##
## ## ## ## ## ##
###### ## ## ## ########
"""
add_cases(
'ctre', 'hanickadot/ctre', ['auto'], r'''
#include <ctre.hpp>

constexpr ctll::fixed_string MY_REGEX{"\\w+-[0-9]+"};

int main() {
auto [did_match] = ctre::match<MY_REGEX>("foo-44");
if (!did_match) {
return 1;
}

auto [did_match_2] = ctre::match<MY_REGEX>("bar-1ff");
if (did_match_2) {
return 2;
}
}
''')

# fmt
"""
######## ## ## ########
## ### ### ##
## #### #### ##
###### ## ### ## ##
## ## ## ##
## ## ## ##
## ## ## ##
"""
add_cases('fmt', 'fmt/fmt', ['auto'], r'''
#include <fmt/core.h>

int main() {
fmt::print("Hello!");
}
''')

# Catch2
"""
###### ### ######## ###### ## ## #######
## ## ## ## ## ## ## ## ## ## ##
## ## ## ## ## ## ## ##
## ## ## ## ## ######### #######
## ######### ## ## ## ## ##
## ## ## ## ## ## ## ## ## ##
###### ## ## ## ###### ## ## #########
"""
add_cases(
'catch2', 'catch2/catch2', ['auto'], r'''
#include <catch2/catch_with_main.hpp>

TEST_CASE("I am a test case") {
CHECK((2 + 2) == 4);
CHECK_FALSE((2 + 2) == 5);
}
''')

# Asio
"""
### ###### #### #######
## ## ## ## ## ## ##
## ## ## ## ## ##
## ## ###### ## ## ##
######### ## ## ## ##
## ## ## ## ## ## ##
## ## ###### #### #######
"""
add_cases(
'asio', 'asio/asio', ['auto'], r'''
#include <asio.hpp>

int main() {
asio::io_context ioc;

int retcode = 12;
ioc.post([&] {
retcode = 0;
});
ioc.run();
return retcode;
}
''')

# Abseil
"""
### ######## ###### ######## #### ##
## ## ## ## ## ## ## ## ##
## ## ## ## ## ## ## ##
## ## ######## ###### ###### ## ##
######### ## ## ## ## ## ##
## ## ## ## ## ## ## ## ##
## ## ######## ###### ######## #### ########
"""
add_cases(
'abseil', 'abseil/abseil', ['auto'], r'''
#include <absl/strings/str_cat.h>

int main() {
std::string_view foo = "foo";
std::string_view bar = "bar";
auto cat = absl::StrCat(foo, bar);
return cat != "foobar";
}
''')

# Zlib
"""
######## ## #### ########
## ## ## ## ##
## ## ## ## ##
## ## ## ########
## ## ## ## ##
## ## ## ## ##
######## ######## #### ########
"""
add_cases(
'zlib', 'zlib/zlib', ['auto'], r'''
#include <zlib.h>
#include <cassert>

int main() {
::z_stream strm = {};
deflateInit(&strm, 6);

const char buffer[] = "foo bar baz";
strm.next_in = (Bytef*)buffer;
strm.avail_in = sizeof buffer;

char dest[256] = {};
strm.next_out = (Bytef*)dest;
strm.avail_out = sizeof dest;
auto ret = deflate(&strm, Z_FINISH);
deflateEnd(&strm);
assert(ret == Z_STREAM_END);
assert(strm.avail_in == 0);
assert(strm.avail_out != sizeof dest);
}
''')

# sol2
"""
###### ####### ## #######
## ## ## ## ## ## ##
## ## ## ## ##
###### ## ## ## #######
## ## ## ## ##
## ## ## ## ## ##
###### ####### ######## #########
"""
add_cases(
'sol2', 'sol2/sol2', ['3.2.1', '3.2.0', '3.0.3', '3.0.2'], r'''
#include <sol/sol.hpp>

int main() {
sol::state lua;
int x = 0;
lua.set_function("beepboop", [&]{ ++x; });
lua.script("beepboop()");
return x != 1;
}
''')

# pegtl
"""
######## ######## ###### ######## ##
## ## ## ## ## ## ##
## ## ## ## ## ##
######## ###### ## #### ## ##
## ## ## ## ## ##
## ## ## ## ## ##
## ######## ###### ## ########
"""
add_cases(
'pegtl', 'tao/pegtl', ['auto'], r'''
#include <tao/pegtl.hpp>

using namespace tao::pegtl;

struct sign : one<'+', '-'> {};
struct integer : seq<opt<sign>, plus<digit>> {};

int main() {
tao::pegtl::string_input str{"+44", "[test string]"};
tao::pegtl::parse<integer>(str);
}
''')

# Boost.PFR
"""
######## ####### ####### ###### ######## ######## ######## ########
## ## ## ## ## ## ## ## ## ## ## ## ## ##
## ## ## ## ## ## ## ## ## ## ## ## ##
######## ## ## ## ## ###### ## ######## ###### ########
## ## ## ## ## ## ## ## ## ## ## ##
## ## ## ## ## ## ## ## ## ### ## ## ## ##
######## ####### ####### ###### ## ### ## ## ## ##
"""
add_cases(
'boost.pfr', 'boost/pfr', ['auto'], r'''
#include <iostream>
#include <string>
#include <boost/pfr/precise.hpp>

struct some_person {
std::string name;
unsigned birth_year;
};

int main() {
some_person val{"Edgar Allan Poe", 1809};

std::cout << boost::pfr::get<0>(val) // No macro!
<< " was born in " << boost::pfr::get<1>(val); // Works with any aggregate initializables!

return boost::pfr::get<0>(val) != "Edgar Allan Poe";
}
''')

# Boost.LEAF
"""
## ######## ### ########
## ## ## ## ##
## ## ## ## ##
## ###### ## ## ######
## ## ######### ##
## ## ## ## ##
######## ######## ## ## ##
"""
add_cases(
'boost.leaf', 'boost/leaf', ['auto'], r'''
#include <boost/leaf/all.hpp>

namespace leaf = boost::leaf;

int main() {
return leaf::try_handle_all(
[&]() -> leaf::result<int> {
return 0;
},
[](leaf::error_info const&) {
return 32;
}
);
}
''')

# Boost.mp11
"""
######## ####### ####### ###### ######## ## ## ######## ## ##
## ## ## ## ## ## ## ## ## ### ### ## ## #### ####
## ## ## ## ## ## ## ## #### #### ## ## ## ##
######## ## ## ## ## ###### ## ## ### ## ######## ## ##
## ## ## ## ## ## ## ## ## ## ## ## ##
## ## ## ## ## ## ## ## ## ### ## ## ## ## ##
######## ####### ####### ###### ## ### ## ## ## ###### ######
"""
add_cases(
'boost.mp11', 'boost/mp11', ['auto'], r'''
#include <boost/mp11.hpp>

int main() {
return boost::mp11::mp_false() == boost::mp11::mp_true();
}
''')

# libsodium
"""
## #### ######## ###### ####### ######## #### ## ## ## ##
## ## ## ## ## ## ## ## ## ## ## ## ## ### ###
## ## ## ## ## ## ## ## ## ## ## ## #### ####
## ## ######## ###### ## ## ## ## ## ## ## ## ### ##
## ## ## ## ## ## ## ## ## ## ## ## ## ##
## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
######## #### ######## ###### ####### ######## #### ####### ## ##
"""
add_cases(
'libsodium', 'sodium/sodium', ['auto'], r'''
#include <sodium.h>

#include <algorithm>

int main() {
char arr[256] = {};
::randombytes_buf(arr, sizeof arr);
for (auto b : arr) {
if (b != '\x00') {
return 0;
}
}
return 1;
}
''')

# toml++
"""
######## ####### ## ## ##
## ## ## ### ### ## ## ##
## ## ## #### #### ## ## ##
## ## ## ## ### ## ## ###### ######
## ## ## ## ## ## ## ##
## ## ## ## ## ## ## ##
## ####### ## ## ########
"""
add_cases(
'tomlpp', 'tomlpp/tomlpp', ['auto'], r'''
#include <toml++/toml.h>

#include <string_view>

int main() {
std::string_view sv = R"(
[library]
something = "cats"
person = "Joe"
)";

toml::table tbl = toml::parse(sv);
return tbl["library"]["person"] != "Joe";
}
''')

# Inja
"""
#### ## ## ## ###
## ### ## ## ## ##
## #### ## ## ## ##
## ## ## ## ## ## ##
## ## #### ## ## #########
## ## ### ## ## ## ##
#### ## ## ###### ## ##
"""
add_cases(
'inja', 'inja/inja', ['2.0.0', '2.0.1', '2.1.0', '2.2.0'], r'''
#include <inja/inja.hpp>
#include <nlohmann/json.hpp>

int main() {
nlohmann::json data;
data["foo"] = "bar";

auto result = inja::render("foo {{foo}}", data);
return result != "foo bar";
}
''')

# Cereal
"""
###### ######## ######## ######## ### ##
## ## ## ## ## ## ## ## ##
## ## ## ## ## ## ## ##
## ###### ######## ###### ## ## ##
## ## ## ## ## ######### ##
## ## ## ## ## ## ## ## ##
###### ######## ## ## ######## ## ## ########
"""
add_cases(
'cereal', 'cereal/cereal', ['auto'], r'''
#include <cereal/types/memory.hpp>
#include <cereal/types/string.hpp>
#include <cereal/archives/binary.hpp>

#include <sstream>

struct something {
int a, b, c;
std::string str;

template <typename Ar>
void serialize(Ar& ar) {
ar(a, b, c, str);
}
};

int main() {
std::stringstream strm;
cereal::BinaryOutputArchive ar{strm};

something s;
ar(s);

return 0;
}
''')

# pcg
"""
######## ###### ######
## ## ## ## ## ##
## ## ## ##
######## ## ## ####
## ## ## ##
## ## ## ## ##
## ###### ######
"""
add_cases(
'pcg-cpp', 'pcg/pcg-cpp', ['auto'], r'''
#include <pcg_random.hpp>

#include <iostream>

int main() {
pcg64 rng{1729};
return rng() != 14925250045015479985;
}
''')

# spdlog
"""
###### ######## ######## ## ####### ######
## ## ## ## ## ## ## ## ## ## ##
## ## ## ## ## ## ## ## ##
###### ######## ## ## ## ## ## ## ####
## ## ## ## ## ## ## ## ##
## ## ## ## ## ## ## ## ## ##
###### ## ######## ######## ####### ######
"""
add_cases('spdlog', 'spdlog/spdlog', ['auto'], r'''
#include <spdlog/spdlog.h>

int main() {
spdlog::info("Howdy!");
}
''')

# date
"""
######## ### ######## ########
## ## ## ## ## ##
## ## ## ## ## ##
## ## ## ## ## ######
## ## ######### ## ##
## ## ## ## ## ##
######## ## ## ## ########
"""
add_cases(
'hinnant-date', 'hinnant/date', ['auto'], r'''
#include <date/date.h>
#include <iostream>

int main() {
auto now = std::chrono::system_clock::now();
using namespace date::literals;
auto year = date::year_month_day{date::floor<date::days>(now)}.year();
std::cout << "The current year is " << year << '\n';
return year < 2020_y;
}
''')


@pytest.mark.deps_test
@pytest.mark.parametrize('case', CASES, ids=[c.dep for c in CASES])
def test_dep(case: DepsCase, dds_pizza_catalog: Path, dds: DDS) -> None:
case.setup_root(dds)
dds.build(catalog_path=dds_pizza_catalog)

Laddar…
Avbryt
Spara