mirror of
				https://github.com/datahub-project/datahub.git
				synced 2025-10-31 02:37:05 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			110 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
| plugins {
 | |
|     id "application"
 | |
| }
 | |
| apply plugin: 'java'
 | |
| apply plugin: 'jacoco'
 | |
| 
 | |
| ext {
 | |
|     javaMainClass = "io.datahubproject.schematron.cli.SchemaTron"
 | |
| }
 | |
| 
 | |
| application {
 | |
|     mainClassName = javaMainClass
 | |
| }
 | |
| 
 | |
| dependencies {
 | |
|     // Existing dependencies remain unchanged
 | |
|     implementation 'info.picocli:picocli:4.7.5'
 | |
|     annotationProcessor 'info.picocli:picocli-codegen:4.7.5'
 | |
|     implementation 'ch.qos.logback:logback-classic:1.2.11'
 | |
|     implementation 'ch.qos.logback:logback-core:1.2.11'
 | |
|     implementation project(':metadata-integration:java:datahub-client')
 | |
|     implementation project(':metadata-integration:java:datahub-schematron:lib')
 | |
|     implementation externalDependency.avro
 | |
|     compileOnly externalDependency.lombok
 | |
|     annotationProcessor externalDependency.lombok
 | |
| 
 | |
|     // Test dependencies
 | |
|     testImplementation externalDependency.testng
 | |
|     testImplementation externalDependency.mockito
 | |
| }
 | |
| 
 | |
| test {
 | |
|     useTestNG()
 | |
|     
 | |
|     testLogging {
 | |
|         events "passed", "skipped", "failed"
 | |
|         exceptionFormat "full"
 | |
|         showStandardStreams = true
 | |
|     }
 | |
|     
 | |
|     systemProperty 'python.venv.path', System.getProperty('python.venv.path', '../venv')
 | |
| }
 | |
| 
 | |
| task validatePythonEnv {
 | |
|     doFirst {
 | |
|         def venvPath = System.getProperty('python.venv.path', '../../../../metadata-ingestion/venv')
 | |
|         def isWindows = System.getProperty('os.name').toLowerCase().contains('windows')
 | |
|         def pythonExe = isWindows ? "${venvPath}/Scripts/python.exe" : "${venvPath}/bin/python"
 | |
|         
 | |
|         def result = exec {
 | |
|             commandLine pythonExe, "-c", "import sys; print(sys.executable)"
 | |
|             ignoreExitValue = true
 | |
|             standardOutput = new ByteArrayOutputStream()
 | |
|             errorOutput = new ByteArrayOutputStream()
 | |
|         }
 | |
|         
 | |
|         if (result.exitValue != 0) {
 | |
|             throw new GradleException("Python virtual environment not properly set up at ${venvPath}")
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| test.dependsOn tasks.getByPath(":metadata-ingestion:installDev")
 | |
| 
 | |
| jacocoTestReport {
 | |
|     dependsOn test
 | |
| }
 | |
| 
 | |
| test.finalizedBy jacocoTestReport
 | |
| 
 | |
| task updateGoldenFiles {
 | |
|     dependsOn validatePythonEnv
 | |
|     doLast {
 | |
|         def venvPath = System.getProperty('python.venv.path', '../../../../metadata-ingestion/venv')
 | |
|         def isWindows = System.getProperty('os.name').toLowerCase().contains('windows')
 | |
|         def pythonExe = isWindows ? "${venvPath}/Scripts/python.exe" : "${venvPath}/bin/python"
 | |
|         def diffsDir = new File('src/test/resources/diffs')
 | |
|         
 | |
|         if (!diffsDir.exists()) {
 | |
|             throw new GradleException("Diffs directory not found at ${diffsDir.absolutePath}")
 | |
|         }
 | |
|         
 | |
|         // Find all json files in the diffs directory
 | |
|         diffsDir.listFiles().findAll { it.name.endsWith('_diff.json') }.each { diffFile ->
 | |
|             def baseName = diffFile.name.replace('_diff.json', '')
 | |
|             def pythonOutput = "build/test-outputs/${baseName}_python.json"
 | |
|             def javaOutput = "build/test-outputs/${baseName}_java.json"
 | |
|             
 | |
|             println "Updating golden file for ${baseName}..."
 | |
|             
 | |
|             exec {
 | |
|                 commandLine pythonExe,
 | |
|                         'scripts/mce_diff.py',
 | |
|                         '--update-golden-diff',
 | |
|                         '--golden-diff-file',
 | |
|                         diffFile.absolutePath,
 | |
|                         pythonOutput,
 | |
|                         javaOutput
 | |
|                 ignoreExitValue = true
 | |
|                 standardOutput = new ByteArrayOutputStream()
 | |
|                 errorOutput = new ByteArrayOutputStream()
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| configurations {
 | |
|     provided
 | |
|     implementation.extendsFrom provided
 | |
| } | 
