From 105524ed96f162b43c0735a65fea284d07356aa2 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Mon, 22 Jun 2020 19:05:08 +0300 Subject: Adapt to merging of package external tests, examples, and benchmarks into typed tests --- libbrep/build-extra.sql | 64 +++++++++------------------------------- libbrep/build-package.hxx | 16 ++++------ libbrep/build.hxx | 2 +- libbrep/build.xml | 2 ++ libbrep/package.cxx | 6 +--- libbrep/package.hxx | 43 ++++++++++++++++++--------- libbrep/package.xml | 74 +++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 126 insertions(+), 81 deletions(-) (limited to 'libbrep') diff --git a/libbrep/build-extra.sql b/libbrep/build-extra.sql index b466382..a61f415 100644 --- a/libbrep/build-extra.sql +++ b/libbrep/build-extra.sql @@ -10,10 +10,6 @@ DROP FOREIGN TABLE IF EXISTS build_package_constraints; DROP FOREIGN TABLE IF EXISTS build_package_builds; -DROP FOREIGN TABLE IF EXISTS build_package_benchmarks; - -DROP FOREIGN TABLE IF EXISTS build_package_examples; - DROP FOREIGN TABLE IF EXISTS build_package_tests; DROP FOREIGN TABLE IF EXISTS build_package; @@ -22,6 +18,12 @@ DROP FOREIGN TABLE IF EXISTS build_repository; DROP FOREIGN TABLE IF EXISTS build_tenant; +-- @@ TMP Also drop tables that are removed in 12 schema version. Drop these +-- statements after 0.13.0 is released. +-- +DROP FOREIGN TABLE IF EXISTS build_package_benchmarks; +DROP FOREIGN TABLE IF EXISTS build_package_examples; + -- The foreign table for build_tenant object. -- CREATE FOREIGN TABLE build_tenant ( @@ -66,55 +68,15 @@ CREATE FOREIGN TABLE build_package_tests ( version_canonical_release TEXT NOT NULL COLLATE "C", version_revision INTEGER NOT NULL, index BIGINT NOT NULL, - dep_name CITEXT NOT NULL, - dep_package_tenant TEXT NULL, - dep_package_name CITEXT NULL, - dep_package_version_epoch INTEGER NULL, - dep_package_version_canonical_upstream TEXT NULL, - dep_package_version_canonical_release TEXT NULL COLLATE "C", - dep_package_version_revision INTEGER NULL) + test_name CITEXT NOT NULL, + test_package_tenant TEXT NULL, + test_package_name CITEXT NULL, + test_package_version_epoch INTEGER NULL, + test_package_version_canonical_upstream TEXT NULL, + test_package_version_canonical_release TEXT NULL COLLATE "C", + test_package_version_revision INTEGER NULL) SERVER package_server OPTIONS (table_name 'package_tests'); --- The foreign table for the build_package object examples member (that is of a --- container type). --- -CREATE FOREIGN TABLE build_package_examples ( - tenant TEXT NOT NULL, - name CITEXT NOT NULL, - version_epoch INTEGER NOT NULL, - version_canonical_upstream TEXT NOT NULL, - version_canonical_release TEXT NOT NULL COLLATE "C", - version_revision INTEGER NOT NULL, - index BIGINT NOT NULL, - dep_name CITEXT NOT NULL, - dep_package_tenant TEXT NULL, - dep_package_name CITEXT NULL, - dep_package_version_epoch INTEGER NULL, - dep_package_version_canonical_upstream TEXT NULL, - dep_package_version_canonical_release TEXT NULL COLLATE "C", - dep_package_version_revision INTEGER NULL) -SERVER package_server OPTIONS (table_name 'package_examples'); - --- The foreign table for the build_package object benchmarks member (that is --- of a container type). --- -CREATE FOREIGN TABLE build_package_benchmarks ( - tenant TEXT NOT NULL, - name CITEXT NOT NULL, - version_epoch INTEGER NOT NULL, - version_canonical_upstream TEXT NOT NULL, - version_canonical_release TEXT NOT NULL COLLATE "C", - version_revision INTEGER NOT NULL, - index BIGINT NOT NULL, - dep_name CITEXT NOT NULL, - dep_package_tenant TEXT NULL, - dep_package_name CITEXT NULL, - dep_package_version_epoch INTEGER NULL, - dep_package_version_canonical_upstream TEXT NULL, - dep_package_version_canonical_release TEXT NULL COLLATE "C", - dep_package_version_revision INTEGER NULL) -SERVER package_server OPTIONS (table_name 'package_benchmarks'); - -- The foreign table for the build_package object builds member (that is of a -- container type). -- diff --git a/libbrep/build-package.hxx b/libbrep/build-package.hxx index 228c5c0..09ec41d 100644 --- a/libbrep/build-package.hxx +++ b/libbrep/build-package.hxx @@ -72,10 +72,10 @@ namespace brep // class build_package; - // Build package test dependency. + // Build package external test dependency. // #pragma db value - struct build_dependency + struct build_test_dependency { package_name name; lazy_shared_ptr package; @@ -90,12 +90,10 @@ namespace brep package_id id; upstream_version version; - // Mapped to the package object tests, examples, and benchmarks members - // using the PostgreSQL foreign table mechanism. + // Mapped to the package object tests member using the PostgreSQL foreign + // table mechanism. // - small_vector tests; - small_vector examples; - small_vector benchmarks; + small_vector tests; lazy_shared_ptr internal_repository; bool buildable; @@ -117,9 +115,7 @@ namespace brep // #pragma db member(id) id column("") #pragma db member(version) set(this.version.init (this.id.version, (?))) - #pragma db member(tests) id_column("") value_column("dep_") - #pragma db member(examples) id_column("") value_column("dep_") - #pragma db member(benchmarks) id_column("") value_column("dep_") + #pragma db member(tests) id_column("") value_column("test_") #pragma db member(builds) id_column("") value_column("") #pragma db member(constraints) id_column("") value_column("") diff --git a/libbrep/build.hxx b/libbrep/build.hxx index a883fa0..1041805 100644 --- a/libbrep/build.hxx +++ b/libbrep/build.hxx @@ -25,7 +25,7 @@ // #define LIBBREP_BUILD_SCHEMA_VERSION_BASE 9 -#pragma db model version(LIBBREP_BUILD_SCHEMA_VERSION_BASE, 11, closed) +#pragma db model version(LIBBREP_BUILD_SCHEMA_VERSION_BASE, 12, closed) // We have to keep these mappings at the global scope instead of inside // the brep namespace because they need to be also effective in the diff --git a/libbrep/build.xml b/libbrep/build.xml index f4ba6cb..03d60e7 100644 --- a/libbrep/build.xml +++ b/libbrep/build.xml @@ -1,4 +1,6 @@ + + diff --git a/libbrep/package.cxx b/libbrep/package.cxx index 5ec1b69..564fec7 100644 --- a/libbrep/package.cxx +++ b/libbrep/package.cxx @@ -72,9 +72,7 @@ namespace brep optional bee, dependencies_type dp, requirements_type rq, - small_vector ts, - small_vector es, - small_vector bms, + small_vector ts, build_class_exprs bs, build_constraints_type bc, optional lc, @@ -107,8 +105,6 @@ namespace brep dependencies (move (dp)), requirements (move (rq)), tests (move (ts)), - examples (move (es)), - benchmarks (move (bms)), builds (move (bs)), build_constraints (move (bc)), internal_repository (move (rp)), diff --git a/libbrep/package.hxx b/libbrep/package.hxx index 0ab8413..e249573 100644 --- a/libbrep/package.hxx +++ b/libbrep/package.hxx @@ -20,7 +20,7 @@ // #define LIBBREP_PACKAGE_SCHEMA_VERSION_BASE 17 -#pragma db model version(LIBBREP_PACKAGE_SCHEMA_VERSION_BASE, 18, closed) +#pragma db model version(LIBBREP_PACKAGE_SCHEMA_VERSION_BASE, 19, open) namespace brep { @@ -181,6 +181,30 @@ namespace brep #pragma db value(requirement_alternatives) definition + // tests + // + using bpkg::test_dependency_type; + using bpkg::to_test_dependency_type; + + #pragma db map type(test_dependency_type) as(string) \ + to(to_string (?)) \ + from(brep::to_test_dependency_type (?)) + + #pragma db value + struct test_dependency: dependency + { + test_dependency_type type; + + test_dependency () = default; + test_dependency (package_name n, + test_dependency_type t, + optional c) + : dependency {std::move (n), std::move (c), nullptr /* package */}, + type (t) + { + } + }; + // certificate // #pragma db value @@ -386,9 +410,7 @@ namespace brep optional build_error_email, dependencies_type, requirements_type, - small_vector tests, - small_vector examples, - small_vector benchmarks, + small_vector tests, build_class_exprs, build_constraints_type, optional location, @@ -459,9 +481,7 @@ namespace brep optional build_error_email; dependencies_type dependencies; requirements_type requirements; - small_vector tests; // Note: foreign-mapped in build. - small_vector examples; // Note: foreign-mapped in build. - small_vector benchmarks; // Note: foreign-mapped in build. + small_vector tests; // Note: foreign-mapped in build. build_class_exprs builds; // Note: foreign-mapped in build. build_constraints_type build_constraints; // Note: foreign-mapped in build. @@ -563,14 +583,9 @@ namespace brep set(odb::nested_set (this.requirements, std::move (?))) \ id_column("") key_column("") value_column("id") - // tests, examples, benchmarks - // - // Seeing that these reuse the dependency types, we are also going to - // have identical database mapping. + // tests // - #pragma db member(tests) id_column("") value_column("dep_") - #pragma db member(examples) id_column("") value_column("dep_") - #pragma db member(benchmarks) id_column("") value_column("dep_") + #pragma db member(tests) id_column("") value_column("test_") // builds // diff --git a/libbrep/package.xml b/libbrep/package.xml index 12ae36e..e650555 100644 --- a/libbrep/package.xml +++ b/libbrep/package.xml @@ -1,4 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.1