<!-- Generated with Stardoc: http://skydoc.bazel.build -->

<a name="#macro_with_args"></a>

## macro_with_args

<pre>
macro_with_args(<a href="#macro_with_args-name">name</a>, <a href="#macro_with_args-args">args</a>)
</pre>

My args macro is OK.

### Returns

An empty list.

### Parameters

<table class="params-table">
  <colgroup>
    <col class="col-param" />
    <col class="col-description" />
  </colgroup>
  <tbody>
    <tr id="macro_with_args-name">
      <td><code>name</code></td>
      <td>
        required.
        <p>
          The name of the test rule.
        </p>
      </td>
    </tr>
    <tr id="macro_with_args-args">
      <td><code>args</code></td>
      <td>
        optional.
        <p>
          Other arguments to include
        </p>
      </td>
    </tr>
  </tbody>
</table>


<a name="#macro_with_both"></a>

## macro_with_both

<pre>
macro_with_both(<a href="#macro_with_both-name">name</a>, <a href="#macro_with_both-number">number</a>, <a href="#macro_with_both-args">args</a>, <a href="#macro_with_both-kwargs">kwargs</a>)
</pre>

Oh wow this macro has both.

Not much else to say.


### Returns

An empty list.

### Parameters

<table class="params-table">
  <colgroup>
    <col class="col-param" />
    <col class="col-description" />
  </colgroup>
  <tbody>
    <tr id="macro_with_both-name">
      <td><code>name</code></td>
      <td>
        required.
        <p>
          The name of the test rule.
        </p>
      </td>
    </tr>
    <tr id="macro_with_both-number">
      <td><code>number</code></td>
      <td>
        optional. default is <code>3</code>
        <p>
          Some number used for important things
        </p>
      </td>
    </tr>
    <tr id="macro_with_both-args">
      <td><code>args</code></td>
      <td>
        optional.
        <p>
          Other arguments to include
        </p>
      </td>
    </tr>
    <tr id="macro_with_both-kwargs">
      <td><code>kwargs</code></td>
      <td>
        optional.
        <p>
          Other attributes to include
        </p>
      </td>
    </tr>
  </tbody>
</table>


<a name="#macro_with_kwargs"></a>

## macro_with_kwargs

<pre>
macro_with_kwargs(<a href="#macro_with_kwargs-name">name</a>, <a href="#macro_with_kwargs-config">config</a>, <a href="#macro_with_kwargs-deps">deps</a>, <a href="#macro_with_kwargs-kwargs">kwargs</a>)
</pre>

My kwargs macro is the best.

This is a long multi-line doc string.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer
elementum, diam vitae tincidunt pulvinar, nunc tortor volutpat dui,
vitae facilisis odio ligula a tortor. Donec ullamcorper odio eget ipsum tincidunt,
vel mollis eros pellentesque.


### Returns

An empty list.

### Parameters

<table class="params-table">
  <colgroup>
    <col class="col-param" />
    <col class="col-description" />
  </colgroup>
  <tbody>
    <tr id="macro_with_kwargs-name">
      <td><code>name</code></td>
      <td>
        required.
        <p>
          The name of the test rule.
        </p>
      </td>
    </tr>
    <tr id="macro_with_kwargs-config">
      <td><code>config</code></td>
      <td>
        required.
        <p>
          Config to use for my macro
        </p>
      </td>
    </tr>
    <tr id="macro_with_kwargs-deps">
      <td><code>deps</code></td>
      <td>
        optional. default is <code>[]</code>
        <p>
          List of my macro's dependencies
        </p>
      </td>
    </tr>
    <tr id="macro_with_kwargs-kwargs">
      <td><code>kwargs</code></td>
      <td>
        optional.
        <p>
          Other attributes to include
        </p>
      </td>
    </tr>
  </tbody>
</table>


