Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | |
| 2 // for details. All rights reserved. Use of this source code is governed by a | |
| 3 // BSD-style license that can be found in the LICENSE file. | |
| 4 | |
| 5 // testing ../../../tools/addlatexhash.dart | |
| 6 | |
| 7 import 'dart:io'; | |
| 8 import 'package:path/path.dart' as path; | |
| 9 import '../../../tools/addlatexhash.dart'; | |
| 10 | |
| 11 final scriptDir = path.dirname(path.fromUri(Platform.script)); | |
| 12 final dartRootDir = path.dirname(path.dirname(path.dirname(scriptDir))); | |
| 13 final dartRootPath = dartRootDir.toString(); | |
| 14 | |
| 15 // Check that the given ProcessResult indicates success; if so | |
| 16 // return the standard output, otherwise report the failure | |
| 17 checkAction(result, errorMessage) { | |
| 18 var output = result.stdout; | |
|
ricow1
2014/10/15 08:29:05
there is not really any good reason to do this ass
eernst
2014/10/15 11:03:04
OK, I did that because I envision (1) result.stdou
| |
| 19 if (result.exitCode != 0) { | |
| 20 print(output); | |
| 21 print(result.stderr); | |
| 22 throw errorMessage; | |
| 23 } | |
| 24 return output; | |
| 25 } | |
| 26 | |
| 27 oneTestCutMatch(line, re, expected) { | |
| 28 var result = cutMatch(line, new RegExp(re).firstMatch(line)); | |
| 29 if (result != expected) { | |
| 30 throw "cutMatch '$re' from '$line' yields '$result' != '$expected'"; | |
| 31 } | |
| 32 } | |
| 33 | |
| 34 void testCutMatch() { | |
| 35 oneTestCutMatch("test", "", "test"); | |
| 36 oneTestCutMatch("test", "e", "tst"); | |
| 37 oneTestCutMatch("test", "te", "st"); | |
| 38 oneTestCutMatch("test", "st", "te"); | |
| 39 oneTestCutMatch("test", "test", ""); | |
| 40 } | |
| 41 | |
| 42 oneTestSisp(sispFun, nameSuffix, line, expected) { | |
| 43 var result = sispFun(line); | |
| 44 if (result != expected) { | |
| 45 throw "sispIsDart$nameSuffix '$line' yields $result"; | |
| 46 } | |
| 47 } | |
| 48 | |
| 49 testSisp() { | |
| 50 oneTestSisp(sispIsDartBegin, "Begin", "\\begin{dartCode}\n", true); | |
| 51 oneTestSisp(sispIsDartBegin, "Begin", " \\begin{dartCode}\n", true); | |
| 52 oneTestSisp(sispIsDartBegin, "Begin", "whatever else ..", false); | |
| 53 oneTestSisp(sispIsDartEnd, "End", "\\end{dartCode}", true); | |
| 54 oneTestSisp(sispIsDartEnd, "End", " \\end{dartCode}\t \n", true); | |
| 55 oneTestSisp(sispIsDartEnd, "End", "whatever else ..", false); | |
| 56 } | |
| 57 | |
| 58 // Check that the LaTeX source transformation done by addlatexhash.dart | |
| 59 // does not affect the generated output, as seen via dvi2tty and diff. | |
| 60 // NB: Not part of normal testing (only local): latex and dvi2tty are | |
| 61 // not installed in the standard test environment. | |
| 62 testNoChange() { | |
| 63 var tmpDir = Directory.systemTemp.createTempSync("addlatexhash_test"); | |
| 64 final tmpDirPath = tmpDir.path; | |
| 65 final specDirPath = path.join(dartRootDir, "docs", "language"); | |
| 66 const specName = "dartLangSpec"; | |
| 67 final specFileName = "${specName}.tex"; | |
| 68 final specPath = path.join(specDirPath, specFileName); | |
| 69 const styFileName = "dart.sty"; | |
| 70 final styPath = path.join(specDirPath, styFileName); | |
| 71 const tmpName = "dartLangSpec-hash"; | |
| 72 final tmpFileName = "${tmpName}.tex"; | |
| 73 final tmpFilePath = path.join(tmpDirPath, tmpFileName); | |
| 74 final specDviFileName = "${specName}.dvi"; | |
| 75 final specDviPath = path.join(specDirPath, specDviFileName); | |
| 76 final tmpDviPath = path.join(tmpDirPath, "${tmpName}.dvi"); | |
| 77 | |
| 78 runLatex(fileName,workingDirectory) => Process.runSync( | |
| 79 "latex", | |
| 80 [fileName], | |
| 81 workingDirectory: workingDirectory); | |
| 82 runAddHash() => Process.runSync( | |
| 83 "dart", | |
| 84 [dartRootPath + "/tools/addlatexhash.dart", | |
| 85 dartRootPath + "/docs/language/dartLangSpec.tex", | |
| 86 tmpDir.path + "/dartLangSpec-hash.tex"]); | |
| 87 runDvi2tty(dviFile) => Process.runSync( | |
| 88 "dvi2tty", | |
| 89 [dviFile], | |
| 90 workingDirectory: tmpDir.path); | |
| 91 chkDvi2tty(file, subject) => | |
| 92 checkAction(runDvi2tty(file), "dvitty on $subject failed"); | |
| 93 | |
| 94 for (var i = 0; i < 5; i++) { | |
| 95 checkAction(runLatex(specPath, specDirPath), "LaTeX on spec failed"); | |
| 96 } | |
| 97 checkAction(runAddHash(),"addlatexhash.dart failed"); | |
| 98 new File(styPath).copySync("$tmpDirPath/$styFileName"); | |
| 99 for (var i = 0; i < 5; i++) { | |
| 100 checkAction(runLatex(tmpFileName, tmpDirPath), "LaTeX on output failed"); | |
| 101 } | |
| 102 if (chkDvi2tty(specDviPath, "spec") != chkDvi2tty(tmpDviPath, "output")) { | |
| 103 throw "dvi2tty spec != dvitty output"; | |
| 104 } | |
| 105 } | |
| 106 | |
| 107 main([args]) { | |
| 108 testCutMatch(); | |
| 109 testSisp(); | |
| 110 // latex and dvi2tty are not installed in the standard test environment | |
| 111 if (args.length > 0 && args[0] == "local") testNoChange(); | |
| 112 } | |
| OLD | NEW |