new file mode 100644
@@ -0,0 +1,7 @@
+package main
+
+import "fmt"
+
+func main() {
+ fmt.Println("Hello from Go!")
+}
@@ -4,10 +4,69 @@
# SPDX-License-Identifier: MIT
#
+import os
from oeqa.runtime.case import OERuntimeTestCase
from oeqa.core.decorator.depends import OETestDepends
from oeqa.runtime.decorator.package import OEHasPackage
+class GoCompileTest(OERuntimeTestCase):
+
+ @classmethod
+ def setUp(cls):
+ dst = '/tmp/'
+ src = os.path.join(cls.tc.files_dir, 'test.go')
+ cls.tc.target.copyTo(src, dst)
+
+ @classmethod
+ def tearDown(cls):
+ files = '/tmp/test.go /tmp/test'
+ cls.tc.target.run('rm %s' % files)
+ dirs = '/tmp/hello-go'
+ cls.tc.target.run('rm -r %s' % dirs)
+
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ @OEHasPackage('go')
+ @OEHasPackage('openssh-scp')
+ def test_go_compile(self):
+ # Check if go is available
+ status, output = self.target.run('which go')
+ msg = 'go command not found, output: %s' % output
+ self.assertEqual(status, 0, msg=msg)
+
+ # Compile the simple Go program
+ status, output = self.target.run('go build -o /tmp/test /tmp/test.go')
+ msg = 'go compile failed, output: %s' % output
+ self.assertEqual(status, 0, msg=msg)
+
+ # Run the compiled program
+ status, output = self.target.run('/tmp/test')
+ msg = 'running compiled file failed, output: %s' % output
+ self.assertEqual(status, 0, msg=msg)
+
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ @OEHasPackage('go')
+ @OEHasPackage('openssh-scp')
+ def test_go_module(self):
+ # Create a simple Go module
+ status, output = self.target.run('mkdir -p /tmp/hello-go')
+ msg = 'mkdir failed, output: %s' % output
+ self.assertEqual(status, 0, msg=msg)
+
+ # Copy the existing test.go file to the module
+ status, output = self.target.run('cp /tmp/test.go /tmp/hello-go/main.go')
+ msg = 'copying test.go failed, output: %s' % output
+ self.assertEqual(status, 0, msg=msg)
+
+ # Build the module
+ status, output = self.target.run('cd /tmp/hello-go && go build -o hello main.go')
+ msg = 'go build failed, output: %s' % output
+ self.assertEqual(status, 0, msg=msg)
+
+ # Run the module
+ status, output = self.target.run('cd /tmp/hello-go && ./hello')
+ msg = 'running go module failed, output: %s' % output
+ self.assertEqual(status, 0, msg=msg)
+
class GoHelloworldTest(OERuntimeTestCase):
@OETestDepends(['ssh.SSHTest.test_ssh'])
@OEHasPackage(['go-helloworld'])
@@ -18,4 +77,4 @@ class GoHelloworldTest(OERuntimeTestCase):
self.assertEqual(status, 0, msg=msg)
msg = 'Incorrect output: %s' % output
- self.assertEqual(output, "Hello, world!", msg=msg)
+ self.assertEqual(output, "Hello, world!", msg=msg)
\ No newline at end of file
extend go runtime test with a simple test file, and simple go module test to validate go compilation and execution on target. Signed-off-by: Osama Abdelkader <osama.abdelkader@gmail.com> --- meta/lib/oeqa/files/test.go | 7 ++++ meta/lib/oeqa/runtime/cases/go.py | 61 ++++++++++++++++++++++++++++++- 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 meta/lib/oeqa/files/test.go