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 foundation for integration tests #3

Merged
merged 18 commits into from
Dec 17, 2019
Merged

Conversation

derekherman
Copy link
Contributor

No description provided.

@@ -6,6 +6,7 @@ services:
image: mysql:5
volumes:
- ./data/mysql:/var/lib/mysql
- ./tests/phpunit/wptests.sql:/docker-entrypoint-initdb.d/wptests.sql

Choose a reason for hiding this comment

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

The MySQL data for the integration tests usually needs to persist only for the duration of the test so we could use a dedicated MySQL container for the integration tests. This would allow us to define a separate database name, username and password via the environment variables which would also cover this init step.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

We're attempting to have a single wordpress container for development and if we had two mysql services then wordpress would have to depend on both or we need a second wordpress specifically for tests. That's what we're trying to avoid.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I see what you mean by environment variables, but it's just adding complexity.


script:
- npm run lint
- npm run test:php:coverage
- npm run docker -- npm run test:php:coverage

Choose a reason for hiding this comment

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

This is cool -- Docker everywhere!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Need to build a proper image though and upload it to Docker Hub. Building during the testing is painful.

@derekherman
Copy link
Contributor Author

The coverage report is not merging correctly and so it never sends to Coveralls. It's the last thing to get this working correctly. I went into debug mode in the build and the output of the merge is:

<?xml version="1.0" encoding="UTF-8"?>
<coverage generated="1576324130">
  <project timestamp="1576324130">
    <metrics files="0" loc="0" ncloc="0" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
  </project>
</coverage>

But the correct output locally is:

<?xml version="1.0" encoding="UTF-8"?>
<coverage generated="1576322046">
  <project timestamp="1576322046">
    <package name="XWP\Unsplash">
      <file name="/var/www/html/wp-content/plugins/unsplash-wp/php/Base.php">
        <class name="XWP\Unsplash\Base" namespace="XWP\Unsplash">
          <metrics complexity="40" methods="13" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="137" coveredstatements="0" elements="150" coveredelements="0"/>
        </class>
        <line num="68" type="method" name="__construct" visibility="public" complexity="1" crap="2.00" count="0"/>
        <line num="69" type="stmt" count="0"/>
        <line num="70" type="stmt" count="0"/>
        <line num="71" type="stmt" count="0"/>
        <line num="72" type="stmt" count="0"/>
        <line num="73" type="stmt" count="0"/>
        <line num="74" type="stmt" count="0"/>
        <line num="75" type="stmt" count="0"/>
        <line num="80" type="method" name="__destruct" complexity="1" crap="2.00" count="0"/>
        <line num="81" type="stmt" count="0"/>
        <line num="82" type="stmt" count="0"/>
        <line num="89" type="method" name="get_object_reflection" visibility="public" complexity="2" crap="6.00" count="0"/>
        <line num="90" type="stmt" count="0"/>
        <line num="91" type="stmt" count="0"/>
        <line num="92" type="stmt" count="0"/>
        <line num="93" type="stmt" count="0"/>
        <line num="94" type="stmt" count="0"/>
        <line num="95" type="stmt" count="0"/>
        <line num="103" type="method" name="autoload" visibility="public" complexity="7" crap="56.00" count="0"/>
        <line num="104" type="stmt" count="0"/>
        <line num="105" type="stmt" count="0"/>
        <line num="106" type="stmt" count="0"/>
        <line num="107" type="stmt" count="0"/>
        <line num="108" type="stmt" count="0"/>
        <line num="109" type="stmt" count="0"/>
        <line num="110" type="stmt" count="0"/>
        <line num="111" type="stmt" count="0"/>
        <line num="112" type="stmt" count="0"/>
        <line num="113" type="stmt" count="0"/>
        <line num="114" type="stmt" count="0"/>
        <line num="115" type="stmt" count="0"/>
        <line num="116" type="stmt" count="0"/>
        <line num="117" type="stmt" count="0"/>
        <line num="118" type="stmt" count="0"/>
        <line num="120" type="stmt" count="0"/>
        <line num="121" type="stmt" count="0"/>
        <line num="122" type="stmt" count="0"/>
        <line num="123" type="stmt" count="0"/>
        <line num="124" type="stmt" count="0"/>
        <line num="125" type="stmt" count="0"/>
        <line num="126" type="stmt" count="0"/>
        <line num="127" type="stmt" count="0"/>
        <line num="128" type="stmt" count="0"/>
        <line num="137" type="method" name="locate_plugin" visibility="public" complexity="2" crap="6.00" count="0"/>
        <line num="138" type="stmt" count="0"/>
        <line num="139" type="stmt" count="0"/>
        <line num="140" type="stmt" count="0"/>
        <line num="141" type="stmt" count="0"/>
        <line num="143" type="stmt" count="0"/>
        <line num="144" type="stmt" count="0"/>
        <line num="146" type="stmt" count="0"/>
        <line num="147" type="stmt" count="0"/>
        <line num="148" type="stmt" count="0"/>
        <line num="150" type="stmt" count="0"/>
        <line num="151" type="stmt" count="0"/>
        <line num="164" type="method" name="relative_path" visibility="public" complexity="4" crap="20.00" count="0"/>
        <line num="165" type="stmt" count="0"/>
        <line num="166" type="stmt" count="0"/>
        <line num="167" type="stmt" count="0"/>
        <line num="168" type="stmt" count="0"/>
        <line num="169" type="stmt" count="0"/>
        <line num="170" type="stmt" count="0"/>
        <line num="171" type="stmt" count="0"/>
        <line num="172" type="stmt" count="0"/>
        <line num="173" type="stmt" count="0"/>
        <line num="174" type="stmt" count="0"/>
        <line num="175" type="stmt" count="0"/>
        <line num="182" type="method" name="is_wpcom_vip_prod" visibility="public" complexity="2" crap="6.00" count="0"/>
        <line num="183" type="stmt" count="0"/>
        <line num="184" type="stmt" count="0"/>
        <line num="192" type="method" name="trigger_warning" visibility="public" complexity="2" crap="6.00" count="0"/>
        <line num="193" type="stmt" count="0"/>
        <line num="194" type="stmt" count="0"/>
        <line num="195" type="stmt" count="0"/>
        <line num="196" type="stmt" count="0"/>
        <line num="207" type="method" name="add_filter" visibility="public" complexity="1" crap="2.00" count="0"/>
        <line num="208" type="stmt" count="0"/>
        <line num="209" type="stmt" count="0"/>
        <line num="210" type="stmt" count="0"/>
        <line num="211" type="stmt" count="0"/>
        <line num="212" type="stmt" count="0"/>
        <line num="213" type="stmt" count="0"/>
        <line num="214" type="stmt" count="0"/>
        <line num="215" type="stmt" count="0"/>
        <line num="216" type="stmt" count="0"/>
        <line num="227" type="method" name="add_action" visibility="public" complexity="1" crap="2.00" count="0"/>
        <line num="228" type="stmt" count="0"/>
        <line num="229" type="stmt" count="0"/>
        <line num="230" type="stmt" count="0"/>
        <line num="231" type="stmt" count="0"/>
        <line num="232" type="stmt" count="0"/>
        <line num="233" type="stmt" count="0"/>
        <line num="234" type="stmt" count="0"/>
        <line num="235" type="stmt" count="0"/>
        <line num="236" type="stmt" count="0"/>
        <line num="248" type="method" name="_add_hook" visibility="protected" complexity="3" crap="12.00" count="0"/>
        <line num="249" type="stmt" count="0"/>
        <line num="250" type="stmt" count="0"/>
        <line num="251" type="stmt" count="0"/>
        <line num="252" type="stmt" count="0"/>
        <line num="253" type="stmt" count="0"/>
        <line num="254" type="stmt" count="0"/>
        <line num="261" type="method" name="add_doc_hooks" visibility="public" complexity="8" crap="72.00" count="0"/>
        <line num="262" type="stmt" count="0"/>
        <line num="263" type="stmt" count="0"/>
        <line num="264" type="stmt" count="0"/>
        <line num="265" type="stmt" count="0"/>
        <line num="266" type="stmt" count="0"/>
        <line num="267" type="stmt" count="0"/>
        <line num="268" type="stmt" count="0"/>
        <line num="269" type="stmt" count="0"/>
        <line num="270" type="stmt" count="0"/>
        <line num="271" type="stmt" count="0"/>
        <line num="272" type="stmt" count="0"/>
        <line num="273" type="stmt" count="0"/>
        <line num="275" type="stmt" count="0"/>
        <line num="276" type="stmt" count="0"/>
        <line num="277" type="stmt" count="0"/>
        <line num="278" type="stmt" count="0"/>
        <line num="279" type="stmt" count="0"/>
        <line num="280" type="stmt" count="0"/>
        <line num="281" type="stmt" count="0"/>
        <line num="282" type="stmt" count="0"/>
        <line num="283" type="stmt" count="0"/>
        <line num="284" type="stmt" count="0"/>
        <line num="285" type="stmt" count="0"/>
        <line num="286" type="stmt" count="0"/>
        <line num="287" type="stmt" count="0"/>
        <line num="288" type="stmt" count="0"/>
        <line num="289" type="stmt" count="0"/>
        <line num="296" type="method" name="remove_doc_hooks" visibility="public" complexity="6" crap="42.00" count="0"/>
        <line num="297" type="stmt" count="0"/>
        <line num="298" type="stmt" count="0"/>
        <line num="299" type="stmt" count="0"/>
        <line num="300" type="stmt" count="0"/>
        <line num="302" type="stmt" count="0"/>
        <line num="303" type="stmt" count="0"/>
        <line num="304" type="stmt" count="0"/>
        <line num="305" type="stmt" count="0"/>
        <line num="306" type="stmt" count="0"/>
        <line num="307" type="stmt" count="0"/>
        <line num="308" type="stmt" count="0"/>
        <line num="309" type="stmt" count="0"/>
        <line num="310" type="stmt" count="0"/>
        <line num="311" type="stmt" count="0"/>
        <line num="312" type="stmt" count="0"/>
        <line num="313" type="stmt" count="0"/>
        <line num="314" type="stmt" count="0"/>
        <line num="315" type="stmt" count="0"/>
        <line num="316" type="stmt" count="0"/>
        <metrics loc="317" ncloc="187" classes="1" methods="13" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="137" coveredstatements="0" elements="150" coveredelements="0"/>
      </file>
      <file name="/var/www/html/wp-content/plugins/unsplash-wp/php/Plugin.php">
        <class name="XWP\Unsplash\Plugin" namespace="XWP\Unsplash">
          <metrics complexity="22" methods="12" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="30" coveredstatements="9" elements="42" coveredelements="13"/>
        </class>
        <line num="42" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="1"/>
        <line num="43" type="stmt" count="1"/>
        <line num="44" type="stmt" count="1"/>
        <line num="45" type="stmt" count="1"/>
        <line num="46" type="stmt" count="1"/>
        <line num="53" type="method" name="dir" visibility="public" complexity="1" crap="1" count="1"/>
        <line num="54" type="stmt" count="1"/>
        <line num="62" type="method" name="file" visibility="public" complexity="1" crap="1" count="1"/>
        <line num="63" type="stmt" count="1"/>
        <line num="73" type="method" name="basename" visibility="public" complexity="2" crap="2" count="1"/>
        <line num="74" type="stmt" count="1"/>
        <line num="75" type="stmt" count="1"/>
        <line num="78" type="stmt" count="1"/>
        <line num="87" type="method" name="asset_url" visibility="public" complexity="1" crap="2.00" count="0"/>
        <line num="88" type="stmt" count="0"/>
        <line num="98" type="method" name="uploads_dir" visibility="public" complexity="2" crap="6.00" count="0"/>
        <line num="99" type="stmt" count="0"/>
        <line num="100" type="stmt" count="0"/>
        <line num="103" type="stmt" count="0"/>
        <line num="113" type="method" name="uploads_dir_url" visibility="public" complexity="2" crap="6.00" count="0"/>
        <line num="114" type="stmt" count="0"/>
        <line num="115" type="stmt" count="0"/>
        <line num="118" type="stmt" count="0"/>
        <line num="126" type="method" name="is_debug" visibility="public" complexity="2" crap="6.00" count="0"/>
        <line num="127" type="stmt" count="0"/>
        <line num="135" type="method" name="is_script_debug" visibility="public" complexity="2" crap="6.00" count="0"/>
        <line num="136" type="stmt" count="0"/>
        <line num="144" type="method" name="version" visibility="public" complexity="1" crap="2.00" count="0"/>
        <line num="145" type="stmt" count="0"/>
        <line num="153" type="method" name="asset_version" visibility="public" complexity="3" crap="12.00" count="0"/>
        <line num="154" type="stmt" count="0"/>
        <line num="155" type="stmt" count="0"/>
        <line num="158" type="stmt" count="0"/>
        <line num="168" type="method" name="meta" visibility="public" complexity="4" crap="20.00" count="0"/>
        <line num="169" type="stmt" count="0"/>
        <line num="171" type="stmt" count="0"/>
        <line num="172" type="stmt" count="0"/>
        <line num="175" type="stmt" count="0"/>
        <line num="176" type="stmt" count="0"/>
        <line num="177" type="stmt" count="0"/>
        <line num="180" type="stmt" count="0"/>
        <line num="183" type="stmt" count="0"/>
        <metrics loc="186" ncloc="93" classes="1" methods="12" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="30" coveredstatements="9" elements="42" coveredelements="13"/>
      </file>
      <file name="/var/www/html/wp-content/plugins/unsplash-wp/php/Router.php">
        <class name="XWP\Unsplash\Router" namespace="XWP\Unsplash">
          <metrics complexity="3" methods="3" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="10" coveredstatements="8" elements="13" coveredelements="10"/>
        </class>
        <line num="27" type="method" name="__construct" visibility="public" complexity="1" crap="2.00" count="0"/>
        <line num="28" type="stmt" count="0"/>
        <line num="29" type="stmt" count="0"/>
        <line num="36" type="method" name="init" visibility="public" complexity="1" crap="1" count="1"/>
        <line num="37" type="stmt" count="1"/>
        <line num="38" type="stmt" count="1"/>
        <line num="45" type="method" name="enqueue_editor_assets" visibility="public" complexity="1" crap="1" count="1"/>
        <line num="46" type="stmt" count="1"/>
        <line num="47" type="stmt" count="1"/>
        <line num="48" type="stmt" count="1"/>
        <line num="50" type="stmt" count="1"/>
        <line num="54" type="stmt" count="1"/>
        <line num="56" type="stmt" count="1"/>
        <metrics loc="57" ncloc="29" classes="1" methods="3" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="10" coveredstatements="8" elements="13" coveredelements="10"/>
      </file>
    </package>
    <metrics files="3" loc="560" ncloc="309" classes="3" methods="28" coveredmethods="6" conditionals="0" coveredconditionals="0" statements="177" coveredstatements="17" elements="205" coveredelements="23"/>
  </project>
</coverage>

The weird part is that the php files are generating correctly for the clover to be generated from. I can't think of an answer. I'll double back later.

@derekherman
Copy link
Contributor Author

@kasparsd I got it to merge the coverage reports and send to Coveralls correctly 💥

@derekherman derekherman merged commit 2c408bd into master Dec 17, 2019
@derekherman derekherman deleted the feature/integration-tests branch December 17, 2019 03:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants