Changeset 45


Ignore:
Timestamp:
01/27/09 15:39:17 (3 years ago)
Author:
dom
Message:

Added fixtures, a module that allows directory trees to be setup and teared down for tests. Automated bootstrap tests in ./install script.

Location:
trunk
Files:
3 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/doc/conventions.txt

    r26 r45  
    99argument to the process's init function. 
    1010 
     11Don't write start() functions that hide the spawning. 
  • trunk/install

    r28 r45  
    55erl -kernel error_logger "{file,\"tester.log\"}" -sname forgetester -noinput & 
    66cd ebin 
     7erlc ../src/shells.erl 
    78erl -make 
    89erl -kernel error_logger "{file,\"../forge.log\"}" -sname forgeinstaller -noinput -s shells install forgetester@$hostname -s init stop 
  • trunk/src/modules.erl

    r38 r45  
    1 %%% Copyright (c) 2008 Dominic Williams 
     1%%% Copyright (c) Dominic Williams, Nicolas Charpentier 
    22%%% All rights reserved. 
    33%%% See file COPYING. 
     
    55-module (modules). 
    66-export ([to_binary/1]). 
    7 -export([forms_to_binary /1]). 
     7-export ([to_file_name/2]). 
     8-export ([forms_to_binary/1]). 
    89 
    910to_binary (File_name) -> 
    1011    compile (fun compile: file/2, File_name). 
    1112 
     13to_file_name (Module, Directory) -> 
     14    File_name = atom_to_list (Module) ++ ".erl", 
     15    filename: join (Directory, File_name). 
     16     
    1217forms_to_binary (Forms) -> 
    1318    compile (fun compile: forms/2, Forms). 
  • trunk/src/shells.erl

    r44 r45  
    88    try 
    99        Self = self (), 
    10         spawn_link (fun () -> tests (test_node (Test_node), Self) end), 
     10        spawn_link (fun () -> shells_tests: tests (test_node (Test_node), Self) end), 
    1111        receive {Self, done} -> ok; 
    1212                M -> io:fwrite ("tests_crash: ~p~n", [M]) 
     
    3434    end. 
    3535 
    36 tests (Test_node, Caller) -> 
    37     io: fwrite ("Running local developer tests~n", []), 
    38     ok = tests_test: filter_by_attribute (), 
    39     io: fwrite ("Running developer tests on test node: ~p~n", [Test_node]), 
    40     ok = tester_test: runs_a_test (Test_node), 
    41     ok = tester_test: reruns_a_test_when_given_module (Test_node), 
    42     ok = tester_test: runs_given_test_sequence (Test_node), 
    43     ok = tester_test: runs_given_tests (Test_node), 
    44     ok = tester_test: reloads_corrected_module (Test_node), 
    45     ok = tester_test: deletes_a_module (Test_node), 
    46     ok = tester_test: deletes_a_test_module (Test_node), 
    47     ok = tester_test: notifies_a_message (Test_node), 
    48     ok = tester_test: runs_new_tests_failed_then_successful (Test_node), 
    49     Caller ! {Caller, done}. 
    50      
    5136receive_all () -> 
    5237    receive 
     
    5944           done 
    6045    end. 
     46 
  • trunk/src/tester_test.erl

    r44 r45  
    1 %%% Copyright (c) 2008 Dominic Williams, Nicolas Charpentier 
     1%%% Copyright (c) Dominic Williams, Nicolas Charpentier 
    22%%% All rights reserved. 
    33%%% See file COPYING. 
    44 
    55-module (tester_test). 
    6 -export ([runs_a_test/1, reruns_a_test_when_given_module/1]). 
    7 -export ([runs_given_tests/1, runs_given_test_sequence/1]). 
    8 -export ([reloads_corrected_module/1]). 
    9 -export ([deletes_a_module /1]). 
    10 -export ([deletes_a_test_module /1]). 
    11 -export ([notifies_a_message /1]). 
    12 -export ([runs_new_tests_failed_then_successful /1]). 
     6-export ([run_all/1]). 
    137 
    14 start_tester (Node) -> 
    15     Self = self (), 
    16     Notify = fun (Event) -> Self ! Event end, 
    17     extremeforge: start_tester (Node, Notify). 
     8run_all (Node) -> 
     9    runs_a_test (Node), 
     10    reruns_a_test_when_given_module (Node), 
     11    runs_given_tests (Node), 
     12    runs_given_test_sequence (Node), 
     13    reloads_corrected_module (Node), 
     14    deletes_a_module  (Node), 
     15    deletes_a_test_module  (Node), 
     16    notifies_a_message  (Node), 
     17    runs_new_tests_failed_then_successful  (Node), 
     18    ok. 
    1819 
    19 fixture_path (Module) -> 
    20     File_name = atom_to_list (Module) ++ ".erl", 
    21     filename: join ("../fix", File_name). 
    22      
    2320send (Modules, Tester) -> 
    24     Paths = [fixture_path (M) || M <- Modules], 
     21    Paths = [modules: to_file_name (M, "../fix") || M <- Modules], 
    2522    Binaries = [modules: to_binary (P) || P <- Paths], 
    2623    false = lists: any (fun (M) -> code: is_loaded (M) end, Modules), 
     
    2926    false = lists: any (fun (M) -> code: is_loaded (M) end, Modules), 
    3027    Results. 
    31      
     28 
     29notify_me () -> 
     30    Self = self (), 
     31    fun (M) -> Self ! M end. 
     32 
    3233runs_a_test (Node) -> 
    33     Tester = start_tester (Node), 
     34    Tester = spawn_link (tester, init, [notify_me (), Node]), 
    3435    [{2, 0, 0}, {2, 1, 1}, Error, {2, 2, 1}] = send ([eg_test], Tester), 
    3536    {{badmatch, nok}, [{eg_test, nok, 0} | _]} = Error,  
     
    3738 
    3839reruns_a_test_when_given_module (Node) -> 
    39     Tester = start_tester (Node), 
     40    Tester = spawn_link (tester, init, [notify_me (), Node]), 
    4041    [{1, 0, 0}, Error, {1, 1, 0}] = send ([eg_test_of_code], Tester), 
    4142    {undef, [{eg_code, ok, []}, {eg_test_of_code, ok, 0} | _]} = Error, 
     
    4445 
    4546runs_given_test_sequence (Node) -> 
    46     Tester = start_tester (Node), 
     47    Tester = spawn_link (tester, init, [notify_me (), Node]), 
    4748    [{2, 0, 0}, {2, 1, 1}, _, {2, 2, 1}] = send ([eg_test], Tester), 
    4849    [{2, 0, 0}, _, {2, 1, 0}, {2, 2, 1}] = send ([eg_code], Tester), 
     
    5253 
    5354runs_given_tests (Node) -> 
    54     Tester = start_tester (Node), 
     55    Tester = spawn_link (tester, init, [notify_me (), Node]), 
    5556    Modules = [eg_test, eg_code, eg_test_of_code], 
    5657    Result = send (Modules, Tester), 
     
    5960 
    6061reloads_corrected_module (Node) -> 
    61     Tester = start_tester (Node), 
     62    Tester = spawn_link (tester, init, [notify_me (), Node]), 
    6263    Binary = modules: forms_to_binary (eg_test_form ("nok")), 
    6364    Tester ! [{"./eg_test.erl", Binary}], 
     
    7273 
    7374deletes_a_module (Node) -> 
    74     Tester = start_tester (Node), 
     75    Tester = spawn_link (tester, init, [notify_me (), Node]), 
    7576    [{1, 0, 0}, {1, 1, 1}] = send ([eg_test_of_code], Tester), 
    7677    Tester ! {delete,[eg_code]}, 
     
    8182 
    8283deletes_a_test_module (Node) -> 
    83     Tester = start_tester (Node), 
     84    Tester = spawn_link (tester, init, [notify_me (), Node]), 
    8485    [{1, 0, 0}, {1, 1, 1}] = send ([eg_test_of_code], Tester), 
    8586    Tester ! {delete,[eg_test_of_code]}, 
     
    8990 
    9091notifies_a_message (Node) -> 
    91     Tester = start_tester (Node), 
     92    Tester = spawn_link (tester, init, [notify_me (), Node]), 
    9293    Test_message = "this is a message", 
    9394    Tester ! {notify, Test_message}, 
     
    9697 
    9798runs_new_tests_failed_then_successful (Node) -> 
    98     Tester = start_tester (Node), 
     99    Tester = spawn_link (tester, init, [notify_me (), Node]), 
    99100    Modules = [eg_code, eg_test_of_code_failed], 
    100101    Result = send (Modules, Tester), 
Note: See TracChangeset for help on using the changeset viewer.