Ticket #200: options-file.patch
File options-file.patch, 32.4 KB (added by hopscc, 15 years ago) |
---|
-
Source/cobra.cobrarc
1 # = Cobra compiler options file for building compiler = 2 # make a copy of the compiler exe to do the compile (wdws wont allow overwrite of a running exe file) 3 # cp cobra.exe cobraOld.exe 4 # 1) copy this file to .cobrarc 5 # cp cobra.cobrarc .cobrarc 6 # and run compiler as follows 7 # ./cobraOld cobra.cobra 8 # 2) or just run run compiler as follows 9 # ./cobraOld -optfile:cobra.cobrarc cobra.cobra 10 # -------------------------------------------------- 11 12 #compile Only (do not run the code post compilation ) 13 compile:true 14 15 #Colorize any error messages and the messages "Compilation failed" and 16 # "Compilation succeeded" (as red, red and blue). default is false 17 color:true 18 19 #Embed the Cobra run-time support code in the assembly 20 embed-run-time:true 21 22 #Turn on generation of system debugging information. 23 # full enables attaching a debugger to a running program. 24 # Turning on implies -debugging-tips:no. Default is 0 25 debug:1 26 #debug:pdbonly 27 #debug:full 28 29 #Emit the total duration (wall time) of this run of cobra 30 # (including the target program, if it is to be run). 31 #Default is false. 32 #timeit:true 33 34 # file containing filenames for Cobra to process 35 # One file per line; # comments and blank lines are ignored. 36 files:files-to-compile.text 37 38 # Initial filename(s) list 39 cobra.cobra -
Source/.cobrarc
1 # = Cobra compiler template options file = 2 # This file is read and processed for compiler options before any commandline options are processed 3 # Any specified commandline options will override any active settings made in this file 4 #---------------------------------------------------------------------------------------- 5 6 #Specify to only compile (do not run the code post compilation ) 7 #compile:true 8 9 #Compile sources if any source file is newer than the existing output file 10 # (or there is no output file). default is false 11 #compile-if-needed:true 12 13 #Specify form of code generation for contracts. 14 # choices: 'none', 'inline', 'methods'. 15 #Default is 'inline'. none suppresses contracts code entirely 16 #contracts:none 17 #contracts:methods 18 19 #Turn on generation of system debugging information. 20 # full enables attaching a debugger to a running program. 21 # Turning on implies -debugging-tips:no. Default is 0 22 #debug:0 23 #debug:1 24 #debug:pdbonly 25 #debug:full 26 27 #Say to embed the Cobra run-time support code in the assembly so that no reference to an 28 # external Cobra.Lang.dll is required. Adds approximately 85KB - 130KB overhead depending on 29 # other options such as -include-asserts or -turbo 30 # default is false 31 #embed-run-time:true 32 33 #Include code for assert statements in the program. Default is true 34 #include-asserts:false 35 36 #Include checks on non-nilable class variables, method arguments and "to !" casts. 37 # Default is true 38 #include-nil-checks:false 39 40 #Include unit tests for classes and members in the output assembly. Default is true 41 #include-tests:false 42 43 #Include trace statements in the output assembly. Default is true 44 #include-traces:false 45 46 #When a class does not provide initializers, Cobra will mirror each initializer in the base class. 47 # The old behavior was to provide one parameterless initializer. 48 # Use this option to switch to the old behavior. 49 #legacy-one-default-initializer:true 50 51 #Specify additional directories to search in for references. 52 # Maps to -lib: on .NET and -classpath on JVM 53 #library-directory:PATH 54 #library-directory:PATH2 55 56 #Specify the name of the type containing the "main" method 57 #main:TYPENAME 58 59 #Set the namespace for all Cobra source files as if each one started with "namespace <name>". 60 #Can be a qualified name. 61 #namespace:My.Name.Space 62 63 # Set the real numeric type for both the 'number' type and fractional literals such as '1.0'. 64 # choices are decimal, float, float32, float64. Default is decimal 65 #number:float 66 #number:float64 67 68 #Enable optimizations. Default is false 69 #optimize:true 70 71 # Specify a file containing filenames for Cobra to process 72 # One file per line; # comments and blank lines are ignored. 73 #files:FILENAME 74 75 #Specify the output file name (default: base name of first file). 76 # -test overrides this with a temporary program that runs only the unit tests and is then removed afterwards.', 77 #out:FILENAME 78 79 #Reference package via "pkg-config --libs". (Mono only.) 80 #pkg:NAME 81 82 #Specify a DLL to reference to resolve imports ('use' clause) in the sourcefiles 83 #reference:DLL-NAME 84 #reference:DLL-NAME2 85 86 #Provide commandline args to be passed to the built executable, 87 # Supports single or dbl quoting to preserve whitespace 88 #run-args: args to pass to cmdline of built exe 89 #run-args:'test args' to pass to cmdline of "built exe" file. 90 91 #Build a specific target type 92 # choices are exe, winexe, lib and module, Default is exe 93 # specific to .Net 94 #target:exe 95 #target:winexe 96 #target:lib 97 98 #Emit the total duration (wall time) of running cobra 99 # (including the target program, if it is to be run). 100 #Default is false. 101 #timeit:true 102 103 # Compile for Maximum run-time performance. 104 # This is a convenience for contracts:none include-asserts:no include-nil-checks:no include-tests:no include-traces:no optimize 105 #turbo:true 106 107 #Enable extra output from Cobra. Mostly useful for debugging Cobra and reporting problems. Values 0 - 5. 108 # Warning: Level 5 causes megabytes of output.', 109 #verbosity:1 110 #verbosity:2 111 112 #Enable extra output from Cobra regarding the resolution of references to libraries. 113 #Mostly useful for debugging Cobra and reporting problems. Values 0 - 5.', 114 #verbosity-ref:2 115 116 #------------------------ 117 118 #Colorizes any error messages and the messages "Compilation failed" and 119 # "Compilation succeeded" (as red, red and blue). default is false 120 #color:true 121 122 #Rewrite source files with corrections, only when unambiguous. 123 #For example, "string" --> "String". Default is 'none' 124 #correct-source:none 125 #correct-source:case 126 #correct-source:all 127 128 #Specify an editor and command line options to invoke if there is a compile-time error. 129 #Use underscore (_) for space in the specification. Can also set via COBRA_EDITOR environment variable (in which case spaces work fine).', 130 #editor:me_-l_LINE_FILE 131 #editor:uedit32_FILE/LINE 132 #editor:mate_FILE_-l_LINE 133 134 #------------------------ 135 136 #Display debugging tips when an unhandled exception occurs. Overridden by -exception-report. 137 # Default is yes 138 #debugging-tips:no 139 140 # Enable a detailed stack trace which gives postmortem information for uncaught exceptions, 141 # but slows execution. Works in combination with -exception-report 142 #detailed-stack-trace:true 143 144 #Turn on an informative HTML report that will be generated if the program throws an uncaught exception. 145 # default is false 146 #exception-report:true 147 148 #Specify to output the command line in HTML 149 #output-html:true 150 151 #------------------------ 152 153 #Keep any intermediate files that Cobra generates, which are normally deleted. 154 # Example intermediate files are *.cobra.cs. Default is false 155 #keep-intermediate-files:true 156 157 #Specify the back-end of the compiler, possibly different than the build platform. Used for cross-compilation. 158 #back-end:clr 159 #back-end:jvm 160 161 #Specify the path to the back-end native compiler. 162 #This can be an executable (such as csc.exe or javac), a library (such as Cobra.Sharp.dll), 163 # "auto" or "provider". Default is 'auto' 164 #native-compiler:path/to/native-compiler 165 166 #Pass additional arguments to the native back-end compiler (such as C# or Java) 167 #native-compiler-args:ARGS 168 169 #Tell cobra compiler to build the standard library 170 #build-standard-library:true 171 172 #Specify the method to invoke to run the unit tests. The method must be "shared". 173 # Typically the method will make use of classes in Cobra.Lang.Test to set up and initiate the test run. 174 # default is Cobra.Lang.CobraCore.runAllTests 175 #test-runner:QUALIFIED-METHOD-NAME|nil 176 177 #------------------------ 178 179 #Delay-sign the assembly using only the public portion of the strong name key 180 # specific to .Net only 181 #delay-sign:true 182 183 #Specify a strong name key container used to strongname the output assembly 184 # specific to .Net only 185 #key-container:FILENAME 186 187 #Specify a strong name key file used to sign the output assembly 188 # specific to .Net only 189 #key-file:FILENAME 190 -
Source/CommandLine.cobra
343 343 'description': "Set the real numeric type for both the 'number' type and fractional literals such as '1.0'.", 344 344 }, 345 345 { 346 'name': 'options-file', 347 'synonyms': ['optfile', 'of'], 348 'isAccumulator': true, 349 'description': 'Name an options file to read cmdline options from. Specify "none" to suppress default probe for first of ".cobrarc", "cobra.rc", "cobra.init"', 350 'args': 'filename', 351 }, 352 { 346 353 'name': 'optimize', 347 354 'synonyms': ['o'], 348 355 'type': 'bool', … … 562 569 .error(ape.message) 563 570 _verbosity = _argParser.verbosity 564 571 CobraMain.willTimeIt = _argParser.willTimeIt 565 572 573 def parseOptFile 574 """ 575 Load OptionValues obtained from reading a cwd options file into _options 576 """ 577 defaultOptFiles = ['.cobrarc', 'cobra.rc', 'cobra.init'] 578 optFiles = _options.getDefault('options-file', defaultOptFiles ) to List<of String> 579 if optFiles[0] == 'none' 580 return # suppress reading any (or default) optionsFile 581 paths = List<of String>() 582 try 583 fileOptions = _argParser.parseOptionsFile(optFiles, inout paths) 584 catch ape as ArgParseException 585 fileOptions = OptionValues() 586 .error(ape.message) 587 _verbosity = _argParser.verbosity 588 CobraMain.willTimeIt = _argParser.willTimeIt 589 # merge in fileOptions values unless have one from cmdline setting 590 _options.combineNew(fileOptions) 591 if paths.count # if paths from optionsfile, append after any from cmdline 592 _pathList.addRange(paths) 593 566 594 def run 567 595 """ 568 596 Run the command line using the command line arguments. … … 578 606 .doAbout 579 607 return 580 608 .parseArgs(args) 581 609 .parseOptFile 610 582 611 if _options.boolValue('output-html') 583 612 _htmlWriter = HtmlWriter(Console.out) 584 613 dest = _htmlWriter to TextWriter … … 763 792 764 793 exeFileName as String? = nil 765 794 runArgs = .options.getStringList('run-args') 766 # TODO: what's this?767 # exeArgs = .options.getDefaultLOStr('exe-args')768 # if exeArgs.count769 # exeFileName = exeArgs[0]770 # runArgs = exeArgs[1:]771 795 p = c.runProcess(exeFileName, runArgs) 772 796 if _verbosity >= 1 773 797 print 'Running: [p.startInfo.fileName] [p.startInfo.arguments]' … … 1013 1037 paths = List<of String>() 1014 1038 # TODO: mark which opts as unusable in this context and filter out 1015 1039 _optsOnly = true 1016 .parseArgs(args, out opts, out paths) 1040 if args.count 1041 .parseArgs(args, out opts, out paths) 1017 1042 if .verbosity or opts.getDefault('verbosity', 0) to int 1018 1043 print 'parseToOptions Option Dictionary:' 1019 1044 opts.print 1020 1045 return opts 1021 1046 1047 def parseFileOptions(args as IList<of String>, paths as inout List<of String> ) as OptionValues 1048 """ 1049 Reuse ArgParser to parse string option args and filenames read from optionsfile. 1050 Return new set of Options and paths from given args list 1051 """ 1052 opts = OptionValues() 1053 _optsOnly = false # allow filenames in optionsfile 1054 if args.count 1055 .parseArgs(args, out opts, out paths) 1056 if .verbosity or opts.getDefault('verbosity', 0) to int 1057 print 'parseFileOptions Option Dictionary:' 1058 opts.print 1059 return opts 1060 1022 1061 def parseArgs(args as IList<of String>, options as out OptionValues?, paths as out List<of String>?) 1023 1062 """ 1024 1063 Parse command line arguments: options and files. … … 1092 1131 _error('Cannot have these main options at the same time: [mainOptions.join(", ")]') 1093 1132 1094 1133 _unpackOptions(valueDict, fileList) 1095 1134 1096 1135 # set the out parameters 1097 1136 options = OptionValues(valueDict) 1098 1137 options.setSpecified(didSpecify) … … 1361 1400 def _error(msg as String) 1362 1401 throw ArgParseException(msg) 1363 1402 1403 1404 def parseOptionsFile(optFiles as IList<of String>, paths as inout List<of String>) as OptionValues 1405 """ 1406 Find first existing OptionsFile from given list of names, read its contents and 1407 process to an OptionValues object. 1408 """ 1409 args = List<of String>() 1410 runArgs = '' 1411 #print 'optionFilesList = [optFiles]' 1412 for fileName in optFiles 1413 if not File.exists(fileName), continue 1414 #print 'Processing optionsFile [fileName]...' 1415 try 1416 for line in File.readAllLines(fileName) 1417 line = line.trim 1418 if line.length==0 or line.startsWith('#'), continue 1419 if _verbosity, print '[fileName]: [line]' 1420 if line.startsWith('run-args:') 1421 runArgs = line[9:] 1422 continue 1423 if not line[0] == '-' and ':' in line # looks like optionkey:value pair 1424 line = '-' + line 1425 args.add(line) 1426 catch IOException 1427 print 'Cannot open optionsFile "[fileName]".' 1428 break # do first file found only 1429 if runArgs.length 1430 args.add('-run-args') 1431 args.addRange(.cmdLineSplit(runArgs)) 1432 options = .parseFileOptions(args, inout paths) 1433 return options 1364 1434 1365 1435 def cmdLineSplit(line as String) as List<of String> 1436 """ 1437 Split line into tokens same as a cmdline tokeniser. 1438 Break into words on whitespace preserving single or double quoted 1439 sequences but removing the quotes. 1440 """ 1441 #TODO: move into utils 1442 words=List<of String>() 1443 word = StringBuilder() 1444 inStringSingle = inStringDouble = false 1445 for c in line 1446 if c in [c' ', c'\t'] and not (inStringSingle or inStringDouble) 1447 if word.length 1448 words.add(word.toString) 1449 word.remove(0,word.length) 1450 continue 1451 if c == c'"' and not inStringSingle 1452 inStringDouble = not inStringDouble 1453 continue 1454 if c == c"'" and not inStringDouble 1455 inStringSingle = not inStringSingle 1456 continue 1457 word.append(c) 1458 if word.length 1459 words.add(word.toString) 1460 return words 1461 1366 1462 class HtmlWriter 1367 1463 inherits TextWriter 1368 1464 """ -
Source/CobraParser.cobra
2396 2396 return ThrowStmt(token, expr) 2397 2397 2398 2398 def tryStmt as Stmt 2399 # try... except... success... finally...2399 # try... catch... success... finally... 2400 2400 token = .expect('TRY') 2401 2401 tryBlock = .block 2402 2402 catchBlocks = List<of CatchBlock>() -
Tests/700-command-line/optFile/520-debug.cobra
1 # .skip. driven from 520-debugTest.cobra using args -debug 2 3 # This test covers: 4 # * That Cobra executables have the correct filname and line number embedded in them (see SharpWriter.cobra) 5 # * That passing -debug to cobra results in stack traces that have file name and line number information. 6 # * On Mono, that passing -debug to cobra also passes --debug to mono when running the program. 7 8 9 # non-debug stack trace: at Test.Main () [0x00000] 10 # debug stack trace: at Test.Main () [0x00022] in /Users/chuck/Projects/Cobra/Workspace-Misc/Source/foo.cobra:5 11 # or: at Test.Main () [0x00022] in /Users/chuck/Projects/Cobra/Workspace-Misc/Source/foo.cobra:line 5 12 13 class Test 14 15 def main is shared 16 try 17 assert false 18 catch exc as Exception 19 assert 'debug.cobra:17' in exc.stackTrace or '520-debug.cobra:line 17' in exc.stackTrace -
Tests/700-command-line/optFile/520-debugTest.cobra
1 class DebugTestDrvr 2 3 def main is shared 4 # needs to use args debug 5 sub = '520-debug.cobra' 6 optFile = '.cobrarc' 7 optFileLines = @[ 8 '# optFile/520-debugTest', 9 'debug:true', 10 ] 11 File.writeAllLines(optFile, optFileLines) 12 13 p as System.Diagnostics.Process? 14 CobraCore.runCobraExe(sub, out p) 15 assert p.exitCode == 0 16 File.delete(optFile) -
Tests/700-command-line/optFile/620-turboTest.cobra
1 class TurboDrvr 2 3 def main is shared 4 # needs to use args turbo:true 5 sub = '621-turbo.cobra' 6 optFile = '.cobrarc' 7 optFileLines = @[ 8 '# optFile/620-turboTest', 9 'turbo:true', 10 ] 11 File.writeAllLines(optFile, optFileLines) 12 13 p as System.Diagnostics.Process? 14 output = CobraCore.runCobraExe(sub, out p) 15 assert p.exitCode == 0 16 assert output.trim.length == 0 17 File.delete(optFile) -
Tests/700-command-line/optFile/621-turbo.cobra
1 # .skip. driven from 620-turboTest.cobra 2 # needs args -turbo 3 4 class Program 5 6 def main is shared 7 assert false 8 trace 9 x = 1 10 trace all 11 trace x -
Tests/700-command-line/optFile/700-run-args.cobra
1 # Test compile+run execution specifying args to run compiled prog with 2 3 class Test 4 5 def main is shared 6 cobraPath = CobraCore.findCobraExe to ! 7 if 'Snapshot' in cobraPath 8 # TODO 2008-10-19: Not sure why this is happening yet. 9 print 'WARNING: Snapshot in cobra path:', cobraPath 10 cobraPath = cobraPath.replace('\\Snapshot\\', '\\') 11 cobraPath = cobraPath.replace('/Snapshot/', '/') 12 13 echo = '702-echo' 14 exp = 'argA argB argC' 15 .verify(cobraPath, '[echo]', exp, exp) 16 17 arg = '"1argA 2argB 3argC"' 18 exp = '1argA 2argB 3argC :1' 19 .verify(cobraPath, '[echo]', arg, exp) 20 21 22 def verify(cobraPath as String, prog as String, args as String, expectedText as String) is shared 23 p as System.Diagnostics.Process? 24 optFile = '.cobrarc' 25 optFileLines = @[ 26 '# optFile/700-run-args', 27 'run-args:[args]', 28 ] 29 File.writeAllLines(optFile, optFileLines) 30 31 output = CobraCore.runCobraExe(cobraPath, prog, out p) 32 File.delete(optFile) 33 #print output 34 assert 'Unhandled Exception' not in output 35 assert expectedText in output 36 assert p.exitCode == 0 -
Tests/700-command-line/optFile/110-hello.cobra
1 class Hello 2 def main 3 print 'Hello' -
Tests/700-command-line/optFile/610-include-tracesTest.cobra
1 class IncludeAssertsDrvr 2 3 def main is shared 4 # needs to use args include-traces:false 5 sub = '611-include-traces.cobra' 6 optFile = '.cobrarc' 7 optFileLines = @[ 8 '# optFile/610-include-tracesTest', 9 'include-traces:false', 10 ] 11 File.writeAllLines(optFile, optFileLines) 12 13 p as System.Diagnostics.Process? 14 output = CobraCore.runCobraExe(sub, out p) 15 assert p.exitCode == 0 16 assert output.trim.length == 0 17 File.delete(optFile) -
Tests/700-command-line/optFile/611-include-traces.cobra
1 # .skip. driven from 610-include-tracesTest.cobra 2 # needs args -include-traces:no 3 4 class Program 5 6 def main is shared 7 tracer = CobraCore.tracer 8 tracer.destination = StringWriter() 9 x = 1 10 trace 11 trace all 12 trace x 13 trace off 14 trace 'hello' 15 trace on 16 assert tracer.destination.toString == '' -
Tests/700-command-line/optFile/600-include-assertsTest.cobra
1 class IncludeAssertsDrvr 2 3 def main is shared 4 # needs to use args include-asserts:false 5 sub = '601-include-asserts.cobra' 6 optFile = '.cobrarc' 7 optFileLines = @[ 8 '# optFile/600-include-assertsTest', 9 'include-asserts:false', 10 ] 11 File.writeAllLines(optFile, optFileLines) 12 13 p as System.Diagnostics.Process? 14 CobraCore.runCobraExe(sub, out p) 15 assert p.exitCode == 0 16 File.delete(optFile) -
Tests/700-command-line/optFile/601-include-asserts.cobra
1 # .skip. driven from 600-include-assertsTest.cobra 2 # needs to run with args -include-asserts:no 3 4 class Program 5 6 def main is shared 7 assert false -
Tests/700-command-line/optFile/400-foolib.cobra
1 # .args. -t:lib -embed-run-time:no 2 3 class Foo 4 5 get one as int 6 return 1 7 8 get two as int 9 return 2 10 11 get name as String 12 return .getType.name 13 14 def computeString as String 15 return 'aoeuaoeu' 16 17 def checkInts(args as vari int) as int 18 for arg in args 19 assert arg 20 return args.length -
Tests/700-command-line/optFile/116-highlight.cobra
1 # test -highlight option set in options file 2 # . especially on a file with "def main" with no "is shared" 3 4 class Test 5 6 def main 7 sourceFile = '110-hello.cobra' 8 9 source = File.readAllText(sourceFile) 10 assert 'is shared' not in source 11 12 optFile = '.cobrarc' 13 hdr = '# optFile/116-highlight' 14 15 File.writeAllLines(optFile, @[hdr,'highlight:true']) 16 17 p as System.Diagnostics.Process? 18 output = CobraCore.runCobraExe('[sourceFile]', out p) 19 File.delete(optFile) 20 assert p.exitCode == 0 21 # trace output # on mac: output='Writing gen-html/110-hello.cobra.html\n\n\n 22 assert 'Writing ' in output and 'hello.cobra' in output 23 genFile = Path.combine('gen-html', '110-hello.cobra.html') 24 assert File.exists(genFile) 25 File.delete(genFile) -
Tests/700-command-line/optFile/401-fooprogTest.cobra
1 # args to use are -embed-run-time:no -ref:400-foolib.dll 2 class FooProgDriver 3 4 def main 5 sub = '402-fooprog.cobra' 6 optFile = '.cobrarc' 7 optFileLines = @[ 8 '# optFile/401-fooprogTest', 9 'embed-run-time:no', 10 'ref:400-foolib.dll' 11 ] 12 File.writeAllLines(optFile, optFileLines) 13 14 output = .runCobraExe('[sub]') 15 assert 'f.one is 1' in output 16 assert 'f.two is 2' in output 17 File.delete(optFile) 18 19 def runCobraExe(args as String) as String 20 p as System.Diagnostics.Process? 21 return CobraCore.runCobraExe(args, out p) -
Tests/700-command-line/optFile/800-options-file.cobra
1 class OptionsFileDrvr 2 3 def main is shared 4 # needs to use args turbo:true 5 optFile = 'myOpt' 6 sub = '-options-file:[optFile] 621-turbo.cobra ' 7 optFileLines = @[ 8 '# optFile/800-options-file', 9 'turbo:true', 10 'out:turboWithopts', 11 ] 12 File.writeAllLines(optFile, optFileLines) 13 14 p as System.Diagnostics.Process? 15 output = CobraCore.runCobraExe(sub, out p) 16 assert p.exitCode == 0 17 assert output.trim.length == 0 18 File.delete(optFile) -
Tests/700-command-line/optFile/402-fooprog.cobra
1 # .skip. driven from 401-fooprogTest 2 # args are: embed-run-time:no ref: 400-foolib.dll 3 4 class Program 5 6 def main is shared 7 f = Foo() 8 print 'f.one is', f.one 9 print 'f.two is', f.two 10 name = f.name 11 .checkName(name) 12 s = f.computeString 13 .checkName(s) 14 assert f.checkInts(2, 4, 6) == 3 15 16 def checkName(name as String) is shared 17 assert name.length -
Tests/700-command-line/optFile/510-lib-optionTest.cobra
1 class LibOptionDrvr 2 3 def main is shared 4 oldName = '400-foolib.dll' 5 newName = 'foolib.dll' 6 assert File.exists(oldName) 7 8 # put foolib.dll in a subdir 9 libDir = Path.combine('..', 'libdir') 10 path = Path.combine(libDir, newName) 11 if File.exists(path) 12 File.delete(path) 13 File.copy(oldName, path) 14 15 # needs to use args .compile-only, -lib:libdir -ref:foolib 16 sub = '512-lib-option.cobra' 17 optFile = '.cobrarc' 18 optFileLines = @[ 19 '# optFile/510-lib-optionTest', 20 'compile:true', 21 'lib:[libDir]', 22 'ref:foolib' 23 ] 24 File.writeAllLines(optFile, optFileLines) 25 26 p as System.Diagnostics.Process? 27 CobraCore.runCobraExe(sub, out p) 28 assert p.exitCode == 0 29 File.delete(optFile) 30 -
Tests/700-command-line/optFile/118-time-it.cobra
1 class TimeIt 2 3 def main 4 sub = '110-hello.cobra' 5 optFile = '.cobrarc' 6 hdr = '# optFile/118-timeit' 7 8 File.writeAllLines(optFile, @[hdr,'#empty options file']) 9 output = .runCobraExe('[sub]') 10 assert 'timeit =' not in output 11 assert 'Hello' in output 12 13 File.writeAllLines(optFile, @[hdr, 'timeit:true']) 14 output = .runCobraExe('[sub]') 15 assert 'total' in output 16 assert 'execute =' in output 17 assert 'compile =' in output 18 assert 'lines compiled' in output 19 assert 'nodes compiled' in output 20 assert 'tokens compiled' in output 21 assert 'Hello' in output 22 File.delete(optFile) 23 24 def runCobraExe(args as String) as String 25 p as System.Diagnostics.Process? 26 return CobraCore.runCobraExe(args, out p) -
Tests/700-command-line/optFile/801-options-fileName.cobra
1 # test options file with embedded filename to compile 2 class OptionsFileDrvr 3 4 def main is shared 5 optFile = 'myOptwName' 6 sub = '-options-file:[optFile] ' 7 optFileLines = @[ 8 '# optFile/801-options-fileName', 9 'turbo:true', 10 'out:nameFmOpts', 11 '621-turbo.cobra', 12 ] 13 File.writeAllLines(optFile, optFileLines) 14 15 p as System.Diagnostics.Process? 16 output = CobraCore.runCobraExe(sub, out p) 17 assert p.exitCode == 0 18 assert output.trim.length == 0 19 File.delete(optFile) -
Tests/700-command-line/optFile/512-lib-option.cobra
1 # .skip. driven from 510-lib-optionTest.cobra 2 # needs to use args -compile, -lib:libdir -ref:foolib 3 4 class Test 5 6 def main is shared 7 assert Foo().two == 2 -
Tests/700-command-line/optFile/702-echo.cobra
1 # .skip. Driven from 700-run-args 2 class Echo 3 def main is shared 4 args = CobraCore.commandLineArgs 5 sep = '' 6 for a in args[1:] 7 print '[sep][a]' stop 8 sep = ' ' 9 if args.count > 1 10 print ' :[args.count-1]' stop 11 print -
Tests/700-command-line/optFile/650-out-option.cobra
1 # .skip. driven from 652-out-option-verify 2 # needs args -compile -out:outoption.exe 3 4 class OutOption 5 6 def main is shared 7 print 'DateTime Now is', DateTime.now -
Tests/700-command-line/optFile/652-out-option-verify.cobra
1 class OutOptionVerify 2 3 def main is shared 4 # needs to use args -compile -out:outoption.exe 5 sub = '650-out-option.cobra' 6 optFile = '.cobrarc' 7 optFileLines = @[ 8 '# optFile/652-out-option-verify', 9 'compile:true', 10 'out:outoption.exe', 11 ] 12 File.writeAllLines(optFile, optFileLines) 13 14 p as System.Diagnostics.Process? 15 output = CobraCore.runCobraExe(sub, out p) 16 assert p.exitCode == 0 17 assert 'Compilation succeeded' in output 18 File.delete(optFile) 19 20 21 name = 'outoption.exe' 22 p1 = System.Diagnostics.Process() 23 p1.startInfo.fileName = name 24 output = CobraCore.runAndCaptureAllOutput(p1) 25 assert 'DateTime Now is' in output 26 27 28 No newline at end of file -
Developer/IntermediateReleaseNotes.text
58 58 59 59 An above error about numeric types indicates that you may want to set the default numeric type with "@number [expectedType]" in a source file or "cobra -number:[expectedType]" at the command line. 60 60 61 * Added support for a cwd default options file (.cobrarc, cobra.rc, cobra.init) to store multiple 62 (optionally commented) cmdline options in. 63 Any options set on the commandline explicitly will override these. 64 Provide new commandline option -options-file/-optfile/-of 65 to allow to disable options file processing (-options-file:none) or to specify an alternative filename 66 to read from (-options-file:FILENAME). 61 67 68 62 69 ================================================================================ 63 70 Library 64 71 ================================================================================