diff --git a/build/build-constants.yaml b/build/build-constants.yaml
index a6d77a47b8..24998571ea 100644
--- a/build/build-constants.yaml
+++ b/build/build-constants.yaml
@@ -83,7 +83,7 @@
file-name-prefix: __
- name: file-paths
constants:
- build-id-file-name: .oryx_build_id
+ build-manifest-file-name: oryx-manifest.toml
outputs:
- type: csharp
directory: src/Common
diff --git a/src/BuildScriptGenerator/BuildScriptGeneratorContext.cs b/src/BuildScriptGenerator/BuildScriptGeneratorContext.cs
index 7f549c2bcd..4c2fc97d8f 100644
--- a/src/BuildScriptGenerator/BuildScriptGeneratorContext.cs
+++ b/src/BuildScriptGenerator/BuildScriptGeneratorContext.cs
@@ -12,6 +12,11 @@ namespace Microsoft.Oryx.BuildScriptGenerator
///
public partial class BuildScriptGeneratorContext
{
+ ///
+ /// Gets or sets the information which is used to correlate log messages.
+ ///
+ public string OperationId { get; set; }
+
public ISourceRepo SourceRepo { get; set; }
///
diff --git a/src/BuildScriptGenerator/Constants.cs b/src/BuildScriptGenerator/Constants.cs
index 6fcb134a5b..00fe3e84b7 100644
--- a/src/BuildScriptGenerator/Constants.cs
+++ b/src/BuildScriptGenerator/Constants.cs
@@ -9,7 +9,6 @@ public static class Constants
{
public const string OryxEnvironmentSettingNamePrefix = "ORYX_";
public const string BuildEnvironmentFileName = "build.env";
- public const string ManifestFileName = "oryx-manifest.toml";
public const string AppInsightsKey = "APPINSIGHTS_INSTRUMENTATIONKEY";
public const string ZipAllOutputBuildPropertyKey = "zip_all_output";
public const string ZipAllOutputBuildPropertyKeyDocumentation =
diff --git a/src/BuildScriptGenerator/DefaultBuildScriptGenerator.cs b/src/BuildScriptGenerator/DefaultBuildScriptGenerator.cs
index ae3b63546c..5fce46a640 100644
--- a/src/BuildScriptGenerator/DefaultBuildScriptGenerator.cs
+++ b/src/BuildScriptGenerator/DefaultBuildScriptGenerator.cs
@@ -334,7 +334,7 @@ private string BuildScriptFromSnippets(
PostBuildCommand = postBuildCommand,
DirectoriesToExcludeFromCopyToIntermediateDir = directoriesToExcludeFromCopyToIntermediateDir,
DirectoriesToExcludeFromCopyToBuildOutputDir = directoriesToExcludeFromCopyToBuildOutputDir,
- ManifestFileName = Constants.ManifestFileName,
+ ManifestFileName = FilePaths.BuildManifestFileName,
BuildProperties = buildProperties
};
diff --git a/src/BuildScriptGenerator/DotNetCore/DotnetCorePlatform.cs b/src/BuildScriptGenerator/DotNetCore/DotnetCorePlatform.cs
index 7c0a73e70d..f053191068 100644
--- a/src/BuildScriptGenerator/DotNetCore/DotnetCorePlatform.cs
+++ b/src/BuildScriptGenerator/DotNetCore/DotnetCorePlatform.cs
@@ -8,6 +8,7 @@
using System.IO;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
+using Microsoft.Oryx.Common;
namespace Microsoft.Oryx.BuildScriptGenerator.DotNetCore
{
@@ -52,6 +53,8 @@ public LanguageDetectorResult Detect(ISourceRepo sourceRepo)
public BuildScriptSnippet GenerateBashBuildScriptSnippet(BuildScriptGeneratorContext context)
{
var buildProperties = new Dictionary();
+ buildProperties[ManifestFilePropertyKeys.OperationId] = context.OperationId;
+
(string projectFile, string publishDir) = GetProjectFileAndPublishDir(context.SourceRepo);
if (string.IsNullOrEmpty(projectFile) || string.IsNullOrEmpty(publishDir))
{
@@ -77,7 +80,7 @@ public BuildScriptSnippet GenerateBashBuildScriptSnippet(BuildScriptGeneratorCon
context),
PreBuildCommand = preBuildCommand,
PostBuildCommand = postBuildCommand,
- ManifestFileName = Constants.ManifestFileName,
+ ManifestFileName = FilePaths.BuildManifestFileName,
ZipAllOutput = zipAllOutput,
Configuration = GetBuildConfiguration()
};
@@ -148,6 +151,14 @@ public IEnumerable GetDirectoriesToExcludeFromCopyToIntermediateDir(
return dirs;
}
+ private static bool ShouldZipAllOutput(BuildScriptGeneratorContext context)
+ {
+ return BuildPropertiesHelper.IsTrue(
+ Constants.ZipAllOutputBuildPropertyKey,
+ context,
+ valueIsRequired: false);
+ }
+
private string GetBuildConfiguration()
{
var configuration = _options.MSBuildConfiguration;
@@ -159,14 +170,6 @@ private string GetBuildConfiguration()
return configuration;
}
- private static bool ShouldZipAllOutput(BuildScriptGeneratorContext context)
- {
- return BuildPropertiesHelper.IsTrue(
- Constants.ZipAllOutputBuildPropertyKey,
- context,
- valueIsRequired: false);
- }
-
private (string projFile, string publishDir) GetProjectFileAndPublishDir(ISourceRepo repo)
{
var projectFile = _aspNetCoreWebAppProjectFileProvider.GetRelativePathToProjectFile(repo);
@@ -178,18 +181,5 @@ private static bool ShouldZipAllOutput(BuildScriptGeneratorContext context)
var publishDir = Path.Combine(repo.RootPath, DotnetCoreConstants.OryxOutputPublishDirectory);
return (projectFile, publishDir);
}
-
- private string GetCommandOrScript(string commandOrScript)
- {
- if (!string.IsNullOrEmpty(commandOrScript))
- {
- if (File.Exists(commandOrScript))
- {
- return $"\"{commandOrScript}\"";
- }
- }
-
- return commandOrScript;
- }
}
}
\ No newline at end of file
diff --git a/src/BuildScriptGenerator/ManifestFilePropertyKeys.cs b/src/BuildScriptGenerator/ManifestFilePropertyKeys.cs
index 5cb611e7fb..f14eb98b62 100644
--- a/src/BuildScriptGenerator/ManifestFilePropertyKeys.cs
+++ b/src/BuildScriptGenerator/ManifestFilePropertyKeys.cs
@@ -7,6 +7,8 @@ namespace Microsoft.Oryx.BuildScriptGenerator
{
public static class ManifestFilePropertyKeys
{
- public const string ZipAllOutput = "zipAllOutput";
+ public const string ZipAllOutput = nameof(ZipAllOutput);
+
+ public const string OperationId = nameof(OperationId);
}
}
\ No newline at end of file
diff --git a/src/BuildScriptGenerator/Node/NodePlatform.cs b/src/BuildScriptGenerator/Node/NodePlatform.cs
index 70332ff981..fd6166a009 100644
--- a/src/BuildScriptGenerator/Node/NodePlatform.cs
+++ b/src/BuildScriptGenerator/Node/NodePlatform.cs
@@ -61,6 +61,8 @@ public LanguageDetectorResult Detect(ISourceRepo sourceRepo)
public BuildScriptSnippet GenerateBashBuildScriptSnippet(BuildScriptGeneratorContext context)
{
var buildProperties = new Dictionary();
+ buildProperties[ManifestFilePropertyKeys.OperationId] = context.OperationId;
+
var packageJson = GetPackageJsonObject(context.SourceRepo, _logger);
string runBuildCommand = null;
string runBuildAzureCommand = null;
diff --git a/src/BuildScriptGenerator/Php/PhpPlatform.cs b/src/BuildScriptGenerator/Php/PhpPlatform.cs
index ed66ff56d6..9e00d3a415 100644
--- a/src/BuildScriptGenerator/Php/PhpPlatform.cs
+++ b/src/BuildScriptGenerator/Php/PhpPlatform.cs
@@ -43,6 +43,9 @@ public LanguageDetectorResult Detect(ISourceRepo sourceRepo)
public BuildScriptSnippet GenerateBashBuildScriptSnippet(BuildScriptGeneratorContext ctx)
{
+ var buildProperties = new Dictionary();
+ buildProperties[ManifestFilePropertyKeys.OperationId] = ctx.OperationId;
+
_logger.LogDebug("Selected PHP version: {phpVer}", ctx.PhpVersion);
bool composerFileExists = false;
@@ -70,7 +73,7 @@ public BuildScriptSnippet GenerateBashBuildScriptSnippet(BuildScriptGeneratorCon
var props = new PhpBashBuildSnippetProperties { ComposerFileExists = composerFileExists };
string snippet = TemplateHelpers.Render(TemplateHelpers.TemplateResource.PhpBuildSnippet, props, _logger);
- return new BuildScriptSnippet { BashBuildScriptSnippet = snippet };
+ return new BuildScriptSnippet { BashBuildScriptSnippet = snippet, BuildProperties = buildProperties };
}
public bool IsEnabled(BuildScriptGeneratorContext ctx)
diff --git a/src/BuildScriptGenerator/Properties/AssemblyInfo.cs b/src/BuildScriptGenerator/Properties/AssemblyInfo.cs
index 48f13d59df..bff4b37e19 100644
--- a/src/BuildScriptGenerator/Properties/AssemblyInfo.cs
+++ b/src/BuildScriptGenerator/Properties/AssemblyInfo.cs
@@ -6,4 +6,7 @@
using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo("Microsoft.Oryx.BuildScriptGenerator.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c96528184668742ee5bc6a1f8b4447fdc42d482d7c339989f050d7858ea7277df2f86c7ad0b8afa733987baaf6adb2858b170995d03ba3ad612bbd0b5a389e1f6392cc5ad158f726d018d9aa75c362e0350da1c6f92b75ca449591be97fc08e68c576d95aff6cfc9e58a4653e4b6e87a1d83e3060f98a6214eacfd62a45cc8bf")]
-[assembly: InternalsVisibleTo("BuildScriptGeneratorCli.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c96528184668742ee5bc6a1f8b4447fdc42d482d7c339989f050d7858ea7277df2f86c7ad0b8afa733987baaf6adb2858b170995d03ba3ad612bbd0b5a389e1f6392cc5ad158f726d018d9aa75c362e0350da1c6f92b75ca449591be97fc08e68c576d95aff6cfc9e58a4653e4b6e87a1d83e3060f98a6214eacfd62a45cc8bf")]
\ No newline at end of file
+[assembly: InternalsVisibleTo("BuildScriptGeneratorCli.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c96528184668742ee5bc6a1f8b4447fdc42d482d7c339989f050d7858ea7277df2f86c7ad0b8afa733987baaf6adb2858b170995d03ba3ad612bbd0b5a389e1f6392cc5ad158f726d018d9aa75c362e0350da1c6f92b75ca449591be97fc08e68c576d95aff6cfc9e58a4653e4b6e87a1d83e3060f98a6214eacfd62a45cc8bf")]
+[assembly: InternalsVisibleTo("Oryx.Integration.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c96528184668742ee5bc6a1f8b4447fdc42d482d7c339989f050d7858ea7277df2f86c7ad0b8afa733987baaf6adb2858b170995d03ba3ad612bbd0b5a389e1f6392cc5ad158f726d018d9aa75c362e0350da1c6f92b75ca449591be97fc08e68c576d95aff6cfc9e58a4653e4b6e87a1d83e3060f98a6214eacfd62a45cc8bf")]
+[assembly: InternalsVisibleTo("Oryx.BuildImage.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c96528184668742ee5bc6a1f8b4447fdc42d482d7c339989f050d7858ea7277df2f86c7ad0b8afa733987baaf6adb2858b170995d03ba3ad612bbd0b5a389e1f6392cc5ad158f726d018d9aa75c362e0350da1c6f92b75ca449591be97fc08e68c576d95aff6cfc9e58a4653e4b6e87a1d83e3060f98a6214eacfd62a45cc8bf")]
+[assembly: InternalsVisibleTo("Oryx.RuntimeImage.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c96528184668742ee5bc6a1f8b4447fdc42d482d7c339989f050d7858ea7277df2f86c7ad0b8afa733987baaf6adb2858b170995d03ba3ad612bbd0b5a389e1f6392cc5ad158f726d018d9aa75c362e0350da1c6f92b75ca449591be97fc08e68c576d95aff6cfc9e58a4653e4b6e87a1d83e3060f98a6214eacfd62a45cc8bf")]
diff --git a/src/BuildScriptGenerator/Python/PythonPlatform.cs b/src/BuildScriptGenerator/Python/PythonPlatform.cs
index cc67f8043a..8af42ef152 100644
--- a/src/BuildScriptGenerator/Python/PythonPlatform.cs
+++ b/src/BuildScriptGenerator/Python/PythonPlatform.cs
@@ -68,6 +68,8 @@ public LanguageDetectorResult Detect(ISourceRepo sourceRepo)
public BuildScriptSnippet GenerateBashBuildScriptSnippet(BuildScriptGeneratorContext context)
{
var buildProperties = new Dictionary();
+ buildProperties[ManifestFilePropertyKeys.OperationId] = context.OperationId;
+
var packageDir = GetPackageDirectory(context);
var virtualEnvName = GetVirtualEnvironmentName(context);
if (string.IsNullOrEmpty(packageDir))
@@ -105,13 +107,11 @@ public BuildScriptSnippet GenerateBashBuildScriptSnippet(BuildScriptGeneratorCon
bool enableCollectStatic = IsCollectStaticEnabled();
- string compressVirtualEnvCommand = null;
- string compressedVirtualEnvFileName = null;
GetVirtualEnvPackOptions(
context,
virtualEnvName,
- out compressVirtualEnvCommand,
- out compressedVirtualEnvFileName);
+ out var compressVirtualEnvCommand,
+ out var compressedVirtualEnvFileName);
if (!string.IsNullOrWhiteSpace(compressedVirtualEnvFileName))
{
diff --git a/src/BuildScriptGeneratorCli/BuildScriptGenerator.cs b/src/BuildScriptGeneratorCli/BuildScriptGenerator.cs
index 75b74291fb..5d0cd24b05 100644
--- a/src/BuildScriptGeneratorCli/BuildScriptGenerator.cs
+++ b/src/BuildScriptGeneratorCli/BuildScriptGenerator.cs
@@ -20,25 +20,30 @@ internal class BuildScriptGenerator
private readonly IConsole _console;
private readonly List _checkerMessageSink;
private readonly ILogger _logger;
+ private readonly string _operationId;
public BuildScriptGenerator(
IServiceProvider serviceProvider,
IConsole console,
- List checkerMessageSink)
+ List checkerMessageSink,
+ string operationId)
{
_console = console;
_serviceProvider = serviceProvider;
_checkerMessageSink = checkerMessageSink;
_logger = _serviceProvider.GetRequiredService>();
+ _operationId = operationId;
}
public static BuildScriptGeneratorContext CreateContext(
BuildScriptGeneratorOptions options,
CliEnvironmentSettings envSettings,
- ISourceRepo sourceRepo)
+ ISourceRepo sourceRepo,
+ string operationId)
{
return new BuildScriptGeneratorContext
{
+ OperationId = operationId,
SourceRepo = sourceRepo,
Language = options.Language,
LanguageVersion = options.LanguageVersion,
@@ -63,7 +68,7 @@ public bool TryGenerateScript(out string generatedScript)
var sourceRepoProvider = _serviceProvider.GetRequiredService();
var environment = _serviceProvider.GetRequiredService();
var sourceRepo = sourceRepoProvider.GetSourceRepo();
- var scriptGenCtx = CreateContext(options, environment, sourceRepo);
+ var scriptGenCtx = CreateContext(options, environment, sourceRepo, _operationId);
scriptGen.GenerateBashScript(scriptGenCtx, out generatedScript, _checkerMessageSink);
return true;
diff --git a/src/BuildScriptGeneratorCli/Commands/BuildCommand.cs b/src/BuildScriptGeneratorCli/Commands/BuildCommand.cs
index 731870d0b5..5ba8d663f8 100644
--- a/src/BuildScriptGeneratorCli/Commands/BuildCommand.cs
+++ b/src/BuildScriptGeneratorCli/Commands/BuildCommand.cs
@@ -7,7 +7,6 @@
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
-using System.Linq;
using System.Text;
using JetBrains.Annotations;
using McMaster.Extensions.CommandLineUtils;
@@ -96,7 +95,7 @@ internal int Execute(
DataReceivedEventHandler stdErrHandler)
{
var logger = serviceProvider.GetRequiredService>();
- var buildOpId = logger.StartOperation(
+ var buildOperationId = logger.StartOperation(
BuildOperationName(serviceProvider.GetRequiredService()));
var options = serviceProvider.GetRequiredService>().Value;
@@ -107,7 +106,7 @@ internal int Execute(
var buildInfo = new DefinitionListFormatter();
buildInfo.AddDefinition("Oryx Version", $"{Program.GetVersion()}, Commit: {Program.GetCommit()}");
- buildInfo.AddDefinition("Build Operation ID", buildOpId);
+ buildInfo.AddDefinition("Build Operation ID", buildOperationId);
var sourceRepo = serviceProvider.GetRequiredService().GetSourceRepo();
var commitId = GetSourceRepoCommitId(
@@ -121,21 +120,6 @@ internal int Execute(
console.WriteLine(buildInfo.ToString());
- // Try writing the ID to a file in the source directory
- try
- {
- using (logger.LogTimedEvent("WriteBuildIdFile"))
- using (var idFileWriter = new StreamWriter(
- Path.Combine(sourceRepo.RootPath, Common.FilePaths.BuildIdFileName)))
- {
- idFileWriter.Write(buildOpId);
- }
- }
- catch (Exception exc)
- {
- logger.LogError(exc, "Exception caught while trying to write build ID file");
- }
-
var environmentSettingsProvider = serviceProvider.GetRequiredService();
if (!environmentSettingsProvider.TryGetAndLoadSettings(out var environmentSettings))
{
@@ -147,7 +131,8 @@ internal int Execute(
using (var stopwatch = logger.LogTimedEvent("GenerateBuildScript"))
{
var checkerMessages = new List();
- var scriptGenerator = new BuildScriptGenerator(serviceProvider, console, checkerMessages);
+ var scriptGenerator = new BuildScriptGenerator(
+ serviceProvider, console, checkerMessages, buildOperationId);
var generated = scriptGenerator.TryGenerateScript(out scriptContent);
stopwatch.AddProperty("generateSucceeded", generated.ToString());
diff --git a/src/BuildScriptGeneratorCli/Commands/BuildScriptCommand.cs b/src/BuildScriptGeneratorCli/Commands/BuildScriptCommand.cs
index 2a6089f17d..37a43d3eea 100644
--- a/src/BuildScriptGeneratorCli/Commands/BuildScriptCommand.cs
+++ b/src/BuildScriptGeneratorCli/Commands/BuildScriptCommand.cs
@@ -4,7 +4,6 @@
// --------------------------------------------------------------------------------------------
using System;
-using System.Collections.Generic;
using System.IO;
using McMaster.Extensions.CommandLineUtils;
using Microsoft.Extensions.DependencyInjection;
@@ -40,7 +39,11 @@ internal class BuildScriptCommand : CommandBase
internal override int Execute(IServiceProvider serviceProvider, IConsole console)
{
- var scriptGenerator = new BuildScriptGenerator(serviceProvider, console, checkerMessageSink: null);
+ var scriptGenerator = new BuildScriptGenerator(
+ serviceProvider,
+ console,
+ checkerMessageSink: null,
+ operationId: null);
if (!scriptGenerator.TryGenerateScript(out var generatedScript))
{
diff --git a/src/BuildScriptGeneratorCli/Commands/BuildpackDetectCommand.cs b/src/BuildScriptGeneratorCli/Commands/BuildpackDetectCommand.cs
index 5f641cf97b..c1e7e9fa83 100644
--- a/src/BuildScriptGeneratorCli/Commands/BuildpackDetectCommand.cs
+++ b/src/BuildScriptGeneratorCli/Commands/BuildpackDetectCommand.cs
@@ -91,7 +91,7 @@ internal override int Execute(IServiceProvider serviceProvider, IConsole console
var env = serviceProvider.GetRequiredService();
var repo = serviceProvider.GetRequiredService().GetSourceRepo();
- var ctx = BuildScriptGenerator.CreateContext(options, env, repo);
+ var ctx = BuildScriptGenerator.CreateContext(options, env, repo, operationId: null);
var compatPlats = generator.GetCompatiblePlatforms(ctx);
if (compatPlats != null && compatPlats.Any())
diff --git a/src/Common/FilePaths.cs b/src/Common/FilePaths.cs
index ea92eefa09..449528e0ee 100644
--- a/src/Common/FilePaths.cs
+++ b/src/Common/FilePaths.cs
@@ -4,6 +4,6 @@ namespace Microsoft.Oryx.Common
{
public static class FilePaths
{
- public const string BuildIdFileName = ".oryx_build_id";
+ public const string BuildManifestFileName = "oryx-manifest.toml";
}
}
\ No newline at end of file
diff --git a/src/startupscriptgenerator/common/buildManifestHelper.go b/src/startupscriptgenerator/common/buildManifestHelper.go
index fe36733705..b1ad7f6bb2 100644
--- a/src/startupscriptgenerator/common/buildManifestHelper.go
+++ b/src/startupscriptgenerator/common/buildManifestHelper.go
@@ -6,17 +6,20 @@
package common
import (
+ "startupscriptgenerator/common/consts"
"github.com/BurntSushi/toml"
"log"
"path/filepath"
)
type BuildManifest struct {
- StartupFileName string
- ZipAllOutput string
+ StartupFileName string
+ ZipAllOutput string
+ OperationId string
}
-const ManifestFileName = "oryx-manifest.toml"
+var _buildManifest = BuildManifest{}
+var _readManifest = false
func DeserializeBuildManifest(manifestFile string) BuildManifest {
var manifest BuildManifest
@@ -27,11 +30,15 @@ func DeserializeBuildManifest(manifestFile string) BuildManifest {
}
func GetBuildManifest(appPath string) BuildManifest {
- buildManifest := BuildManifest{}
+ if _readManifest {
+ return _buildManifest
+ }
- tomlFile := filepath.Join(appPath, ManifestFileName)
+ tomlFile := filepath.Join(appPath, consts.BuildManifestFileName)
if FileExists(tomlFile) {
- buildManifest = DeserializeBuildManifest(tomlFile)
+ _buildManifest = DeserializeBuildManifest(tomlFile)
+ _readManifest = true
}
- return buildManifest
+
+ return _buildManifest
}
\ No newline at end of file
diff --git a/src/startupscriptgenerator/common/consts/file_paths.go b/src/startupscriptgenerator/common/consts/file_paths.go
index 68c21a009a..30b07c296a 100644
--- a/src/startupscriptgenerator/common/consts/file_paths.go
+++ b/src/startupscriptgenerator/common/consts/file_paths.go
@@ -2,4 +2,4 @@
package consts
-const BuildIdFileName string = ".oryx_build_id"
+const BuildManifestFileName string = "oryx-manifest.toml"
diff --git a/src/startupscriptgenerator/common/logging.go b/src/startupscriptgenerator/common/logging.go
index f15b3571fc..005daccad0 100644
--- a/src/startupscriptgenerator/common/logging.go
+++ b/src/startupscriptgenerator/common/logging.go
@@ -7,9 +7,7 @@ package common
import (
"fmt"
- "io/ioutil"
"os"
- "path"
"startupscriptgenerator/common/consts"
"strings"
"time"
@@ -32,12 +30,12 @@ type Logger struct {
var buildOpId string
func SetGlobalOperationId(appRootPath string) {
- if buildOpId == "" {
- rawId, err := ioutil.ReadFile(path.Join(appRootPath, consts.BuildIdFileName))
- if err == nil { // Silently ignore errors
- buildOpId = strings.TrimSpace(string(rawId))
- }
+ buildManifest := GetBuildManifest(appRootPath)
+
+ if buildManifest.OperationId != "" {
+ buildOpId = strings.TrimSpace(buildManifest.OperationId)
}
+ fmt.Println("Build Operation ID: " + buildOpId)
}
func GetLogger(name string) *Logger {
diff --git a/src/startupscriptgenerator/node/scriptgenerator.go b/src/startupscriptgenerator/node/scriptgenerator.go
index 92ceb88233..ddc3c038da 100644
--- a/src/startupscriptgenerator/node/scriptgenerator.go
+++ b/src/startupscriptgenerator/node/scriptgenerator.go
@@ -48,14 +48,13 @@ func (gen *NodeStartupScriptGenerator) GenerateEntrypointScript() string {
logger.LogInformation("Generating script for source at '%s'", gen.SourcePath)
- const oryxManifestFile string = "oryx-manifest.toml"
scriptBuilder := strings.Builder{}
scriptBuilder.WriteString("#!/bin/sh\n")
scriptBuilder.WriteString("\n# Enter the source directory to make sure the script runs where the user expects\n")
scriptBuilder.WriteString("cd " + gen.SourcePath + "\n\n")
- scriptBuilder.WriteString("if [ -f ./" + oryxManifestFile + " ]; then\n")
- scriptBuilder.WriteString(" echo \"Found '" + oryxManifestFile + "'\"\n")
- scriptBuilder.WriteString(" . ./" + oryxManifestFile + "\n")
+ scriptBuilder.WriteString("if [ -f ./" + consts.BuildManifestFileName + " ]; then\n")
+ scriptBuilder.WriteString(" echo \"Found '" + consts.BuildManifestFileName + "'\"\n")
+ scriptBuilder.WriteString(" . ./" + consts.BuildManifestFileName + "\n")
scriptBuilder.WriteString("fi\n\n")
diff --git a/src/startupscriptgenerator/python/scriptgenerator.go b/src/startupscriptgenerator/python/scriptgenerator.go
index e8cf158efd..21e585d7af 100644
--- a/src/startupscriptgenerator/python/scriptgenerator.go
+++ b/src/startupscriptgenerator/python/scriptgenerator.go
@@ -9,6 +9,7 @@ import (
"io/ioutil"
"path/filepath"
"startupscriptgenerator/common"
+ "startupscriptgenerator/common/consts"
"strings"
)
@@ -92,13 +93,12 @@ func logReadDirError(logger *common.Logger, path string, err error) {
// Builds the commands to setup the Python packages, using virtual env or a package folder.
func (gen *PythonStartupScriptGenerator) getPackageSetupCommand() string {
scriptBuilder := strings.Builder{}
- const buildManifestFile string = "oryx-manifest.toml"
- manifesFilePath := filepath.Join(gen.SourcePath, buildManifestFile)
+ manifesFilePath := filepath.Join(gen.SourcePath, consts.BuildManifestFileName)
// If a manifest file is present, it takes precedence.
if common.FileExists(manifesFilePath) {
virtualEnvVarPath := filepath.Join(gen.SourcePath, "$virtualEnvName")
- scriptBuilder.WriteString("echo \"Using '" + buildManifestFile + "'.\"\n")
- scriptBuilder.WriteString(". ./" + buildManifestFile + "\n")
+ scriptBuilder.WriteString("echo \"Using '" + consts.BuildManifestFileName + "'.\"\n")
+ scriptBuilder.WriteString(". ./" + consts.BuildManifestFileName + "\n")
if !gen.SkipVirtualEnvExtraction {
scriptBuilder.WriteString("echo \"Checking if virtual environment was compressed...\"\n")
diff --git a/tests/Oryx.BuildImage.Tests/DotNetCoreSampleAppsTest.cs b/tests/Oryx.BuildImage.Tests/DotNetCoreSampleAppsTest.cs
index 1fefcfabe8..a6786d798b 100644
--- a/tests/Oryx.BuildImage.Tests/DotNetCoreSampleAppsTest.cs
+++ b/tests/Oryx.BuildImage.Tests/DotNetCoreSampleAppsTest.cs
@@ -40,7 +40,7 @@ public void Builds_NetCore10App_UsingNetCore11_DotnetSdkVersion()
var script = new ShellScriptBuilder()
.AddBuildCommand($"{appDir} -o {appOutputDir}")
.AddFileExistsCheck($"{appOutputDir}/app.dll")
- .AddFileExistsCheck($"{appOutputDir}/{ScriptGenerator.Constants.ManifestFileName}")
+ .AddFileExistsCheck($"{appOutputDir}/{FilePaths.BuildManifestFileName}")
.ToString();
// Act
@@ -76,7 +76,7 @@ public void Builds_NetCore11App_UsingNetCore11_DotnetSdkVersion()
var script = new ShellScriptBuilder()
.AddBuildCommand($"{appDir} -o {appOutputDir}")
.AddFileExistsCheck($"{appOutputDir}/{appName}.dll")
- .AddFileExistsCheck($"{appOutputDir}/{ScriptGenerator.Constants.ManifestFileName}")
+ .AddFileExistsCheck($"{appOutputDir}/{FilePaths.BuildManifestFileName}")
.ToString();
// Act
@@ -147,7 +147,7 @@ public void Builds_NetCore20App_UsingNetCore21_DotnetSdkVersion()
var script = new ShellScriptBuilder()
.AddBuildCommand($"{appDir} -o {appOutputDir}")
.AddFileExistsCheck($"{appOutputDir}/app.dll")
- .AddFileExistsCheck($"{appOutputDir}/{ScriptGenerator.Constants.ManifestFileName}")
+ .AddFileExistsCheck($"{appOutputDir}/{FilePaths.BuildManifestFileName}")
.ToString();
// Act
diff --git a/tests/Oryx.BuildImage.Tests/NodeJSSampleAppsTest.cs b/tests/Oryx.BuildImage.Tests/NodeJSSampleAppsTest.cs
index 2572e302d5..ca9ab0f21b 100644
--- a/tests/Oryx.BuildImage.Tests/NodeJSSampleAppsTest.cs
+++ b/tests/Oryx.BuildImage.Tests/NodeJSSampleAppsTest.cs
@@ -7,6 +7,7 @@
using System.Collections.Generic;
using System.IO;
using System.Runtime.InteropServices;
+using Microsoft.Oryx.BuildScriptGenerator.Node;
using Microsoft.Oryx.Common;
using Microsoft.Oryx.Tests.Common;
using Xunit;
@@ -141,12 +142,13 @@ public void BuildNodeApp_ConfigureAppInsights__WithDefaultNodeVersion_AIEnvironm
var appDir = volume.ContainerDir;
var nestedOutputDir = "/tmp/output";
var script = new ShellScriptBuilder()
- .AddCommand("printenv")
- .AddCommand($"oryx build {appDir} -o {nestedOutputDir} --log-file {appDir}/1.log")
+ .AddCommand($"oryx build {appDir} -o {nestedOutputDir}")
.AddDirectoryExistsCheck($"{nestedOutputDir}/node_modules")
.AddFileExistsCheck($"{nestedOutputDir}/oryx-appinsightsloader.js")
- .AddFileExistsCheck($"{nestedOutputDir}/oryx-manifest.toml")
- .AddStringExistsInFileCheck("injectedAppInsights=\"True\"", $"{nestedOutputDir}/oryx-manifest.toml")
+ .AddFileExistsCheck($"{nestedOutputDir}/{FilePaths.BuildManifestFileName}")
+ .AddStringExistsInFileCheck(
+ $"{NodeConstants.InjectedAppInsights}=\"True\"",
+ $"{nestedOutputDir}/{FilePaths.BuildManifestFileName}")
.ToString();
// Act
@@ -233,7 +235,7 @@ private ShellScriptBuilder SetupEnvironment_ErrorDetectingNodeTest(
.CreateFile($"{appDir}/1.log", "hello1")
.CreateFile($"{appDir}/app2/2.log", "hello2")
.CreateFile($"{appDir}/app2/app3/3.log", "hello3")
- .CreateFile($"{appDir}/idea.js", nodeCode)
+ .CreateFile($"{appDir}/idea.js", $"\"{nodeCode}\"")
.AddBuildCommand($"{appDir} -o {appOutputDir} --log-file {logFile}");
return script;
@@ -639,7 +641,7 @@ public void BuildsNodeApp_AndZipsNodeModules_IfCompressNodeModulesIsZip()
.AddDirectoryDoesNotExistCheck($"{appOutputDir}/node_modules")
.AddStringExistsInFileCheck(
"compressedNodeModulesFile=\"node_modules.zip\"",
- $"{appOutputDir}/oryx-manifest.toml")
+ $"{appOutputDir}/{FilePaths.BuildManifestFileName}")
.ToString();
// Act
@@ -713,8 +715,10 @@ public void BuildNodeApp_ConfigureAppInsights_WithCorrectNodeVersion_AIEnvironme
$"oryx build {appDir} -o {nestedOutputDir} {spcifyNodeVersionCommand} --log-file {appDir}/1.log")
.AddDirectoryExistsCheck($"{nestedOutputDir}/node_modules")
.AddFileExistsCheck($"{nestedOutputDir}/oryx-appinsightsloader.js")
- .AddFileExistsCheck($"{nestedOutputDir}/oryx-manifest.toml")
- .AddStringExistsInFileCheck("injectedAppInsights=\"True\"", $"{nestedOutputDir}/oryx-manifest.toml")
+ .AddFileExistsCheck($"{nestedOutputDir}/{FilePaths.BuildManifestFileName}")
+ .AddStringExistsInFileCheck(
+ $"{NodeConstants.InjectedAppInsights}=\"True\"",
+ $"{nestedOutputDir}/{FilePaths.BuildManifestFileName}")
.ToString();
// Act
@@ -762,7 +766,9 @@ public void BuildNodeApp_DoesNotConfigureAppInsights_WithWrongNodeVersion_AIEnvi
$"oryx build {appDir} -o {nestedOutputDir} {spcifyNodeVersionCommand} --log-file {appDir}/1.log")
.AddDirectoryExistsCheck($"{nestedOutputDir}/node_modules")
.AddFileDoesNotExistCheck($"{nestedOutputDir}/oryx-appinsightsloader.js")
- .AddFileDoesNotExistCheck($"{nestedOutputDir}/oryx-manifest.toml")
+ .AddStringDoesNotExistInFileCheck(
+ NodeConstants.InjectedAppInsights,
+ $"{nestedOutputDir}/{FilePaths.BuildManifestFileName}")
.ToString();
// Act
@@ -810,7 +816,8 @@ public void BuildNodeApp_DoesNotConfigureAppInsights_WithCorrectNodeVersion_AIEn
$"oryx build {appDir} -o {nestedOutputDir} {spcifyNodeVersionCommand} --log-file {appDir}/1.log")
.AddDirectoryExistsCheck($"{nestedOutputDir}/node_modules")
.AddFileDoesNotExistCheck($"{nestedOutputDir}/oryx-appinsightsloader.js")
- .AddFileDoesNotExistCheck($"{nestedOutputDir}/oryx-manifest.toml")
+ .AddStringDoesNotExistInFileCheck(
+ NodeConstants.InjectedAppInsights, $"{nestedOutputDir}/{FilePaths.BuildManifestFileName}")
.ToString();
// Act
diff --git a/tests/Oryx.BuildImage.Tests/Oryx.BuildImage.Tests.csproj b/tests/Oryx.BuildImage.Tests/Oryx.BuildImage.Tests.csproj
index 638dcba818..b4d7588cd8 100644
--- a/tests/Oryx.BuildImage.Tests/Oryx.BuildImage.Tests.csproj
+++ b/tests/Oryx.BuildImage.Tests/Oryx.BuildImage.Tests.csproj
@@ -5,6 +5,9 @@
netcoreapp2.1
false
false
+ ..\..\build\TestAssembliesKey.snk
+ false
+ true
@@ -20,6 +23,7 @@
+
diff --git a/tests/Oryx.Integration.Tests/DotNetCoreEndToEndTests.cs b/tests/Oryx.Integration.Tests/DotNetCoreEndToEndTests.cs
index b564e2e07c..46c13565b2 100644
--- a/tests/Oryx.Integration.Tests/DotNetCoreEndToEndTests.cs
+++ b/tests/Oryx.Integration.Tests/DotNetCoreEndToEndTests.cs
@@ -8,6 +8,7 @@
using System.Threading.Tasks;
using Microsoft.Oryx.BuildScriptGenerator;
using Microsoft.Oryx.BuildScriptGenerator.DotNetCore;
+using Microsoft.Oryx.Common;
using Microsoft.Oryx.Tests.Common;
using Xunit;
using Xunit.Abstractions;
@@ -303,10 +304,10 @@ public async Task CanRunApp_WithoutBuildManifestFile()
var appOutputDir = $"{appDir}/myoutputdir";
var buildImageScript = new ShellScriptBuilder()
.AddCommand($"oryx build {appDir} -o {appOutputDir} -l dotnet --language-version {dotnetcoreVersion}")
- .AddFileExistsCheck($"{appOutputDir}/{ScriptGenerator.Constants.ManifestFileName}")
+ .AddFileExistsCheck($"{appOutputDir}/{FilePaths.BuildManifestFileName}")
// NOTE: Delete the manifest file explicitly
- .AddCommand($"rm -f {appOutputDir}/{ScriptGenerator.Constants.ManifestFileName}")
- .AddFileDoesNotExistCheck($"{appOutputDir}/{ScriptGenerator.Constants.ManifestFileName}")
+ .AddCommand($"rm -f {appOutputDir}/{FilePaths.BuildManifestFileName}")
+ .AddFileDoesNotExistCheck($"{appOutputDir}/{FilePaths.BuildManifestFileName}")
.ToString();
var runtimeImageScript = new ShellScriptBuilder()
.AddCommand(
@@ -350,10 +351,10 @@ public async Task CanRunApp_NetCore21WebApp_NetCoreApp21WithExplicitAssemblyName
var appOutputDir = $"{appDir}/myoutputdir";
var buildImageScript = new ShellScriptBuilder()
.AddCommand($"oryx build {appDir} -o {appOutputDir} -l dotnet --language-version {dotnetcoreVersion}")
- .AddFileExistsCheck($"{appOutputDir}/{ScriptGenerator.Constants.ManifestFileName}")
+ .AddFileExistsCheck($"{appOutputDir}/{FilePaths.BuildManifestFileName}")
// NOTE: Delete the manifest file explicitly
- .AddCommand($"rm -f {appOutputDir}/{ScriptGenerator.Constants.ManifestFileName}")
- .AddFileDoesNotExistCheck($"{appOutputDir}/{ScriptGenerator.Constants.ManifestFileName}")
+ .AddCommand($"rm -f {appOutputDir}/{FilePaths.BuildManifestFileName}")
+ .AddFileDoesNotExistCheck($"{appOutputDir}/{FilePaths.BuildManifestFileName}")
.ToString();
var runtimeImageScript = new ShellScriptBuilder()
.AddCommand(
diff --git a/tests/Oryx.Integration.Tests/NodeEndToEndTests.cs b/tests/Oryx.Integration.Tests/NodeEndToEndTests.cs
index 4a556cc366..b41f9677ea 100644
--- a/tests/Oryx.Integration.Tests/NodeEndToEndTests.cs
+++ b/tests/Oryx.Integration.Tests/NodeEndToEndTests.cs
@@ -7,6 +7,8 @@
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
+using Microsoft.Oryx.BuildScriptGenerator.Node;
+using Microsoft.Oryx.Common;
using Microsoft.Oryx.Tests.Common;
using Xunit;
using Xunit.Abstractions;
@@ -258,7 +260,7 @@ public async Task CanBuildAndRun_NodeApp_WithBuildpack()
var appName = "webfrontend";
var appVolume = CreateAppVolume(appName);
// Allows `pack` to use the host's Docker engine
- var dockerPort = DockerVolume.Create("/var/run/docker.sock", "/var/run/docker.sock");
+ var dockerPort = DockerVolume.DockerDaemonSocket;
var appImageName = "testnodeapp";
// Act
@@ -836,8 +838,9 @@ public async Task CanBuildAndRun_NodeApp_WithAppInsights_Configured(string nodeV
.AddCommand($"oryx build {appDir} -o {appDir} {spcifyNodeVersionCommand} --log-file {appDir}/1.log")
.AddDirectoryExistsCheck($"{appDir}/node_modules")
.AddFileExistsCheck($"{appDir}/oryx-appinsightsloader.js")
- .AddFileExistsCheck($"{appDir}/oryx-manifest.toml")
- .AddStringExistsInFileCheck("injectedAppInsights=\"True\"", $"{appDir}/oryx-manifest.toml")
+ .AddFileExistsCheck($"{appDir}/{FilePaths.BuildManifestFileName}")
+ .AddStringExistsInFileCheck(
+ $"{NodeConstants.InjectedAppInsights}=\"True\"", $"{appDir}/{FilePaths.BuildManifestFileName}")
.ToString();
var runScript = new ShellScriptBuilder()
@@ -846,8 +849,10 @@ public async Task CanBuildAndRun_NodeApp_WithAppInsights_Configured(string nodeV
.AddCommand($"oryx -appPath {appDir} -bindPort {ContainerPort}")
.AddCommand(DefaultStartupFilePath)
.AddFileExistsCheck($"{appDir}/oryx-appinsightsloader.js")
- .AddFileExistsCheck($"{appDir}/oryx-manifest.toml")
- .AddStringExistsInFileCheck("injectedAppInsights=\"True\"", $"{appDir}/oryx-manifest.toml")
+ .AddFileExistsCheck($"{appDir}/{FilePaths.BuildManifestFileName}")
+ .AddStringExistsInFileCheck(
+ $"{NodeConstants.InjectedAppInsights}=\"True\"",
+ $"{appDir}/{FilePaths.BuildManifestFileName}")
.ToString();
await EndToEndTestHelper.BuildRunAndAssertAppAsync(
diff --git a/tests/Oryx.Integration.Tests/Oryx.Integration.Tests.csproj b/tests/Oryx.Integration.Tests/Oryx.Integration.Tests.csproj
index aca6bf8262..0656ef7aa1 100644
--- a/tests/Oryx.Integration.Tests/Oryx.Integration.Tests.csproj
+++ b/tests/Oryx.Integration.Tests/Oryx.Integration.Tests.csproj
@@ -5,6 +5,9 @@
7.3
false
false
+ ..\..\build\TestAssembliesKey.snk
+ false
+ true
@@ -17,6 +20,7 @@
+
diff --git a/tests/Oryx.RuntimeImage.Tests/NodeImagesTest.cs b/tests/Oryx.RuntimeImage.Tests/NodeImagesTest.cs
index 0d1d7113e6..67eb4bbabf 100644
--- a/tests/Oryx.RuntimeImage.Tests/NodeImagesTest.cs
+++ b/tests/Oryx.RuntimeImage.Tests/NodeImagesTest.cs
@@ -8,6 +8,8 @@
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
+using Microsoft.Oryx.BuildScriptGenerator.Node;
+using Microsoft.Oryx.Common;
using Microsoft.Oryx.Tests.Common;
using Xunit;
using Xunit.Abstractions;
@@ -147,13 +149,13 @@ public void GeneratedScript_CanRunStartupScripts_WithAppInsightsConfigured()
console.error(e);
}
}";
- var manifestFileContent = "injectedAppInsight=\"True\"";
+ var manifestFileContent = $"'{NodeConstants.InjectedAppInsights}=\"True\"'";
var script = new ShellScriptBuilder()
.CreateDirectory(appPath)
- .CreateFile(appPath + "/entry.sh", $"exit {exitCodeSentinel}")
- .CreateFile(appPath + "/oryx-manifest.toml", manifestFileContent)
- .CreateFile(appPath + "/oryx-appinsightsloader.js", aiNodesdkLoaderContent)
+ .CreateFile($"{appPath}/entry.sh", $"exit {exitCodeSentinel}")
+ .CreateFile($"{appPath}/{FilePaths.BuildManifestFileName}", manifestFileContent)
+ .CreateFile($"{appPath}/oryx-appinsightsloader.js", $"\"{aiNodesdkLoaderContent}\"")
.AddCommand("oryx -userStartupCommand entry.sh -appPath " + appPath)
.AddCommand(". ./run.sh") // Source the default output path
.AddStringExistsInFileCheck("export NODE_OPTIONS='--require ./oryx-appinsightsloader.js'", "./run.sh")
@@ -234,11 +236,12 @@ public async Task GeneratesScript_CanRun_AppInsightsModule_NotFound(string nodeV
// and additionally print the exception message
// Arrange
- var imageName = string.Concat("oryxdevms/node-", nodeVersion);
- var hostSamplesDir = Path.Combine(Directory.GetCurrentDirectory(), "SampleApps");
- var volume = DockerVolume.CreateMirror(Path.Combine(hostSamplesDir, "nodejs", "linxnodeexpress"));
+ var appName = "linxnodeexpress";
+ var hostDir = Path.Combine(_hostSamplesDir, "nodejs", appName);
+ var volume = DockerVolume.CreateMirror(hostDir);
var appDir = volume.ContainerDir;
- var manifestFileContent = "injectedAppInsight=\"True\"";
+ var imageName = string.Concat("oryxdevms/node-", nodeVersion);
+ var manifestFileContent = $"'{NodeConstants.InjectedAppInsights}=\"True\"'";
var aiNodesdkLoaderContent = @"try {
var appInsights = require('applicationinsights');
if (process.env.APPINSIGHTS_INSTRUMENTATIONKEY)
@@ -252,8 +255,8 @@ public async Task GeneratesScript_CanRun_AppInsightsModule_NotFound(string nodeV
int containerDebugPort = 8080;
var script = new ShellScriptBuilder()
- .CreateFile(appDir + "/oryx-manifest.toml", manifestFileContent)
- .CreateFile(appDir + "/oryx-appinsightsloader.js", aiNodesdkLoaderContent)
+ .CreateFile($"{appDir}/{FilePaths.BuildManifestFileName}", manifestFileContent)
+ .CreateFile($"{appDir}/oryx-appinsightsloader.js", $"\"{aiNodesdkLoaderContent}\"")
.AddCommand($"cd {appDir}")
.AddCommand("npm install")
.AddCommand($"oryx -appPath {appDir}")
diff --git a/tests/Oryx.RuntimeImage.Tests/Oryx.RuntimeImage.Tests.csproj b/tests/Oryx.RuntimeImage.Tests/Oryx.RuntimeImage.Tests.csproj
index b019c404a6..fc65c15818 100644
--- a/tests/Oryx.RuntimeImage.Tests/Oryx.RuntimeImage.Tests.csproj
+++ b/tests/Oryx.RuntimeImage.Tests/Oryx.RuntimeImage.Tests.csproj
@@ -5,6 +5,9 @@
7.3
false
false
+ ..\..\build\TestAssembliesKey.snk
+ false
+ true
@@ -20,6 +23,7 @@
+
diff --git a/tests/Oryx.Tests.Common/DockerVolume.cs b/tests/Oryx.Tests.Common/DockerVolume.cs
index 5d83575ee6..cd805d30f8 100644
--- a/tests/Oryx.Tests.Common/DockerVolume.cs
+++ b/tests/Oryx.Tests.Common/DockerVolume.cs
@@ -7,13 +7,18 @@
using System.IO;
using System.Reflection;
using System.Runtime.InteropServices;
-using JetBrains.Annotations;
using Microsoft.Oryx.Common;
namespace Microsoft.Oryx.Tests.Common
{
public class DockerVolume
{
+ private const string DockerSocket = "/var/run/docker.sock";
+ public static readonly DockerVolume DockerDaemonSocket = new DockerVolume(
+ originalHostDir: null,
+ mountedHostDir: DockerSocket,
+ containerDir: DockerSocket);
+
// VSTS variable used to identify if the tests are running in VSTS or not (for example, on dev machines)
public const string VstsAgentNameEnivronmentVariable = "AGENT_NAME";
@@ -42,30 +47,25 @@ private DockerVolume(string originalHostDir, string mountedHostDir, string conta
///
public string ContainerDir { get; }
- public static DockerVolume Create([NotNull] string hostPath, [NotNull] string containerPath)
- {
- if (string.IsNullOrEmpty(hostPath) && !Directory.Exists(hostPath) && !File.Exists(hostPath))
- {
- throw new ArgumentException($"'{nameof(hostPath)}' must point to an existing directory or file.");
- }
-
- return new DockerVolume(null, hostPath, containerPath);
- }
-
///
/// Creates a copy of a local directory, and returns a DockerVolume instance for mounting that copy in a
/// container.
///
- /// local directory to be used in a container
+ /// local directory to be used in a container
/// DockerVolume instance that can be used to mount the new copy of `originalDir`.
- public static DockerVolume CreateMirror(string originalDir)
+ public static DockerVolume CreateMirror(string hostDir)
{
- if (string.IsNullOrEmpty(originalDir))
+ if (string.IsNullOrEmpty(hostDir))
+ {
+ throw new ArgumentException($"'{nameof(hostDir)}' cannot be null or empty.");
+ }
+
+ if (!Directory.Exists(hostDir))
{
- throw new ArgumentException($"'{nameof(originalDir)}' cannot be null or empty.");
+ throw new ArgumentException($"'{nameof(hostDir)}' must point to an existing directory.");
}
- var dirInfo = new DirectoryInfo(originalDir);
+ var dirInfo = new DirectoryInfo(hostDir);
// Copy the host directory to a different location and mount that one as it's always possible that a
// single sample app could be tested by different tests and we do not want to modify its original state
@@ -94,7 +94,7 @@ public static DockerVolume CreateMirror(string originalDir)
tempDirRoot,
Guid.NewGuid().ToString("N"),
dirInfo.Name);
- CopyDirectories(originalDir, writableHostDir, copySubDirs: true);
+ CopyDirectories(hostDir, writableHostDir, copySubDirs: true);
// Grant permissions to the folder we just copied on the host machine. The permisions here allow the
// user(a non-root user) in the container to read/write/execute files.
@@ -113,7 +113,7 @@ public static DockerVolume CreateMirror(string originalDir)
// Note: Path.Combine is the ideal solution here but this would fail when we run the
// tests on a windows machine (which most of us use).
var containerDir = $"{ContainerDirRoot}/{containerDirName}";
- return new DockerVolume(originalDir, writableHostDir, containerDir);
+ return new DockerVolume(hostDir, writableHostDir, containerDir);
}
private static void CopyDirectories(string sourceDirName, string destDirName, bool copySubDirs)
diff --git a/tests/Oryx.Tests.Common/Oryx.Tests.Common.csproj b/tests/Oryx.Tests.Common/Oryx.Tests.Common.csproj
index 44bb27d8d1..d7c626ad15 100644
--- a/tests/Oryx.Tests.Common/Oryx.Tests.Common.csproj
+++ b/tests/Oryx.Tests.Common/Oryx.Tests.Common.csproj
@@ -5,6 +5,9 @@
7.3
Microsoft.Oryx.Tests.Common
Microsoft.Oryx.Tests.Common
+ ..\..\build\TestAssembliesKey.snk
+ false
+ true
diff --git a/tests/Oryx.Tests.Common/ShellScriptBuilder.cs b/tests/Oryx.Tests.Common/ShellScriptBuilder.cs
index 0dab44cdfe..ef2847b0c5 100644
--- a/tests/Oryx.Tests.Common/ShellScriptBuilder.cs
+++ b/tests/Oryx.Tests.Common/ShellScriptBuilder.cs
@@ -61,7 +61,7 @@ public ShellScriptBuilder CreateDirectory(string directory)
public ShellScriptBuilder CreateFile(string file, string content)
{
- return Append($"echo \"{content}\" > \"{file}\"");
+ return Append($"echo {content} > \"{file}\"");
}
public ShellScriptBuilder SetExecutePermissionOnFile(string file)
@@ -104,16 +104,16 @@ public ShellScriptBuilder AddFileExistsCheck(string file)
public ShellScriptBuilder AddStringExistsInFileCheck(string searchString, string file)
{
return Append(
- $"grep '{searchString}' '{file}' && if [ $? -eq 1 ]; then " +
- $"echo '{searchString}' not found 1>&2 && " +
+ $"if ! grep -q '{searchString}' '{file}'; then " +
+ $"echo '{searchString}' not found 1>&2; " +
"exit 1; fi");
}
public ShellScriptBuilder AddStringDoesNotExistInFileCheck(string searchString, string file)
{
return Append(
- $"grep '{searchString}' '{file}' && if [ $? -eq 0 ]; then " +
- $"echo '{searchString}' found 1>&2 && " +
+ $"if grep -q '{searchString}' '{file}'; then " +
+ $"echo '{searchString}' still found 1>&2; " +
"exit 1; fi");
}