Skip to content

Commit

Permalink
chore(2649): drop tag from config (tailcallhq#2650)
Browse files Browse the repository at this point in the history
  • Loading branch information
ssddOnTop authored Aug 11, 2024
1 parent 560473d commit f32434c
Show file tree
Hide file tree
Showing 26 changed files with 90 additions and 346 deletions.
11 changes: 0 additions & 11 deletions generated/.tailcallrc.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -315,17 +315,6 @@ directive @server(
workers: Int
) on SCHEMA

"""
Used to represent an identifier for a type. Typically used via only by the configuration
generators to provide additional information about the type.
"""
directive @tag(
"""
A unique identifier for the type.
"""
id: String!
) on OBJECT

"""
The @telemetry directive facilitates seamless integration with OpenTelemetry, enhancing
the observability of your GraphQL services powered by Tailcall. By leveraging this
Expand Down
25 changes: 0 additions & 25 deletions generated/.tailcallrc.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -1145,20 +1145,6 @@
}
}
},
"Tag": {
"description": "Used to represent an identifier for a type. Typically used via only by the configuration generators to provide additional information about the type.",
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"description": "A unique identifier for the type.",
"type": "string"
}
},
"additionalProperties": false
},
"Telemetry": {
"description": "The @telemetry directive facilitates seamless integration with OpenTelemetry, enhancing the observability of your GraphQL services powered by Tailcall. By leveraging this directive, developers gain access to valuable insights into the performance and behavior of their applications.",
"type": "object",
Expand Down Expand Up @@ -1293,17 +1279,6 @@
"type": "null"
}
]
},
"tag": {
"description": "Contains source information for the type.",
"anyOf": [
{
"$ref": "#/definitions/Tag"
},
{
"type": "null"
}
]
}
}
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@ schema @server @upstream(baseURL: "https://jsonplaceholder.typicode.com") {
query: Query
}

input Id @tag(id: "news.NewsId") {
input Id {
id: Int
}

input news__MultipleNewsId @tag(id: "news.MultipleNewsId") {
input news__MultipleNewsId {
ids: [Id]
}

input news__NewsInput @tag(id: "news.News") {
input news__NewsInput {
body: String
id: Int
postImage: String
Expand Down Expand Up @@ -47,15 +47,15 @@ type Geo {
lng: String
}

type News @tag(id: "news.News") {
type News {
body: String
id: Int
postImage: String
status: news__Status
title: String
}

type NewsNewsServiceGetMultipleNew @tag(id: "news.NewsList") {
type NewsNewsServiceGetMultipleNew {
news: [News]
}

Expand Down

This file was deleted.

26 changes: 0 additions & 26 deletions src/core/config/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -113,10 +113,6 @@ pub struct Type {
/// Marks field as protected by auth providers
#[serde(default)]
pub protected: Option<Protected>,
#[serde(default, skip_serializing_if = "is_default")]
///
/// Contains source information for the type.
pub tag: Option<Tag>,
}

impl Display for Type {
Expand Down Expand Up @@ -145,27 +141,6 @@ impl Type {
}
}

#[derive(
Clone,
Debug,
Default,
PartialEq,
Deserialize,
Serialize,
Eq,
schemars::JsonSchema,
MergeRight,
DirectiveDefinition,
)]
#[directive_definition(locations = "Object")]
#[serde(deny_unknown_fields)]
/// Used to represent an identifier for a type. Typically used via only by the
/// configuration generators to provide additional information about the type.
pub struct Tag {
/// A unique identifier for the type.
pub id: String,
}

#[derive(
Clone,
Debug,
Expand Down Expand Up @@ -1050,7 +1025,6 @@ impl Config {
.add_directive(Omit::directive_definition(generated_types))
.add_directive(Protected::directive_definition(generated_types))
.add_directive(Server::directive_definition(generated_types))
.add_directive(Tag::directive_definition(generated_types))
.add_directive(Telemetry::directive_definition(generated_types))
.add_directive(Upstream::directive_definition(generated_types))
.add_input(GraphQL::input_definition())
Expand Down
7 changes: 3 additions & 4 deletions src/core/config/from_document.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use async_graphql::Name;
use async_graphql_value::ConstValue;

use super::telemetry::Telemetry;
use super::{Alias, Tag, JS};
use super::{Alias, JS};
use crate::core::config::{
self, Cache, Call, Config, Enum, GraphQL, Grpc, Link, Modify, Omit, Protected, RootSchema,
Server, Union, Upstream, Variant,
Expand Down Expand Up @@ -242,12 +242,11 @@ where
Cache::from_directives(directives.iter())
.fuse(to_fields(fields))
.fuse(Protected::from_directives(directives.iter()))
.fuse(Tag::from_directives(directives.iter()))
.map(|(cache, fields, protected, tag)| {
.map(|(cache, fields, protected)| {
let doc = description.to_owned().map(|pos| pos.node);
let implements = implements.iter().map(|pos| pos.node.to_string()).collect();
let added_fields = to_add_fields_from_directives(directives);
config::Type { fields, added_fields, doc, implements, cache, protected, tag }
config::Type { fields, added_fields, doc, implements, cache, protected }
})
}
fn to_input_object(
Expand Down
1 change: 0 additions & 1 deletion src/core/config/into_document.rs
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,6 @@ fn config_document(config: &Config) -> ServiceDocument {
.as_ref()
.map(|protected| pos(protected.to_directive())),
)
.chain(type_def.tag.as_ref().map(|tag| pos(tag.to_directive())))
.collect::<Vec<_>>(),
kind,
})));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@ schema @server @upstream {
query: Query
}

input news__MultipleNewsId @tag(id: "news.MultipleNewsId") {
input news__MultipleNewsId {
ids: [news__NewsId]
}

input news__NewsId @tag(id: "news.NewsId") {
input news__NewsId {
id: Int
}

input news__NewsInput @tag(id: "news.News") {
input news__NewsInput {
body: String
id: Int
postImage: String
Expand All @@ -37,14 +37,14 @@ type Query {
news__NewsService__GetNews(newsId: news__NewsId!): news__News! @grpc(body: "{{.args.newsId}}", method: "news.NewsService.GetNews")
}

type news__News @tag(id: "news.News") {
type news__News {
body: String
id: Int
postImage: String
status: news__Status
title: String
}

type news__NewsList @tag(id: "news.NewsList") {
type news__NewsList {
news: [news__News]
}
4 changes: 1 addition & 3 deletions src/core/generator/from_proto.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ use super::proto::comments_builder::CommentsBuilder;
use super::proto::path_builder::PathBuilder;
use super::proto::path_field::PathField;
use crate::core::config::transformer::{AmbiguousType, TreeShake};
use crate::core::config::{Arg, Config, Enum, Field, Grpc, Tag, Type, Union, Variant};
use crate::core::config::{Arg, Config, Enum, Field, Grpc, Type, Union, Variant};
use crate::core::transform::{Transform, TransformerOps};
use crate::core::valid::Validator;

Expand Down Expand Up @@ -308,8 +308,6 @@ impl Context {
}
}

ty.tag = Some(Tag { id: msg_type.id() });

if message.oneof_decl.is_empty() {
self = self.insert_type(msg_type.to_string(), ty);
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,26 @@ schema @server @upstream {
query: Query
}

input greetings__HelloRequest @tag(id: "greetings.HelloRequest") {
input greetings__HelloRequest {
name: String
}

"""
The request message containing the user's name.
"""
input greetings_a__b__HelloRequest @tag(id: "greetings_a.b.HelloRequest") {
input greetings_a__b__HelloRequest {
name: String
}

input news__MultipleNewsId @tag(id: "news.MultipleNewsId") {
input news__MultipleNewsId {
ids: [news__NewsId]
}

input news__NewsId @tag(id: "news.NewsId") {
input news__NewsId {
id: Int
}

input news__NewsInput @tag(id: "news.News") {
input news__NewsInput {
body: String
id: Int
postImage: String
Expand Down Expand Up @@ -56,25 +56,25 @@ type Query {
news__NewsService__GetNews(newsId: news__NewsId!): news__News! @grpc(body: "{{.args.newsId}}", method: "news.NewsService.GetNews")
}

type greetings__HelloReply @tag(id: "greetings.HelloReply") {
type greetings__HelloReply {
message: String
}

"""
The response message containing the greetings
"""
type greetings_a__b__HelloReply @tag(id: "greetings_a.b.HelloReply") {
type greetings_a__b__HelloReply {
message: String
}

type news__News @tag(id: "news.News") {
type news__News {
body: String
id: Int
postImage: String
status: news__Status
title: String
}

type news__NewsList @tag(id: "news.NewsList") {
type news__NewsList {
news: [news__News]
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@ schema @server @upstream {
query: Query
}

type News @tag(id: "News") {
type News {
body: String
id: Int
postImage: String
title: String
}

type NewsList @tag(id: "NewsList") {
type NewsList {
news: [News]
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@ schema @server @upstream {
query: Query
}

input greetings__HelloRequest @tag(id: "greetings.HelloRequest") {
input greetings__HelloRequest {
name: String
}

type Query {
greetings__Greeter__SayHello(helloRequest: greetings__HelloRequest!): greetings__HelloReply! @grpc(body: "{{.args.helloRequest}}", method: "greetings.Greeter.SayHello")
}

type greetings__HelloReply @tag(id: "greetings.HelloReply") {
type greetings__HelloReply {
message: String
}
Loading

1 comment on commit f32434c

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

running 232 tests
test run_execution_spec::add-field-index-list.md ... ok
test run_execution_spec::add-field-many.md ... ok
test run_execution_spec::add-field-many-list.md ... ok
test run_execution_spec::add-field-modify.md ... ok
test run_execution_spec::add-field-with-modify.md ... ok
test run_execution_spec::add-field-with-composition.md ... ok
test run_execution_spec::add-field.md ... ok
test run_execution_spec::apollo-tracing.md ... ok
test run_execution_spec::async-cache-disabled.md ... ok
test run_execution_spec::async-cache-enable-multiple-resolvers.md ... ok
test run_execution_spec::async-cache-enabled.md ... ok
test run_execution_spec::async-cache-global.md ... ok
test run_execution_spec::async-cache-inflight-request.md ... ok
test run_execution_spec::auth-protected-without-auth.md ... ok
test run_execution_spec::auth-basic.md ... ok
test run_execution_spec::auth-jwt.md ... ok
test run_execution_spec::batching-disabled.md ... ok
test run_execution_spec::auth.md ... ok
test run_execution_spec::batching-default.md ... ok
test run_execution_spec::batching-group-by-default.md ... ok
test run_execution_spec::batching-group-by-optional-key.md ... ok
test run_execution_spec::batching-group-by.md ... ok
test run_execution_spec::batching-post.md ... ok
test run_execution_spec::batching.md ... ok
test run_execution_spec::cache-control.md ... ok
test run_execution_spec::caching.md ... ok
test run_execution_spec::caching-collision.md ... ok
test run_execution_spec::call-graphql-datasource.md ... ok
test run_execution_spec::call-multiple-steps-piping.md ... ok
test run_execution_spec::call-mutation.md ... ok
test run_execution_spec::call-operator.md ... ok
test run_execution_spec::cors-allow-cred-true.md ... ok
test run_execution_spec::cors-allow-cred-false.md ... ok
test run_execution_spec::cors-invalid-expose-headers.md ... ok
test run_execution_spec::cors-invalid-headers.md ... ok
test run_execution_spec::cors-invalid-methods.md ... ok
test run_execution_spec::cors-invalid-origins.md ... ok
test run_execution_spec::cors-allow-cred-vary.md ... ok
test run_execution_spec::custom-headers.md ... ok
test run_execution_spec::dedupe_batch_query_execution.md ... ok
test run_execution_spec::default-value-arg.md ... ok
test run_execution_spec::experimental-headers-error.md ... ok
test run_execution_spec::default-value-config.md ... ok
test run_execution_spec::env-value.md ... ok
test run_execution_spec::experimental-headers.md ... ok
test run_execution_spec::graphql-dataloader-no-batch-request.md ... ok
test run_execution_spec::graphql-dataloader-batch-request.md ... ok
test run_execution_spec::graphql-datasource-errors.md ... FAILED
test run_execution_spec::graphql-datasource-no-args.md ... ok
test run_execution_spec::graphql-datasource-mutation.md ... ok
test run_execution_spec::graphql-datasource-query-directives.md ... ok
test run_execution_spec::graphql-datasource-with-empty-enum.md ... ok
test run_execution_spec::graphql-datasource-with-args.md ... ok
test run_execution_spec::graphql-datasource-with-mandatory-enum.md ... FAILED
test run_execution_spec::graphql-nested-datasource.md ... ok
test run_execution_spec::grpc-batch.md ... ok
test run_execution_spec::grpc-json.md ... ok
test run_execution_spec::grpc-error.md ... ok
test run_execution_spec::grpc-map.md ... ok
test run_execution_spec::grpc-proto-with-same-package.md ... ok
test run_execution_spec::grpc-override-url-from-upstream.md ... ok
test run_execution_spec::grpc-oneof.md ... FAILED
test run_execution_spec::grpc-reflection.md ... ok
test run_execution_spec::grpc-simple.md ... ok
test run_execution_spec::grpc-url-from-upstream.md ... ok
test run_execution_spec::https.md ... ok
test run_execution_spec::inline-field.md ... ok
test run_execution_spec::inline-index-list.md ... ok
test run_execution_spec::input-type-protected-error.md ... ok
test run_execution_spec::io-cache.md ... ok
test run_execution_spec::inline-many-list.md ... ok
test run_execution_spec::inline-many.md ... ok
test run_execution_spec::js-directive.md ... ok
test run_execution_spec::modified-field.md ... ok
test run_execution_spec::mutation-put.md ... ok
test run_execution_spec::mutation.md ... ok
test run_execution_spec::n-plus-one-list.md ... ok
test run_execution_spec::n-plus-one.md ... ok
test run_execution_spec::jsonplaceholder-call-post.md ... ok
test run_execution_spec::nested-objects.md ... ok
test run_execution_spec::nested-recursive-types.md ... ok
test run_execution_spec::nesting-level3.md ... ok
test run_execution_spec::nullable-arg-query.md ... ok
test run_execution_spec::omit-index-list.md ... ok
test run_execution_spec::predefined-scalar.md ... ok
test run_execution_spec::omit-resolved-by-parent.md ... ok
test run_execution_spec::recursive-types-no-resolver.md ... ok
test run_execution_spec::recursive-types-json.md ... ok
test run_execution_spec::omit-many.md ... ok
test run_execution_spec::recursive-types.md ... ok
test run_execution_spec::ref-other-nested.md ... ok
test run_execution_spec::ref-other.md ... ok
test run_execution_spec::related-fields-recursive.md ... ok
test run_execution_spec::rename-field.md ... ok
test run_execution_spec::request-to-upstream-batching.md ... ok
test run_execution_spec::resolve-with-headers.md ... ok
test run_execution_spec::resolve-with-vars.md ... ok
test run_execution_spec::rest-api-error.md ... ok
test run_execution_spec::resolved-by-parent.md ... ok
test run_execution_spec::rest-api-post.md ... ok
test run_execution_spec::rest-api.md ... ok
test run_execution_spec::showcase.md ... ok
test run_execution_spec::test-add-field-error.md ... ok
test run_execution_spec::simple-graphql.md ... ok
test run_execution_spec::simple-query.md ... ok
test run_execution_spec::test-add-field-list.md ... ok
test run_execution_spec::test-all-blueprint-errors.md ... ok
test run_execution_spec::test-batch-operator-post.md ... ok
test run_execution_spec::test-add-field.md ... ok
test run_execution_spec::test-add-link-to-empty-config.md ... ok
test run_execution_spec::test-call-operator-errors.md ... ok
test run_execution_spec::test-conflict-allowed-headers.md ... ok
test run_execution_spec::test-conflict-vars.md ... ok
test run_execution_spec::test-batching-group-by.md ... ok
test run_execution_spec::test-cache.md ... ok
test run_execution_spec::test-dbl-usage-many.md ... ok
test run_execution_spec::test-custom-scalar.md ... ok
test run_execution_spec::test-directives-undef-null-fields.md ... ok
test run_execution_spec::test-duplicated-link.md ... ok
test run_execution_spec::test-empty-link.md ... ok
test run_execution_spec::test-custom-types.md ... ok
test run_execution_spec::test-enable-jit.md ... ok
test run_execution_spec::test-description-many.md ... ok
test run_execution_spec::test-enum-aliases.md ... ok
test run_execution_spec::test-enum-empty.md ... ok
test run_execution_spec::test-enum-default.md ... ok
test run_execution_spec::test-enum-merge.md ... ok
test run_execution_spec::test-expr-error.md ... ok
test run_execution_spec::test-enum-description.md ... FAILED
test run_execution_spec::test-expr-with-add-field.md ... ok
test run_execution_spec::test-expr-with-inline.md ... ok
test run_execution_spec::test-expr-scalar-as-string.md ... ok
test run_execution_spec::test-expr-with-mustache.md ... ok
test run_execution_spec::test-field-already-implemented-from-Interface.md ... ok
test run_execution_spec::test-graphqlsource-no-base-url.md ... ok
test run_execution_spec::test-enum.md ... FAILED
test run_execution_spec::test-groupby-without-batching.md ... ok
test run_execution_spec::test-grpc-group-by.md ... ok
test run_execution_spec::test-grpc-invalid-method-format.md ... ok
test run_execution_spec::test-grpc-invalid-proto-id.md ... ok
test run_execution_spec::test-grpc-missing-fields.md ... ok
test run_execution_spec::test-grpc-nested-data.md ... ok
test run_execution_spec::test-grpc-nested-optional.md ... ok
test run_execution_spec::test-grpc-optional.md ... ok
test run_execution_spec::test-grpc-proto-path.md ... ok
test run_execution_spec::test-grpc-service-method.md ... ok
test run_execution_spec::test-grpc-service.md ... ok
test run_execution_spec::test-expr.md ... ok
test run_execution_spec::test-hostname-faliure.md ... ok
test run_execution_spec::test-graphqlsource.md ... ok
test run_execution_spec::test-grpc.md ... ok
test run_execution_spec::test-http-baseurl.md ... ok
test run_execution_spec::test-http-batchKey.md ... ok
test run_execution_spec::test-http-with-add-field.md ... ok
test run_execution_spec::test-http-with-inline.md ... ok
test run_execution_spec::test-http-headers.md ... ok
test run_execution_spec::test-http-with-mustache-expr.md ... ok
test run_execution_spec::test-inline-error.md ... ok
test run_execution_spec::test-http-tmpl.md ... ok
test run_execution_spec::test-http.md ... ok
test run_execution_spec::test-inline-list.md ... ok
test run_execution_spec::test-inline.md ... ok
test run_execution_spec::test-input-out.md ... ok
test run_execution_spec::test-input-documentation.md ... ok
test run_execution_spec::test-input-with-arg-out.md ... ok
test run_execution_spec::test-interface-from-json.md ... ok
test run_execution_spec::test-invalid-query-in-http.md ... ok
test run_execution_spec::test-invalid-server.md ... ok
test run_execution_spec::test-js-multi-onRequest-handlers.md ... ok
test run_execution_spec::test-js-multiple-scripts.md ... ok
test run_execution_spec::test-interface.md ... ok
test run_execution_spec::test-interface-result.md ... ok
test run_execution_spec::test-lack-resolver.md ... ok
test run_execution_spec::test-js-request-response-2.md ... ok
test run_execution_spec::test-merge-batch.md ... ok
test run_execution_spec::test-list-args.md ... ok
test run_execution_spec::test-js-request-response.md ... ok
test run_execution_spec::test-merge-query.md ... ok
test run_execution_spec::test-merge-nested.md ... ok
test run_execution_spec::test-merge-right-with-link-config.md ... ok
test run_execution_spec::test-missing-argument-on-all-resolvers.md ... ok
test run_execution_spec::test-merge-union.md ... ok
test run_execution_spec::test-missing-query-resolver.md ... ok
test run_execution_spec::test-missing-mutation-resolver.md ... ok
test run_execution_spec::test-missing-schema-query.md ... ok
test run_execution_spec::test-missing-root-types.md ... ok
test run_execution_spec::test-merge-server-sdl.md ... ok
test run_execution_spec::test-multiple-config-types.md ... ok
test run_execution_spec::test-multiple-resolvable-directives-on-field.md ... ok
test run_execution_spec::test-modify.md ... ok
test run_execution_spec::test-multi-interface.md ... ok
test run_execution_spec::test-nested-input.md ... ok
test run_execution_spec::test-no-base-url.md ... ok
test run_execution_spec::test-nested-link.md ... ok
test run_execution_spec::test-nested-value.md ... ok
test run_execution_spec::test-null-in-array.md ... ok
test run_execution_spec::test-null-in-object.md ... ok
test run_execution_spec::test-omit-list.md ... ok
test run_execution_spec::test-params-as-body.md ... ok
test run_execution_spec::test-omit.md ... ok
test run_execution_spec::test-query.md ... ok
test run_execution_spec::test-query-documentation.md ... ok
test run_execution_spec::test-response-header-value.md ... ok
test run_execution_spec::test-response-headers-multi.md ... ok
test run_execution_spec::test-response-headers-name.md ... ok
test run_execution_spec::test-response-header-merge.md ... ok
test run_execution_spec::test-ref-other.md ... ok
test run_execution_spec::test-scalars-builtin.md ... ok
test run_execution_spec::test-scalars-validation.md ... ok
test run_execution_spec::test-scalars-integers.md ... ok
test run_execution_spec::test-server-base-types.md ... ok
test run_execution_spec::test-set-cookie-headers.md ... ok
test run_execution_spec::test-server-vars.md ... ok
test run_execution_spec::test-undefined-query.md ... ok
test run_execution_spec::test-static-value.md ... ok
test run_execution_spec::test-union-many-types.md ... ok
test run_execution_spec::test-union-same-types.md ... ok
test run_execution_spec::test-union-ambiguous.md ... ok
test run_execution_spec::test-scalars.md ... ok
test run_execution_spec::test-upstream-headers.md ... ok
test run_execution_spec::undeclared-type-no-base-url.md ... ok
test run_execution_spec::undeclared-type.md ... ok
test run_execution_spec::test-union.md ... FAILED
test run_execution_spec::upstream-batching.md ... ok
test run_execution_spec::test-upstream.md ... ok
test run_execution_spec::upstream-fail-request.md ... ok
test run_execution_spec::with-args-url.md ... ok
test run_execution_spec::with-args.md ... ok
test run_execution_spec::with-nesting.md ... ok
test run_execution_spec::yaml-nested-unions.md ... ok
test run_execution_spec::yaml-union-in-type.md ... ok
test run_execution_spec::yaml-union.md ... ok

failures:

---- run_execution_spec::graphql-datasource-errors.md ----
test panicked: not yet implemented

---- run_execution_spec::graphql-datasource-with-mandatory-enum.md ----
test panicked: snapshot assertion for 'graphql-datasource-with-mandatory-enum.md_0' failed in line 202

---- run_execution_spec::grpc-oneof.md ----
test panicked: snapshot assertion for 'grpc-oneof.md_0' failed in line 202

---- run_execution_spec::test-enum-description.md ----
test panicked: snapshot assertion for 'test-enum-description.md_2' failed in line 202

---- run_execution_spec::test-enum.md ----
test panicked: snapshot assertion for 'test-enum.md_2' failed in line 202

---- run_execution_spec::test-union.md ----
test panicked: snapshot assertion for 'test-union.md_4' failed in line 202

failures:
run_execution_spec::graphql-datasource-errors.md
run_execution_spec::graphql-datasource-with-mandatory-enum.md
run_execution_spec::grpc-oneof.md
run_execution_spec::test-enum-description.md
run_execution_spec::test-enum.md
run_execution_spec::test-union.md

test result: FAILED. 226 passed; 6 failed; 0 ignored; 0 measured; 0 filtered out; finished in 12.39s

Please sign in to comment.