mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 17:02:45 +00:00 
			
		
		
		
	test-js: Allow skipping tests with "test.skip(name, callback)"
Skipped tests count as a "pass" rather than a "fail" (i.e. a test suite with a skipped test will pass), however it does display a message when the test is printing. This is intended for tests which _should_ work, but currently do not. This should be preferred over "// FIXME" notes if possible.
This commit is contained in:
		
							parent
							
								
									cf537311e4
								
							
						
					
					
						commit
						82fa65135a
					
				
					 2 changed files with 70 additions and 22 deletions
				
			
		|  | @ -415,7 +415,7 @@ class Expector { | |||
| expect = value => new Expector(value); | ||||
| 
 | ||||
| // describe is able to lump test results inside of it by using this context
 | ||||
| // variable. Top level tests are assumed to be in the default context
 | ||||
| // variable. Top level tests have the default suite message
 | ||||
| const defaultSuiteMessage = "__$$TOP_LEVEL$$__"; | ||||
| let suiteMessage = defaultSuiteMessage; | ||||
| 
 | ||||
|  | @ -425,19 +425,18 @@ describe = (message, callback) => { | |||
|     suiteMessage = defaultSuiteMessage; | ||||
| } | ||||
| 
 | ||||
| const getTestFunction = successMessage => (message, callback) => { | ||||
| test = (message, callback) => { | ||||
|     if (!__TestResults__[suiteMessage]) | ||||
|         __TestResults__[suiteMessage] = {}; | ||||
| 
 | ||||
|     const suite = __TestResults__[suiteMessage]; | ||||
| 
 | ||||
|     if (!suite[message]) | ||||
|         suite[message] = {}; | ||||
|     if (suite[message]) | ||||
|         throw new Error("Duplicate test name: " + message); | ||||
| 
 | ||||
|     try { | ||||
|         callback(); | ||||
|         suite[message] = { | ||||
|             result: successMessage, | ||||
|             result: "pass", | ||||
|         }; | ||||
|     } catch (e) { | ||||
|         suite[message] = { | ||||
|  | @ -446,6 +445,20 @@ const getTestFunction = successMessage => (message, callback) => { | |||
|     } | ||||
| } | ||||
| 
 | ||||
| test = getTestFunction("pass"); | ||||
| test.skip = (message, callback) => { | ||||
|     if (typeof callback !== "function") | ||||
|         throw new Error("test.skip has invalid second argument (must be a function)"); | ||||
| 
 | ||||
|     if (!__TestResults__[suiteMessage]) | ||||
|         __TestResults__[suiteMessage] = {}; | ||||
| 
 | ||||
|     const suite = __TestResults__[suiteMessage]; | ||||
|     if (suite[message]) | ||||
|         throw new Error("Duplicate test name: " + message); | ||||
| 
 | ||||
|     suite[message] = { | ||||
|         result: "skip", | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| })(); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Matthew Olsson
						Matthew Olsson