def test_inject_schema_new_tag(self): tree = ElementTree.fromstring(''' <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <configuration> <generator> <database> </database> </generator> </configuration>'''.strip()) PomFile._inject_jooq_schema_exclusion(tree) self.assertEquals('SCHEMA_VERSION', self._find_node_text(tree, ('generator', 'database', 'excludes')))
def test_format_jar_deps_symbols(self): with temporary_dir() as temp_path: parent_pom_contents = """<?xml version="1.0" encoding="UTF-8"?> <project> <groupId>com.example</groupId> <artifactId>mock-parent</artifactId> <version>HEAD-SNAPSHOT</version> <properties> <foo>1.2.3</foo> </properties> </project> """ mock_parent_pom_filename = os.path.join(temp_path, 'pom.xml') with open(mock_parent_pom_filename, 'w') as f: f.write(parent_pom_contents) mock_path = os.path.join(temp_path, 'mock-project') os.mkdir(mock_path) mock_pom_filename = os.path.join(mock_path, 'pom.xml') pom_contents = """<?xml version="1.0" encoding="UTF-8"?> <project> <groupId>com.example</groupId> <artifactId>mock</artifactId> <version>HEAD-SNAPSHOT</version> <parent> <groupId>com.example</groupId> <artifactId>mock-project</artifactId> <version>HEAD-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent> </project> """ with open(mock_pom_filename, 'w') as f: f.write(pom_contents) mock_pom_file = PomFile(mock_pom_filename) formatted_library = JarFilesMixin.format_jar_library( 'jar_files', ["jar(org='square', name='foobar', rev='${foo}')"], pom_file=mock_pom_file) self.assertEquals( dedent(''' jar_library(name='jar_files', jars=[ jar(org='square', name='foobar', rev='1.2.3') ], ) '''), formatted_library)
def XXXtest_simple_pom_file(self): with temporary_dir() as temp_path: parent_pom_contents = """<?xml version="1.0" encoding="UTF-8"?> <project> <groupId>com.example</groupId> <artifactId>mock-parent</artifactId> <version>HEAD-SNAPSHOT</version> <properties> <foo>1.2.3</foo> </properties> </project> """ mock_parent_pom_filename = os.path.join(temp_path, 'pom.xml') with open(mock_parent_pom_filename, 'w') as f: f.write(parent_pom_contents) mock_path = os.path.join(temp_path, 'mock-project') os.mkdir(mock_path) mock_pom_filename = os.path.join(mock_path, 'pom.xml') pom_contents = """<?xml version="1.0" encoding="UTF-8"?> <project> <groupId>com.example</groupId> <artifactId>mock</artifactId> <version>HEAD-SNAPSHOT</version> <parent> <groupId>com.example</groupId> <artifactId>mock-project</artifactId> <version>HEAD-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent> </project> """ with open(mock_pom_filename, 'w') as f: f.write(pom_contents) mock_pom_file = PomFile(mock_pom_filename) self.assertEquals(mock_path, mock_pom_file.properties['project.basedir']) self.assertEquals('1.2.3', mock_pom_file.properties['foo']) parent_pom_file = mock_pom_file.parent self.assertEquals(temp_path, parent_pom_file.properties['project.basedir'])
def test_resolve_properties(self): substitute = GenerationUtils.symbol_substitution with temporary_dir() as tmpdir: with open(os.path.join(tmpdir, 'pom.xml'), 'w') as root_pom_file: root_pom_file.write(self.ROOT_POM) pom_file = PomFile('pom.xml', root_directory=tmpdir) self.assertEquals( 'FOOBAR', substitute(pom_file.properties, '${prop.foo}${prop.bar}')) self.assertEquals('FOO-BAZ', substitute(pom_file.properties, '${prop.baz}')) deps = [{'key1': 'key1-${prop.foo}'}, {'key2': 'key2-${prop.bar}'}] deps = GenerationUtils.symbol_substitution_on_dicts( pom_file.properties, deps) self.assertEquals([{ 'key1': 'key1-FOO' }, { 'key2': 'key2-BAR' }], deps)
def test_no_parent(self): # make sure properties are substituted with temporary_file() as mock_pom_filename: pom_contents = """<?xml version="1.0" encoding="UTF-8"?> <project> <groupId>com.example</groupId> <artifactId>mock</artifactId> <version>HEAD-SNAPSHOT</version> <properties> <foo>1.2.3</foo> </properties> </project> """ with open(mock_pom_filename, 'w') as f: f.write(pom_contents) mock_pom_file = PomFile(mock_pom_filename) self.assertEquals(None, mock_pom_file.parent) self.assertEquals('1.2.3', mock_pom_file.properties['foo'])
def test_merge_jooq_config(self): tree_one = ElementTree.fromstring(''' <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <configuration> <generator> <name>org.jooq.util.DefaultGenerator</name> <generate> <deprecated>false</deprecated> </generate> <target> <directory>squarepants/src/test/java</directory> <packageName>com.squareup.squarepants.integration.jooq.model</packageName> </target> <database> <name>org.jooq.util.mysql.MySQLDatabase</name> <inputSchema>squarepants_jooq_integration_test</inputSchema> <excludes> GOLD_FISH </excludes> <outputSchema>exemplardb</outputSchema> <recordVersionFields>version</recordVersionFields> </database> </generator> <jdbc> <driver>com.mysql.jdbc.Driver</driver> <url>jdbc:mysql://localhost/squarepants_jooq_integration_test</url> <user>root</user> <password /> </jdbc> </configuration>'''.strip()) tree_two = ElementTree.fromstring(''' <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <configuration> <generator> <name>replacement generator</name> <target> <packageName>my package</packageName> </target> <database> <name>cool database class</name> <excludes> HELLO_THERE </excludes> <outputSchema>hellodb</outputSchema> </database> </generator> <jdbc> <driver>my driver</driver> </jdbc> </configuration>'''.strip()) merged = PomFile._merge_jooq_config(tree_one, tree_two) self.assertEquals('replacement generator', self._find_node_text(merged, ('generator', 'name'))) self.assertEquals('my package', self._find_node_text(merged, ('generator', 'target', 'packageName'))) self.assertEquals('squarepants/src/test/java', self._find_node_text(merged, ('generator', 'target', 'directory'))) self.assertEquals('cool database class', self._find_node_text(merged, ('generator', 'database', 'name'))) self.assertEquals('version', self._find_node_text(merged, ('generator', 'database', 'recordVersionFields'))) self.assertEquals('hellodb', self._find_node_text(merged, ('generator', 'database', 'outputSchema'))) self.assertEquals('my driver', self._find_node_text(merged, ('jdbc', 'driver'))) self.assertEquals('root', self._find_node_text(merged, ('jdbc', 'user')))