package mill.define import mill.util.{TestGraphs, TestUtil} import utest._ import mill.{Module, T} object BasePathTests extends TestSuite{ val testGraphs = new TestGraphs val tests = Tests{ def check[T <: Module](m: T)(f: T => Module, segments: String*) = { val remaining = f(m).millSourcePath.relativeTo(m.millSourcePath).segments assert(remaining == segments) } 'singleton - { check(testGraphs.singleton)(identity) } 'backtickIdentifiers - { check(testGraphs.bactickIdentifiers)( _.`nested-module`, "nested-module" ) } 'separateGroups - { check(TestGraphs.triangleTask)(identity) } 'TraitWithModuleObject - { check(TestGraphs.TraitWithModuleObject)( _.TraitModule, "TraitModule" ) } 'nestedModuleNested - { check(TestGraphs.nestedModule)(_.nested, "nested") } 'nestedModuleInstance - { check(TestGraphs.nestedModule)(_.classInstance, "classInstance") } 'singleCross - { check(TestGraphs.singleCross)(_.cross, "cross") check(TestGraphs.singleCross)(_.cross("210"), "cross", "210") check(TestGraphs.singleCross)(_.cross("211"), "cross", "211") } 'doubleCross - { check(TestGraphs.doubleCross)(_.cross, "cross") check(TestGraphs.doubleCross)(_.cross("210", "jvm"), "cross", "210", "jvm") check(TestGraphs.doubleCross)(_.cross("212", "js"), "cross", "212", "js") } 'nestedCrosses - { check(TestGraphs.nestedCrosses)(_.cross, "cross") check(TestGraphs.nestedCrosses)( _.cross("210").cross2("js"), "cross", "210", "cross2", "js" ) } 'overriden - { object overridenBasePath extends TestUtil.BaseModule { override def millSourcePath = os.pwd / 'overridenBasePathRootValue object nested extends Module{ override def millSourcePath = super.millSourcePath / 'overridenBasePathNested object nested extends Module{ override def millSourcePath = super.millSourcePath / 'overridenBasePathDoubleNested } } } assert( overridenBasePath.millSourcePath == os.pwd / 'overridenBasePathRootValue, overridenBasePath.nested.millSourcePath == os.pwd / 'overridenBasePathRootValue / 'nested / 'overridenBasePathNested, overridenBasePath.nested.nested.millSourcePath == os.pwd / 'overridenBasePathRootValue / 'nested / 'overridenBasePathNested / 'nested / 'overridenBasePathDoubleNested ) } } }