Skip to content

Commit

Permalink
Execute only in temporary directory and copy test-files if needed.
Browse files Browse the repository at this point in the history
  • Loading branch information
matthid committed Jan 12, 2019
1 parent 9ad2cdf commit 570e10b
Showing 1 changed file with 49 additions and 35 deletions.
84 changes: 49 additions & 35 deletions src/test/Fake.Core.UnitTests/Fake.DotNet.Xdt.fs
Original file line number Diff line number Diff line change
Expand Up @@ -6,80 +6,94 @@ open System.Text
open Fake.DotNet
open Fake.IO
open Expecto
open Fake.SystemHelper

module TestData =
let fileName file =
let testFilePath file =
Path.Combine(__SOURCE_DIRECTORY__, "TestFiles", "Fake.DotNet.Xdt.Files", file)

let replaceNewLines text =
RegularExpressions.Regex.Replace(text, @"\r\n?|\n", Environment.NewLine)

let exists file =
File.Exists(fileName file)
File.Exists(file)

let require file =
if not (exists file) then
invalidArg "file" (sprintf "Unable to read test data from %s"
(Path.GetFullPath(fileName file)))
(Path.GetFullPath(file)))

let read file =
require file
File.ReadAllText(fileName file, Encoding.UTF8)
File.ReadAllText(file, Encoding.UTF8)
|> replaceNewLines

let copy source dest =
require source
File.Copy(fileName source, fileName dest, true)
File.Copy(source, dest, true)

let delete file =
File.Delete(fileName file)
File.Delete(file)

let withTestDir f =
let tempFolder = Path.GetTempFileName()
File.Delete(tempFolder)
Directory.CreateDirectory(tempFolder)
|> ignore
try
f tempFolder
finally
try
Directory.Delete(tempFolder, true)
with
| :? DirectoryNotFoundException -> ()

open Fake.IO.FileSystemOperators

[<Tests>]
let tests =
let configFile = TestData.testFilePath "web.config"
let testTransformFile = TestData.testFilePath "web.test.config"
let expectedTransformed = TestData.testFilePath "web.transformed.config"
testList "Fake.DotNet.Xdt.Tests" [
test "when transforming file explicitly" {
let testFile = "web.new.config"
try
let expected = TestData.read "web.transformed.config"
Xdt.transformFile (TestData.fileName "web.config")
(TestData.fileName "web.test.config")
(TestData.fileName testFile)
TestData.withTestDir (fun dir ->
let testFile = dir </> "web.new.config"
let expected = TestData.read expectedTransformed
Xdt.transformFile configFile
testTransformFile
testFile
let actual = TestData.read testFile
Expect.equal actual expected "Expected the transformed file to match"
finally
TestData.delete testFile
)
}

test "when transforming file with config name" {
let confFile = "web.transformFile.config"
let testFile = "web.transformFile.test.config"
try
let expected = TestData.read "web.transformed.config"
TestData.copy "web.config" confFile
TestData.copy "web.test.config" testFile
Xdt.transformFileWithConfigName "test" (TestData.fileName confFile)
TestData.withTestDir (fun dir ->
let confFile = dir </> "web.transformFile.config"
let testFile = dir </> "web.transformFile.test.config"
let expected = TestData.read expectedTransformed
TestData.copy configFile confFile
TestData.copy testTransformFile testFile
Xdt.transformFileWithConfigName "test" confFile
let actual = TestData.read confFile
Expect.equal actual expected "Expected the transformed file to match"
finally
TestData.delete confFile
TestData.delete testFile
)
}

test "when transforming files with config name" {
let confFile = "web.transformFiles.config"
let testFile = "web.transformFiles.test.config"
try
let expected = TestData.read "web.transformed.config"
TestData.copy "web.config" confFile
TestData.copy "web.test.config" testFile
TestData.withTestDir (fun dir ->
let confFile = dir </> "web.transformFiles.config"
let testFile = dir </> "web.transformFiles.test.config"
let expected = TestData.read expectedTransformed
TestData.copy configFile confFile
TestData.copy testTransformFile testFile
let files =
GlobbingPattern.create confFile
|> GlobbingPattern.setBaseDir (Path.Combine(__SOURCE_DIRECTORY__, "TestFiles", "Fake.DotNet.Xdt.Files"))
GlobbingPattern.create "web.transformFiles.config"
|> GlobbingPattern.setBaseDir (dir)
Xdt.transformFilesWithConfigName "test" files
let actual = TestData.read confFile
Expect.equal actual expected "Expected the transformed file to match"
finally
TestData.delete confFile
TestData.delete testFile
)
}
]

0 comments on commit 570e10b

Please sign in to comment.