| 
									
										
										
										
											2021-05-14 02:25:30 +02:00
										 |  |  | import TagSpec from "./Tag.spec"; | 
					
						
							|  |  |  | import ImageAttributionSpec from "./ImageAttribution.spec"; | 
					
						
							|  |  |  | import GeoOperationsSpec from "./GeoOperations.spec"; | 
					
						
							|  |  |  | import ThemeSpec from "./Theme.spec"; | 
					
						
							|  |  |  | import UtilsSpec from "./Utils.spec"; | 
					
						
							| 
									
										
										
										
											2021-06-28 18:06:54 +02:00
										 |  |  | import OsmObjectSpec from "./OsmObject.spec"; | 
					
						
							|  |  |  | import ScriptUtils from "../scripts/ScriptUtils"; | 
					
						
							| 
									
										
										
										
											2021-07-04 20:36:19 +02:00
										 |  |  | import UnitsSpec from "./Units.spec"; | 
					
						
							| 
									
										
										
										
											2021-09-22 05:02:09 +02:00
										 |  |  | import RelationSplitHandlerSpec from "./RelationSplitHandler.spec"; | 
					
						
							| 
									
										
										
										
											2021-09-22 16:07:56 +02:00
										 |  |  | import SplitActionSpec from "./SplitAction.spec"; | 
					
						
							|  |  |  | import {Utils} from "../Utils"; | 
					
						
							| 
									
										
										
										
											2021-09-30 04:13:23 +02:00
										 |  |  | import TileFreshnessCalculatorSpec from "./TileFreshnessCalculator.spec"; | 
					
						
							| 
									
										
										
										
											2021-10-03 01:38:57 +02:00
										 |  |  | import WikidataSpecTest from "./Wikidata.spec.test"; | 
					
						
							| 
									
										
										
										
											2021-10-06 17:48:07 +02:00
										 |  |  | import ImageProviderSpec from "./ImageProvider.spec"; | 
					
						
							| 
									
										
										
										
											2021-10-20 00:10:02 +02:00
										 |  |  | import ActorsSpec from "./Actors.spec"; | 
					
						
							| 
									
										
										
										
											2021-11-03 00:44:53 +01:00
										 |  |  | import ReplaceGeometrySpec from "./ReplaceGeometry.spec"; | 
					
						
							| 
									
										
										
										
											2021-11-14 16:57:14 +01:00
										 |  |  | import LegacyThemeLoaderSpec from "./LegacyThemeLoader.spec"; | 
					
						
							| 
									
										
										
										
											2022-01-14 13:58:15 +01:00
										 |  |  | import T from "./TestHelper"; | 
					
						
							|  |  |  | import CreateNoteImportLayerSpec from "./CreateNoteImportLayer.spec"; | 
					
						
							| 
									
										
										
										
											2021-06-28 18:06:54 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-14 02:25:30 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-30 20:41:45 +01:00
										 |  |  | async function main() { | 
					
						
							| 
									
										
										
										
											2021-05-14 02:25:30 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-30 20:41:45 +01:00
										 |  |  |     ScriptUtils.fixUtils() | 
					
						
							| 
									
										
										
										
											2022-01-14 13:58:15 +01:00
										 |  |  |     const allTests : T[] = [ | 
					
						
							| 
									
										
										
										
											2021-12-30 20:41:45 +01:00
										 |  |  |         new OsmObjectSpec(), | 
					
						
							|  |  |  |         new TagSpec(), | 
					
						
							|  |  |  |         new ImageAttributionSpec(), | 
					
						
							|  |  |  |         new GeoOperationsSpec(), | 
					
						
							|  |  |  |         new ThemeSpec(), | 
					
						
							|  |  |  |         new UtilsSpec(), | 
					
						
							|  |  |  |         new UnitsSpec(), | 
					
						
							|  |  |  |         new RelationSplitHandlerSpec(), | 
					
						
							|  |  |  |         new SplitActionSpec(), | 
					
						
							|  |  |  |         new TileFreshnessCalculatorSpec(), | 
					
						
							|  |  |  |         new WikidataSpecTest(), | 
					
						
							|  |  |  |         new ImageProviderSpec(), | 
					
						
							|  |  |  |         new ActorsSpec(), | 
					
						
							|  |  |  |         new ReplaceGeometrySpec(), | 
					
						
							| 
									
										
										
										
											2022-01-14 13:58:15 +01:00
										 |  |  |         new LegacyThemeLoaderSpec(), | 
					
						
							|  |  |  |         new CreateNoteImportLayerSpec() | 
					
						
							| 
									
										
										
										
											2021-12-30 20:41:45 +01:00
										 |  |  |     ] | 
					
						
							| 
									
										
										
										
											2021-09-22 16:07:56 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-30 20:41:45 +01:00
										 |  |  |     Utils.externalDownloadFunction = async (url) => { | 
					
						
							|  |  |  |         console.error("Fetching ", url, "blocked in tests, use Utils.injectJsonDownloadForTests") | 
					
						
							|  |  |  |         const data = await ScriptUtils.DownloadJSON(url) | 
					
						
							|  |  |  |         console.log("\n\n ----------- \nBLOCKED DATA\n Utils.injectJsonDownloadForTests(\n" + | 
					
						
							|  |  |  |             "       ", JSON.stringify(url), ", \n", | 
					
						
							|  |  |  |             "       ", JSON.stringify(data), "\n    )\n------------------\n\n") | 
					
						
							|  |  |  |         throw "Detected internet access for URL " + url + ", please inject it with Utils.injectJsonDownloadForTests" | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-09-22 05:02:09 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-30 20:41:45 +01:00
										 |  |  |     let args = [...process.argv] | 
					
						
							|  |  |  |     args.splice(0, 2) | 
					
						
							| 
									
										
										
										
											2021-10-06 17:48:07 +02:00
										 |  |  |     args = args.map(a => a.toLowerCase()) | 
					
						
							| 
									
										
										
										
											2021-09-22 05:02:09 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-30 20:41:45 +01:00
										 |  |  |     const allFailures: { testsuite: string, name: string, msg: string } [] = [] | 
					
						
							|  |  |  |     let testsToRun = allTests | 
					
						
							|  |  |  |     if (args.length > 0) { | 
					
						
							| 
									
										
										
										
											2022-01-14 13:58:15 +01:00
										 |  |  |         args = args.map(a => a.toLowerCase()).map(a => { | 
					
						
							|  |  |  |             if(!a.endsWith("spec")){ | 
					
						
							|  |  |  |                 return a + "spec" | 
					
						
							|  |  |  |             }else{ | 
					
						
							|  |  |  |                 return a; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         }) | 
					
						
							| 
									
										
										
										
											2021-12-30 20:41:45 +01:00
										 |  |  |         testsToRun = allTests.filter(t => args.indexOf(t.name.toLowerCase()) >= 0) | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-09-22 05:02:09 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-30 20:41:45 +01:00
										 |  |  |     if (testsToRun.length == 0) { | 
					
						
							| 
									
										
										
										
											2022-01-14 13:58:15 +01:00
										 |  |  |         const available = allTests.map(t => t.name) | 
					
						
							|  |  |  |         available.sort() | 
					
						
							|  |  |  |         throw "No tests found. Try one of " + available.join(", ") | 
					
						
							| 
									
										
										
										
											2021-05-14 02:25:30 +02:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-12-30 20:41:45 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     for (let i = 0; i < testsToRun.length; i++) { | 
					
						
							|  |  |  |         const test = testsToRun[i]; | 
					
						
							|  |  |  |         console.log(" Running test", i, "/", testsToRun.length, test.name) | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         allFailures.push(...(await test.Run() ?? [])) | 
					
						
							|  |  |  |         console.log("OK!") | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if (allFailures.length > 0) { | 
					
						
							|  |  |  |         for (const failure of allFailures) { | 
					
						
							|  |  |  |             console.error("  !! " + failure.testsuite + "." + failure.name + " failed due to: " + failure.msg) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         throw "Some test failed" | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     console.log("All tests successful: ", testsToRun.map(t => t.name).join(", ")) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-22 05:02:09 +02:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2021-12-30 20:41:45 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | main() |