Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add common compilation flags to tests [BUILD-448] #25

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 15 additions & 4 deletions cc/defs.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ def swift_cc_test_library(**kwargs):
"""Wraps cc_library to enforce Swift test library conventions.

Args:
**kwargs: See https://bazel.build/reference/be/c-cpp#cc_test
**kwargs: See https://bazel.build/reference/be/c-cpp#cc_library

The following additional attributes are supported:

Expand All @@ -211,16 +211,20 @@ def swift_cc_test_library(**kwargs):
be relative to the package this macro is called from.
"""
local_includes = _construct_local_includes(kwargs.pop("local_includes", []))
nocopts = kwargs.pop("nocopts", [])

kwargs["copts"] = (kwargs["copts"] if "copts" in kwargs else []) + local_includes
copts = _common_c_opts(nocopts, pedantic = False)
copts = local_includes + copts
kwargs["copts"] = copts + (kwargs["copts"] if "copts" in kwargs else [])
native.cc_library(**kwargs)

def swift_cc_test(name, type, **kwargs):
def swift_cc_test(name, type, common_c_opts = False, **kwargs):
"""Wraps cc_test to enforce Swift testing conventions.

Args:
name: A unique name for this rule.
type: Specifies whether the test is a unit or integration test.
common_c_opts: Bool flag that indicates if common compilation flags will be added. Default False.
Copy link
Contributor

Choose a reason for hiding this comment

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

Were there things that failed to build unless this was an optional parameter?

Guessing in a lot of cases we need to remove certain flags via nocopts.


These are passed to cc_test as tags which enables running
these test types seperately: `bazel test --test_tag_filters=unit //...`
Expand All @@ -239,7 +243,14 @@ def swift_cc_test(name, type, **kwargs):

local_includes = _construct_local_includes(kwargs.pop("local_includes", []))

kwargs["copts"] = (kwargs["copts"] if "copts" in kwargs else []) + local_includes
copts = []
if common_c_opts:
nocopts = kwargs.pop("nocopts", [])
copts = _common_c_opts(nocopts, pedantic = False)
copts = local_includes + copts

kwargs["copts"] = copts + (kwargs["copts"] if "copts" in kwargs else [])
kwargs["name"] = name
kwargs["tags"] = (kwargs["tags"] if "tags" in kwargs else []) + [type]
kwargs["linkstatic"] = (kwargs["linkstatic"] if "linkstatic" in kwargs else True)
Copy link
Contributor

Choose a reason for hiding this comment

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

What's the reason for making this the default?

native.cc_test(**kwargs)