Skip to content

Commit a1b3497

Browse files
authored
Fixed problems with run-db-test (#286)
- #284: Fixed problem with `run-db-test` integration test `test_run_db_test_docker_credentials` - #285: Fixed problem with `run-db-test` option -`-test-file` fixes #284 fixes #285
1 parent f737e53 commit a1b3497

File tree

5 files changed

+76
-14
lines changed

5 files changed

+76
-14
lines changed

doc/changes/unreleased.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
11
# Unreleased
2+
3+
## Bugs
4+
- #284: Fixed problem with `run-db-test` integration test `test_run_db_test_docker_credentials`
5+
- #285: Fixed problem with `run-db-test` option -`-test-file`

exasol/slc/internal/tasks/test/run_db_test_files.py

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# pylint: disable=not-an-iterable
2-
from typing import Any, Generator, Tuple
2+
from typing import Any, Generator, Optional, Tuple
33

44
from exasol_integration_test_docker_environment.lib.base.base_task import BaseTask
55
from exasol_integration_test_docker_environment.lib.base.flavor_task import (
@@ -37,24 +37,23 @@ def extend_output_path(self) -> Tuple[str, ...]:
3737
def run_task(self) -> Generator[BaseTask, None, None]:
3838
results = []
3939
for language in self.languages:
40-
if language is not None:
41-
results_for_language = []
42-
for test_file in self.test_files:
43-
test_result = yield from self.run_test(language, test_file)
44-
results_for_language.append(test_result)
45-
results.append(
46-
RunDBTestCollectionResult(
47-
language=language, test_results=results_for_language
48-
)
40+
results_for_language = []
41+
for test_file in self.test_files:
42+
test_result = yield from self.run_test(language, test_file)
43+
results_for_language.append(test_result)
44+
results.append(
45+
RunDBTestCollectionResult(
46+
language=language, test_results=results_for_language
4947
)
48+
)
5049
test_results = RunDBTestFilesResult(test_results=results)
5150
JsonPickleTarget(self.get_output_path().joinpath("test_results.json")).write(
5251
test_results, 4
5352
)
5453
self.return_object(test_results)
5554

5655
def run_test(
57-
self, language: str, test_file: str
56+
self, language: Optional[str], test_file: str
5857
) -> Generator[RunDBTest, Any, RunDBTestResult]:
5958
task = self.create_child_task_with_common_params(
6059
RunDBTest,

exasol/slc/models/run_db_test_result.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from pathlib import Path
2-
from typing import List
2+
from typing import List, Optional
33

44

55
class RunDBTestResult:
@@ -13,7 +13,9 @@ def __init__(
1313

1414

1515
class RunDBTestCollectionResult:
16-
def __init__(self, language: str, test_results: List[RunDBTestResult]) -> None:
16+
def __init__(
17+
self, language: Optional[str], test_results: List[RunDBTestResult]
18+
) -> None:
1719
self.language = language
1820
self.test_results = test_results
1921
self.tests_are_ok = all(test_result.is_ok for test_result in test_results)
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import subprocess
2+
import tarfile
3+
import unittest
4+
from tempfile import TemporaryDirectory
5+
6+
import docker
7+
import utils as exaslct_utils # type: ignore # pylint: disable=import-error
8+
from exasol_integration_test_docker_environment.lib.models.data.environment_type import (
9+
EnvironmentType,
10+
)
11+
from exasol_integration_test_docker_environment.testing import utils # type: ignore
12+
13+
from exasol.slc import api
14+
from exasol.slc.models.compression_strategy import CompressionStrategy
15+
16+
17+
class ApiDockerRunDbTestSingleFile(unittest.TestCase):
18+
#
19+
# Spawn a Docker db and run test for single file.
20+
#
21+
def setUp(self):
22+
print(f"SetUp {self.__class__.__name__}")
23+
self.test_environment = exaslct_utils.ExaslctApiTestEnvironmentWithCleanup(
24+
self, True
25+
)
26+
self.test_environment.clean_all_images()
27+
28+
def tearDown(self):
29+
utils.close_environments(self.test_environment)
30+
31+
def test_run_db_test_single_file(self):
32+
result = api.run_db_test(
33+
flavor_path=(str(exaslct_utils.get_test_flavor()),),
34+
test_container_folder=str(exaslct_utils.get_full_test_container_folder()),
35+
output_directory=self.test_environment.output_dir,
36+
test_file=("empty_test.py",),
37+
)
38+
flavor_keys = list(result.test_results_per_flavor.keys())
39+
self.assertEqual(len(flavor_keys), 1)
40+
flavor_key = flavor_keys[0]
41+
42+
test_result_per_flavor = result.test_results_per_flavor[flavor_key]
43+
test_result_per_release = test_result_per_flavor.test_results_per_release_goal[
44+
"release"
45+
]
46+
test_file_output = test_result_per_release.test_files_output
47+
self.assertEqual(len(test_file_output.test_results), 1)
48+
test_results = test_file_output.test_results[0]
49+
self.assertEqual(len(test_results.test_results), 1)
50+
test_result = test_results.test_results[0]
51+
self.assertEqual(test_result.test_file, "empty_test.py")
52+
self.assertEqual(test_result.language, "None")
53+
self.assertTrue(test_result.is_ok)
54+
55+
56+
if __name__ == "__main__":
57+
unittest.main()

test/test_run_db_test_docker_credentials.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def tearDown(self):
1818
utils.close_environments(self.test_environment)
1919

2020
@unittest.skipIf(
21-
os.getenv("DOCKER_USER") is not None and os.getenv("DOCKER_PASSWD") is not None,
21+
os.getenv("DOCKER_USER") is None or os.getenv("DOCKER_PASSWD") is None,
2222
"Docker credentials not configured",
2323
)
2424
def test_docker_credentials_injection_into_test_container(self):

0 commit comments

Comments
 (0)