Test fix
authorIlya.Kazakevich <Ilya.Kazakevich@jetbrains.com>
Fri, 28 Nov 2014 14:59:22 +0000 (17:59 +0300)
committerIlya.Kazakevich <Ilya.Kazakevich@jetbrains.com>
Fri, 28 Nov 2014 14:59:22 +0000 (17:59 +0300)
python/testData/dotNet/expected.skeleton.Deep.py
python/testData/dotNet/expected.skeleton.SingleNameSpace.py
python/testData/dotNet/expected.skeleton.java.py
python/testSrc/com/jetbrains/env/python/dotNet/SkeletonTestTask.java

index 4a8d17742a4bfb62671f2da3661ef0a6134b6e01..5f8ab4bdc175f4105b5ea9aaf66984759b32db77 100644 (file)
@@ -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
 
index a40bcbe558893ae93e5bceee2c66155267a1ed87..3441d2bab5b4f58175f84e5abc4912ea4afeacf8 100644 (file)
@@ -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
 
index 380af0c0efb8f330172a15cc08928065a526000f..18374870e92a99443e320f2a338150c15d149268 100644 (file)
@@ -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
 
index 7b1d06199d847f6479bfcb47b1ed414733bde663..4ab28588540b86a5299d7b8964168bf3ada728c2 100644 (file)
@@ -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<String> strings = StringUtil.split(textToClean, "\n");
+    final Iterator<String> iterator = strings.iterator();
+    while (iterator.hasNext()) {
+      if (iterator.next().startsWith("# by generator")) {
+        iterator.remove();
+      }
+    }
+    return StringUtil.join(strings, "\n");
+  }
+
 
   @Override
   public Set<String> getTags() {