aboutsummaryrefslogtreecommitdiff
path: root/src/ProtoGen.Test/TempFile.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/ProtoGen.Test/TempFile.cs')
-rw-r--r--src/ProtoGen.Test/TempFile.cs54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/ProtoGen.Test/TempFile.cs b/src/ProtoGen.Test/TempFile.cs
new file mode 100644
index 00000000..e41b591b
--- /dev/null
+++ b/src/ProtoGen.Test/TempFile.cs
@@ -0,0 +1,54 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+
+namespace Google.ProtocolBuffers.ProtoGen
+{
+ class ProtoFile : TempFile
+ {
+ public ProtoFile(string filename, string contents)
+ : base(filename, contents)
+ {
+ }
+ }
+ class TempFile : IDisposable
+ {
+ private string tempFile;
+
+ public static TempFile Attach(string path)
+ {
+ return new TempFile(path, null);
+ }
+
+ protected TempFile(string filename, string contents) {
+ tempFile = filename;
+ if (contents != null)
+ {
+ File.WriteAllText(tempFile, contents, new UTF8Encoding(false));
+ }
+ }
+
+ public TempFile(string contents)
+ : this(Path.GetTempFileName(), contents)
+ {
+ }
+
+ public string TempPath { get { return tempFile; } }
+
+ public void ChangeExtension(string ext)
+ {
+ string newFile = Path.ChangeExtension(tempFile, ext);
+ File.Move(tempFile, newFile);
+ tempFile = newFile;
+ }
+
+ public void Dispose()
+ {
+ if (File.Exists(tempFile))
+ {
+ File.Delete(tempFile);
+ }
+ }
+ }
+}