You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by pa...@apache.org on 2021/10/19 23:24:40 UTC

[beam] branch master updated: [BEAM_13077][Playground] fix logic for CreateFolders method

This is an automated email from the ASF dual-hosted git repository.

pabloem pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam.git


The following commit(s) were added to refs/heads/master by this push:
     new 90251e6  [BEAM_13077][Playground] fix logic for CreateFolders method
     new 4d1c2af  Merge pull request #15750 from [BEAM-13077][Playground] LifeCycle.CreateFolders() after several uses returns error
90251e6 is described below

commit 90251e631beee35f1847025147d55227f3ba999d
Author: AydarZaynutdinov <ay...@akvelon.com>
AuthorDate: Tue Oct 19 14:01:57 2021 +0300

    [BEAM_13077][Playground]
    fix logic for CreateFolders method
---
 playground/backend/internal/fs_tool/fs.go      | 54 +++++++++++++++++++++++---
 playground/backend/internal/fs_tool/fs_test.go |  3 +-
 2 files changed, 51 insertions(+), 6 deletions(-)

diff --git a/playground/backend/internal/fs_tool/fs.go b/playground/backend/internal/fs_tool/fs.go
index 2e2e9e7..481fade 100644
--- a/playground/backend/internal/fs_tool/fs.go
+++ b/playground/backend/internal/fs_tool/fs.go
@@ -27,6 +27,7 @@ import (
 )
 
 const (
+	projectRoot          = "backend"
 	parentBaseFileFolder = "internal"
 	fileMode             = 0600
 )
@@ -63,12 +64,12 @@ func NewLifeCycle(sdk pb.Sdk, pipelineId uuid.UUID) (*LifeCycle, error) {
 
 // CreateFolders creates all folders which will be used for code execution.
 func (l *LifeCycle) CreateFolders() error {
-	err := os.Chdir("../..")
+	err := setUpWorkingDir()
 	if err != nil {
 		return err
 	}
 	for _, folder := range l.folderGlobs {
-		err := os.MkdirAll(folder, fs.ModePerm)
+		err = os.MkdirAll(folder, fs.ModePerm)
 		if err != nil {
 			return err
 		}
@@ -78,8 +79,12 @@ func (l *LifeCycle) CreateFolders() error {
 
 // DeleteFolders deletes all previously provisioned folders.
 func (l *LifeCycle) DeleteFolders() error {
+	err := setUpWorkingDir()
+	if err != nil {
+		return err
+	}
 	for _, folder := range l.folderGlobs {
-		err := os.RemoveAll(folder)
+		err = os.RemoveAll(folder)
 		if err != nil {
 			return err
 		}
@@ -89,13 +94,17 @@ func (l *LifeCycle) DeleteFolders() error {
 
 // CreateExecutableFile creates an executable file (i.e. file.java for the Java SDK).
 func (l *LifeCycle) CreateExecutableFile(code string) (string, error) {
-	if _, err := os.Stat(l.Folder.ExecutableFolder); os.IsNotExist(err) {
+	err := setUpWorkingDir()
+	if err != nil {
+		return "", err
+	}
+	if _, err = os.Stat(l.Folder.ExecutableFolder); os.IsNotExist(err) {
 		return "", err
 	}
 
 	fileName := getFileName(l.pipelineId, l.Extension.ExecutableExtension)
 	filePath := filepath.Join(l.Folder.ExecutableFolder, fileName)
-	err := os.WriteFile(filePath, []byte(code), fileMode)
+	err = os.WriteFile(filePath, []byte(code), fileMode)
 	if err != nil {
 		return "", err
 	}
@@ -133,3 +142,38 @@ func (l *LifeCycle) GetExecutableName() (string, error) {
 func getFileName(pipelineId uuid.UUID, fileType string) string {
 	return fmt.Sprintf("%s.%s", pipelineId, fileType)
 }
+
+// setUpWorkingDir sets projectRoot as a working directory.
+func setUpWorkingDir() error {
+	folder, err := getWorkingDirName()
+	if err != nil {
+		return err
+	}
+
+	// go up to parent directory until working dir isn't projectRoot dir
+	for !strings.EqualFold(folder, projectRoot) {
+		err = os.Chdir("..")
+		if err != nil {
+			return err
+		}
+
+		folder, err = getWorkingDirName()
+		if err != nil {
+			return err
+		}
+	}
+
+	return nil
+}
+
+// getWorkingDirName returns the working directory's name.
+func getWorkingDirName() (string, error) {
+	path, err := os.Getwd()
+	if err != nil {
+		return "", err
+	}
+
+	folders := strings.Split(path, "/")
+	folder := folders[len(folders)-1]
+	return folder, nil
+}
diff --git a/playground/backend/internal/fs_tool/fs_test.go b/playground/backend/internal/fs_tool/fs_test.go
index 7936ad2..1b1b304 100644
--- a/playground/backend/internal/fs_tool/fs_test.go
+++ b/playground/backend/internal/fs_tool/fs_test.go
@@ -95,7 +95,7 @@ func TestLifeCycle_CreateExecutableFile(t *testing.T) {
 				t.Errorf("CreateExecutableFile() got = %v, want %v", got, tt.want)
 			}
 		})
-		os.RemoveAll(parentBaseFileFolder)
+		os.RemoveAll(baseFileFolder)
 	}
 }
 
@@ -410,6 +410,7 @@ func TestLifeCycle_GetExecutableName(t *testing.T) {
 			if got != tt.want {
 				t.Errorf("GetExecutableName() got = %v, want %v", got, tt.want)
 			}
+			os.RemoveAll(baseFileFolder)
 		})
 	}
 }