Skip to content

Commit 4ad446c

Browse files
Enable APIStubGen step (#12615)
* Enable APIStubGen
1 parent 22bd8ce commit 4ad446c

File tree

5 files changed

+80
-10
lines changed

5 files changed

+80
-10
lines changed

eng/pipelines/templates/jobs/archetype-sdk-client.yml

+1
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ jobs:
7373
ServiceDirectory: ${{ parameters.ServiceDirectory }}
7474
BuildTargetingString: ${{ parameters.BuildTargetingString }}
7575
TestMarkArgument: ${{ parameters.TestMarkArgument }}
76+
AdditionalTestArgs: '--wheel_dir="$(Build.ArtifactStagingDirectory)"'
7677

7778
- job: 'Test'
7879
condition: and(succeededOrFailed(), ne(variables['Skip.Test'], 'true'))

eng/pipelines/templates/steps/analyze.yml

+12-5
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,19 @@ parameters:
22
BuildTargetingString: 'azure-*'
33
ServiceDirectory: ''
44
TestMarkArgument: ''
5+
AdditionalTestArgs: ''
56

67
steps:
78
- task: UsePythonVersion@0
89
displayName: 'Use Python $(PythonVersion)'
910
inputs:
1011
versionSpec: '$(PythonVersion)'
1112

13+
- task: DownloadPipelineArtifact@0
14+
inputs:
15+
artifactName: 'artifacts'
16+
targetPath: $(Build.ArtifactStagingDirectory)
17+
1218
- script: |
1319
pip install -r eng/ci_tools.txt
1420
ward scan -d $(Build.SourcesDirectory) -c $(Build.SourcesDirectory)/eng/.docsettings.yml
@@ -91,8 +97,9 @@ steps:
9197
BuildTargetingString: ${{ parameters.BuildTargetingString }}
9298
TestMarkArgument: ${{ parameters.TestMarkArgument }}
9399

94-
# - template: ../steps/run_apistub.yml
95-
# parameters:
96-
# ServiceDirectory: ${{ parameters.ServiceDirectory }}
97-
# BuildTargetingString: ${{ parameters.BuildTargetingString }}
98-
# TestMarkArgument: ${{ parameters.TestMarkArgument }}
100+
- template: ../steps/run_apistub.yml
101+
parameters:
102+
ServiceDirectory: ${{ parameters.ServiceDirectory }}
103+
BuildTargetingString: ${{ parameters.BuildTargetingString }}
104+
TestMarkArgument: ${{ parameters.TestMarkArgument }}
105+
AdditionalTestArgs: ${{parameters.AdditionalTestArgs}}

eng/pipelines/templates/steps/run_apistub.yml

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ parameters:
22
BuildTargetingString: 'azure-*'
33
ServiceDirectory: ''
44
TestMarkArgument: ''
5+
AdditionalTestArgs: ''
56

67
steps:
78
- task: UsePythonVersion@0
@@ -21,7 +22,8 @@ steps:
2122
inputs:
2223
scriptPath: 'scripts/devops_tasks/setup_execute_tests.py'
2324
arguments: >-
24-
"${{ parameters.BuildTargetingString }}"
25+
"${{ parameters.BuildTargetingString }}"
26+
${{ parameters.AdditionalTestArgs }}
2527
--mark_arg="${{ parameters.TestMarkArgument }}"
2628
--service="${{ parameters.ServiceDirectory }}"
2729
--toxenv="apistub"

eng/tox/run_apistubgen.py

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
#!/usr/bin/env python
2+
3+
# --------------------------------------------------------------------------------------------
4+
# Copyright (c) Microsoft Corporation. All rights reserved.
5+
# Licensed under the MIT License. See License.txt in the project root for license information.
6+
7+
from subprocess import check_call
8+
import argparse
9+
import os
10+
import logging
11+
12+
from tox_helper_tasks import find_whl, get_package_details
13+
14+
logging.getLogger().setLevel(logging.INFO)
15+
16+
root_dir = os.path.abspath(os.path.join(os.path.abspath(__file__), "..", "..", ".."))
17+
18+
19+
def get_package_wheel_path(pkg_root):
20+
# parse setup.py to get package name and version
21+
pkg_name, _, version = get_package_details(os.path.join(pkg_root, "setup.py"))
22+
# Check if wheel is already built and available for current package
23+
prebuilt_dir = os.getenv("PREBUILT_WHEEL_DIR")
24+
if prebuilt_dir:
25+
prebuilt_package_path = find_whl(prebuilt_dir, pkg_name, version)
26+
else:
27+
return None
28+
29+
30+
if __name__ == "__main__":
31+
parser = argparse.ArgumentParser(
32+
description="Run apistubgen against target folder. "
33+
)
34+
35+
parser.add_argument(
36+
"-t",
37+
"--target",
38+
dest="target_package",
39+
help="The target package directory on disk.",
40+
required=True,
41+
)
42+
43+
parser.add_argument(
44+
"-w",
45+
"--work_dir",
46+
dest="work_dir",
47+
help="Working directory to run apistubgen",
48+
required=True,
49+
)
50+
51+
args = parser.parse_args()
52+
53+
# Check if a wheel is already built for current package and install from wheel when available
54+
# If wheel is not available then install package from source
55+
pkg_path = get_package_wheel_path(args.target_package)
56+
if not pkg_path:
57+
pkg_path = args.target_package
58+
59+
check_call(["apistubgen", "--pkg-path", pkg_path,], cwd=args.work_dir)

eng/tox/tox.ini

+5-4
Original file line numberDiff line numberDiff line change
@@ -227,11 +227,12 @@ commands =
227227
[testenv:apistub]
228228
skipsdist = false
229229
skip_install = false
230-
usedevelop = true
231-
changedir = {toxinidir}
230+
usedevelop = false
231+
changedir = {envtmpdir}
232232
deps =
233233
{[base]deps}
234234
commands =
235235
# install API stub generator
236-
{envbindir}/python -m pip install "git+https://github.com/Azure/azure-sdk-tools.git#subdirectory=packages/python-packages/api-stub-generator&egg=api-stub-generator"
237-
apistubgen --pkg-path {toxinidir} --temp-path {envtmpdir} --out-path {envtmpdir}
236+
{envbindir}/python -m pip install "git+https://github.com/azure/azure-sdk-tools.git#subdirectory=packages/python-packages/api-stub-generator&egg=api-stub-generator"
237+
{envbindir}/python -m pip freeze
238+
{envbindir}/python {toxinidir}/../../../eng/tox/run_apistubgen.py -t {toxinidir} -w {envtmpdir}

0 commit comments

Comments
 (0)