Skip to content
Prev Previous commit
Next Next commit
convert to file scoped namespace style
  • Loading branch information
yamachu committed Jul 27, 2022
commit b6804be3856f3ce34ab728370f0af0647ff7f4a0
49 changes: 24 additions & 25 deletions src/tests/BuildWasmApps/Wasm.Build.Tests/ConfigSrcTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,32 +7,31 @@

#nullable enable

namespace Wasm.Build.Tests
namespace Wasm.Build.Tests;

public class ConfigSrcTests : BuildTestBase
{
public class ConfigSrcTests : BuildTestBase
public ConfigSrcTests(ITestOutputHelper output, SharedBuildPerTestClassFixture buildContext) : base(output, buildContext)
{}

// NOTE: port number determinizes dynamically, so could not generate absolute URI
[Theory]
[BuildAndRun(host: RunHost.V8 | RunHost.NodeJS)]
public void ConfigSrcAbsolutePath(BuildArgs buildArgs, RunHost host, string id)
{
public ConfigSrcTests(ITestOutputHelper output, SharedBuildPerTestClassFixture buildContext) : base(output, buildContext)
{}

// NOTE: port number determinizes dynamically, so could not generate absolute URI
[Theory]
[BuildAndRun(host: RunHost.V8 | RunHost.NodeJS)]
public void ConfigSrcAbsolutePath(BuildArgs buildArgs, RunHost host, string id)
{
buildArgs = buildArgs with { ProjectName = $"configsrcabsolute_{buildArgs.Config}_{buildArgs.AOT}" };
buildArgs = ExpandBuildArgs(buildArgs);

BuildProject(buildArgs,
id: id,
new BuildProjectOptions(
InitProject: () => File.WriteAllText(Path.Combine(_projectDir!, "Program.cs"), s_mainReturns42),
DotnetWasmFromRuntimePack: !(buildArgs.AOT || buildArgs.Config == "Release")));

string binDir = GetBinDir(baseDir: _projectDir!, config: buildArgs.Config);
string bundleDir = Path.Combine(binDir, "AppBundle");
string configSrc = Path.GetFullPath(Path.Combine(bundleDir, "mono-config.json"));

RunAndTestWasmApp(buildArgs, expectedExitCode: 42, host: host, id: id, extraXHarnessMonoArgs: $"--config-src={configSrc}");
}
buildArgs = buildArgs with { ProjectName = $"configsrcabsolute_{buildArgs.Config}_{buildArgs.AOT}" };
buildArgs = ExpandBuildArgs(buildArgs);

BuildProject(buildArgs,
id: id,
new BuildProjectOptions(
InitProject: () => File.WriteAllText(Path.Combine(_projectDir!, "Program.cs"), s_mainReturns42),
DotnetWasmFromRuntimePack: !(buildArgs.AOT || buildArgs.Config == "Release")));

string binDir = GetBinDir(baseDir: _projectDir!, config: buildArgs.Config);
string bundleDir = Path.Combine(binDir, "AppBundle");
string configSrc = Path.GetFullPath(Path.Combine(bundleDir, "mono-config.json"));

RunAndTestWasmApp(buildArgs, expectedExitCode: 42, host: host, id: id, extraXHarnessMonoArgs: $"--config-src={configSrc}");
}
}
111 changes: 55 additions & 56 deletions src/tests/BuildWasmApps/Wasm.Build.Tests/WasmRunOutOfAppBundleTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,77 +7,76 @@

#nullable enable

namespace Wasm.Build.Tests
namespace Wasm.Build.Tests;

public class WasmRunOutOfAppBundleTests : BuildTestBase
{
public class WasmRunOutOfAppBundleTests : BuildTestBase
public WasmRunOutOfAppBundleTests(ITestOutputHelper output, SharedBuildPerTestClassFixture buildContext) : base(output, buildContext)
{}

[Theory]
[BuildAndRun]
public void RunOutOfAppBundle(BuildArgs buildArgs, RunHost host, string id)
{
public WasmRunOutOfAppBundleTests(ITestOutputHelper output, SharedBuildPerTestClassFixture buildContext) : base(output, buildContext)
{}
buildArgs = buildArgs with { ProjectName = $"outofappbundle_{buildArgs.Config}_{buildArgs.AOT}" };
buildArgs = ExpandBuildArgs(buildArgs);

[Theory]
[BuildAndRun]
public void RunOutOfAppBundle(BuildArgs buildArgs, RunHost host, string id)
{
buildArgs = buildArgs with { ProjectName = $"outofappbundle_{buildArgs.Config}_{buildArgs.AOT}" };
buildArgs = ExpandBuildArgs(buildArgs);
BuildProject(buildArgs,
id: id,
new BuildProjectOptions(
InitProject: () => File.WriteAllText(Path.Combine(_projectDir!, "Program.cs"), s_mainReturns42),
DotnetWasmFromRuntimePack: !(buildArgs.AOT || buildArgs.Config == "Release")));

BuildProject(buildArgs,
id: id,
new BuildProjectOptions(
InitProject: () => File.WriteAllText(Path.Combine(_projectDir!, "Program.cs"), s_mainReturns42),
DotnetWasmFromRuntimePack: !(buildArgs.AOT || buildArgs.Config == "Release")));
string binDir = GetBinDir(baseDir: _projectDir!, config: buildArgs.Config);
string appBundleDir = Path.Combine(binDir, "AppBundle");
string tmpBundleDirName = "AppBundleTmp";
string tmpBundleDir = Path.Combine(binDir, tmpBundleDirName);

string binDir = GetBinDir(baseDir: _projectDir!, config: buildArgs.Config);
string appBundleDir = Path.Combine(binDir, "AppBundle");
string tmpBundleDirName = "AppBundleTmp";
string tmpBundleDir = Path.Combine(binDir, tmpBundleDirName);
if (host == RunHost.Chrome)
{
Directory.Move(appBundleDir, tmpBundleDir);
Directory.CreateDirectory(appBundleDir);
// Create $binDir/AppBundle/AppBundle
Directory.Move(tmpBundleDir, Path.Combine(appBundleDir, "AppBundle"));

if (host == RunHost.Chrome)
string indexHtmlPath = Path.Combine(appBundleDir, "index.html");
if (!File.Exists(indexHtmlPath))
{
Directory.Move(appBundleDir, tmpBundleDir);
Directory.CreateDirectory(appBundleDir);
// Create $binDir/AppBundle/AppBundle
Directory.Move(tmpBundleDir, Path.Combine(appBundleDir, "AppBundle"));

string indexHtmlPath = Path.Combine(appBundleDir, "index.html");
if (!File.Exists(indexHtmlPath))
{
var html = @"<html><body><script type=""module"" src=""./AppBundle/test-main.js""></script></body></html>";
File.WriteAllText(indexHtmlPath, html);
}
} else {
CopyAllFiles(appBundleDir, tmpBundleDir);
var html = @"<html><body><script type=""module"" src=""./AppBundle/test-main.js""></script></body></html>";
File.WriteAllText(indexHtmlPath, html);
}
} else {
CopyAllFiles(appBundleDir, tmpBundleDir);
}

RunAndTestWasmApp(buildArgs, expectedExitCode: 42, host: host, id: id, jsRelativePath: $"../{tmpBundleDirName}/test-main.js");
RunAndTestWasmApp(buildArgs, expectedExitCode: 42, host: host, id: id, jsRelativePath: $"../{tmpBundleDirName}/test-main.js");

// Restore AppBundle Dir
if (host == RunHost.Chrome)
{
Directory.Move(Path.Combine(appBundleDir, "AppBundle"), tmpBundleDir);
Directory.Delete(appBundleDir, true);
Directory.Move(tmpBundleDir, appBundleDir);
} else {
Directory.Delete(tmpBundleDir, true);
}
// Restore AppBundle Dir
if (host == RunHost.Chrome)
{
Directory.Move(Path.Combine(appBundleDir, "AppBundle"), tmpBundleDir);
Directory.Delete(appBundleDir, true);
Directory.Move(tmpBundleDir, appBundleDir);
} else {
Directory.Delete(tmpBundleDir, true);
}
}

private void CopyAllFiles(string srcDir, string destDir)
private void CopyAllFiles(string srcDir, string destDir)
{
if (!Directory.Exists(destDir))
{
if (!Directory.Exists(destDir))
{
Directory.CreateDirectory(destDir);
}
Directory.CreateDirectory(destDir);
}

foreach (var file in Directory.GetFiles(srcDir))
{
File.Copy(file, Path.Combine(destDir, Path.GetFileName(file)), true);
}
foreach (var file in Directory.GetFiles(srcDir))
{
File.Copy(file, Path.Combine(destDir, Path.GetFileName(file)), true);
}

foreach (var directory in Directory.GetDirectories(srcDir))
{
CopyAllFiles(directory, Path.Combine(destDir, Path.GetFileName(directory)));
}
foreach (var directory in Directory.GetDirectories(srcDir))
{
CopyAllFiles(directory, Path.Combine(destDir, Path.GetFileName(directory)));
}
}
}