<!-- 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.

### 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.


### 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.


### 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>


