aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Buland <eichlan@xagasoft.com>2012-04-14 18:04:52 +0000
committerMike Buland <eichlan@xagasoft.com>2012-04-14 18:04:52 +0000
commitda1de5cdb5c42ce811a66d377789e585042b98c7 (patch)
tree44f530399c603252535232ae6483abce734ca828
parent49d9fa3c2435b8e97ffdc42e40a880a3dad82f8a (diff)
downloadlibbu++-da1de5cdb5c42ce811a66d377789e585042b98c7.tar.gz
libbu++-da1de5cdb5c42ce811a66d377789e585042b98c7.tar.bz2
libbu++-da1de5cdb5c42ce811a66d377789e585042b98c7.tar.xz
libbu++-da1de5cdb5c42ce811a66d377789e585042b98c7.zip
Added support for running subsets of unit tests to Bu::UnitSuite, now just list
the names of the tests you want to run on the command line. Also, fixed some minor issues in two of the test suites.
-rw-r--r--src/stable/unitsuite.cpp20
-rw-r--r--src/stable/unitsuite.h4
-rw-r--r--src/unit/file.unit4
-rw-r--r--src/unit/variant.unit2
4 files changed, 28 insertions, 2 deletions
diff --git a/src/stable/unitsuite.cpp b/src/stable/unitsuite.cpp
index db930a4..e508c6f 100644
--- a/src/stable/unitsuite.cpp
+++ b/src/stable/unitsuite.cpp
@@ -32,7 +32,6 @@ Bu::UnitSuite::~UnitSuite()
32{ 32{
33} 33}
34 34
35// Argument handling is coming soon, I promise.
36int Bu::UnitSuite::run( int argc, char *argv[] ) 35int Bu::UnitSuite::run( int argc, char *argv[] )
37{ 36{
38 bool bCleanup = true; 37 bool bCleanup = true;
@@ -41,9 +40,22 @@ int Bu::UnitSuite::run( int argc, char *argv[] )
41 "List available test cases." ); 40 "List available test cases." );
42 p.addOption( bCleanup, "no-cleanup", "Don't erase temp files."); 41 p.addOption( bCleanup, "no-cleanup", "Don't erase temp files.");
43 p.setOverride( "no-cleanup", false ); 42 p.setOverride( "no-cleanup", false );
43 p.setNonOption( Bu::slot( this, &Bu::UnitSuite::onAddTest ) );
44 p.addHelpOption(); 44 p.addHelpOption();
45 p.parse( argc, argv ); 45 p.parse( argc, argv );
46 46
47 if( !hSelTests.isEmpty() )
48 {
49 TestList lSub;
50 for( TestList::iterator i = lTests.begin(); i != lTests.end(); i++ )
51 {
52 if( hSelTests.has( (*i).sName ) )
53 lSub.append( *i );
54 }
55
56 lTests = lSub;
57 }
58
47 int iEPass = 0; 59 int iEPass = 0;
48 int iEFail = 0; 60 int iEFail = 0;
49 int iUPass = 0; 61 int iUPass = 0;
@@ -239,6 +251,12 @@ int Bu::UnitSuite::onListCases( StrArray )
239 return 0; 251 return 0;
240} 252}
241 253
254int Bu::UnitSuite::onAddTest( StrArray aParam )
255{
256 hSelTests.insert( aParam[0], true );
257 return 0;
258}
259
242Bu::Formatter &Bu::operator<<( Bu::Formatter &f, const Bu::UnitSuite::Expect &e ) 260Bu::Formatter &Bu::operator<<( Bu::Formatter &f, const Bu::UnitSuite::Expect &e )
243{ 261{
244 switch( e ) 262 switch( e )
diff --git a/src/stable/unitsuite.h b/src/stable/unitsuite.h
index 2250a4d..6915fb4 100644
--- a/src/stable/unitsuite.h
+++ b/src/stable/unitsuite.h
@@ -13,6 +13,7 @@
13#include "bu/string.h" 13#include "bu/string.h"
14#include "bu/file.h" 14#include "bu/file.h"
15#include "bu/array.h" 15#include "bu/array.h"
16#include "bu/hash.h"
16 17
17namespace Bu 18namespace Bu
18{ 19{
@@ -103,6 +104,7 @@ namespace Bu
103 104
104 private: 105 private:
105 int onListCases( Bu::Array<Bu::String> aParam ); 106 int onListCases( Bu::Array<Bu::String> aParam );
107 int onAddTest( Bu::Array<Bu::String> aParam );
106 108
107 private: 109 private:
108 typedef struct TestInfo 110 typedef struct TestInfo
@@ -124,6 +126,8 @@ namespace Bu
124 int iStepCount; 126 int iStepCount;
125 int iProgress; 127 int iProgress;
126 time_t tLastUpdate; 128 time_t tLastUpdate;
129
130 Bu::Hash<Bu::String, bool> hSelTests;
127 }; 131 };
128 132
129Bu::Formatter &operator<<( Bu::Formatter &f, const Bu::UnitSuite::Expect &e ); 133Bu::Formatter &operator<<( Bu::Formatter &f, const Bu::UnitSuite::Expect &e );
diff --git a/src/unit/file.unit b/src/unit/file.unit
index fb04e57..efca4f1 100644
--- a/src/unit/file.unit
+++ b/src/unit/file.unit
@@ -48,7 +48,11 @@ suite File
48 if( s < 50 ) 48 if( s < 50 )
49 { 49 {
50 unitTest( total == 256 ); 50 unitTest( total == 256 );
51 unitTest( sf.isEos() == false );
52 unitTest( sf.read( buf, 1 ) == 0 );
51 unitTest( sf.isEos() == true ); 53 unitTest( sf.isEos() == true );
54 // EOS is only set when an attempt to read past the end of
55 // the stream is made, not when a short block is returned.
52 break; 56 break;
53 } 57 }
54 } 58 }
diff --git a/src/unit/variant.unit b/src/unit/variant.unit
index 4fd5e26..53abdc0 100644
--- a/src/unit/variant.unit
+++ b/src/unit/variant.unit
@@ -55,7 +55,7 @@ suite Variant
55 arg( mkastring().getStr() ). 55 arg( mkastring().getStr() ).
56 arg( i1, Fmt(2).fill('0') ). 56 arg( i1, Fmt(2).fill('0') ).
57 arg( i2, Fmt(2).fill('0') ); 57 arg( i2, Fmt(2).fill('0') );
58 sio << sio.nl << out << sio.nl; 58 // sio << sio.nl << out << sio.nl;
59 unitTest( out == "hello-stuff-32-00.odp" ); 59 unitTest( out == "hello-stuff-32-00.odp" );
60 } 60 }
61} 61}