From 81a1dd2b8c8ac254ee3e1af957e9a9e43f569fef Mon Sep 17 00:00:00 2001 From: "Ilya.Kazakevich" Date: Fri, 28 Nov 2014 17:59:22 +0300 Subject: [PATCH] Test fix --- .../testData/dotNet/expected.skeleton.Deep.py | 2 +- .../expected.skeleton.SingleNameSpace.py | 2 +- .../testData/dotNet/expected.skeleton.java.py | 2 +- .../env/python/dotNet/SkeletonTestTask.java | 33 +++++++++++++++++-- 4 files changed, 34 insertions(+), 5 deletions(-) diff --git a/python/testData/dotNet/expected.skeleton.Deep.py b/python/testData/dotNet/expected.skeleton.Deep.py index 4a8d17742a4b..5f8ab4bdc175 100644 --- a/python/testData/dotNet/expected.skeleton.Deep.py +++ b/python/testData/dotNet/expected.skeleton.Deep.py @@ -1,7 +1,7 @@ # encoding: utf-8 # module SingleNameSpace.Some.Deep calls itself Deep # from SingleNameSpace, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null -# by generator 1.136 +# by generatorXXX # no doc # no imports diff --git a/python/testData/dotNet/expected.skeleton.SingleNameSpace.py b/python/testData/dotNet/expected.skeleton.SingleNameSpace.py index a40bcbe55889..3441d2bab5b4 100644 --- a/python/testData/dotNet/expected.skeleton.SingleNameSpace.py +++ b/python/testData/dotNet/expected.skeleton.SingleNameSpace.py @@ -1,7 +1,7 @@ # encoding: utf-8 # module SingleNameSpace # from SingleNameSpace, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null -# by generator 1.136 +# by generator XXX # no doc # no imports diff --git a/python/testData/dotNet/expected.skeleton.java.py b/python/testData/dotNet/expected.skeleton.java.py index 380af0c0efb8..18374870e92a 100644 --- a/python/testData/dotNet/expected.skeleton.java.py +++ b/python/testData/dotNet/expected.skeleton.java.py @@ -1,7 +1,7 @@ # encoding: utf-8 # module com.just.like.java calls itself java # from PythonLibs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null -# by generator 1.136 +# by generator XXX # no doc # no imports diff --git a/python/testSrc/com/jetbrains/env/python/dotNet/SkeletonTestTask.java b/python/testSrc/com/jetbrains/env/python/dotNet/SkeletonTestTask.java index 7b1d06199d84..4ab28588540b 100644 --- a/python/testSrc/com/jetbrains/env/python/dotNet/SkeletonTestTask.java +++ b/python/testSrc/com/jetbrains/env/python/dotNet/SkeletonTestTask.java @@ -9,7 +9,10 @@ import com.intellij.openapi.progress.Task; import com.intellij.openapi.progress.util.AbstractProgressIndicatorBase; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.util.io.FileUtil; +import com.intellij.openapi.util.io.StreamUtil; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.PsiDocumentManager; +import com.intellij.rt.execution.junit.FileComparisonFailure; import com.intellij.util.ui.UIUtil; import com.jetbrains.env.PyExecutionFixtureTestTask; import com.jetbrains.python.PyBundle; @@ -26,8 +29,12 @@ import org.jetbrains.annotations.Nullable; import org.junit.Assert; import java.io.File; +import java.io.FileInputStream; import java.io.IOException; +import java.nio.charset.Charset; import java.util.Collections; +import java.util.Iterator; +import java.util.List; import java.util.Set; /** @@ -121,12 +128,34 @@ class SkeletonTestTask extends PyExecutionFixtureTestTask { FileUtil.copy(skeletonFile, new File(myFixture.getTempDirPath(), skeletonFile.getName())); if (myExpectedSkeletonFile != null) { - // TODO: Get rid of hardcoded skeleton version - myFixture.checkResultByFile(skeletonFile.getName(), myExpectedSkeletonFile, false); + final String actual = StreamUtil.readText(new FileInputStream(skeletonFile), Charset.defaultCharset()); + final String skeletonText = + StreamUtil.readText(new FileInputStream(new File(getTestDataPath(), myExpectedSkeletonFile)), Charset.defaultCharset()); + + // TODO: Move to separate method ? + if (!Matchers.equalToIgnoringWhiteSpace(removeGeneratorVersion(skeletonText)).matches(removeGeneratorVersion(actual))) { + throw new FileComparisonFailure("asd", skeletonText, actual, skeletonFile.getAbsolutePath()); + } } myGeneratedSkeleton = (PyFile)myFixture.configureByFile(skeletonFile.getName()); } + /** + * Removes strings that starts with "# by generator", because generator version may change + * @param textToClean text to remove strings from + * @return text after cleanup + */ + private static String removeGeneratorVersion(@NotNull final String textToClean) { + final List strings = StringUtil.split(textToClean, "\n"); + final Iterator iterator = strings.iterator(); + while (iterator.hasNext()) { + if (iterator.next().startsWith("# by generator")) { + iterator.remove(); + } + } + return StringUtil.join(strings, "\n"); + } + @Override public Set getTags() {