Index: tests/standalone/io/addlatexhash_test.dart |
diff --git a/tests/standalone/io/addlatexhash_test.dart b/tests/standalone/io/addlatexhash_test.dart |
deleted file mode 100755 |
index 46f8dbcc48f8dc17fc163669f9668c7e0ed73387..0000000000000000000000000000000000000000 |
--- a/tests/standalone/io/addlatexhash_test.dart |
+++ /dev/null |
@@ -1,220 +0,0 @@ |
-#!/usr/bin/env dart |
-// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-// testing ../../../tools/addlatexhash.dart |
- |
-import 'dart:io'; |
-import 'package:path/path.dart' as path; |
-import '../../../tools/addlatexhash.dart'; |
- |
-final execDir = path.dirname(path.fromUri(Platform.executable)); |
-final dartRootDir = path.dirname(path.dirname(execDir)); |
-final dartRootPath = dartRootDir.toString(); |
- |
-List<String> packageOptions() { |
- if (Platform.packageRoot != null) { |
- return <String>['--package-root=${Platform.packageRoot}']; |
- } else if (Platform.packageConfig != null) { |
- return <String>['--packages=${Platform.packageConfig}']; |
- } else { |
- return <String>[]; |
- } |
-} |
- |
-// Check that the given ProcessResult indicates success; if so |
-// return the standard output, otherwise report the failure |
-checkAction(result, errorMessage) { |
- if (result.exitCode != 0) { |
- print(result.stdout); |
- print(result.stderr); |
- throw errorMessage; |
- } |
- return result.stdout; |
-} |
- |
-oneTestCutMatch(line, re, expected) { |
- var result = cutMatch(line, new RegExp(re).firstMatch(line)); |
- if (result != expected) { |
- throw "cutMatch '$re' from '$line' yields '$result' != '$expected'"; |
- } |
-} |
- |
-void testCutMatch() { |
- oneTestCutMatch("test", "", "test"); |
- oneTestCutMatch("test", "e", "tst"); |
- oneTestCutMatch("test", "te", "st"); |
- oneTestCutMatch("test", "st", "te"); |
- oneTestCutMatch("test", "test", ""); |
-} |
- |
-oneTestSisp(sispFun, nameSuffix, line, expected) { |
- var result = sispFun(line); |
- if (result != expected) { |
- throw "sispIsDart$nameSuffix '$line' yields $result"; |
- } |
-} |
- |
-testSisp() { |
- oneTestSisp(sispIsDartBegin, "Begin", "\\begin{dartCode}\n", true); |
- oneTestSisp(sispIsDartBegin, "Begin", " \\begin{dartCode}\n", true); |
- oneTestSisp(sispIsDartBegin, "Begin", "whatever else ..", false); |
- oneTestSisp(sispIsDartEnd, "End", "\\end{dartCode}", true); |
- oneTestSisp(sispIsDartEnd, "End", " \\end{dartCode}\t \n", true); |
- oneTestSisp(sispIsDartEnd, "End", "whatever else ..", false); |
-} |
- |
-// Check that the hash values of paragraphs in the specially prepared |
-// LaTeX source 'addlatexhash_test_src.tex' are identical in groups |
-// of eight (so we get 8 identical hash values, then another hash |
-// value 8 times, etc.) |
-testSameHash(String tmpDirPath) { |
- // file names/paths for file containing groups of 8 variants of a paragraph |
- const par8timesName = "addlatexhash_test_src"; |
- const par8timesFileName = "$par8timesName.tex"; |
- final par8timesDirPath = path.join(dartRootDir, "tests", "standalone", "io"); |
- final par8timesPath = path.join(par8timesDirPath, par8timesFileName); |
- final tmpPar8timesPath = path.join(tmpDirPath, par8timesFileName); |
- |
- // file names paths for output |
- final hashName = par8timesName + "-hash"; |
- final hashFileName = "$hashName.tex"; |
- final hashPath = path.join(tmpDirPath, hashFileName); |
- final listName = par8timesName + "-list"; |
- final listFileName = "$listName.txt"; |
- final listPath = path.join(tmpDirPath, listFileName); |
- |
- // dart executable |
- final dartExecutable = Platform.executable; |
- if (dartExecutable == "") throw "dart executable not available"; |
- |
- // actions to take |
- runAddHash() { |
- var args = packageOptions(); |
- args.addAll([ |
- path.join(dartRootPath, "tools", "addlatexhash.dart"), |
- tmpPar8timesPath, |
- hashPath, |
- listPath |
- ]); |
- return Process.runSync(dartExecutable, args); |
- } |
- |
- // perform test |
- new File(par8timesPath).copySync(tmpPar8timesPath); |
- checkAction(runAddHash(), "addlatexhash.dart failed"); |
- var listFile = new File(listPath); |
- var listLines = listFile.readAsLinesSync(); |
- var latestLine = null; |
- var sameCount = 0; |
- for (var line in listLines) { |
- if (!line.startsWith(" ")) continue; // section marker |
- if (line.startsWith(" %")) continue; // transformed text "comment" |
- if (line != latestLine) { |
- // new hash, check for number of equal hashes, then reset |
- if (sameCount % 8 == 0) { |
- // saw zero or more blocks of 8 identical hash values: OK |
- latestLine = line; |
- sameCount = 1; |
- } else { |
- throw "normalization failed to produce same result"; |
- } |
- } else { |
- sameCount++; |
- } |
- } |
-} |
- |
-// Check that the LaTeX source transformation done by addlatexhash.dart |
-// does not affect the generated output, as seen via dvi2tty and diff. |
-// NB: Not part of normal testing (only local): latex and dvi2tty are |
-// not installed in the standard test environment. |
-testSameDVI(String tmpDirPath) { |
- // file names/paths for original spec |
- const specName = "dartLangSpec"; |
- const specFileName = "$specName.tex"; |
- final specDirPath = path.join(dartRootDir, "docs", "language"); |
- final specPath = path.join(specDirPath, specFileName); |
- final tmpSpecPath = path.join(tmpDirPath, specFileName); |
- const specDviFileName = "$specName.dvi"; |
- final specDviPath = path.join(tmpDirPath, specDviFileName); |
- |
- // file names/paths for associated sty |
- const styFileName = "dart.sty"; |
- final styPath = path.join(specDirPath, styFileName); |
- final tmpStyPath = path.join(tmpDirPath, styFileName); |
- |
- // file names paths for output |
- const hashName = "dartLangSpec-hash"; |
- const hashFileName = "$hashName.tex"; |
- final hashPath = path.join(tmpDirPath, hashFileName); |
- final hashDviPath = path.join(tmpDirPath, "$hashName.dvi"); |
- |
- final listName = "$specName-list"; |
- final listFileName = "$listName.txt"; |
- final listPath = path.join(tmpDirPath, listFileName); |
- |
- // dart executable |
- final dartExecutable = Platform.executable; |
- if (dartExecutable == "") throw "dart executable not available"; |
- |
- // actions to take; rely on having latex and dvi2tty in PATH |
- runLatex(fileName, workingDirectory) => |
- Process.runSync("latex", [fileName], workingDirectory: workingDirectory); |
- |
- runAddHash() { |
- var args = packageOptions(); |
- args.addAll([ |
- path.join(dartRootPath, "tools", "addlatexhash.dart"), |
- tmpSpecPath, |
- hashPath, |
- listPath |
- ]); |
- return Process.runSync(dartExecutable, args); |
- } |
- |
- runDvi2tty(dviFile) => |
- Process.runSync("dvi2tty", [dviFile], workingDirectory: tmpDirPath); |
- |
- chkDvi2tty(file, subject) => |
- checkAction(runDvi2tty(file), "dvitty on $subject failed"); |
- |
- // perform test |
- var renewLMHashCmd = r"\renewcommand{\LMHash}[1]{\OriginalLMHash{xxxx}}"; |
- new File(styPath) |
- .copySync(tmpStyPath) |
- .writeAsStringSync(renewLMHashCmd, mode: FileMode.APPEND); |
- new File(specPath).copySync(tmpSpecPath); |
- |
- checkAction(runAddHash(), "addlatexhash.dart failed"); |
- for (var i = 0; i < 5; i++) { |
- checkAction(runLatex(specName, tmpDirPath), "LaTeX on spec failed"); |
- } |
- for (var i = 0; i < 5; i++) { |
- checkAction(runLatex(hashFileName, tmpDirPath), "LaTeX on output failed"); |
- } |
- if (chkDvi2tty(specDviPath, "spec") != chkDvi2tty(hashDviPath, "output")) { |
- throw "dvi2tty spec != dvitty output"; |
- } |
-} |
- |
-runWithTempDir(void test(String tempDir)) { |
- final tempDir = Directory.systemTemp.createTempSync("addlatexhash_test"); |
- try { |
- test(tempDir.path); |
- } finally { |
- tempDir.delete(recursive: true); |
- } |
-} |
- |
-main([args]) { |
- testCutMatch(); |
- testSisp(); |
- |
- runWithTempDir(testSameHash); |
- // latex and dvi2tty are not installed in the standard test environment |
- if (args.length > 0 && args[0] == "local") { |
- runWithTempDir(testSameDVI); |
- } |
-} |