iilyak opened a new pull request #2036: Exunit
URL: https://github.com/apache/couchdb/pull/2036
 
 
   ## Overview
   
   Eunit testing framework has a number of deficiencies especially in the cases 
when mocking is involved. This PR introduces Elixir based ExUnit into our 
testing stack. This work uses notion of testing adapter which allows us to 
write test suite once and reuse it to test using different interfaces:
   - fabric
   - clustered
   - backdoor
   
   The PR doesn't include tests themselves. The tests would be included in 
separate PRs.
   
   Here is one example of how the test might look:
   ```
   defmodule Couch.Test.CRUD do
     use ExUnit.Case
     alias Couch.Test.Adapter
     alias Couch.Test.Utils, as: Utils
   
     alias Couch.Test.Setup
   
     require Record
   
     test_groups = [
       "using Clustered API": Adapter.Clustered,
       "using Backdoor API": Adapter.Backdoor,
       "using Fabric API": Adapter.Fabric,
     ]
   
     for {describe, adapter} <- test_groups do
       describe "Database CRUD #{describe}" do
         @describetag setup: %Setup{}
           |> Setup.Start.new([:chttpd])
           |> Setup.Adapter.new(adapter)
           |> Setup.Admin.new(user: "adm", password: "pass")
           |> Setup.Login.new(user: "adm", password: "pass")
         test "Create", %{setup: setup} do
           db_name = Utils.random_name("db")
           setup_ctx = setup |> Setup.run()
           assert {:ok, resp} = Adapter.create_db(Setup.get(setup_ctx, 
:adapter), db_name)
           assert resp.body["ok"]
         end
       end
     end
   end
   ```
   
   ## Testing recommendations
   
   Use `make exunit` to run all tests. 
   
   You can also use mix directly as follows:
   ```
   BUILDDIR=`pwd` ERL_LIBS=`pwd`/src MIX_ENV=test mix test --trace
   ```
   
   ## Related Issues or Pull Requests
   
   N/A
   
   ## Checklist
   
   - [x] Code is written and works correctly;
   - [x] Changes are covered by tests;
   - [x] Documentation reflects the changes;
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to